diff --git a/app/build.gradle b/app/build.gradle index 907bcaa..66a50a0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { minSdkVersion 24 targetSdkVersion 29 - versionCode 1 - versionName "1.0.0" + versionCode 2 + versionName "1.0.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true @@ -113,7 +113,7 @@ android { dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' + implementation files('libs/CSDK_TBY11_AiYouDu_250312.jar') compileOnly files('libs/framework.jar') implementation project(path: ':niceimageview') implementation project(path: ':FlycoTabLayoutZ_Lib') @@ -132,6 +132,7 @@ dependencies { // Java language implementation implementation "androidx.fragment:fragment:1.4.1" implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.3' @@ -174,7 +175,7 @@ dependencies { //bugly implementation 'com.tencent.bugly:crashreport:4.1.9.2' //阿里云推送 - implementation 'com.aliyun.ams:alicloud-android-push:3.8.0' +// implementation 'com.aliyun.ams:alicloud-android-push:3.8.0' //高德地图定位 implementation 'com.amap.api:location:5.1.0' //状态栏透明 diff --git a/app/libs/CSDK_TBY11_AiYouDu_250312.jar b/app/libs/CSDK_TBY11_AiYouDu_250312.jar new file mode 100644 index 0000000..abff99a Binary files /dev/null and b/app/libs/CSDK_TBY11_AiYouDu_250312.jar differ diff --git a/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl b/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl index 751530a..2c7cdee 100644 --- a/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl +++ b/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl @@ -21,6 +21,7 @@ interface IGetInfoInterface { String getActivationCode(); //设置为默认桌面 void setDefaultLauncher(String pkg); + void setCustomLauncher(String pkg, String className); //退出桌面 void exitDesktop(); //能否退出桌面 diff --git a/app/src/main/java/com/xuexispace/ai/activity/edit/EditActivity.java b/app/src/main/java/com/xuexispace/ai/activity/edit/EditActivity.java index 6b87254..66ff831 100644 --- a/app/src/main/java/com/xuexispace/ai/activity/edit/EditActivity.java +++ b/app/src/main/java/com/xuexispace/ai/activity/edit/EditActivity.java @@ -15,6 +15,7 @@ import com.xuexispace.ai.config.CommonConfig; import com.xuexispace.ai.databinding.ActivityEditBinding; import com.xuexispace.ai.manager.RemoteManager; import com.xuexispace.ai.utils.ActivationUtil; +import com.xuexispace.ai.utils.LenovoCsdkUtil; import java.util.HashMap; import java.util.Map; @@ -100,9 +101,9 @@ public class EditActivity extends BaseMvvmActivity params = new HashMap<>(); - params.put("sn", RemoteManager.getInstance().getSerial()); + params.put("sn", LenovoCsdkUtil.getInstance().getSerial()); params.put(mTypeName, mViewDataBinding.editText.getText().toString()); mViewModel.updateInfo(params); } else { diff --git a/app/src/main/java/com/xuexispace/ai/activity/edit/EditViewModel.java b/app/src/main/java/com/xuexispace/ai/activity/edit/EditViewModel.java index 43e7cc4..3a47987 100644 --- a/app/src/main/java/com/xuexispace/ai/activity/edit/EditViewModel.java +++ b/app/src/main/java/com/xuexispace/ai/activity/edit/EditViewModel.java @@ -34,7 +34,7 @@ public class EditViewModel extends BaseViewModel mSuccessfulData = new MutableLiveData<>(); public void updateInfo(Map params) { - if (!ActivationUtil.isActivation()) { + if (!ActivationUtil.getInstance().isActivation()) { return; } NetInterfaceManager.getInstance().getUpdateInfoObservable(params) diff --git a/app/src/main/java/com/xuexispace/ai/activity/homework/HomeworkViewModel.java b/app/src/main/java/com/xuexispace/ai/activity/homework/HomeworkViewModel.java index 1bf2208..3e9f367 100644 --- a/app/src/main/java/com/xuexispace/ai/activity/homework/HomeworkViewModel.java +++ b/app/src/main/java/com/xuexispace/ai/activity/homework/HomeworkViewModel.java @@ -38,7 +38,7 @@ public class HomeworkViewModel extends BaseViewModel> mHomeworkBeanListData = new MutableLiveData<>(); public void getHomeWork() { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } diff --git a/app/src/main/java/com/xuexispace/ai/activity/main/MainActivity.java b/app/src/main/java/com/xuexispace/ai/activity/main/MainActivity.java index 82bfb21..a1c08d2 100644 --- a/app/src/main/java/com/xuexispace/ai/activity/main/MainActivity.java +++ b/app/src/main/java/com/xuexispace/ai/activity/main/MainActivity.java @@ -39,6 +39,14 @@ import com.xuexispace.ai.config.CommonConfig; import com.xuexispace.ai.databinding.ActivityMainBinding; import com.xuexispace.ai.dialog.PermissionsDialog; import com.xuexispace.ai.dialog.PrivacyPolicyDialog; +import com.xuexispace.ai.fragment.biology.BiologyFragment; +import com.xuexispace.ai.fragment.chemical.ChemicalFragment; +import com.xuexispace.ai.fragment.chinese.ChineseFragment; +import com.xuexispace.ai.fragment.complex.ComplexFragment; +import com.xuexispace.ai.fragment.english.EnglishFragment; +import com.xuexispace.ai.fragment.math.MathFragment; +import com.xuexispace.ai.fragment.physics.PhysicsFragment; +import com.xuexispace.ai.fragment.precision.PrecisionFragment; import com.xuexispace.ai.fragment.subject.SubjectFragment; import com.xuexispace.ai.fragment.user.UserFragment; import com.xuexispace.ai.jxw.JxwPackageConfig; @@ -46,6 +54,7 @@ import com.xuexispace.ai.manager.AmapManager; import com.xuexispace.ai.manager.RemoteManager; import com.xuexispace.ai.service.SocketService; import com.xuexispace.ai.utils.ApkUtils; +import com.xuexispace.ai.utils.LenovoCsdkUtil; import com.xuexispace.ai.utils.OpenApkUtils; import com.xuexispace.ai.utils.Utils; import com.xuexispace.ai.view.ScaleCircleNavigator; @@ -59,6 +68,25 @@ public class MainActivity extends BaseMvvmActivity mFragments; + private FragmentManager mFragmentManager; + private BaseFragmentPagerAdapter mBaseFragmentPagerAdapter; + private ViewPager.OnPageChangeListener mListener; + private int defaultCurrent = 0; + @Override public void onRemoteConnected() { Log.e(TAG, "onConnected: "); @@ -81,7 +109,7 @@ public class MainActivity extends BaseMvvmActivity= Build.VERSION_CODES.O) { startForegroundService(intent); @@ -124,6 +150,41 @@ public class MainActivity extends BaseMvvmActivity(); + + mPrecisionFragment = new PrecisionFragment(); + mChineseFragment = new ChineseFragment(); + mMathFragment = new MathFragment(); + mEnglishFragment = new EnglishFragment(); + mPhysicsFragment = new PhysicsFragment(); + mChemicalFragment = new ChemicalFragment(); + mBiologyFragment = new BiologyFragment(); + mComplexFragment = new ComplexFragment(); + + mFragments.add(mPrecisionFragment); + mFragments.add(mChineseFragment); + mFragments.add(mMathFragment); + mFragments.add(mEnglishFragment); + mFragments.add(mPhysicsFragment); + mFragments.add(mChemicalFragment); + mFragments.add(mBiologyFragment); + mFragments.add(mComplexFragment); + Log.e(TAG, "SubjectFragment: end = " + (System.currentTimeMillis() - time)); + + long time2 = System.currentTimeMillis(); + Log.e(TAG, "initView: start " + time2); + mFragmentManager = getSupportFragmentManager(); + mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments); + mViewDataBinding.viewPager.setAdapter(mBaseFragmentPagerAdapter); + mViewDataBinding.viewPager.setOnPageChangeListener(mListener); + mViewDataBinding.mainSlidingTabLayout.setViewPager(mViewDataBinding.viewPager, mAllTitle); + + Log.e(TAG, "initView: end = " + (System.currentTimeMillis() - time2)); + mViewDataBinding.viewPager.setOffscreenPageLimit(10); + } @Override @@ -196,16 +257,24 @@ public class MainActivity extends BaseMvvmActivity mGradleData = new MutableLiveData<>(); public void getSnInfo() { - NetInterfaceManager.getInstance().getsnInfoControl() + NetInterfaceManager.getInstance().getSnInfoControl() .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) .subscribe(new Observer>() { @Override @@ -158,7 +158,7 @@ public class MainViewModel extends BaseViewModel params = new HashMap<>(); - params.put("sn", RemoteManager.getInstance().getSerial()); + params.put("sn", LenovoCsdkUtil.getInstance().getSerial()); params.put("sn_grade", grade); mViewModel.updateInfo(params); } diff --git a/app/src/main/java/com/xuexispace/ai/activity/selectegrade/SelecteGradeViewModel.java b/app/src/main/java/com/xuexispace/ai/activity/selectegrade/SelecteGradeViewModel.java index 8a3810e..9369ed4 100644 --- a/app/src/main/java/com/xuexispace/ai/activity/selectegrade/SelecteGradeViewModel.java +++ b/app/src/main/java/com/xuexispace/ai/activity/selectegrade/SelecteGradeViewModel.java @@ -34,7 +34,7 @@ public class SelecteGradeViewModel extends BaseViewModel mSuccessfulData = new MutableLiveData<>(); public void updateInfo(Map params) { - if (!ActivationUtil.isActivation()) { + if (!ActivationUtil.getInstance().isActivation()) { return; } diff --git a/app/src/main/java/com/xuexispace/ai/activity/user/UserActivity.java b/app/src/main/java/com/xuexispace/ai/activity/user/UserActivity.java index 20d8fd1..99db302 100644 --- a/app/src/main/java/com/xuexispace/ai/activity/user/UserActivity.java +++ b/app/src/main/java/com/xuexispace/ai/activity/user/UserActivity.java @@ -38,6 +38,7 @@ import com.xuexispace.ai.utils.ActivationUtil; import com.xuexispace.ai.utils.ApkUtils; import com.xuexispace.ai.utils.FileUtil; import com.xuexispace.ai.utils.GlideLoadUtils; +import com.xuexispace.ai.utils.LenovoCsdkUtil; import com.xuexispace.ai.utils.Utils; import java.io.File; @@ -122,7 +123,7 @@ public class UserActivity extends BaseMvvmActivity() { + mViewModel.mAppUpdateInfoData.observe(this, new Observer() { @Override public void onChanged(AppUpdateInfo appUpdateInfo) { if (appUpdateInfo == null) { @@ -152,7 +153,7 @@ public class UserActivity extends BaseMvvmActivity params = new HashMap<>(); - params.put("sn", RemoteManager.getInstance().getSerial()); + params.put("sn", LenovoCsdkUtil.getInstance().getSerial()); mViewModel.updateInfo(params, body); } else { mMMKV.encode(CommonConfig.UIUI_USER_AVATAR_KEY, avatarFilePath); diff --git a/app/src/main/java/com/xuexispace/ai/activity/user/UserViewModel.java b/app/src/main/java/com/xuexispace/ai/activity/user/UserViewModel.java index ca54d77..954b3fa 100644 --- a/app/src/main/java/com/xuexispace/ai/activity/user/UserViewModel.java +++ b/app/src/main/java/com/xuexispace/ai/activity/user/UserViewModel.java @@ -67,11 +67,7 @@ public class UserViewModel extends BaseViewModel mAppUpdateInfoData = new MutableLiveData<>(); - - public MutableLiveData getAppUpdateInfoData() { - return mAppUpdateInfoData; - } + public MutableLiveData mAppUpdateInfoData = new MutableLiveData<>(); public void checkUpdate() { NetInterfaceManager.getInstance().getCheckUpdateObservable(BuildConfig.APPLICATION_ID) @@ -109,7 +105,7 @@ public class UserViewModel extends BaseViewModel mSuccessfulData = new MutableLiveData<>(); public void updateInfo(Map params, MultipartBody.Part multipartBody) { - if (!ActivationUtil.isActivation()) { + if (!ActivationUtil.getInstance().isActivation()) { return; } diff --git a/app/src/main/java/com/xuexispace/ai/base/BaseApplication.java b/app/src/main/java/com/xuexispace/ai/base/BaseApplication.java index e30cca1..ebb646f 100644 --- a/app/src/main/java/com/xuexispace/ai/base/BaseApplication.java +++ b/app/src/main/java/com/xuexispace/ai/base/BaseApplication.java @@ -9,8 +9,6 @@ import android.os.Handler; import android.os.Looper; import android.util.Log; -import com.alibaba.sdk.android.push.CloudPushService; -import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; import com.arialyy.aria.core.Aria; import com.hjq.toast.Toaster; import com.tencent.bugly.crashreport.CrashReport; @@ -24,14 +22,15 @@ import com.xuexispace.ai.manager.RemoteManager; import com.xuexispace.ai.network.NetInterfaceManager; import com.xuexispace.ai.push.PushManager; import com.xuexispace.ai.receiver.APKinstallReceiver; +import com.xuexispace.ai.utils.ActivationUtil; import com.xuexispace.ai.utils.AppUsedTimeUtils; +import com.xuexispace.ai.utils.LenovoCsdkUtil; import com.xuexispace.ai.utils.OpenApkUtils; import com.xuexispace.ai.utils.SystemUtils; public class BaseApplication extends Application { private static final String TAG = "BaseApplication"; - /** * ViewModel中因为经常旋转导致弱引用为空 */ @@ -62,24 +61,25 @@ public class BaseApplication extends Application { private void init() { Log.e(TAG, "init: "); if (BuildConfig.DEBUG) { - + catchException(); } if (SystemUtils.isMainProcessName(this, android.os.Process.myPid())) { String rootDir = MMKV.initialize(this); Log.e(TAG, "mmkv root: " + rootDir); + + ActivationUtil.init(this); + LenovoCsdkUtil.init(this); + + CrashReport.initCrashReport(getApplicationContext(), "d1cd982951", false); + CrashReport.setDeviceId(BaseApplication.this, LenovoCsdkUtil.getInstance().getSerial()); + // 初始化 Toast 框架 Toaster.init(this); AmapManager.init(this); AppManager.init(this); PushManager.init(this); RemoteManager.init(this); - RemoteManager.setListener(new RemoteManager.ConnectedListener() { - @Override - public void onRemoteConnected() { - CrashReport.setDeviceId(BaseApplication.this, RemoteManager.getInstance().getSerial()); - RemoteManager.getInstance().aliyunPushInit(); - } - }); + AlarmUtils.init(this); AppUsedTimeUtils.init(this); OpenApkUtils.init(this); @@ -87,42 +87,32 @@ public class BaseApplication extends Application { NetInterfaceManager.init(this); // startService(new Intent(this, MainService.class)); registAppReceive(); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - slowInit(); - } - }, 1234); + + Aria.init(this); +// Aria.get(this).getDownloadConfig().setMaxTaskNum(1); +// Aria.get(this).getDownloadConfig().setConvertSpeed(true); + +// aliyunPushInit(); } } - private void slowInit() { - Log.e(TAG, "slowInit: "); - Aria.init(this); -// Aria.get(this).getDownloadConfig().setMaxTaskNum(1); -// Aria.get(this).getDownloadConfig().setConvertSpeed(true); - CrashReport.initCrashReport(getApplicationContext(), "d1cd982951", false); - - aliyunPushInit(); - } - - public void aliyunPushInit() { - PushServiceFactory.init(this); - final CloudPushService pushService = PushServiceFactory.getCloudPushService(); - pushService.setLogLevel(CloudPushService.LOG_DEBUG); -// pushService.register(this, new CommonCallback() { -// @Override -// public void onSuccess(String response) { -// Log.e("AliyunPush", "init cloudchannel success"); -// Log.e("AliyunPush", "init cloudchannel success " + pushService.getDeviceId()); -// } -// -// @Override -// public void onFailed(String errorCode, String errorMessage) { -// Log.e("AliyunPush", "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage); -// } -// }); - } +// public void aliyunPushInit() { +// PushServiceFactory.init(this); +// final CloudPushService pushService = PushServiceFactory.getCloudPushService(); +// pushService.setLogLevel(CloudPushService.LOG_DEBUG); +//// pushService.register(this, new CommonCallback() { +//// @Override +//// public void onSuccess(String response) { +//// Log.e("AliyunPush", "init cloudchannel success"); +//// Log.e("AliyunPush", "init cloudchannel success " + pushService.getDeviceId()); +//// } +//// +//// @Override +//// public void onFailed(String errorCode, String errorMessage) { +//// Log.e("AliyunPush", "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage); +//// } +//// }); +// } private APKinstallReceiver apKinstallReceiver; diff --git a/app/src/main/java/com/xuexispace/ai/fragment/subject/SubjectFragment.java b/app/src/main/java/com/xuexispace/ai/fragment/subject/SubjectFragment.java index eb883a2..30010d1 100644 --- a/app/src/main/java/com/xuexispace/ai/fragment/subject/SubjectFragment.java +++ b/app/src/main/java/com/xuexispace/ai/fragment/subject/SubjectFragment.java @@ -37,9 +37,7 @@ public class SubjectFragment extends BaseDataBindingFragment> mSnInfoData = new MutableLiveData<>(); public void getSnInfo() { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } @@ -98,7 +99,7 @@ public class UserViewModel extends BaseViewModel mStudyStatBeanData = new MutableLiveData<>(); public void getStudyStat() { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } @@ -137,7 +138,7 @@ public class UserViewModel extends BaseViewModel mQrCodeData = new MutableLiveData<>(); public void getQrCode() { - String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, RemoteManager.getInstance().getSerial()); + String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, LenovoCsdkUtil.getInstance().getSerial()); Log.e("getQRCode", "setImageAndText: " + encryptString); Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400); mQrCodeData.setValue(bitmap); @@ -202,7 +203,7 @@ public class UserViewModel extends BaseViewModel> mHomeworkBeanListData = new MutableLiveData<>(); public void getHomework() { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } @@ -246,7 +247,7 @@ public class UserViewModel extends BaseViewModel mPhraseData = new MutableLiveData<>(); public void getPhrase() { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } diff --git a/app/src/main/java/com/xuexispace/ai/fragment/usercenter/device/DeviceFragment.java b/app/src/main/java/com/xuexispace/ai/fragment/usercenter/device/DeviceFragment.java index c40a465..d74ed1a 100644 --- a/app/src/main/java/com/xuexispace/ai/fragment/usercenter/device/DeviceFragment.java +++ b/app/src/main/java/com/xuexispace/ai/fragment/usercenter/device/DeviceFragment.java @@ -13,6 +13,7 @@ import com.xuexispace.ai.activity.service.ServiceActivity; import com.xuexispace.ai.base.mvvm.fragment.BaseMvvmFragment; import com.xuexispace.ai.databinding.FragmentDeviceBinding; import com.xuexispace.ai.manager.RemoteManager; +import com.xuexispace.ai.utils.LenovoCsdkUtil; public class DeviceFragment extends BaseMvvmFragment { @@ -40,7 +41,7 @@ public class DeviceFragment extends BaseMvvmFragment params = new HashMap<>(); - params.put("sn", RemoteManager.getInstance().getSerial()); + params.put("sn", LenovoCsdkUtil.getInstance().getSerial()); params.put("sex", "1"); mViewModel.updateInfo(params); } else { @@ -75,9 +76,9 @@ public class InfoFragment extends BaseMvvmFragment params = new HashMap<>(); - params.put("sn", RemoteManager.getInstance().getSerial()); + params.put("sn", LenovoCsdkUtil.getInstance().getSerial()); params.put("sex", "2"); mViewModel.updateInfo(params); } else { @@ -123,7 +124,7 @@ public class InfoFragment extends BaseMvvmFragment mSnInfoData = new MutableLiveData<>(); public void getSnInfo() { - if (!ActivationUtil.isActivation()) { + if (!ActivationUtil.getInstance().isActivation()) { return; } - NetInterfaceManager.getInstance().getsnInfoControl() + NetInterfaceManager.getInstance().getSnInfoControl() .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY)) .subscribe(new Observer>() { @Override @@ -70,7 +70,7 @@ public class InfoViewModel extends BaseViewModel mSuccessfulData = new MutableLiveData<>(); public void updateInfo(Map params) { - if (!ActivationUtil.isActivation()) { + if (!ActivationUtil.getInstance().isActivation()) { return; } diff --git a/app/src/main/java/com/xuexispace/ai/manager/AmapManager.java b/app/src/main/java/com/xuexispace/ai/manager/AmapManager.java index 934a860..845a6b5 100644 --- a/app/src/main/java/com/xuexispace/ai/manager/AmapManager.java +++ b/app/src/main/java/com/xuexispace/ai/manager/AmapManager.java @@ -109,7 +109,7 @@ public class AmapManager { } public void startLocation() { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } @@ -144,7 +144,7 @@ public class AmapManager { }; private void updateAddress(AMapLocation aMapLocation) { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } diff --git a/app/src/main/java/com/xuexispace/ai/manager/RemoteManager.java b/app/src/main/java/com/xuexispace/ai/manager/RemoteManager.java index bb0c79f..327770f 100644 --- a/app/src/main/java/com/xuexispace/ai/manager/RemoteManager.java +++ b/app/src/main/java/com/xuexispace/ai/manager/RemoteManager.java @@ -11,9 +11,6 @@ import android.provider.Settings; import android.text.TextUtils; import android.util.Log; -import com.alibaba.sdk.android.push.CloudPushService; -import com.alibaba.sdk.android.push.CommonCallback; -import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; import com.tencent.bugly.crashreport.CrashReport; import com.tencent.mmkv.MMKV; import com.uiui.zy.IGetInfoInterface; @@ -65,8 +62,7 @@ public class RemoteManager { e.printStackTrace(); } - Log.e(TAG, "onServiceConnected: " + getSerial()); - aliyunPushInit(); +// aliyunPushInit(); } @Override @@ -123,67 +119,67 @@ public class RemoteManager { mListeners.remove(listener); } - public void aliyunPushInit() { - String sn = getSerial(); - if (TextUtils.isEmpty(sn)) { - Log.e(TAG, "aliyunPushInit: empty"); - return; - } - PushServiceFactory.init(mContext); - CloudPushService pushService = PushServiceFactory.getCloudPushService(); - pushService.register(mContext, new CommonCallback() { - @Override - public void onSuccess(String response) { - Log.e("AliyunPush", "init cloudchannel success"); - Log.e("AliyunPush", "init cloudchannel success " + pushService.getDeviceId()); - pushService.bindAccount(sn, new CommonCallback() { - @Override - public void onSuccess(String s) { - Log.e("AliyunPush", "bind account " + sn + " success\n"); - } - - @Override - public void onFailed(String errorCode, String errorMsg) { - Log.e("AliyunPush", "bind account " + sn + " failed." + - "errorCode: " + errorCode + ", errorMsg:" + errorMsg); - } - }); - pushService.addAlias(sn, new CommonCallback() { - @Override - public void onSuccess(String s) { - Log.e("AliyunPush", "add alias " + sn + " success\n"); - } - - @Override - public void onFailed(String errorCode, String errorMsg) { - Log.e("AliyunPush", "add alias " + sn + " failed." + - "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n"); - } - }); - } - - @Override - public void onFailed(String errorCode, String errorMessage) { - Log.e("AliyunPush", "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage); - } - }); - } +// public void aliyunPushInit() { +// String sn = getSerial(); +// if (TextUtils.isEmpty(sn)) { +// Log.e(TAG, "aliyunPushInit: empty"); +// return; +// } +// PushServiceFactory.init(mContext); +// CloudPushService pushService = PushServiceFactory.getCloudPushService(); +// pushService.register(mContext, new CommonCallback() { +// @Override +// public void onSuccess(String response) { +// Log.e("AliyunPush", "init cloudchannel success"); +// Log.e("AliyunPush", "init cloudchannel success " + pushService.getDeviceId()); +// pushService.bindAccount(sn, new CommonCallback() { +// @Override +// public void onSuccess(String s) { +// Log.e("AliyunPush", "bind account " + sn + " success\n"); +// } +// +// @Override +// public void onFailed(String errorCode, String errorMsg) { +// Log.e("AliyunPush", "bind account " + sn + " failed." + +// "errorCode: " + errorCode + ", errorMsg:" + errorMsg); +// } +// }); +// pushService.addAlias(sn, new CommonCallback() { +// @Override +// public void onSuccess(String s) { +// Log.e("AliyunPush", "add alias " + sn + " success\n"); +// } +// +// @Override +// public void onFailed(String errorCode, String errorMsg) { +// Log.e("AliyunPush", "add alias " + sn + " failed." + +// "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n"); +// } +// }); +// } +// +// @Override +// public void onFailed(String errorCode, String errorMessage) { +// Log.e("AliyunPush", "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage); +// } +// }); +// } /** * @return 获取sn */ - public String getSerial() { - if (mIGetInfoInterface != null) { - try { - return mIGetInfoInterface.getSerial(); - } catch (Exception e) { - Log.e(TAG, "getSerial: " + e.getMessage()); - } - } else { - bindInfoService(); - } - return mMMKV.decodeString(SN_KEY, ""); - } +// public String getSerial() { +// if (mIGetInfoInterface != null) { +// try { +// return mIGetInfoInterface.getSerial(); +// } catch (Exception e) { +// Log.e(TAG, "getSerial: " + e.getMessage()); +// } +// } else { +// bindInfoService(); +// } +// return mMMKV.decodeString(SN_KEY, ""); +// } public String getAppUsedStatistics() { Log.e(TAG, "getAppUsedStatistics: " ); diff --git a/app/src/main/java/com/xuexispace/ai/network/NetInterfaceManager.java b/app/src/main/java/com/xuexispace/ai/network/NetInterfaceManager.java index 1c8d85d..fb91d41 100644 --- a/app/src/main/java/com/xuexispace/ai/network/NetInterfaceManager.java +++ b/app/src/main/java/com/xuexispace/ai/network/NetInterfaceManager.java @@ -27,16 +27,16 @@ import com.xuexispace.ai.bean.UserAvatarInfo; import com.xuexispace.ai.config.CommonConfig; import com.xuexispace.ai.disklrucache.CacheHelper; import com.xuexispace.ai.gson.GsonUtils; -import com.xuexispace.ai.manager.RemoteManager; import com.xuexispace.ai.network.api.AlarmClockApi; import com.xuexispace.ai.network.api.AppUsageRecordApi; -import com.xuexispace.ai.network.api.GetFilesApi; +import com.xuexispace.ai.network.api.FilesApi; import com.xuexispace.ai.network.api.HomeworkApi; import com.xuexispace.ai.network.api.PhraseApi; import com.xuexispace.ai.network.api.SnInfoApi; import com.xuexispace.ai.network.api.SettingApi; import com.xuexispace.ai.network.api.uiuios.CheckUpdateApi; import com.xuexispace.ai.network.interceptor.RepeatRequestInterceptor; +import com.xuexispace.ai.utils.LenovoCsdkUtil; import com.xuexispace.ai.utils.OpenApkUtils; import com.xuexispace.ai.utils.Utils; @@ -220,16 +220,16 @@ public class NetInterfaceManager { * * */ - public Observable> getsnInfoControl() { + public Observable> getSnInfoControl() { return mRetrofit.create(SnInfoApi.class) - .getsninfo(RemoteManager.getInstance().getSerial()) + .getSninfo(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable> getUserAvatarInfoControl() { return mRetrofit.create(SnInfoApi.class) - .getUserAvatarInfo(RemoteManager.getInstance().getSerial()) + .getUserAvatarInfo(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } @@ -254,21 +254,21 @@ public class NetInterfaceManager { public Observable getRunningAppObservable(String json) { return mRetrofit.create(AppUsageRecordApi.class) - .sendRunningInfo(RemoteManager.getInstance().getSerial(), json) + .sendRunningInfo(LenovoCsdkUtil.getInstance().getSerial(), json) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable> getCloudLessonObservable() { return mRetrofit.create(SettingApi.class) - .getCloudLessonSetting(RemoteManager.getInstance().getSerial()) + .getCloudLessonSetting(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable> getCloudLessonAppObservable() { return mRetrofit.create(SettingApi.class) - .getCloudLessonApp(RemoteManager.getInstance().getSerial()) + .getCloudLessonApp(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } @@ -276,34 +276,34 @@ public class NetInterfaceManager { public Observable>> getAlarmClockObservable() { return mRetrofit .create(AlarmClockApi.class) - .getAlarmClock(RemoteManager.getInstance().getSerial()) + .getAlarmClock(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable getUpdateAlarmObservable(int id) { return mRetrofit.create(AlarmClockApi.class) - .updateAlarm(RemoteManager.getInstance().getSerial(), id) + .updateAlarm(LenovoCsdkUtil.getInstance().getSerial(), id) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable> getStudyStatObservable() { return mRetrofit.create(SnInfoApi.class) - .getStudyStat(RemoteManager.getInstance().getSerial()) + .getStudyStat(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable getUpdateAddressObservable(String address, double longitude, double latitude) { return mRetrofit.create(SnInfoApi.class) - .updateAddress(RemoteManager.getInstance().getSerial(), address, longitude, latitude) + .updateAddress(LenovoCsdkUtil.getInstance().getSerial(), address, longitude, latitude) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable> getFilesObservable(int type) { - return mRetrofit.create(GetFilesApi.class) + return mRetrofit.create(FilesApi.class) .getFiles(type) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); @@ -311,35 +311,35 @@ public class NetInterfaceManager { public Observable>> getHomeworkObservable() { return mRetrofit.create(HomeworkApi.class) - .getHomeworks(RemoteManager.getInstance().getSerial()) + .getHomeworks(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable> getHomeworkDetailObservable(int id) { return mRetrofit.create(HomeworkApi.class) - .getHomeworkDetail(RemoteManager.getInstance().getSerial(), id) + .getHomeworkDetail(LenovoCsdkUtil.getInstance().getSerial(), id) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable getHomeworkUpdateObservable(int id) { return mRetrofit.create(HomeworkApi.class) - .updateHomework(RemoteManager.getInstance().getSerial(), id) + .updateHomework(LenovoCsdkUtil.getInstance().getSerial(), id) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable> getPhraseObservable() { return mRetrofit.create(PhraseApi.class) - .getPhrase(RemoteManager.getInstance().getSerial()) + .getPhrase(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } public Observable> getsettingControl() { return mRetrofit.create(SettingApi.class) - .getSetting(RemoteManager.getInstance().getSerial()) + .getSetting(LenovoCsdkUtil.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } @@ -388,24 +388,24 @@ public class NetInterfaceManager { // } public void getSnInfo(BehaviorSubject lifecycle, ObserverCallback callback) { - getsnInfoControl() + getSnInfoControl() .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(getSnInfoObserver(callback)); } public void getSnInfoFragment(BehaviorSubject lifecycle, ObserverCallback callback) { - getsnInfoControl() + getSnInfoControl() .compose(RxLifecycle.bindUntilEvent(lifecycle, FragmentEvent.DESTROY)) .subscribe(getSnInfoObserver(callback)); } public void getSnInfo(ObserverCallback callback) { - getsnInfoControl() + getSnInfoControl() .subscribe(getSnInfoObserver(callback)); } public void getSnInfo() { - getsnInfoControl() + getSnInfoControl() .subscribe(getSnInfoObserver(null)); } diff --git a/app/src/main/java/com/xuexispace/ai/network/api/GetFilesApi.java b/app/src/main/java/com/xuexispace/ai/network/api/FilesApi.java similarity index 92% rename from app/src/main/java/com/xuexispace/ai/network/api/GetFilesApi.java rename to app/src/main/java/com/xuexispace/ai/network/api/FilesApi.java index eaded99..93cd426 100644 --- a/app/src/main/java/com/xuexispace/ai/network/api/GetFilesApi.java +++ b/app/src/main/java/com/xuexispace/ai/network/api/FilesApi.java @@ -8,7 +8,7 @@ import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; -public interface GetFilesApi { +public interface FilesApi { @GET(UrlAddress.GET_FILES) Observable> getFiles( @Query("type") int type diff --git a/app/src/main/java/com/xuexispace/ai/network/api/SnInfoApi.java b/app/src/main/java/com/xuexispace/ai/network/api/SnInfoApi.java index a045771..7075b9c 100644 --- a/app/src/main/java/com/xuexispace/ai/network/api/SnInfoApi.java +++ b/app/src/main/java/com/xuexispace/ai/network/api/SnInfoApi.java @@ -20,7 +20,7 @@ import retrofit2.http.Query; public interface SnInfoApi { @GET(UrlAddress.SNINFO) - Observable> getsninfo( + Observable> getSninfo( @Query("sn") String sn ); diff --git a/app/src/main/java/com/xuexispace/ai/push/alipush/AliMessageIntentService.java b/app/src/main/java/com/xuexispace/ai/push/alipush/AliMessageIntentService.java deleted file mode 100644 index 1bafa55..0000000 --- a/app/src/main/java/com/xuexispace/ai/push/alipush/AliMessageIntentService.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.xuexispace.ai.push.alipush; - -import android.content.Context; -import android.util.Log; - -import com.alibaba.sdk.android.push.AliyunMessageIntentService; -import com.alibaba.sdk.android.push.notification.CPushMessage; - -import java.util.Map; - -/** - * Created by liyazhou on 17/8/22. - * 为避免推送广播被系统拦截的小概率事件,我们推荐用户通过IntentService处理消息互调,接入步骤: - * 1. 创建IntentService并继承AliyunMessageIntentService - * 2. 覆写相关方法,并在Manifest的注册该Service - * 3. 调用接口CloudPushService.setPushIntentService - * 详细用户可参考:https://help.aliyun.com/document_detail/30066.html#h2-2-messagereceiver-aliyunmessageintentservice - */ - -public class AliMessageIntentService extends AliyunMessageIntentService { - private static final String TAG = "AliyunMessageIntentService"; - - /** - * 推送通知的回调方法 - * - * @param context - * @param title - * @param summary - * @param extraMap - */ - @Override - protected void onNotification(Context context, String title, String summary, Map extraMap) { - Log.i(TAG, "收到一条推送通知 : " + title + ", summary:" + summary); - } - - /** - * 推送消息的回调方法 - * - * @param context - * @param cPushMessage - */ - @Override - protected void onMessage(Context context, CPushMessage cPushMessage) { - Log.i(TAG, "收到一条推送消息 : " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent()); - } - - /** - * 从通知栏打开通知的扩展处理 - * - * @param context - * @param title - * @param summary - * @param extraMap - */ - @Override - protected void onNotificationOpened(Context context, String title, String summary, String extraMap) { - Log.i(TAG, "onNotificationOpened : " + " : " + title + " : " + summary + " : " + extraMap); - } - - /** - * 无动作通知点击回调。当在后台或阿里云控制台指定的通知动作为无逻辑跳转时,通知点击回调为onNotificationClickedWithNoAction而不是onNotificationOpened - * - * @param context - * @param title - * @param summary - * @param extraMap - */ - @Override - protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) { - Log.i(TAG, "onNotificationClickedWithNoAction : " + " : " + title + " : " + summary + " : " + extraMap); - } - - /** - * 通知删除回调 - * - * @param context - * @param messageId - */ - @Override - protected void onNotificationRemoved(Context context, String messageId) { - Log.i(TAG, "onNotificationRemoved : " + messageId); - } - - /** - * 应用处于前台时通知到达回调。注意:该方法仅对自定义样式通知有效,相关详情请参考https://help.aliyun.com/document_detail/30066.html#h3-3-4-basiccustompushnotification-api - * - * @param context - * @param title - * @param summary - * @param extraMap - * @param openType - * @param openActivity - * @param openUrl - */ - @Override - protected void onNotificationReceivedInApp(Context context, String title, String summary, Map extraMap, int openType, String openActivity, String openUrl) { - Log.i(TAG, "onNotificationReceivedInApp : " + " : " + title + " : " + summary + " " + extraMap + " : " + openType + " : " + openActivity + " : " + openUrl); - } -} diff --git a/app/src/main/java/com/xuexispace/ai/push/alipush/AliyunMessageReceiver.java b/app/src/main/java/com/xuexispace/ai/push/alipush/AliyunMessageReceiver.java deleted file mode 100644 index f70b096..0000000 --- a/app/src/main/java/com/xuexispace/ai/push/alipush/AliyunMessageReceiver.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.xuexispace.ai.push.alipush; - -import android.content.Context; -import android.util.Log; - -import com.alibaba.sdk.android.push.MessageReceiver; -import com.alibaba.sdk.android.push.notification.CPushMessage; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.xuexispace.ai.push.PushManager; - -import java.util.Map; - -/** - * @author: 正纬 - * @since: 15/4/9 - * @version: 1.1 - * @feature: 用于接收推送的通知和消息 - */ -public class AliyunMessageReceiver extends MessageReceiver { - // 消息接收部分的LOG_TAG - public static final String TAG = "AliyunMessageReceiver"; - - /** - * 推送通知的回调方法 - * - * @param context - * @param title - * @param summary - * @param extraMap - */ - @Override - public void onNotification(Context context, String title, String summary, Map extraMap) { - // TODO 处理推送通知 - if (null != extraMap) { - for (Map.Entry entry : extraMap.entrySet()) { - Log.i(TAG, "@Get diy param : Key=" + entry.getKey() + " , Value=" + entry.getValue()); - } - } else { - Log.i(TAG, "@收到通知 && 自定义消息为空"); - } - Log.i(TAG, "收到一条推送通知 : " + title + ", summary:" + summary); - } - - /** - * 应用处于前台时通知到达回调。注意:该方法仅对自定义样式通知有效,相关详情请参考https://help.aliyun.com/document_detail/30066.html?spm=5176.product30047.6.620.wjcC87#h3-3-4-basiccustompushnotification-api - * - * @param context - * @param title - * @param summary - * @param extraMap - * @param openType - * @param openActivity - * @param openUrl - */ - @Override - protected void onNotificationReceivedInApp(Context context, String title, String summary, Map extraMap, int openType, String openActivity, String openUrl) { - Log.i(TAG, "onNotificationReceivedInApp : " + " : " + title + " : " + summary + " " + extraMap + " : " + openType + " : " + openActivity + " : " + openUrl); - } - - /** - * 推送消息的回调方法 - * - * @param context - * @param cPushMessage - */ - @Override - public void onMessage(Context context, CPushMessage cPushMessage) { - Log.e(TAG, "收到一条推送消息 : " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent()); - String title = cPushMessage.getTitle(); - String content = cPushMessage.getContent(); - JsonObject extrasJson = JsonParser.parseString(content).getAsJsonObject(); - String extras = ""; - if (extrasJson.get("extras") != null) { - extras = extrasJson.get("extras").toString(); - } - PushManager.getInstance().setPushContent(title, extras); - } - - /** - * 从通知栏打开通知的扩展处理 - * - * @param context - * @param title - * @param summary - * @param extraMap - */ - @Override - public void onNotificationOpened(Context context, String title, String summary, String extraMap) { - Log.i(TAG, "onNotificationOpened : " + " : " + title + " : " + summary + " : " + extraMap); - } - - /** - * 通知删除回调 - * - * @param context - * @param messageId - */ - @Override - public void onNotificationRemoved(Context context, String messageId) { - Log.i(TAG, "onNotificationRemoved : " + messageId); - } - - /** - * 无动作通知点击回调。当在后台或阿里云控制台指定的通知动作为无逻辑跳转时,通知点击回调为onNotificationClickedWithNoAction而不是onNotificationOpened - * - * @param context - * @param title - * @param summary - * @param extraMap - */ - @Override - protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) { - Log.i(TAG, "onNotificationClickedWithNoAction : " + " : " + title + " : " + summary + " : " + extraMap); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/xuexispace/ai/service/SocketService.java b/app/src/main/java/com/xuexispace/ai/service/SocketService.java index 1261752..92c93fb 100644 --- a/app/src/main/java/com/xuexispace/ai/service/SocketService.java +++ b/app/src/main/java/com/xuexispace/ai/service/SocketService.java @@ -27,6 +27,7 @@ import com.xuexispace.ai.activity.main.MainActivity; import com.xuexispace.ai.config.CommonConfig; import com.xuexispace.ai.manager.RemoteManager; import com.xuexispace.ai.utils.ActivationUtil; +import com.xuexispace.ai.utils.LenovoCsdkUtil; import com.xuexispace.ai.utils.Utils; import com.xuexispace.ai.websocket.JWebSocketClient; @@ -111,11 +112,12 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat public void onCreate() { super.onCreate(); Log.e(TAG, "onCreate: "); + NetworkUtils.registerNetworkStatusChangedListener(this); registerScreenLockReceiver(); registerJxwRegisterRefreshReceiver(); - if (ActivationUtil.isActivation()) { + if (ActivationUtil.getInstance().isActivation()) { //初始化websocket initSocketClient(); startLoop(); @@ -265,7 +267,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat Log.e("JxwRegisterReceiver", "onReceive: " + action); if (JXW_REGISTER_SUCCESS.equals(action)) { mMMKV.encode(JXW_REGISTER_SUCCESS, true); - mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, ActivationUtil.ACTIVATED_KEY); + mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, ActivationUtil.getInstance().ACTIVATED_KEY); initSocketClient(); startLoop(); } @@ -292,7 +294,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat public void accept(Long s) throws Exception { Log.d(TAG, "startLoop accept: " + s); Log.i(TAG, "心跳包检测websocket连接状态"); - if (!ActivationUtil.isActivation()) { + if (!ActivationUtil.getInstance().isActivation()) { dispose(); } //每隔一定的时间,对长连接进行一次心跳检测 @@ -320,7 +322,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat * 初始化websocket连接 */ private void initSocketClient() { - URI uri = URI.create(BuildConfig.WEBSOCKET_URL + "?sn=" + RemoteManager.getInstance().getSerial()); + URI uri = URI.create(BuildConfig.WEBSOCKET_URL + "?sn=" + LenovoCsdkUtil.getInstance().getSerial()); mJWebSocketClient = new JWebSocketClient(uri) { @Override public void onMessage(String message) { @@ -398,7 +400,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat */ public void sendPingMsg() { JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("sn", RemoteManager.getInstance().getSerial()); + jsonObject.addProperty("sn", LenovoCsdkUtil.getInstance().getSerial()); jsonObject.addProperty("type", "ping"); if (null != mJWebSocketClient) { Log.i(TAG, "sendPingMsg: 发送的消息:" + jsonObject.toString()); @@ -408,7 +410,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat public void sendMsgScreen() { JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("sn", RemoteManager.getInstance().getSerial()); + jsonObject.addProperty("sn", LenovoCsdkUtil.getInstance().getSerial()); if (Utils.isScreenOn(SocketService.this)) { jsonObject.addProperty("type", "device_open_screen"); } else { diff --git a/app/src/main/java/com/xuexispace/ai/utils/ActivationUtil.java b/app/src/main/java/com/xuexispace/ai/utils/ActivationUtil.java index bd57995..dba9086 100644 --- a/app/src/main/java/com/xuexispace/ai/utils/ActivationUtil.java +++ b/app/src/main/java/com/xuexispace/ai/utils/ActivationUtil.java @@ -1,13 +1,12 @@ package com.xuexispace.ai.utils; +import android.annotation.SuppressLint; +import android.content.Context; + import com.tencent.mmkv.MMKV; import com.xuexispace.ai.config.CommonConfig; -@Deprecated public class ActivationUtil { - - private static MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); - /*写入1为激活*/ public static final int ACTIVATED_KEY = 1; public static final int INACTIVATED_KEY = 0; @@ -16,13 +15,38 @@ public class ActivationUtil { /*默认过期时间*/ public static final int DEFAULT_EXPIRE_TIME = -1; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + + @SuppressLint("StaticFieldLeak") + private static ActivationUtil sInstance; + private Context mContext; + + private ActivationUtil(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context.getApplicationContext(); + } + + public static void init(Context context) { + if (sInstance == null) { + sInstance = new ActivationUtil(context); + } + } + + public static ActivationUtil getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init ActivationUtil first"); + } + return sInstance; + } /** * 获取激活状态 * * @return */ - public static int getActivationStateCode() { + public int getActivationStateCode() { int activation = mMMKV.decodeInt(CommonConfig.UIUI_ACTIVATION_KEY, INACTIVATED_KEY); return activation; } @@ -32,7 +56,7 @@ public class ActivationUtil { * * @return */ - public static boolean isActivation() { + public boolean isActivation() { return getActivationStateCode() == ACTIVATED_KEY; } @@ -41,7 +65,7 @@ public class ActivationUtil { * * @param code */ - public static void setActivation(int code) { + public void setActivation(int code) { mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, code); } @@ -50,7 +74,7 @@ public class ActivationUtil { * * @param code */ - public static void setActivationCodeType(int code) { + public void setActivationCodeType(int code) { mMMKV.encode(CommonConfig.UIUI_CODE_TYPE_KEY, code); } @@ -59,7 +83,7 @@ public class ActivationUtil { * * @return */ - public static int getActivationCodeType() { + public int getActivationCodeType() { return mMMKV.decodeInt(CommonConfig.UIUI_CODE_TYPE_KEY, DEFAULT_CODE_TYPE); } @@ -68,7 +92,7 @@ public class ActivationUtil { * * @param expireTime */ - public static void setActivationExpireTime(long expireTime) { + public void setActivationExpireTime(long expireTime) { mMMKV.encode(CommonConfig.UIUI_EXPIRE_TIME_KEY, expireTime); } @@ -77,7 +101,7 @@ public class ActivationUtil { * * @return */ - public static long getActivationExpireTime() { + public long getActivationExpireTime() { return mMMKV.decodeLong(CommonConfig.UIUI_EXPIRE_TIME_KEY, DEFAULT_EXPIRE_TIME); } diff --git a/app/src/main/java/com/xuexispace/ai/utils/AppUsedTimeUtils.java b/app/src/main/java/com/xuexispace/ai/utils/AppUsedTimeUtils.java index d4f6e6a..71ca9b1 100644 --- a/app/src/main/java/com/xuexispace/ai/utils/AppUsedTimeUtils.java +++ b/app/src/main/java/com/xuexispace/ai/utils/AppUsedTimeUtils.java @@ -179,7 +179,7 @@ public class AppUsedTimeUtils { } public void sendRunningApp(RunningAppCallback runningAppCallback) { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } diff --git a/app/src/main/java/com/xuexispace/ai/utils/LenovoCsdkUtil.java b/app/src/main/java/com/xuexispace/ai/utils/LenovoCsdkUtil.java new file mode 100644 index 0000000..df0df16 --- /dev/null +++ b/app/src/main/java/com/xuexispace/ai/utils/LenovoCsdkUtil.java @@ -0,0 +1,75 @@ +package com.xuexispace.ai.utils; + +import android.annotation.SuppressLint; +import android.app.csdk.CSDKManager; +import android.content.Context; +import android.util.Log; + +import com.tencent.mmkv.MMKV; +import com.xuexispace.ai.BuildConfig; +import com.xuexispace.ai.config.CommonConfig; + +public class LenovoCsdkUtil { + private static final String TAG = "LenovoCsdkUtil"; + + @SuppressLint("StaticFieldLeak") + private static LenovoCsdkUtil sInstance; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + private Context mContext; + private CSDKManager mCSDKManager; + + + private LenovoCsdkUtil(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + this.mCSDKManager = new CSDKManager(context); + if (mCSDKManager.isLicenseKeyEnabled(BuildConfig.APPLICATION_ID)) { + Log.e(TAG, "LenovoCsdkUtil: devices activated"); + } else { + Log.e(TAG, "LenovoCsdkUtil: devices not activated"); + } + } + + public static void init(Context context) { + if (sInstance == null) { + Log.e(TAG, "init: "); + sInstance = new LenovoCsdkUtil(context); + } + } + + public static LenovoCsdkUtil getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init LenovoCsdkUtil first"); + } + return sInstance; + } + + /** + * int: 1 MAC + * int: 2 SN + * int: 3 Model + * int: 4 IMEI + */ + public String getDeviceMac() { + String mac = mCSDKManager.getDeviceInfo(1); + return mac; + } + + public String getSerial() { + String sn = mCSDKManager.getDeviceInfo(2); + return sn; + } + + public String getDeviceModel() { + String model = mCSDKManager.getDeviceInfo(3); + return model; + } + + public String getDeviceIMEI() { + String imei = mCSDKManager.getDeviceInfo(4); + return imei; + } + +} diff --git a/app/src/main/java/com/xuexispace/ai/utils/OpenApkUtils.java b/app/src/main/java/com/xuexispace/ai/utils/OpenApkUtils.java index 47d7fb0..3974b42 100644 --- a/app/src/main/java/com/xuexispace/ai/utils/OpenApkUtils.java +++ b/app/src/main/java/com/xuexispace/ai/utils/OpenApkUtils.java @@ -218,7 +218,7 @@ public class OpenApkUtils { }}; private void sendRuningApp(String packageName) { - boolean activation = ActivationUtil.isActivation(); + boolean activation = ActivationUtil.getInstance().isActivation(); if (!activation) { return; } diff --git a/app/src/main/res/drawable-hdpi/com_android_dialer.png b/app/src/main/res/drawable-hdpi/com_android_dialer.png index 842ddbc..06ae1cd 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_dialer.png and b/app/src/main/res/drawable-hdpi/com_android_dialer.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png b/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png index 06ae1cd..842ddbc 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png and b/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a056e5c..b8b73a9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -20,15 +20,64 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + app:layout_constraintTop_toTopOf="@+id/constraintLayout2" />