version:1.0.1
fix: update:去掉推送,增加退出和返回桌面,使用csdk获取sn
This commit is contained in:
@@ -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'
|
||||
//状态栏透明
|
||||
|
||||
BIN
app/libs/CSDK_TBY11_AiYouDu_250312.jar
Normal file
BIN
app/libs/CSDK_TBY11_AiYouDu_250312.jar
Normal file
Binary file not shown.
@@ -21,6 +21,7 @@ interface IGetInfoInterface {
|
||||
String getActivationCode();
|
||||
//设置为默认桌面
|
||||
void setDefaultLauncher(String pkg);
|
||||
void setCustomLauncher(String pkg, String className);
|
||||
//退出桌面
|
||||
void exitDesktop();
|
||||
//能否退出桌面
|
||||
|
||||
@@ -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<EditViewModel, ActivityEditBi
|
||||
Toaster.show("不能为空");
|
||||
return;
|
||||
}
|
||||
if (ActivationUtil.isActivation()) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
Map<String, String> 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 {
|
||||
|
||||
@@ -34,7 +34,7 @@ public class EditViewModel extends BaseViewModel<ActivityEditBinding, ActivityEv
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params) {
|
||||
if (!ActivationUtil.isActivation()) {
|
||||
if (!ActivationUtil.getInstance().isActivation()) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getUpdateInfoObservable(params)
|
||||
|
||||
@@ -38,7 +38,7 @@ public class HomeworkViewModel extends BaseViewModel<ActivityHomeworkBinding, Ac
|
||||
public MutableLiveData<ArrayList<HomeworkBean>> mHomeworkBeanListData = new MutableLiveData<>();
|
||||
|
||||
public void getHomeWork() {
|
||||
boolean activation = ActivationUtil.isActivation();
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -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<MainViewModel, ActivityMainBi
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private String[] mAllTitle = new String[]{"精准学", "语文", "数学", "英语", "物理", "化学", "生物", "综合"};
|
||||
|
||||
private PrecisionFragment mPrecisionFragment;
|
||||
private ChineseFragment mChineseFragment;
|
||||
private MathFragment mMathFragment;
|
||||
private EnglishFragment mEnglishFragment;
|
||||
|
||||
private PhysicsFragment mPhysicsFragment;
|
||||
private ChemicalFragment mChemicalFragment;
|
||||
private BiologyFragment mBiologyFragment;
|
||||
private ComplexFragment mComplexFragment;
|
||||
|
||||
|
||||
private List<Fragment> 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<MainViewModel, ActivityMainBi
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
Log.e(TAG, "initView: ");
|
||||
Log.e(TAG, "initView: getSerial = " + LenovoCsdkUtil.getInstance().getSerial());
|
||||
|
||||
// mViewDataBinding.ivIcon2.setImageDrawable(ApkUtils.getAppDrawable(MainActivity.this, "com.uiui.zy", R.drawable.com_uiui_sn));
|
||||
mViewDataBinding.tvAppname2.setText(ApkUtils.getAppName(MainActivity.this, "com.uiui.zy", "设备守护"));
|
||||
@@ -99,8 +127,6 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
||||
|
||||
Utils.getAndroiodScreenProperty(this);
|
||||
|
||||
|
||||
|
||||
Intent intent = new Intent(MainActivity.this, SocketService.class);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
startForegroundService(intent);
|
||||
@@ -124,6 +150,41 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
|
||||
}
|
||||
}
|
||||
|
||||
long time = System.currentTimeMillis();
|
||||
Log.e(TAG, "SubjectFragment: start " + time);
|
||||
mFragments = new ArrayList<>();
|
||||
|
||||
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<MainViewModel, ActivityMainBi
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||
return false;
|
||||
} else if (KeyEvent.KEYCODE_HOME == keyCode) {
|
||||
Log.e(TAG, "onKeyDown: keyCode = " + keyCode);
|
||||
//写要执行的动作或者任务
|
||||
android.os.Process.killProcess(android.os.Process.myPid());
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == KeyEvent.ACTION_DOWN) {
|
||||
lazyExit();
|
||||
return true;
|
||||
}
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
private long mPreClickTime;
|
||||
|
||||
private void lazyExit() {
|
||||
if (System.currentTimeMillis() - mPreClickTime > 3000) {
|
||||
Toaster.showShort("再按一次,退出");
|
||||
mPreClickTime = System.currentTimeMillis();
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
@@ -660,6 +729,10 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void exit(View view) {
|
||||
lazyExit();
|
||||
}
|
||||
|
||||
public void openRobot(View view) {
|
||||
OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_VOICE_PACKAGE_NAME, JxwPackageConfig.JXW_VOICE_CLASS_NAME);
|
||||
}
|
||||
|
||||
@@ -19,11 +19,11 @@ import com.xuexispace.ai.bean.SnInfo;
|
||||
import com.xuexispace.ai.bean.SystemSettings;
|
||||
import com.xuexispace.ai.config.CommonConfig;
|
||||
import com.xuexispace.ai.databinding.ActivityMainBinding;
|
||||
import com.xuexispace.ai.manager.RemoteManager;
|
||||
import com.xuexispace.ai.network.NetInterfaceManager;
|
||||
import com.xuexispace.ai.utils.ActivationUtil;
|
||||
import com.xuexispace.ai.utils.ApkUtils;
|
||||
import com.xuexispace.ai.utils.AppUsedTimeUtils;
|
||||
import com.xuexispace.ai.utils.LenovoCsdkUtil;
|
||||
import com.xuexispace.ai.utils.Utils;
|
||||
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
||||
@@ -51,7 +51,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
|
||||
public MutableLiveData<String> mGradleData = new MutableLiveData<>();
|
||||
|
||||
public void getSnInfo() {
|
||||
NetInterfaceManager.getInstance().getsnInfoControl()
|
||||
NetInterfaceManager.getInstance().getSnInfoControl()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<SnInfo>>() {
|
||||
@Override
|
||||
@@ -158,7 +158,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
|
||||
|
||||
@Deprecated
|
||||
public void sendAPPUsage() {
|
||||
boolean activation = ActivationUtil.isActivation();
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
@@ -174,7 +174,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
|
||||
Log.e(TAG, "onRestart: " + packagename);
|
||||
NetInterfaceManager.getInstance()
|
||||
.getAppUsageRecordControl()
|
||||
.sendappUsageRecord(RemoteManager.getInstance().getSerial(),
|
||||
.sendappUsageRecord(LenovoCsdkUtil.getInstance().getSerial(),
|
||||
ApkUtils.getAppNameByPackage(getCtx(), packagename),
|
||||
packagename,
|
||||
AppUsedTimeUtils.getInstance().getStartTime() / 1000,
|
||||
@@ -211,7 +211,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
|
||||
|
||||
@Deprecated
|
||||
public void sendRunningInfo() {
|
||||
boolean activation = ActivationUtil.isActivation();
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.xuexispace.ai.config.CommonConfig;
|
||||
import com.xuexispace.ai.databinding.ActivitySelecteGradeBinding;
|
||||
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 java.util.HashMap;
|
||||
@@ -166,9 +167,9 @@ public class SelecteGradeActivity extends BaseMvvmActivity<SelecteGradeViewModel
|
||||
|
||||
public void submit(View view) {
|
||||
mMMKV.encode(CommonConfig.UIUI_USER_GRADE_KEY, grade);
|
||||
if (ActivationUtil.isActivation()) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("sn", RemoteManager.getInstance().getSerial());
|
||||
params.put("sn", LenovoCsdkUtil.getInstance().getSerial());
|
||||
params.put("sn_grade", grade);
|
||||
mViewModel.updateInfo(params);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class SelecteGradeViewModel extends BaseViewModel<ActivitySelecteGradeBin
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params) {
|
||||
if (!ActivationUtil.isActivation()) {
|
||||
if (!ActivationUtil.getInstance().isActivation()) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -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<UserViewModel, ActivityUserBi
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.getAppUpdateInfoData().observe(this, new Observer<AppUpdateInfo>() {
|
||||
mViewModel.mAppUpdateInfoData.observe(this, new Observer<AppUpdateInfo>() {
|
||||
@Override
|
||||
public void onChanged(AppUpdateInfo appUpdateInfo) {
|
||||
if (appUpdateInfo == null) {
|
||||
@@ -152,7 +153,7 @@ public class UserActivity extends BaseMvvmActivity<UserViewModel, ActivityUserBi
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
if (ActivationUtil.isActivation()) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
mViewModel.getUserAvatarInfo();
|
||||
} else {
|
||||
setLocalData();
|
||||
@@ -231,7 +232,7 @@ public class UserActivity extends BaseMvvmActivity<UserViewModel, ActivityUserBi
|
||||
Log.e("selectPicture", "onResult: " + avatarFilePath);
|
||||
GlideLoadUtils.getInstance().glideLoad(UserActivity.this, avatarFilePath, mViewDataBinding.nvAvatar, R.drawable.default_avatar);
|
||||
|
||||
if (ActivationUtil.isActivation()) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
File avatarFile;
|
||||
if (TextUtils.isEmpty(avatarFilePath)) {
|
||||
avatarFile = FileUtil.drawableToFile(UserActivity.this, R.drawable.default_avatar, "avatar");
|
||||
@@ -244,7 +245,7 @@ public class UserActivity extends BaseMvvmActivity<UserViewModel, ActivityUserBi
|
||||
RequestBody requestBody = RequestBody.Companion.create(avatarFile, mediaType);
|
||||
MultipartBody.Part body = MultipartBody.Part.createFormData("avatar", avatarFile.getName(), requestBody);
|
||||
Map<String, String> 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);
|
||||
|
||||
@@ -67,11 +67,7 @@ public class UserViewModel extends BaseViewModel<ActivityUserBinding, ActivityEv
|
||||
});
|
||||
}
|
||||
|
||||
private MutableLiveData<AppUpdateInfo> mAppUpdateInfoData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<AppUpdateInfo> getAppUpdateInfoData() {
|
||||
return mAppUpdateInfoData;
|
||||
}
|
||||
public MutableLiveData<AppUpdateInfo> mAppUpdateInfoData = new MutableLiveData<>();
|
||||
|
||||
public void checkUpdate() {
|
||||
NetInterfaceManager.getInstance().getCheckUpdateObservable(BuildConfig.APPLICATION_ID)
|
||||
@@ -109,7 +105,7 @@ public class UserViewModel extends BaseViewModel<ActivityUserBinding, ActivityEv
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params, MultipartBody.Part multipartBody) {
|
||||
if (!ActivationUtil.isActivation()) {
|
||||
if (!ActivationUtil.getInstance().isActivation()) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -37,9 +37,7 @@ public class SubjectFragment extends BaseDataBindingFragment<FragmentSubjectBind
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private String[] mAllTitle = new String[]{
|
||||
// "AR自主学",
|
||||
"精准学", "语文", "数学", "英语", "物理", "化学", "生物", "综合"};
|
||||
private String[] mAllTitle = new String[]{"精准学", "语文", "数学", "英语", "物理", "化学", "生物", "综合"};
|
||||
|
||||
private String[] mTitleWithoutScience = new String[]{"精准学", "语文", "数学", "英语"};
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.xuexispace.ai.network.UrlAddress;
|
||||
import com.xuexispace.ai.utils.ActivationUtil;
|
||||
import com.xuexispace.ai.utils.ApkUtils;
|
||||
import com.xuexispace.ai.utils.CXAESUtil;
|
||||
import com.xuexispace.ai.utils.LenovoCsdkUtil;
|
||||
import com.xuexispace.ai.utils.TimeUtils;
|
||||
import com.xuexispace.ai.utils.Utils;
|
||||
|
||||
@@ -61,7 +62,7 @@ public class UserViewModel extends BaseViewModel<FragmentUserBinding, FragmentEv
|
||||
public MutableLiveData<BaseResponse<SnInfo>> 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<FragmentUserBinding, FragmentEv
|
||||
public MutableLiveData<StudyStatBean> 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<FragmentUserBinding, FragmentEv
|
||||
public MutableLiveData<Bitmap> 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<FragmentUserBinding, FragmentEv
|
||||
public MutableLiveData<List<HomeworkBean>> 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<FragmentUserBinding, FragmentEv
|
||||
public MutableLiveData<PhraseContent> mPhraseData = new MutableLiveData<>();
|
||||
|
||||
public void getPhrase() {
|
||||
boolean activation = ActivationUtil.isActivation();
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -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<DeviceViewModel, FragmentDeviceBinding> {
|
||||
|
||||
@@ -40,7 +41,7 @@ public class DeviceFragment extends BaseMvvmFragment<DeviceViewModel, FragmentDe
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.tvModel.setText(Build.MODEL);
|
||||
mViewDataBinding.tvVersion.setText(BuildConfig.VERSION_NAME);
|
||||
mViewDataBinding.tvMac.setText(RemoteManager.getInstance().getSerial());
|
||||
mViewDataBinding.tvMac.setText(LenovoCsdkUtil.getInstance().getSerial());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.xuexispace.ai.config.CommonConfig;
|
||||
import com.xuexispace.ai.databinding.FragmentInfoBinding;
|
||||
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;
|
||||
@@ -60,9 +61,9 @@ public class InfoFragment extends BaseMvvmFragment<InfoViewModel, FragmentInfoBi
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
if (b) {
|
||||
if (ActivationUtil.isActivation()) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
Map<String, String> 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<InfoViewModel, FragmentInfoBi
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
if (b) {
|
||||
if (ActivationUtil.isActivation()) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
Map<String, String> 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<InfoViewModel, FragmentInfoBi
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (ActivationUtil.isActivation()) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
mViewModel.getSnInfo();
|
||||
} else {
|
||||
getLocalData();
|
||||
|
||||
@@ -35,11 +35,11 @@ public class InfoViewModel extends BaseViewModel<FragmentInfoBinding, FragmentEv
|
||||
public MutableLiveData<SnInfo> 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<BaseResponse<SnInfo>>() {
|
||||
@Override
|
||||
@@ -70,7 +70,7 @@ public class InfoViewModel extends BaseViewModel<FragmentInfoBinding, FragmentEv
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params) {
|
||||
if (!ActivationUtil.isActivation()) {
|
||||
if (!ActivationUtil.getInstance().isActivation()) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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: " );
|
||||
|
||||
@@ -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<BaseResponse<SnInfo>> getsnInfoControl() {
|
||||
public Observable<BaseResponse<SnInfo>> getSnInfoControl() {
|
||||
return mRetrofit.create(SnInfoApi.class)
|
||||
.getsninfo(RemoteManager.getInstance().getSerial())
|
||||
.getSninfo(LenovoCsdkUtil.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<UserAvatarInfo>> 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<BaseResponse> 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<BaseResponse<LessonSetting>> getCloudLessonObservable() {
|
||||
return mRetrofit.create(SettingApi.class)
|
||||
.getCloudLessonSetting(RemoteManager.getInstance().getSerial())
|
||||
.getCloudLessonSetting(LenovoCsdkUtil.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<LessonApp>> 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<BaseResponse<List<AlarmClockData>>> getAlarmClockObservable() {
|
||||
return mRetrofit
|
||||
.create(AlarmClockApi.class)
|
||||
.getAlarmClock(RemoteManager.getInstance().getSerial())
|
||||
.getAlarmClock(LenovoCsdkUtil.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> 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<BaseResponse<StudyStatBean>> getStudyStatObservable() {
|
||||
return mRetrofit.create(SnInfoApi.class)
|
||||
.getStudyStat(RemoteManager.getInstance().getSerial())
|
||||
.getStudyStat(LenovoCsdkUtil.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> 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<BaseResponse<GuideBean>> 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<BaseResponse<ArrayList<HomeworkBean>>> getHomeworkObservable() {
|
||||
return mRetrofit.create(HomeworkApi.class)
|
||||
.getHomeworks(RemoteManager.getInstance().getSerial())
|
||||
.getHomeworks(LenovoCsdkUtil.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<HomeworkBean>> 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<BaseResponse> 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<BaseResponse<PhraseContent>> getPhraseObservable() {
|
||||
return mRetrofit.create(PhraseApi.class)
|
||||
.getPhrase(RemoteManager.getInstance().getSerial())
|
||||
.getPhrase(LenovoCsdkUtil.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<SystemSettings>> 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<ActivityEvent> lifecycle, ObserverCallback callback) {
|
||||
getsnInfoControl()
|
||||
getSnInfoControl()
|
||||
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
|
||||
.subscribe(getSnInfoObserver(callback));
|
||||
}
|
||||
|
||||
public void getSnInfoFragment(BehaviorSubject<FragmentEvent> 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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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<BaseResponse<GuideBean>> getFiles(
|
||||
@Query("type") int type
|
||||
@@ -20,7 +20,7 @@ import retrofit2.http.Query;
|
||||
|
||||
public interface SnInfoApi {
|
||||
@GET(UrlAddress.SNINFO)
|
||||
Observable<BaseResponse<SnInfo>> getsninfo(
|
||||
Observable<BaseResponse<SnInfo>> getSninfo(
|
||||
@Query("sn") String sn
|
||||
);
|
||||
|
||||
|
||||
@@ -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<String, String> 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<String, String> extraMap, int openType, String openActivity, String openUrl) {
|
||||
Log.i(TAG, "onNotificationReceivedInApp : " + " : " + title + " : " + summary + " " + extraMap + " : " + openType + " : " + openActivity + " : " + openUrl);
|
||||
}
|
||||
}
|
||||
@@ -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<String, String> extraMap) {
|
||||
// TODO 处理推送通知
|
||||
if (null != extraMap) {
|
||||
for (Map.Entry<String, String> 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<String, String> 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);
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@ public class AppUsedTimeUtils {
|
||||
}
|
||||
|
||||
public void sendRunningApp(RunningAppCallback runningAppCallback) {
|
||||
boolean activation = ActivationUtil.isActivation();
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -218,7 +218,7 @@ public class OpenApkUtils {
|
||||
}};
|
||||
|
||||
private void sendRuningApp(String packageName) {
|
||||
boolean activation = ActivationUtil.isActivation();
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 32 KiB |
@@ -20,15 +20,64 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/subjectFragment"
|
||||
android:name="com.xuexispace.ai.fragment.subject.SubjectFragment"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/constraintLayout2"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/constraintLayout15"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView27"
|
||||
android:layout_width="@dimen/dp_20"
|
||||
android:layout_height="@dimen/dp_20"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_marginStart="@dimen/dp_8"
|
||||
android:onClick="@{click::exit}"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/icon_homework_back"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.flyco.tablayout.SlidingTabLayout
|
||||
android:id="@+id/main_sliding_tab_layout"
|
||||
android:layout_marginStart="@dimen/dp_8"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/dp_24"
|
||||
android:layout_marginTop="@dimen/dp_2"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/imageView27"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:tl_indicator_color="#FFFFFF"
|
||||
app:tl_indicator_style="NORMAL"
|
||||
app:tl_indicator_width_equal_title="true"
|
||||
app:tl_tab_space_equal="false"
|
||||
app:tl_textBold="SELECT"
|
||||
app:tl_textSelectSize="@dimen/sp_13"
|
||||
app:tl_textSize="@dimen/sp_11"
|
||||
app:tl_textUnSelectSize="@dimen/sp_11" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/viewPager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/constraintLayout15" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_robot"
|
||||
@@ -41,7 +90,7 @@
|
||||
android:src="@drawable/robot"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/constraintLayout2"
|
||||
app:layout_constraintEnd_toStartOf="@+id/constraintLayout2"
|
||||
app:layout_constraintTop_toBottomOf="@+id/magicIndicator" />
|
||||
app:layout_constraintTop_toTopOf="@+id/constraintLayout2" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/constraintLayout2"
|
||||
|
||||
Reference in New Issue
Block a user