From 512f2ed70c4f02c72ab526e46cf198badc7fc835 Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Tue, 11 Jun 2024 14:49:13 +0800 Subject: [PATCH] =?UTF-8?q?version:1.7.9=20fix:=E4=BF=AE=E5=A4=8D=E7=AB=96?= =?UTF-8?q?=E5=B1=8F=E6=8A=A5=E9=94=99=20update:=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AE=A2=E6=9C=8D=EF=BC=8C=E9=80=82=E9=85=8D=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E7=89=88=E6=9C=ACai=E7=B2=BE=E5=87=86=E5=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 73 +-- app/src/main/AndroidManifest.xml | 59 +- .../com/uiui/zyos/activity/AboutActivity.java | 6 +- .../uiui/zyos/activity/AddIconActivity.java | 5 +- .../com/uiui/zyos/activity/ExitActivity.java | 4 +- .../uiui/zyos/activity/ManualActivity.java | 6 +- .../uiui/zyos/activity/PasswordActivity.java | 10 +- .../uiui/zyos/activity/PolicyActivity.java | 7 +- .../uiui/zyos/activity/ServiceActivity.java | 25 + .../uiui/zyos/activity/main/MainActivity.java | 121 +++- .../uiui/zyos/activity/main/MainContact.java | 4 +- .../zyos/activity/more/MoreAppActivity.java | 7 +- .../uiui/zyos/activity/more/MoreContact.java | 4 +- .../com/uiui/zyos/adapter/AddAppAdapter.java | 3 +- .../com/uiui/zyos/adapter/AppAdapter.java | 10 +- .../java/com/uiui/zyos/base/BaseActivity.java | 151 ----- .../com/uiui/zyos/base/BaseApplication.java | 6 +- .../zyos/base/BaseDataBindingActivity.java | 111 +--- .../java/com/uiui/zyos/base/BaseFragment.java | 117 +--- .../zyos/base/BaseTransparentActivity.java | 57 ++ .../java/com/uiui/zyos/base/BaseView.java | 4 - .../uiui/zyos/base/mvp/BaseMvpActivity.java | 34 ++ .../zyos/base/{ => mvp}/BasePresenter.java | 2 +- .../java/com/uiui/zyos/base/mvp/BaseView.java | 4 + .../uiui/zyos/base/mvvm/BaseMvvmActivity.java | 54 ++ .../uiui/zyos/base/mvvm/BaseViewModel.java | 71 +++ .../base/mvvm/ViewDataBindingCallback.java | 26 + .../BaseRxActivity.java} | 55 +- .../com/uiui/zyos/base/rx/BaseRxFragment.java | 123 ++++ .../BaseRxService.java} | 19 +- .../com/uiui/zyos/config/CommonConfig.java | 9 + .../uiui/zyos/fragment/app/AppContact.java | 4 +- .../uiui/zyos/fragment/app/AppFragment.java | 2 +- .../uiui/zyos/fragment/app/AppPresenter.java | 24 +- .../fragment/biology/BiologyFragment.java | 10 +- .../fragment/chemical/ChemicalFragment.java | 6 +- .../zyos/fragment/chinese/ChineseContact.java | 4 +- .../fragment/chinese/ChineseFragment.java | 11 +- .../fragment/english/EnglishFragment.java | 6 +- .../uiui/zyos/fragment/main/MainContact.java | 4 +- .../uiui/zyos/fragment/main/MainFragment.java | 4 +- .../uiui/zyos/fragment/math/MathFragment.java | 10 +- .../fragment/physics/PhysicsFragment.java | 15 +- .../fragment/precision/PrecisionFragment.java | 37 +- .../fragment/subject/SubjectFragment.java | 2 +- .../uiui/zyos/fragment/user/UserContact.java | 4 +- .../uiui/zyos/fragment/user/UserFragment.java | 6 +- .../zyos/fragment/user/UserPresenter.java | 8 + .../com/uiui/zyos/jxw/JxwPackageConfig.java | 7 +- .../com/uiui/zyos/manager/AmapManager.java | 216 +++++++ .../com/uiui/zyos/manager/AppManager.java | 3 + .../com/uiui/zyos/manager/RemoteManager.java | 80 --- .../zyos/network/NetInterfaceManager.java | 9 + .../com/uiui/zyos/network/UrlAddress.java | 3 + .../zyos/network/api/UpdateAddressApi.java | 20 + .../java/com/uiui/zyos/push/PushManager.java | 6 +- .../com/uiui/zyos/receiver/BootReceiver.java | 5 +- .../zyos/receiver/InstallResultReceiver.java | 2 +- .../uiui/zyos/service/main/MainSContact.java | 4 +- .../uiui/zyos/service/main/MainService.java | 9 +- .../com/uiui/zyos/utils/ActivationUtil.java | 90 +++ .../com/uiui/zyos/utils/OpenApkUtils.java | 137 ++++- .../java/com/uiui/zyos/utils/ToastUtil.java | 93 --- .../zyos/{base => view}/CustomContent.java | 2 +- .../CustomContentCallbacks.java | 2 +- .../viewpager/BaseFragmentPagerAdapter.java | 2 +- .../viewpager/SubjectViewPagerAdapter.java | 2 +- .../viewpager/ViewPager2Adapter.java | 2 +- .../res/drawable-hdpi/com_jxw_examsystem.png | Bin 0 -> 7322 bytes .../main/res/drawable-hdpi/service_icon.png | Bin 0 -> 29577 bytes .../main/res/drawable-hdpi/wechat_service.png | Bin 0 -> 153001 bytes .../main/res/layout-land/fragment_chinese.xml | 4 +- .../main/res/layout-land/fragment_complex.xml | 4 +- .../res/layout-sw800dp/fragment_chinese.xml | 4 +- .../res/layout-sw800dp/fragment_complex.xml | 4 +- app/src/main/res/layout/activity_main.xml | 40 +- app/src/main/res/layout/activity_wechat.xml | 27 + app/src/main/res/layout/fragment_app.xml | 45 ++ app/src/main/res/layout/fragment_ar_study.xml | 86 +++ app/src/main/res/layout/fragment_biology.xml | 137 +++++ app/src/main/res/layout/fragment_chemical.xml | 137 +++++ app/src/main/res/layout/fragment_chinese.xml | 465 +++++++++++++++ app/src/main/res/layout/fragment_complex.xml | 442 +++++++++++++++ app/src/main/res/layout/fragment_english.xml | 159 ++++++ app/src/main/res/layout/fragment_main.xml | 297 ++++++++++ app/src/main/res/layout/fragment_math.xml | 418 ++++++++++++++ app/src/main/res/layout/fragment_physics.xml | 136 +++++ .../main/res/layout/fragment_precision.xml | 130 +++++ app/src/main/res/layout/fragment_subject.xml | 38 ++ app/src/main/res/layout/fragment_user.xml | 535 ++++++++++++++++++ app/src/main/res/values/styles.xml | 29 +- 91 files changed, 4386 insertions(+), 789 deletions(-) create mode 100644 app/src/main/java/com/uiui/zyos/activity/ServiceActivity.java delete mode 100644 app/src/main/java/com/uiui/zyos/base/BaseActivity.java create mode 100644 app/src/main/java/com/uiui/zyos/base/BaseTransparentActivity.java delete mode 100644 app/src/main/java/com/uiui/zyos/base/BaseView.java create mode 100644 app/src/main/java/com/uiui/zyos/base/mvp/BaseMvpActivity.java rename app/src/main/java/com/uiui/zyos/base/{ => mvp}/BasePresenter.java (82%) create mode 100644 app/src/main/java/com/uiui/zyos/base/mvp/BaseView.java create mode 100644 app/src/main/java/com/uiui/zyos/base/mvvm/BaseMvvmActivity.java create mode 100644 app/src/main/java/com/uiui/zyos/base/mvvm/BaseViewModel.java create mode 100644 app/src/main/java/com/uiui/zyos/base/mvvm/ViewDataBindingCallback.java rename app/src/main/java/com/uiui/zyos/base/{BaseLightActivity.java => rx/BaseRxActivity.java} (61%) create mode 100644 app/src/main/java/com/uiui/zyos/base/rx/BaseRxFragment.java rename app/src/main/java/com/uiui/zyos/base/{BaseService.java => rx/BaseRxService.java} (74%) create mode 100644 app/src/main/java/com/uiui/zyos/manager/AmapManager.java create mode 100644 app/src/main/java/com/uiui/zyos/network/api/UpdateAddressApi.java create mode 100644 app/src/main/java/com/uiui/zyos/utils/ActivationUtil.java delete mode 100644 app/src/main/java/com/uiui/zyos/utils/ToastUtil.java rename app/src/main/java/com/uiui/zyos/{base => view}/CustomContent.java (98%) rename app/src/main/java/com/uiui/zyos/{base => view}/CustomContentCallbacks.java (95%) rename app/src/main/java/com/uiui/zyos/{base => view}/viewpager/BaseFragmentPagerAdapter.java (99%) rename app/src/main/java/com/uiui/zyos/{base => view}/viewpager/SubjectViewPagerAdapter.java (94%) rename app/src/main/java/com/uiui/zyos/{base => view}/viewpager/ViewPager2Adapter.java (96%) create mode 100644 app/src/main/res/drawable-hdpi/com_jxw_examsystem.png create mode 100644 app/src/main/res/drawable-hdpi/service_icon.png create mode 100644 app/src/main/res/drawable-hdpi/wechat_service.png create mode 100644 app/src/main/res/layout/activity_wechat.xml create mode 100644 app/src/main/res/layout/fragment_app.xml create mode 100644 app/src/main/res/layout/fragment_ar_study.xml create mode 100644 app/src/main/res/layout/fragment_biology.xml create mode 100644 app/src/main/res/layout/fragment_chemical.xml create mode 100644 app/src/main/res/layout/fragment_chinese.xml create mode 100644 app/src/main/res/layout/fragment_complex.xml create mode 100644 app/src/main/res/layout/fragment_english.xml create mode 100644 app/src/main/res/layout/fragment_main.xml create mode 100644 app/src/main/res/layout/fragment_math.xml create mode 100644 app/src/main/res/layout/fragment_physics.xml create mode 100644 app/src/main/res/layout/fragment_precision.xml create mode 100644 app/src/main/res/layout/fragment_subject.xml create mode 100644 app/src/main/res/layout/fragment_user.xml diff --git a/app/build.gradle b/app/build.gradle index e13b0c0..fa37e77 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { minSdkVersion 24 targetSdkVersion 29 - versionCode 68 - versionName "1.7.6" + versionCode 71 + versionName "1.7.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true @@ -27,6 +27,7 @@ android { abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' // 还可以添加 'x86', 'x86_64', 'mips', 'mips64' } + } dataBinding { @@ -57,14 +58,14 @@ android { v2SigningEnabled false } - iPlay50SE { - storeFile file("keystore/iPlay50SE.keystore") - storePassword "123456" - keyAlias "iplay50se" - keyPassword "123456" - v1SigningEnabled true - v2SigningEnabled true - } +// iPlay50SE { +// storeFile file("keystore/iPlay50SE.keystore") +// storePassword "123456" +// keyAlias "iplay50se" +// keyPassword "123456" +// v1SigningEnabled true +// v2SigningEnabled true +// } U807 { storeFile file("keystore/AllwinnerU807.jks") @@ -82,48 +83,29 @@ android { debuggable true signingConfig signingConfigs.U807 buildConfigField "String", "platform", '"U807"' + manifestPlaceholders = [ + AMAP_KEY : "d0cdff4516bb1a788ebdc02aeee75614" + ] } U807Release.initWith(release) U807Release { signingConfig signingConfigs.U807 buildConfigField "String", "platform", '"U807"' + manifestPlaceholders = [ + AMAP_KEY : "d0cdff4516bb1a788ebdc02aeee75614" + ] } -// iPlay50SEDebug.initWith(debug) -// iPlay50SEDebug { -// versionNameSuffix "-debug" -// debuggable true -// signingConfig signingConfigs.iPlay50SE -// } -// -// iPlay50SERelease.initWith(release) -// iPlay50SERelease { -// signingConfig signingConfigs.iPlay50SE -// } - -// iPlay50SEDebug.initWith(debug) -// iPlay50SEDebug { -// versionNameSuffix "-debug" -// debuggable true -// signingConfig signingConfigs.tuixin -// resValue "string", "app_name", "学习课堂" -// } -// -// iPlay50SERelease.initWith(release) -// iPlay50SERelease { -// signingConfig signingConfigs.tuixin -// resValue "string", "app_name", "学习课堂" -// } - debug { -// resValue "string", "app_name", "学习课堂" - // 显示Log versionNameSuffix "-debug" minifyEnabled false //Zipalign优化 zipAlignEnabled true buildConfigField "String", "platform", '"tuixin"' + manifestPlaceholders = [ + AMAP_KEY : "9c9fabf3934df224e927b2f9fbc51064" + ] signingConfig signingConfigs.tuixin applicationVariants.all { variant -> variant.outputs.each { output -> @@ -137,8 +119,6 @@ android { } release { -// resValue "string", "app_name", "学习课堂" - //混淆 minifyEnabled false //Zipalign优化 zipAlignEnabled true @@ -147,6 +127,9 @@ android { //签名 signingConfig signingConfigs.tuixin buildConfigField "String", "platform", '"tuixin"' + manifestPlaceholders = [ + AMAP_KEY : "9c9fabf3934df224e927b2f9fbc51064" + ] // 将release版本的包名重命名,加上版本及日期 applicationVariants.all { variant -> variant.outputs.each { output -> @@ -216,12 +199,16 @@ dependencies { //bindView implementation 'com.jakewharton:butterknife:10.2.3' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' + implementation 'com.jakewharton.rxbinding4:rxbinding:4.0.0' + implementation 'com.jeremyliao:live-event-bus-x:1.7.3' //MMKV implementation 'com.tencent:mmkv-static:1.2.14' //bugly implementation 'com.tencent.bugly:crashreport:4.1.9.2' //阿里云推送 implementation 'com.aliyun.ams:alicloud-android-push:3.8.0' + //高德地图定位 + implementation 'com.amap.api:location:5.1.0' //状态栏透明 implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' //指示器 @@ -234,14 +221,16 @@ dependencies { //aria implementation 'com.arialyy.aria:core:3.8.15' annotationProcessor 'com.arialyy.aria:compiler:3.8.15' - //动态权限框架 - implementation 'com.github.getActivity:XXPermissions:16.6' //videoplayer implementation 'cn.jzvd:jiaozivideoplayer:7.7.0' implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-core:1.0.16' implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-native:1.0.16' //验证码输入 // implementation 'com.jacktuotuo.customview:verificationcodeview:1.0.5' + //动态权限框架 + implementation 'com.github.getActivity:XXPermissions:18.63' + // 吐司框架:https://github.com/getActivity/Toaster + implementation 'com.github.getActivity:Toaster:12.6' } preBuild { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b0a6669..7d6cb6f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:theme="@style/DialogCloseOnTouchOutside" /> + android:screenOrientation="userLandscape" /> + + + + + + + permissions, boolean allGranted) { + Log.e(TAG, "onGranted: permissions = " + permissions + " allGranted = " + allGranted); if (!allGranted) { - ToastUtil.show("获取部分权限成功,但部分权限未正常授予"); + Toaster.show("获取部分权限成功,但部分权限未正常授予"); return; } -// ToastUtil.show("获取录音和日历权限成功"); - Log.e(TAG, "onGranted: 获取存储权限成功"); - getData(); + Log.e(TAG, "onGranted: 获取权限成功"); + getLocationPermission(); } @Override public void onDenied(@NonNull List permissions, boolean doNotAskAgain) { + Log.e(TAG, "onDenied: permissions = " + permissions + " doNotAskAgain = " + doNotAskAgain); if (doNotAskAgain) { - ToastUtil.show("被永久拒绝授权,请手动授予存储权限"); + Toaster.show("被永久拒绝授权,请手动授予权限"); // 如果是被永久拒绝就跳转到应用权限系统设置页面 XXPermissions.startPermissionActivity(MainActivity.this, permissions); } else { -// ToastUtil.show("获取录音和日历权限失败"); - Log.e(TAG, "onGranted: 获取存储权限权限失败"); + Log.e(TAG, "onGranted: 获取权限失败"); } } }); } - private void getData() { -// if (!isNotificationListenersEnabled()) { -// ToastUtil.show("请授予\"" + getString(R.string.app_name) + "\"使用通知权"); -// gotoNotificationAccessSetting(this); -// } -// addHomeWatcher(); + private String[] mLocationPermission = new String[]{ + Permission.ACCESS_COARSE_LOCATION, + Permission.ACCESS_FINE_LOCATION, + Permission.ACCESS_BACKGROUND_LOCATION, + }; + + private void getLocationPermission() { + XXPermissions.with(this) + // 申请单个权限 + .permission(mLocationPermission) + // 申请多个权限 +// .permission(Permission.Group.STORAGE) + // 设置权限请求拦截器(局部设置) + //.interceptor(new PermissionInterceptor()) + // 设置不触发错误检测机制(局部设置) + //.unchecked() + .request(new OnPermissionCallback() { + @Override + public void onGranted(@NonNull List permissions, boolean allGranted) { + Log.e(TAG, "onGranted: permissions = " + permissions + " allGranted = " + allGranted); + if (!allGranted) { + Toaster.show("获取部分权限成功,但部分权限未正常授予"); + return; + } + Log.e(TAG, "onGranted: 获取定位权限成功"); + } + + @Override + public void onDenied(@NonNull List permissions, boolean doNotAskAgain) { + Log.e(TAG, "onDenied: permissions = " + permissions + " doNotAskAgain = " + doNotAskAgain); + if (doNotAskAgain) { + Toaster.show("被永久拒绝授权,请手动授予定位权限"); + // 如果是被永久拒绝就跳转到应用权限系统设置页面 + XXPermissions.startPermissionActivity(MainActivity.this, permissions); + } else { + Log.e(TAG, "onGranted: 获取定位权限失败"); + } + } + }); } PrivacyPolicyDialog privacyPolicyDialog; @@ -543,9 +588,8 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, @Override public void onConfirm() { mMMKV.encode("AgreePrivacyPolicy", 1); - getPermission(); privacyPolicyDialog.dismiss(); - getData(); + getPermission(); } }); privacyPolicyDialog.show(); @@ -610,7 +654,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, } catch (Exception e1) { e1.printStackTrace(); } - ToastUtil.show("对不起,您的手机暂不支持"); + Toaster.show("对不起,您的手机暂不支持"); e.printStackTrace(); return false; } @@ -642,6 +686,25 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, } } + private void registmUpdateAddressReceiver() { + mUpdateAddressReceiver = new UpdateAddressReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction(CommonConfig.IFLYTEK_UPDATE_ADDRESS_ACTION); + registerReceiver(mUpdateAddressReceiver, filter); + } + + private UpdateAddressReceiver mUpdateAddressReceiver; + + class UpdateAddressReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (CommonConfig.IFLYTEK_UPDATE_ADDRESS_ACTION.equals(action)) { + AmapManager.getInstance().startLocation(); + } + } + } + @Override public void sendAPPUsageFinish() { diff --git a/app/src/main/java/com/uiui/zyos/activity/main/MainContact.java b/app/src/main/java/com/uiui/zyos/activity/main/MainContact.java index 2d6c1d8..932f39b 100644 --- a/app/src/main/java/com/uiui/zyos/activity/main/MainContact.java +++ b/app/src/main/java/com/uiui/zyos/activity/main/MainContact.java @@ -1,7 +1,7 @@ package com.uiui.zyos.activity.main; -import com.uiui.zyos.base.BasePresenter; -import com.uiui.zyos.base.BaseView; +import com.uiui.zyos.base.mvp.BasePresenter; +import com.uiui.zyos.base.mvp.BaseView; public class MainContact { public interface Presenter extends BasePresenter { diff --git a/app/src/main/java/com/uiui/zyos/activity/more/MoreAppActivity.java b/app/src/main/java/com/uiui/zyos/activity/more/MoreAppActivity.java index 7d30b54..bd7cc5d 100644 --- a/app/src/main/java/com/uiui/zyos/activity/more/MoreAppActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/more/MoreAppActivity.java @@ -17,9 +17,8 @@ import androidx.recyclerview.widget.RecyclerView; import com.uiui.zyos.R; import com.uiui.zyos.adapter.AppAdapter; -import com.uiui.zyos.base.BaseActivity; +import com.uiui.zyos.base.mvp.BaseMvpActivity; import com.uiui.zyos.bean.DesktopIcon; -import com.uiui.zyos.fragment.user.UserFragment; import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration; import java.util.HashMap; @@ -28,7 +27,7 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; -public class MoreAppActivity extends BaseActivity implements MoreContact.MoreView { +public class MoreAppActivity extends BaseMvpActivity implements MoreContact.MoreView { @BindView(R.id.iv_back) ImageView iv_back; @@ -51,7 +50,7 @@ public class MoreAppActivity extends BaseActivity implements MoreContact.MoreVie ButterKnife.bind(this); mPresenter = new MorePresenter(this); mPresenter.attachView(this); - mPresenter.setLifecycle(lifecycleSubject); + mPresenter.setLifecycle(getLifecycleSubject()); iv_back.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/uiui/zyos/activity/more/MoreContact.java b/app/src/main/java/com/uiui/zyos/activity/more/MoreContact.java index f18f60c..fd119d2 100644 --- a/app/src/main/java/com/uiui/zyos/activity/more/MoreContact.java +++ b/app/src/main/java/com/uiui/zyos/activity/more/MoreContact.java @@ -1,7 +1,7 @@ package com.uiui.zyos.activity.more; -import com.uiui.zyos.base.BasePresenter; -import com.uiui.zyos.base.BaseView; +import com.uiui.zyos.base.mvp.BasePresenter; +import com.uiui.zyos.base.mvp.BaseView; import com.uiui.zyos.bean.DesktopIcon; import java.util.List; diff --git a/app/src/main/java/com/uiui/zyos/adapter/AddAppAdapter.java b/app/src/main/java/com/uiui/zyos/adapter/AddAppAdapter.java index f569ed7..5d3dc4b 100644 --- a/app/src/main/java/com/uiui/zyos/adapter/AddAppAdapter.java +++ b/app/src/main/java/com/uiui/zyos/adapter/AddAppAdapter.java @@ -15,7 +15,6 @@ import androidx.constraintlayout.widget.ConstraintLayout; import androidx.recyclerview.widget.RecyclerView; import com.uiui.zyos.R; -import com.uiui.zyos.activity.PasswordActivity; import com.uiui.zyos.bean.DesktopIcon; import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.manager.AppManager; @@ -23,7 +22,7 @@ import com.uiui.zyos.utils.ApkUtils; import com.uiui.zyos.utils.BitmapUtils; import com.uiui.zyos.utils.IconUtils; import com.uiui.zyos.utils.OpenApkUtils; -import com.uiui.zyos.utils.ToastUtil; +import com.hjq.toast.Toaster; import java.util.List; import java.util.Set; diff --git a/app/src/main/java/com/uiui/zyos/adapter/AppAdapter.java b/app/src/main/java/com/uiui/zyos/adapter/AppAdapter.java index 077260e..3cf5b6c 100644 --- a/app/src/main/java/com/uiui/zyos/adapter/AppAdapter.java +++ b/app/src/main/java/com/uiui/zyos/adapter/AppAdapter.java @@ -16,9 +16,11 @@ import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.recyclerview.widget.RecyclerView; +import com.hjq.toast.Toaster; import com.uiui.zyos.R; import com.uiui.zyos.activity.ManualActivity; import com.uiui.zyos.activity.PasswordActivity; +import com.uiui.zyos.activity.ServiceActivity; import com.uiui.zyos.bean.DesktopIcon; import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.manager.AppManager; @@ -27,7 +29,6 @@ import com.uiui.zyos.utils.AppUsedTimeUtils; import com.uiui.zyos.utils.BitmapUtils; import com.uiui.zyos.utils.IconUtils; import com.uiui.zyos.utils.OpenApkUtils; -import com.uiui.zyos.utils.ToastUtil; import java.util.ArrayList; import java.util.List; @@ -69,6 +70,7 @@ public class AppAdapter extends RecyclerView.Adapter { case AppManager.ADD_NAME: case AppManager.UPDATE_NAME: case AppManager.MANUAL_NAME: + case AppManager.SERVICE_NAME: holder.iv_icon.setImageDrawable(desktopIcon.getIcon()); break; default: @@ -91,12 +93,16 @@ public class AppAdapter extends RecyclerView.Adapter { break; case AppManager.MANUAL_NAME: mContext.startActivity(new Intent(mContext, ManualActivity.class)); + break; + case AppManager.SERVICE_NAME: + mContext.startActivity(new Intent(mContext, ServiceActivity.class)); + break; default: int settingOtherAppInstaller = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.SETTING_OTHER_APPINSTALLER_KEY, 1); if (settingOtherAppInstaller == 0 && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName() )) { - ToastUtil.show("已禁止应用打开"); + Toaster.show("已禁止应用打开"); } else { OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName()); } diff --git a/app/src/main/java/com/uiui/zyos/base/BaseActivity.java b/app/src/main/java/com/uiui/zyos/base/BaseActivity.java deleted file mode 100644 index 4766574..0000000 --- a/app/src/main/java/com/uiui/zyos/base/BaseActivity.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.uiui.zyos.base; - -import android.app.Activity; -import android.os.Build; -import android.os.Bundle; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; - -import androidx.annotation.CallSuper; -import androidx.annotation.CheckResult; -import androidx.annotation.ContentView; -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.trello.rxlifecycle4.LifecycleProvider; -import com.trello.rxlifecycle4.LifecycleTransformer; -import com.trello.rxlifecycle4.RxLifecycle; -import com.trello.rxlifecycle4.android.ActivityEvent; -import com.trello.rxlifecycle4.android.RxLifecycleAndroid; -import com.uiui.zyos.R; -import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; - -import io.reactivex.rxjava3.core.Observable; -import io.reactivex.rxjava3.subjects.BehaviorSubject; - - -public abstract class BaseActivity extends AppCompatActivity implements LifecycleProvider { - public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); - - public BaseActivity() { - super(); - } - - @ContentView - public BaseActivity(@LayoutRes int contentLayoutId) { - super(contentLayoutId); - } - - @Override - @NonNull - @CheckResult - public final Observable lifecycle() { - return lifecycleSubject.hide(); - } - - @Override - @NonNull - @CheckResult - public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { - return RxLifecycle.bindUntilEvent(lifecycleSubject, event); - } - - @Override - @NonNull - @CheckResult - public final LifecycleTransformer bindToLifecycle() { - return RxLifecycleAndroid.bindActivity(lifecycleSubject); - } - - @Override - @CallSuper - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - lifecycleSubject.onNext(ActivityEvent.CREATE); -// StatusBarUtil.init(this); - UltimateBarX.statusBar(this) - .transparent() - .colorRes(R.color.colorPrimaryDark) -// .light(true) - .apply(); - UltimateBarX.navigationBar(this) - .transparent() - .colorRes(R.color.colorPrimaryDark) -// .light(true) - .apply(); - setContentView(this.getLayoutId()); -// hideStatusBar(this); - initView(); - initData(); - } - -// public static void hideStatusBar(Activity activity) { -// if (activity == null) return; -// Window window = activity.getWindow(); -// if (window == null) return; -// window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, -// WindowManager.LayoutParams.FLAG_FULLSCREEN); -// window.getDecorView() -// .setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); -// WindowManager.LayoutParams lp = window.getAttributes(); -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { -// lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; -// } -// window.setAttributes(lp); -// } - - - /** - * 设置布局 - */ - public abstract int getLayoutId(); - - /** - * 初始化视图 - */ - public abstract void initView(); - - - /** - * 初始化数据 - */ - public abstract void initData(); - - @Override - @CallSuper - protected void onStart() { - super.onStart(); - lifecycleSubject.onNext(ActivityEvent.START); - } - - @Override - @CallSuper - protected void onResume() { - super.onResume(); - lifecycleSubject.onNext(ActivityEvent.RESUME); - } - - @Override - @CallSuper - protected void onPause() { - lifecycleSubject.onNext(ActivityEvent.PAUSE); - super.onPause(); - } - - @Override - @CallSuper - protected void onStop() { - lifecycleSubject.onNext(ActivityEvent.STOP); - super.onStop(); - } - - @Override - @CallSuper - protected void onDestroy() { - lifecycleSubject.onNext(ActivityEvent.DESTROY); - super.onDestroy(); - } -} diff --git a/app/src/main/java/com/uiui/zyos/base/BaseApplication.java b/app/src/main/java/com/uiui/zyos/base/BaseApplication.java index 70668c7..161e1bf 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseApplication.java +++ b/app/src/main/java/com/uiui/zyos/base/BaseApplication.java @@ -11,10 +11,12 @@ 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; import com.tencent.mmkv.MMKV; import com.uiui.zyos.BuildConfig; import com.uiui.zyos.alarm.AlarmUtils; +import com.uiui.zyos.manager.AmapManager; import com.uiui.zyos.manager.AppManager; import com.uiui.zyos.manager.ConnectManager; import com.uiui.zyos.manager.RemoteManager; @@ -52,7 +54,9 @@ public class BaseApplication extends Application { if (SystemUtils.isMainProcessName(this, android.os.Process.myPid())) { String rootDir = MMKV.initialize(this); Log.e(TAG, "mmkv root: " + rootDir); - + // 初始化 Toast 框架 + Toaster.init(this); + AmapManager.init(this); AppManager.init(this); PushManager.init(this); RemoteManager.init(this); diff --git a/app/src/main/java/com/uiui/zyos/base/BaseDataBindingActivity.java b/app/src/main/java/com/uiui/zyos/base/BaseDataBindingActivity.java index ff6a125..491d3ca 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseDataBindingActivity.java +++ b/app/src/main/java/com/uiui/zyos/base/BaseDataBindingActivity.java @@ -3,121 +3,66 @@ package com.uiui.zyos.base; import android.os.Bundle; import androidx.annotation.CallSuper; -import androidx.annotation.CheckResult; -import androidx.annotation.ContentView; -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import com.trello.rxlifecycle4.LifecycleProvider; -import com.trello.rxlifecycle4.LifecycleTransformer; -import com.trello.rxlifecycle4.RxLifecycle; -import com.trello.rxlifecycle4.android.ActivityEvent; -import com.trello.rxlifecycle4.android.RxLifecycleAndroid; import com.uiui.zyos.R; +import com.uiui.zyos.base.rx.BaseRxActivity; import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; -import io.reactivex.rxjava3.core.Observable; -import io.reactivex.rxjava3.subjects.BehaviorSubject; - -public abstract class BaseDataBindingActivity extends AppCompatActivity implements LifecycleProvider { - public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); +public abstract class BaseDataBindingActivity extends BaseRxActivity { public BaseDataBindingActivity() { super(); } - @ContentView - public BaseDataBindingActivity(@LayoutRes int contentLayoutId) { - super(contentLayoutId); - } - - @Override - @NonNull - @CheckResult - public final Observable lifecycle() { - return lifecycleSubject.hide(); - } - - @Override - @NonNull - @CheckResult - public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { - return RxLifecycle.bindUntilEvent(lifecycleSubject, event); - } - - @Override - @NonNull - @CheckResult - public final LifecycleTransformer bindToLifecycle() { - return RxLifecycleAndroid.bindActivity(lifecycleSubject); - } - @Override @CallSuper protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - lifecycleSubject.onNext(ActivityEvent.CREATE); // StatusBarUtil.init(this); UltimateBarX.statusBar(this) .transparent() .colorRes(R.color.colorPrimaryDark) - .light(true) + .light(setNightMode()) + .fitWindow(setfitWindow()) .apply(); UltimateBarX.navigationBar(this) .transparent() .colorRes(R.color.colorPrimaryDark) - .light(true) + .light(setNightMode()) + .fitWindow(setfitWindow()) .apply(); + initDataBinding(); initView(); initData(); } + /** + * @return 是否是黑色状态栏 + */ +// protected abstract boolean setNightMode(); + public boolean setNightMode() { + return false; + } + + /** + * @return 是否是入侵 + */ +// protected abstract boolean setNightMode(); + public boolean setfitWindow() { + return false; + } + + + protected abstract void initDataBinding(); /** * 初始化视图 */ - public abstract void initView(); - + protected abstract void initView(); /** * 初始化数据 */ - public abstract void initData(); - - @Override - @CallSuper - protected void onStart() { - super.onStart(); - lifecycleSubject.onNext(ActivityEvent.START); - } - - @Override - @CallSuper - protected void onResume() { - super.onResume(); - lifecycleSubject.onNext(ActivityEvent.RESUME); - } - - @Override - @CallSuper - protected void onPause() { - lifecycleSubject.onNext(ActivityEvent.PAUSE); - super.onPause(); - } - - @Override - @CallSuper - protected void onStop() { - lifecycleSubject.onNext(ActivityEvent.STOP); - super.onStop(); - } - - @Override - @CallSuper - protected void onDestroy() { - lifecycleSubject.onNext(ActivityEvent.DESTROY); - super.onDestroy(); - } -} + protected abstract void initData(); +} \ No newline at end of file diff --git a/app/src/main/java/com/uiui/zyos/base/BaseFragment.java b/app/src/main/java/com/uiui/zyos/base/BaseFragment.java index cf59681..3008578 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseFragment.java +++ b/app/src/main/java/com/uiui/zyos/base/BaseFragment.java @@ -1,72 +1,15 @@ package com.uiui.zyos.base; import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import androidx.annotation.CallSuper; -import androidx.annotation.CheckResult; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; +import com.uiui.zyos.base.rx.BaseRxFragment; -import com.trello.rxlifecycle4.LifecycleProvider; -import com.trello.rxlifecycle4.LifecycleTransformer; -import com.trello.rxlifecycle4.RxLifecycle; -import com.trello.rxlifecycle4.android.FragmentEvent; -import com.trello.rxlifecycle4.android.RxLifecycleAndroid; - -import io.reactivex.rxjava3.core.Observable; -import io.reactivex.rxjava3.subjects.BehaviorSubject; - -public abstract class BaseFragment extends Fragment implements LifecycleProvider { - public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); +public abstract class BaseFragment extends BaseRxFragment { protected boolean isViewInitiated; protected boolean isVisibleToUser; protected boolean isDataInitiated; - @Override - @NonNull - @CheckResult - public final Observable lifecycle() { - return lifecycleSubject.hide(); - } - - @Override - @NonNull - @CheckResult - public final LifecycleTransformer bindUntilEvent(@NonNull FragmentEvent event) { - return RxLifecycle.bindUntilEvent(lifecycleSubject, event); - } - - @Override - @NonNull - @CheckResult - public final LifecycleTransformer bindToLifecycle() { - return RxLifecycleAndroid.bindFragment(lifecycleSubject); - } - - @Override - @CallSuper - public void onAttach(android.app.Activity activity) { - super.onAttach(activity); - lifecycleSubject.onNext(FragmentEvent.ATTACH); - } - - @Override - @CallSuper - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - lifecycleSubject.onNext(FragmentEvent.CREATE); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return super.onCreateView(inflater, container, savedInstanceState); - } @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -91,65 +34,11 @@ public abstract class BaseFragment extends Fragment implements LifecycleProvider public boolean prepareFetchData(boolean forceUpdate) { if (isVisibleToUser && isViewInitiated && (!isDataInitiated || forceUpdate)) { fetchData(); + //注释掉保证每次都更新数据 isDataInitiated = true; return true; } return false; } - @Override - @CallSuper - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - lifecycleSubject.onNext(FragmentEvent.CREATE_VIEW); - } - - @Override - @CallSuper - public void onStart() { - super.onStart(); - lifecycleSubject.onNext(FragmentEvent.START); - } - - @Override - @CallSuper - public void onResume() { - super.onResume(); - lifecycleSubject.onNext(FragmentEvent.RESUME); - } - - @Override - @CallSuper - public void onPause() { - lifecycleSubject.onNext(FragmentEvent.PAUSE); - super.onPause(); - } - - @Override - @CallSuper - public void onStop() { - lifecycleSubject.onNext(FragmentEvent.STOP); - super.onStop(); - } - - @Override - @CallSuper - public void onDestroyView() { - lifecycleSubject.onNext(FragmentEvent.DESTROY_VIEW); - super.onDestroyView(); - } - - @Override - @CallSuper - public void onDestroy() { - lifecycleSubject.onNext(FragmentEvent.DESTROY); - super.onDestroy(); - } - - @Override - @CallSuper - public void onDetach() { - lifecycleSubject.onNext(FragmentEvent.DETACH); - super.onDetach(); - } } diff --git a/app/src/main/java/com/uiui/zyos/base/BaseTransparentActivity.java b/app/src/main/java/com/uiui/zyos/base/BaseTransparentActivity.java new file mode 100644 index 0000000..0c1684b --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/BaseTransparentActivity.java @@ -0,0 +1,57 @@ +package com.uiui.zyos.base; + +import android.os.Bundle; + +import androidx.annotation.CallSuper; +import androidx.annotation.Nullable; + +import com.uiui.zyos.R; +import com.uiui.zyos.base.rx.BaseRxActivity; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; + +public abstract class BaseTransparentActivity extends BaseRxActivity { + + public BaseTransparentActivity() { + super(); + } + + @Override + @CallSuper + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); +// StatusBarUtil.init(this); + UltimateBarX.statusBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(setNightMode()) + .fitWindow(setfitWindow()) + .apply(); + UltimateBarX.navigationBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(setNightMode()) + .fitWindow(setfitWindow()) + .apply(); + } + + /** + * 设置布局 + */ + protected abstract int getLayoutId(); + + /** + * @return 是否是黑色状态栏 + */ +// protected abstract boolean setNightMode(); + public boolean setNightMode() { + return false; + } + + /** + * @return 是否是入侵 + */ +// protected abstract boolean setNightMode(); + public boolean setfitWindow() { + return false; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/uiui/zyos/base/BaseView.java b/app/src/main/java/com/uiui/zyos/base/BaseView.java deleted file mode 100644 index a347ad1..0000000 --- a/app/src/main/java/com/uiui/zyos/base/BaseView.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.uiui.zyos.base; - -public interface BaseView { -} diff --git a/app/src/main/java/com/uiui/zyos/base/mvp/BaseMvpActivity.java b/app/src/main/java/com/uiui/zyos/base/mvp/BaseMvpActivity.java new file mode 100644 index 0000000..1e9a9db --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/mvp/BaseMvpActivity.java @@ -0,0 +1,34 @@ +package com.uiui.zyos.base.mvp; + +import android.os.Bundle; + +import androidx.annotation.CallSuper; +import androidx.annotation.Nullable; + +import com.uiui.zyos.base.BaseTransparentActivity; + +public abstract class BaseMvpActivity extends BaseTransparentActivity { + + public BaseMvpActivity() { + super(); + } + + @Override + @CallSuper + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(getLayoutId()); + initView(); + initData(); + } + + /** + * 初始化视图 + */ + protected abstract void initView(); + + /** + * 初始化数据 + */ + protected abstract void initData(); +} diff --git a/app/src/main/java/com/uiui/zyos/base/BasePresenter.java b/app/src/main/java/com/uiui/zyos/base/mvp/BasePresenter.java similarity index 82% rename from app/src/main/java/com/uiui/zyos/base/BasePresenter.java rename to app/src/main/java/com/uiui/zyos/base/mvp/BasePresenter.java index 27f9213..d5124ab 100644 --- a/app/src/main/java/com/uiui/zyos/base/BasePresenter.java +++ b/app/src/main/java/com/uiui/zyos/base/mvp/BasePresenter.java @@ -1,4 +1,4 @@ -package com.uiui.zyos.base; +package com.uiui.zyos.base.mvp; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/uiui/zyos/base/mvp/BaseView.java b/app/src/main/java/com/uiui/zyos/base/mvp/BaseView.java new file mode 100644 index 0000000..4c55bf1 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/mvp/BaseView.java @@ -0,0 +1,4 @@ +package com.uiui.zyos.base.mvp; + +public interface BaseView { +} diff --git a/app/src/main/java/com/uiui/zyos/base/mvvm/BaseMvvmActivity.java b/app/src/main/java/com/uiui/zyos/base/mvvm/BaseMvvmActivity.java new file mode 100644 index 0000000..62ee1f8 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/mvvm/BaseMvvmActivity.java @@ -0,0 +1,54 @@ +package com.uiui.zyos.base.mvvm; + +import android.os.Bundle; +import android.util.Log; + +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ViewDataBinding; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + +import com.uiui.zyos.base.BaseTransparentActivity; + +import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; + +public abstract class BaseMvvmActivity extends BaseTransparentActivity { + + private static final String TAG = BaseMvvmActivity.class.getSimpleName(); + + protected VM mViewModel; + protected VDB mViewDataBinding; + protected Class vmClass; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + //ViewDataBinding + mViewDataBinding = DataBindingUtil.setContentView(this, getLayoutId()); + mViewDataBinding.setLifecycleOwner(this); + //ViewModel + vmClass = (Class) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + boolean isAbstract = Modifier.isAbstract(vmClass.getModifiers()); + Log.e(TAG, "isLocalClass:" + vmClass.getSimpleName().equals(ViewModel.class.getSimpleName()) + " isAbstract:" + isAbstract); + if (!isAbstract) {//不是一个抽象类 + mViewModel = new ViewModelProvider(this).get(vmClass); + } + initDataBinding(); + initView(); + initData(); + } + + protected abstract void initDataBinding(); + + /** + * 初始化视图 + */ + protected abstract void initView(); + + /** + * 初始化数据 + */ + protected abstract void initData(); +} diff --git a/app/src/main/java/com/uiui/zyos/base/mvvm/BaseViewModel.java b/app/src/main/java/com/uiui/zyos/base/mvvm/BaseViewModel.java new file mode 100644 index 0000000..66721d1 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/mvvm/BaseViewModel.java @@ -0,0 +1,71 @@ +package com.uiui.zyos.base.mvvm; + +import android.content.Context; + +import androidx.databinding.ViewDataBinding; +import androidx.lifecycle.ViewModel; + +import java.lang.ref.WeakReference; + +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +/** + * 所有viewmodel的基类 + */ +public abstract class BaseViewModel extends ViewModel implements ViewDataBindingCallback { + + /** + * 当前viewmodel对应的页面binding + */ + protected VDB binding; + + @Override + public void setVDBinding(ViewDataBinding vdBinding) { + + binding = (VDB) vdBinding; + } + + @Override + public VDB getVDBinding() { + if (binding == null) { + throw new NullPointerException("BaseViewModel >> getVDBinding >> null!!!"); + } + return binding; + } + + + /** + * 上下文 + */ + private WeakReference ctx; + + @Override + public void setCtx(Context context) { + if (ctx == null) { + ctx = new WeakReference<>(context); + } + } + + @Override + public Context getCtx() { + if (ctx == null) { + throw new NullPointerException("BaseViewModel >> getCtx >> null!!!"); + } + return ctx.get(); + } + + + public abstract void onDestroy(); + + private BehaviorSubject mBehaviorSubject; + + @Override + public void setLifecycle(BehaviorSubject subject) { + this.mBehaviorSubject = (BehaviorSubject) subject; + } + + @Override + public BehaviorSubject getLifecycle() { + return mBehaviorSubject; + } +} diff --git a/app/src/main/java/com/uiui/zyos/base/mvvm/ViewDataBindingCallback.java b/app/src/main/java/com/uiui/zyos/base/mvvm/ViewDataBindingCallback.java new file mode 100644 index 0000000..9ff307d --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/mvvm/ViewDataBindingCallback.java @@ -0,0 +1,26 @@ +package com.uiui.zyos.base.mvvm; + +import android.content.Context; + +import androidx.databinding.ViewDataBinding; + +import com.trello.rxlifecycle4.android.ActivityEvent; + +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +public interface ViewDataBindingCallback { + + + void setVDBinding(VDB binding); + + VDB getVDBinding() throws NullPointerException; + + + void setCtx(Context context); + + Context getCtx() throws NullPointerException; + + void setLifecycle(BehaviorSubject subject); + + BehaviorSubject getLifecycle(); +} diff --git a/app/src/main/java/com/uiui/zyos/base/BaseLightActivity.java b/app/src/main/java/com/uiui/zyos/base/rx/BaseRxActivity.java similarity index 61% rename from app/src/main/java/com/uiui/zyos/base/BaseLightActivity.java rename to app/src/main/java/com/uiui/zyos/base/rx/BaseRxActivity.java index 3a5838c..2e16431 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseLightActivity.java +++ b/app/src/main/java/com/uiui/zyos/base/rx/BaseRxActivity.java @@ -1,11 +1,9 @@ -package com.uiui.zyos.base; +package com.uiui.zyos.base.rx; import android.os.Bundle; import androidx.annotation.CallSuper; import androidx.annotation.CheckResult; -import androidx.annotation.ContentView; -import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @@ -15,23 +13,19 @@ import com.trello.rxlifecycle4.LifecycleTransformer; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.trello.rxlifecycle4.android.RxLifecycleAndroid; -import com.uiui.zyos.R; -import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.subjects.BehaviorSubject; +/** + * {@link com.trello.rxlifecycle4.components.RxActivity} + * copied form RxActivity} + */ +public abstract class BaseRxActivity extends AppCompatActivity implements LifecycleProvider { + private final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); -public abstract class BaseLightActivity extends AppCompatActivity implements LifecycleProvider { - public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); - - public BaseLightActivity() { - super(); - } - - @ContentView - public BaseLightActivity(@LayoutRes int contentLayoutId) { - super(contentLayoutId); + public BehaviorSubject getLifecycleSubject() { + return lifecycleSubject; } @Override @@ -60,38 +54,8 @@ public abstract class BaseLightActivity extends AppCompatActivity implements Lif protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); lifecycleSubject.onNext(ActivityEvent.CREATE); -// StatusBarUtil.init(this); - UltimateBarX.statusBar(this) - .transparent() - .colorRes(R.color.colorPrimaryDark) - .light(true) - .apply(); - UltimateBarX.navigationBar(this) - .transparent() - .colorRes(R.color.colorPrimaryDark) - .light(true) - .apply(); - setContentView(this.getLayoutId()); - initView(); - initData(); } - /** - * 设置布局 - */ - public abstract int getLayoutId(); - - /** - * 初始化视图 - */ - public abstract void initView(); - - - /** - * 初始化数据 - */ - public abstract void initData(); - @Override @CallSuper protected void onStart() { @@ -127,3 +91,4 @@ public abstract class BaseLightActivity extends AppCompatActivity implements Lif super.onDestroy(); } } + diff --git a/app/src/main/java/com/uiui/zyos/base/rx/BaseRxFragment.java b/app/src/main/java/com/uiui/zyos/base/rx/BaseRxFragment.java new file mode 100644 index 0000000..b21df6b --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/rx/BaseRxFragment.java @@ -0,0 +1,123 @@ +package com.uiui.zyos.base.rx; + +import android.os.Bundle; +import android.view.View; + +import androidx.annotation.CallSuper; +import androidx.annotation.CheckResult; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.trello.rxlifecycle4.LifecycleProvider; +import com.trello.rxlifecycle4.LifecycleTransformer; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.FragmentEvent; +import com.trello.rxlifecycle4.android.RxLifecycleAndroid; + +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +/** + * {@link com.trello.rxlifecycle4.components.RxFragment} + * copied form RxFragment} + */ +public class BaseRxFragment extends Fragment implements LifecycleProvider { + private final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); + + public BehaviorSubject getLifecycleSubject() { + return lifecycleSubject; + } + + @Override + @NonNull + @CheckResult + public final Observable lifecycle() { + return lifecycleSubject.hide(); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindUntilEvent(@NonNull FragmentEvent event) { + return RxLifecycle.bindUntilEvent(lifecycleSubject, event); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindToLifecycle() { + return RxLifecycleAndroid.bindFragment(lifecycleSubject); + } + + @Override + @CallSuper + public void onAttach(android.app.Activity activity) { + super.onAttach(activity); + lifecycleSubject.onNext(FragmentEvent.ATTACH); + } + + @Override + @CallSuper + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + lifecycleSubject.onNext(FragmentEvent.CREATE); + } + + @Override + @CallSuper + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + lifecycleSubject.onNext(FragmentEvent.CREATE_VIEW); + } + + @Override + @CallSuper + public void onStart() { + super.onStart(); + lifecycleSubject.onNext(FragmentEvent.START); + } + + @Override + @CallSuper + public void onResume() { + super.onResume(); + lifecycleSubject.onNext(FragmentEvent.RESUME); + } + + @Override + @CallSuper + public void onPause() { + lifecycleSubject.onNext(FragmentEvent.PAUSE); + super.onPause(); + } + + @Override + @CallSuper + public void onStop() { + lifecycleSubject.onNext(FragmentEvent.STOP); + super.onStop(); + } + + @Override + @CallSuper + public void onDestroyView() { + lifecycleSubject.onNext(FragmentEvent.DESTROY_VIEW); + super.onDestroyView(); + } + + @Override + @CallSuper + public void onDestroy() { + lifecycleSubject.onNext(FragmentEvent.DESTROY); + super.onDestroy(); + } + + @Override + @CallSuper + public void onDetach() { + lifecycleSubject.onNext(FragmentEvent.DETACH); + super.onDetach(); + } +} + diff --git a/app/src/main/java/com/uiui/zyos/base/BaseService.java b/app/src/main/java/com/uiui/zyos/base/rx/BaseRxService.java similarity index 74% rename from app/src/main/java/com/uiui/zyos/base/BaseService.java rename to app/src/main/java/com/uiui/zyos/base/rx/BaseRxService.java index 4347604..ac6c5eb 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseService.java +++ b/app/src/main/java/com/uiui/zyos/base/rx/BaseRxService.java @@ -1,8 +1,9 @@ -package com.uiui.zyos.base; +package com.uiui.zyos.base.rx; import android.app.Service; import android.content.Intent; +import androidx.annotation.CheckResult; import androidx.annotation.NonNull; import com.trello.rxlifecycle4.LifecycleProvider; @@ -14,25 +15,31 @@ import com.trello.rxlifecycle4.android.RxLifecycleAndroid; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.subjects.BehaviorSubject; +public abstract class BaseRxService extends Service implements LifecycleProvider { + private final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); -public abstract class BaseService extends Service implements LifecycleProvider { - public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); - - public BaseService() { - super(); + public BehaviorSubject getLifecycleSubject() { + return lifecycleSubject; } + @Override + @NonNull + @CheckResult public final Observable lifecycle() { return lifecycleSubject.hide(); } @Override + @NonNull + @CheckResult public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { return RxLifecycle.bindUntilEvent(lifecycleSubject, event); } @Override + @NonNull + @CheckResult public final LifecycleTransformer bindToLifecycle() { return RxLifecycleAndroid.bindActivity(lifecycleSubject); } diff --git a/app/src/main/java/com/uiui/zyos/config/CommonConfig.java b/app/src/main/java/com/uiui/zyos/config/CommonConfig.java index 49bc215..830ad70 100644 --- a/app/src/main/java/com/uiui/zyos/config/CommonConfig.java +++ b/app/src/main/java/com/uiui/zyos/config/CommonConfig.java @@ -22,6 +22,9 @@ public class CommonConfig { /*是否显示返回Android按钮*/ public static final String UIUI_RETURN_ANDROID_KEY = "iflytek_uiui_is_return_android"; + /*让桌面更新定位信息*/ + public static final String IFLYTEK_UPDATE_ADDRESS_ACTION = "IFLYTEK_UPDATE_ADDRESS"; + public static final String MAP_LOCATION_JSON_KEY = "MAPLOCATION_JSON_STRING"; public static final String MAP_LONGITUDE_KEY = "map_longitude_key"; public static final String MAP_LATITUDE_KEY = "map_latitude_key"; @@ -31,4 +34,10 @@ public class CommonConfig { public static final String SETTING_OTHER_APPINSTALLER_KEY = "iflytek_setting_other_appInstaller"; /*应用市场的app列表*/ public final static String ADMIN_APP_LIST = "only_admin_app_list"; + /*默认地址北京*/ + public static final String DEFAULT_LOCATION_DISTRICT = "北京"; + /*手动选择位置 经纬度*/ + public static final String MANUALLY_SELECT_LOCATION_TUDE = "map_manually_select_tude"; + /*默认北京原点*/ + public static final String DEFAULT_LOCATION_TUDE = "116.40529,39.90499"; } diff --git a/app/src/main/java/com/uiui/zyos/fragment/app/AppContact.java b/app/src/main/java/com/uiui/zyos/fragment/app/AppContact.java index 7856cbc..03f20c2 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/app/AppContact.java +++ b/app/src/main/java/com/uiui/zyos/fragment/app/AppContact.java @@ -1,7 +1,7 @@ package com.uiui.zyos.fragment.app; -import com.uiui.zyos.base.BasePresenter; -import com.uiui.zyos.base.BaseView; +import com.uiui.zyos.base.mvp.BasePresenter; +import com.uiui.zyos.base.mvp.BaseView; import com.uiui.zyos.bean.DesktopIcon; import java.util.ArrayList; diff --git a/app/src/main/java/com/uiui/zyos/fragment/app/AppFragment.java b/app/src/main/java/com/uiui/zyos/fragment/app/AppFragment.java index 5b715a6..b4f087d 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/app/AppFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/app/AppFragment.java @@ -109,7 +109,7 @@ public class AppFragment extends BaseFragment implements AppContact.AppView { mContext = (FragmentActivity) rootView.getContext(); mPresenter = new AppPresenter(mContext); mPresenter.attachView(this); - mPresenter.setLifecycle(lifecycleSubject); + mPresenter.setLifecycle(getLifecycleSubject()); ButterKnife.bind(this, rootView); initView(); } diff --git a/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java b/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java index a4d9df6..c400e17 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java +++ b/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java @@ -44,17 +44,31 @@ public class AppPresenter implements AppContact.AppPresenter { @Override public void getInstalledApp() { ArrayList desktopIcons = AppManager.getInstance().getFilterAppList(); + + DesktopIcon appstoreDesktopIcon = new DesktopIcon(); + appstoreDesktopIcon.setLable("应用市场"); + appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME); + appstoreDesktopIcon.setClassName(AppManager.APPSTORE_CLASS_NAME); + appstoreDesktopIcon.setIcon(mContext.getDrawable(R.drawable.com_android_appstore)); + desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon); + DesktopIcon updateDesktopIcon = new DesktopIcon(); updateDesktopIcon.setLable("应用更新"); updateDesktopIcon.setPackageName(AppManager.UPDATE_NAME); updateDesktopIcon.setIcon(mContext.getDrawable(R.drawable.icon_update)); desktopIcons.add(desktopIcons.size(), updateDesktopIcon); - DesktopIcon manualIcon = new DesktopIcon(); - manualIcon.setLable("使用手册"); - manualIcon.setPackageName(AppManager.MANUAL_NAME); - manualIcon.setIcon(mContext.getDrawable(R.drawable.icon_manual)); - desktopIcons.add(desktopIcons.size(), manualIcon); +// DesktopIcon manualIcon = new DesktopIcon(); +// manualIcon.setLable("使用手册"); +// manualIcon.setPackageName(AppManager.MANUAL_NAME); +// manualIcon.setIcon(mContext.getDrawable(R.drawable.icon_manual)); +// desktopIcons.add(desktopIcons.size(), manualIcon); + + DesktopIcon serviceIcon = new DesktopIcon(); + serviceIcon.setIcon(mContext.getDrawable(R.drawable.service_icon)); + serviceIcon.setLable("联系客服"); + serviceIcon.setPackageName(AppManager.SERVICE_NAME); + desktopIcons.add(serviceIcon); DesktopIcon desktopIcon = new DesktopIcon(); desktopIcon.setLable("添加应用"); diff --git a/app/src/main/java/com/uiui/zyos/fragment/biology/BiologyFragment.java b/app/src/main/java/com/uiui/zyos/fragment/biology/BiologyFragment.java index a616dc3..4e88b39 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/biology/BiologyFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/biology/BiologyFragment.java @@ -49,7 +49,7 @@ public class BiologyFragment extends BaseFragment { public BiologyFragment() { // Required empty public constructor - Log.e(TAG, "BiologyFragment: " ); + Log.e(TAG, "BiologyFragment: "); } /** @@ -110,7 +110,7 @@ public class BiologyFragment extends BaseFragment { rootView = null; } - private void initView(){ + private void initView() { imageView1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -132,7 +132,11 @@ public class BiologyFragment extends BaseFragment { imageView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("1"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(0, "生物"); + } else { + OpenApkUtils.getInstance().openPrecision("1"); + } } }); diff --git a/app/src/main/java/com/uiui/zyos/fragment/chemical/ChemicalFragment.java b/app/src/main/java/com/uiui/zyos/fragment/chemical/ChemicalFragment.java index 4dee22f..244b5fd 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/chemical/ChemicalFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/chemical/ChemicalFragment.java @@ -133,7 +133,11 @@ public class ChemicalFragment extends BaseFragment { imageView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("1"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(0, "化学"); + } else { + OpenApkUtils.getInstance().openPrecision("1"); + } } }); diff --git a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseContact.java b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseContact.java index 7d7cfa0..602a7ec 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseContact.java +++ b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseContact.java @@ -1,8 +1,8 @@ package com.uiui.zyos.fragment.chinese; -import com.uiui.zyos.base.BasePresenter; -import com.uiui.zyos.base.BaseView; +import com.uiui.zyos.base.mvp.BasePresenter; +import com.uiui.zyos.base.mvp.BaseView; public class ChineseContact { public interface Presenter extends BasePresenter { diff --git a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseFragment.java b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseFragment.java index 5eef4aa..e87c8de 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseFragment.java @@ -25,6 +25,7 @@ import com.uiui.zyos.base.BaseFragment; import com.uiui.zyos.dialog.ChineseDialog; import com.uiui.zyos.dialog.FoundationDialog; import com.uiui.zyos.jxw.JxwPackageConfig; +import com.uiui.zyos.manager.AmapManager; import com.uiui.zyos.manager.RemoteManager; import com.uiui.zyos.utils.OpenApkUtils; import com.uiui.zyos.utils.Utils; @@ -137,7 +138,7 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin @Override public void fetchData() { Log.e(TAG, "fetchData: "); - RemoteManager.getInstance().getLocation(); + AmapManager.getInstance().startLocation(); initData(); } @@ -155,7 +156,7 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin mContext = (Activity) rootView.getContext(); mChinesePresenter = new ChinesePresenter(mContext); mChinesePresenter.attachView(this); - mChinesePresenter.setLifecycle(lifecycleSubject); + mChinesePresenter.setLifecycle(getLifecycleSubject()); ButterKnife.bind(this, rootView); initView(); } @@ -258,7 +259,11 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin iv_dictation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("1"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(0, "语文"); + } else { + OpenApkUtils.getInstance().openPrecision("1"); + } } }); iv_character.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/com/uiui/zyos/fragment/english/EnglishFragment.java b/app/src/main/java/com/uiui/zyos/fragment/english/EnglishFragment.java index 0470b98..34cf31a 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/english/EnglishFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/english/EnglishFragment.java @@ -202,7 +202,11 @@ public class EnglishFragment extends BaseFragment { imageView11.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("1"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(0, "英语"); + } else { + OpenApkUtils.getInstance().openPrecision("1"); + } } }); } diff --git a/app/src/main/java/com/uiui/zyos/fragment/main/MainContact.java b/app/src/main/java/com/uiui/zyos/fragment/main/MainContact.java index 1609efd..eb14b02 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/main/MainContact.java +++ b/app/src/main/java/com/uiui/zyos/fragment/main/MainContact.java @@ -1,7 +1,7 @@ package com.uiui.zyos.fragment.main; -import com.uiui.zyos.base.BasePresenter; -import com.uiui.zyos.base.BaseView; +import com.uiui.zyos.base.mvp.BasePresenter; +import com.uiui.zyos.base.mvp.BaseView; public class MainContact { public interface Presenter extends BasePresenter { diff --git a/app/src/main/java/com/uiui/zyos/fragment/main/MainFragment.java b/app/src/main/java/com/uiui/zyos/fragment/main/MainFragment.java index 0ec41f9..58da4a3 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/main/MainFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/main/MainFragment.java @@ -18,7 +18,7 @@ import android.view.ViewGroup; import com.uiui.zyos.R; import com.uiui.zyos.base.BaseFragment; -import com.uiui.zyos.base.viewpager.BaseFragmentPagerAdapter; +import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter; import com.uiui.zyos.fragment.subject.SubjectFragment; import com.uiui.zyos.fragment.user.UserFragment; import com.uiui.zyos.utils.OpenApkUtils; @@ -133,7 +133,7 @@ public class MainFragment extends BaseFragment implements MainContact.MainView { mContext = (FragmentActivity) rootView.getContext(); mPresenter = new MainFPresenter(mContext); mPresenter.attachView(this); - mPresenter.setLifecycle(lifecycleSubject); + mPresenter.setLifecycle(getLifecycleSubject()); ButterKnife.bind(this, rootView); initView(); } diff --git a/app/src/main/java/com/uiui/zyos/fragment/math/MathFragment.java b/app/src/main/java/com/uiui/zyos/fragment/math/MathFragment.java index 392cc91..531c553 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/math/MathFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/math/MathFragment.java @@ -170,7 +170,7 @@ public class MathFragment extends BaseFragment { cl_classical.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_ARITHMETIC_PACKAGE_NAME,JxwPackageConfig.JXW_ARITHMETIC_CLASS_NAME); + OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_ARITHMETIC_PACKAGE_NAME, JxwPackageConfig.JXW_ARITHMETIC_CLASS_NAME); } }); @@ -183,7 +183,7 @@ public class MathFragment extends BaseFragment { cl_number.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_KNOW_MATHEMATICS_PACKAGE_NAME,JxwPackageConfig.JXW_KNOW_MATHEMATICS_CLASS_NAME); + OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_KNOW_MATHEMATICS_PACKAGE_NAME, JxwPackageConfig.JXW_KNOW_MATHEMATICS_CLASS_NAME); } }); cl_formula.setOnClickListener(new View.OnClickListener() { @@ -196,7 +196,11 @@ public class MathFragment extends BaseFragment { iv_precision_learning.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("2"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(0, "数学"); + } else { + OpenApkUtils.getInstance().openPrecision("2"); + } } }); } diff --git a/app/src/main/java/com/uiui/zyos/fragment/physics/PhysicsFragment.java b/app/src/main/java/com/uiui/zyos/fragment/physics/PhysicsFragment.java index 44a77c3..f62ceba 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/physics/PhysicsFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/physics/PhysicsFragment.java @@ -2,15 +2,14 @@ package com.uiui.zyos.fragment.physics; import android.app.Activity; import android.os.Bundle; - -import androidx.fragment.app.Fragment; - import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import androidx.fragment.app.Fragment; + import com.uiui.zyos.R; import com.uiui.zyos.base.BaseFragment; import com.uiui.zyos.utils.OpenApkUtils; @@ -49,7 +48,7 @@ public class PhysicsFragment extends BaseFragment { public PhysicsFragment() { // Required empty public constructor - Log.e(TAG, "PhysicsFragment: " ); + Log.e(TAG, "PhysicsFragment: "); } /** @@ -110,7 +109,7 @@ public class PhysicsFragment extends BaseFragment { rootView = null; } - private void initView(){ + private void initView() { imageView1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -132,7 +131,11 @@ public class PhysicsFragment extends BaseFragment { imageView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("1"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(0, "物理"); + } else { + OpenApkUtils.getInstance().openPrecision("1"); + } } }); diff --git a/app/src/main/java/com/uiui/zyos/fragment/precision/PrecisionFragment.java b/app/src/main/java/com/uiui/zyos/fragment/precision/PrecisionFragment.java index ad53f9e..8e8291e 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/precision/PrecisionFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/precision/PrecisionFragment.java @@ -118,15 +118,16 @@ public class PrecisionFragment extends BaseFragment { public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser); - if (isVisibleToUser){ - if (mUserVisibleHintCallback!=null) { + if (isVisibleToUser) { + if (mUserVisibleHintCallback != null) { mUserVisibleHintCallback.onUserVisibleHint(); } } } private ARStudyFragment.UserVisibleHintCallback mUserVisibleHintCallback; - public interface UserVisibleHintCallback{ + + public interface UserVisibleHintCallback { void onUserVisibleHint(); } @@ -138,31 +139,51 @@ public class PrecisionFragment extends BaseFragment { iv_bunk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("1"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(0, "语文"); + } else { + OpenApkUtils.getInstance().openPrecision("1"); + } } }); iv_paper.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("3"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(5, "语文"); + } else { + OpenApkUtils.getInstance().openPrecision("3"); + } } }); iv_test.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("2"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(1, "语文"); + } else { + OpenApkUtils.getInstance().openPrecision("2"); + } } }); iv_book.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("4"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(4, "语文"); + } else { + OpenApkUtils.getInstance().openPrecision("4"); + } } }); iv_favorites.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openPrecision("5"); + if (OpenApkUtils.getInstance().isNewAiApp()) { + OpenApkUtils.getInstance().openAiPrecision(3, "语文"); + } else { + OpenApkUtils.getInstance().openPrecision("5"); + } } }); } diff --git a/app/src/main/java/com/uiui/zyos/fragment/subject/SubjectFragment.java b/app/src/main/java/com/uiui/zyos/fragment/subject/SubjectFragment.java index 1268f84..afa3bf8 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/subject/SubjectFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/subject/SubjectFragment.java @@ -15,7 +15,7 @@ import android.view.ViewGroup; import com.flyco.tablayout.SlidingTabLayout; import com.uiui.zyos.R; import com.uiui.zyos.base.BaseFragment; -import com.uiui.zyos.base.viewpager.BaseFragmentPagerAdapter; +import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter; import com.uiui.zyos.fragment.app.AppFragment; import com.uiui.zyos.fragment.ar.ARStudyFragment; import com.uiui.zyos.fragment.biology.BiologyFragment; diff --git a/app/src/main/java/com/uiui/zyos/fragment/user/UserContact.java b/app/src/main/java/com/uiui/zyos/fragment/user/UserContact.java index e715987..390e1ed 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/user/UserContact.java +++ b/app/src/main/java/com/uiui/zyos/fragment/user/UserContact.java @@ -2,8 +2,8 @@ package com.uiui.zyos.fragment.user; import android.graphics.Bitmap; -import com.uiui.zyos.base.BasePresenter; -import com.uiui.zyos.base.BaseView; +import com.uiui.zyos.base.mvp.BasePresenter; +import com.uiui.zyos.base.mvp.BaseView; import com.uiui.zyos.bean.BaseResponse; import com.uiui.zyos.bean.DesktopIcon; import com.uiui.zyos.bean.SnInfo; diff --git a/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java b/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java index f39b82b..6591f62 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java @@ -179,7 +179,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { mContext = (FragmentActivity) rootView.getContext(); mPresenter = new UserPresenter(mContext); mPresenter.attachView(this); - mPresenter.setLifecycle(lifecycleSubject); + mPresenter.setLifecycle(getLifecycleSubject()); ButterKnife.bind(this, rootView); initView(); } @@ -318,7 +318,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { // passwordDialog.dismiss(); // exitDesktop(); // } else { -// ToastUtil.show("密码错误"); +// Toaster.show("密码错误"); // } // } // @@ -414,7 +414,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { cl_usedata.setVisibility(View.GONE); iv_bind.setImageDrawable(mContext.getDrawable(R.drawable.icon_device_unbind)); break; -// ToastUtil.show(getString(R.string.device_unauthorized)); +// Toaster.show(getString(R.string.device_unauthorized)); // Log.e(TAG, "setSnInfo: " + getString(R.string.device_unauthorized)); // tv_name.setText(getString(R.string.device_unauthorized)); // tv_grade.setText(getString(R.string.device_unauthorized)); diff --git a/app/src/main/java/com/uiui/zyos/fragment/user/UserPresenter.java b/app/src/main/java/com/uiui/zyos/fragment/user/UserPresenter.java index 7c471ad..a231933 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/user/UserPresenter.java +++ b/app/src/main/java/com/uiui/zyos/fragment/user/UserPresenter.java @@ -144,6 +144,14 @@ public class UserPresenter implements UserContact.Presenter { @Override public void getInstalledApp() { ArrayList desktopIcons = AppManager.getInstance().getFilterAppList(); + + DesktopIcon appstoreDesktopIcon = new DesktopIcon(); + appstoreDesktopIcon.setLable("应用市场"); + appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME); + appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_CLASS_NAME); + appstoreDesktopIcon.setIcon(mContext.getDrawable(R.drawable.com_android_appstore)); + desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon); + DesktopIcon updateDesktopIcon = new DesktopIcon(); updateDesktopIcon.setLable("应用更新"); updateDesktopIcon.setPackageName(AppManager.UPDATE_NAME); diff --git a/app/src/main/java/com/uiui/zyos/jxw/JxwPackageConfig.java b/app/src/main/java/com/uiui/zyos/jxw/JxwPackageConfig.java index b0b4298..b883da2 100644 --- a/app/src/main/java/com/uiui/zyos/jxw/JxwPackageConfig.java +++ b/app/src/main/java/com/uiui/zyos/jxw/JxwPackageConfig.java @@ -30,7 +30,8 @@ public class JxwPackageConfig { public static final String JXW_CHARACTER_CLASS_NAME = "com.jxw.characterlearning.MainActivity"; /*Ai精准学*/ public static final String JXW_PRECISION_PACKAGE_NAME = "com.jxw.question"; - public static final String JXW_PRECISION_CLASS_NAME = "com.jxw.question.activity.SplashActivity"; + public static final String JXW_PRECISION_CLASS_NAME_85 = "com.jxw.question.activity.SplashActivity"; + public static final String JXW_PRECISION_CLASS_NAME_1 = "com.jxw.question.module.ui.activity.ProgramEntryActivity"; /*拼音学习*/ public static final String JXW_PINYIN_PACKAGE_NAME = "com.jxw.learnchinesepinyin"; public static final String JXW_PINYIN_CLASS_NAME = "com.jxw.learnchinesepinyin.activity.MainActivity"; @@ -90,5 +91,7 @@ public class JxwPackageConfig { /*幼儿平台*/ public static final String JXW_YOUER_PACKAGE_NAME = "com.jxw.youer.video"; public static final String JXW_YOUER_CLASS_NAME = "com.jxw.youer.activity.MainActivity"; - + /*模拟考场*/ + public static final String JXW_EXAMSYSTEM_NAME ="com.jxw.examsystem"; + public static final String JXW_EXAMSYSTEM_CLASS ="com.jxw.examsystem.StartExamActivity"; } \ No newline at end of file diff --git a/app/src/main/java/com/uiui/zyos/manager/AmapManager.java b/app/src/main/java/com/uiui/zyos/manager/AmapManager.java new file mode 100644 index 0000000..1029afd --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/manager/AmapManager.java @@ -0,0 +1,216 @@ +package com.uiui.zyos.manager; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; + +import com.amap.api.location.AMapLocation; +import com.amap.api.location.AMapLocationClient; +import com.amap.api.location.AMapLocationClientOption; +import com.amap.api.location.AMapLocationListener; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.jeremyliao.liveeventbus.LiveEventBus; +import com.tencent.mmkv.MMKV; +import com.uiui.zyos.bean.BaseResponse; +import com.uiui.zyos.bean.MapBean; +import com.uiui.zyos.config.CommonConfig; +import com.uiui.zyos.gson.GsonUtils; +import com.uiui.zyos.network.NetInterfaceManager; +import com.uiui.zyos.utils.ActivationUtil; + +import java.lang.reflect.Type; + +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; + +public class AmapManager { + private static final String TAG = AmapManager.class.getSimpleName(); + + MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + + @SuppressLint("StaticFieldLeak") + private static AmapManager sInstance; + private Context mContext; + + private AMapLocationClient mAMapLocationClient; + private AMapLocationClientOption mAMapLocationClientOption; + private MapBean mMapBean; + + private AmapManager(Context context) { + this.mContext = context; + initAmap(); + } + + public static void init(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + if (sInstance == null) { + sInstance = new AmapManager(context); + } + } + + public static AmapManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init AmapManager first"); + } + + return sInstance; + } + + private AMapLocationClientOption getDefaultOption() { + if (mAMapLocationClientOption == null) { + mAMapLocationClientOption = new AMapLocationClientOption(); + } + mAMapLocationClientOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn); + //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。 + mAMapLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); + mAMapLocationClientOption.setNeedAddress(true); + //获取一次定位结果: + //该方法默认为false。 + mAMapLocationClientOption.setOnceLocation(true); + //获取最近3s内精度最高的一次定位结果: + //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。 + // 如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。 + mAMapLocationClientOption.setOnceLocationLatest(true); + return mAMapLocationClientOption; + } + + public void initAmap() { + if (mAMapLocationClient == null) { + mAMapLocationClient = new AMapLocationClient(mContext); + } + mAMapLocationClient.setLocationOption(getDefaultOption()); + + //设置定位监听 + mAMapLocationClient.setLocationListener(mAMapLocationListener); + //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效 + + startLocation(); + + String jsonString = mMMKV.decodeString(CommonConfig.MAP_LOCATION_JSON_KEY, ""); + if (!TextUtils.isEmpty(jsonString)) { + Gson gson = new Gson(); + Type type = new TypeToken() { + }.getType(); + mMapBean = gson.fromJson(jsonString, type); + } else { + Log.e(TAG, "initAmap: jsonString is empty"); + } + + } + + public void startLocation() { + boolean activation = ActivationUtil.isActivation(mContext); + if (!activation) { + return; + } + mAMapLocationClient.stopLocation(); + mAMapLocationClient.startLocation(); + Log.e(TAG, "initAmap: " + "startLocation"); + } + + private AMapLocationListener mAMapLocationListener = new AMapLocationListener() { + @Override + public void onLocationChanged(AMapLocation aMapLocation) { + StringBuilder sb = new StringBuilder(); + //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明 + if (aMapLocation.getErrorCode() == 0) { + Log.e(TAG, "onLocationChanged: " + "定位成功"); + updateAddress(aMapLocation); + mMapBean = getMapBean(aMapLocation); + saveMapResult(mMapBean); + LiveEventBus.get("MapBean") + .post(mMapBean); + Log.e(TAG, "onLocationChanged: " + aMapLocation.getAddress()); + sb.append(aMapLocation.getAddress()).append("\n"); + + } else { + //定位失败 + sb.append("定位失败" + "\n"); + sb.append(aMapLocation.getErrorInfo()); + Log.e(TAG, "onLocationChanged: " + "定位失败"); + } + Log.e(TAG, "amap: " + sb.toString()); + } + }; + + private void updateAddress(AMapLocation aMapLocation) { + boolean activation = ActivationUtil.isActivation(mContext); + if (!activation) { + return; + } + NetInterfaceManager.getInstance().getUpdateAddressObservable(aMapLocation.getAddress() + , aMapLocation.getLongitude(), aMapLocation.getLatitude() + ) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("updateAddress", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("updateAddress", "onNext: " + baseResponse); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("updateAddress", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("updateAddress", "onComplete: "); + } + }); + } + + public String getLocationTude() { + if (mMapBean != null) { + return mMapBean.getLongitude() + "," + mMapBean.getLatitude(); + } else { + startLocation(); + return CommonConfig.DEFAULT_LOCATION_TUDE; + } + } + + public String getDistrict() { + if (mMapBean != null) { + return mMapBean.getDistrict(); + } else { + startLocation(); + return CommonConfig.DEFAULT_LOCATION_DISTRICT; + } + } + + private MapBean getMapBean(AMapLocation location) { + MapBean mapBean = new MapBean(); + mapBean.setLongitude(location.getLongitude()); + mapBean.setLatitude(location.getLatitude()); + mapBean.setAdcode(location.getAdCode()); + mapBean.setAddress(location.getAddress()); + mapBean.setCity(location.getCity()); + mapBean.setCityCode(location.getCityCode()); + mapBean.setCountry(location.getCountry()); + mapBean.setCountryCode(location.getAdCode()); + mapBean.setDistrict(location.getDistrict()); + mapBean.setProvince(location.getProvince()); + mapBean.setStreet(location.getStreet()); + mapBean.setStreetNumber(location.getStreetNum()); + mapBean.setTown(location.getStreet()); + mapBean.setLocationDescribe(location.getLocationDetail()); + Log.e(TAG, "getMapBean: " + GsonUtils.toJSONString(mapBean)); + return mapBean; + + } + + private void saveMapResult(MapBean mapBean) { + Log.e(TAG, "saveMapResult: " + GsonUtils.toJSONString(mapBean)); + mMMKV.encode(CommonConfig.MAP_LOCATION_JSON_KEY, GsonUtils.toJSONString(mapBean)); + } + +} diff --git a/app/src/main/java/com/uiui/zyos/manager/AppManager.java b/app/src/main/java/com/uiui/zyos/manager/AppManager.java index 8015035..2021679 100644 --- a/app/src/main/java/com/uiui/zyos/manager/AppManager.java +++ b/app/src/main/java/com/uiui/zyos/manager/AppManager.java @@ -30,8 +30,11 @@ public class AppManager { private static final String TAG = AppManager.class.getSimpleName(); public static final String ADD_NAME = "com.zyos.add"; + public static final String APPSTORE_PACKAGE_NAME = "com.uiui.zyappstore"; + public static final String APPSTORE_CLASS_NAME = "com.uiui.zyappstore.activity.MainActivity"; public static final String UPDATE_NAME = "com.zyos.update"; public static final String MANUAL_NAME = "com.zyos.manual"; + public static final String SERVICE_NAME = "com.zyos.service"; private static final String SHOW_PACKAGE_KEY = "SHOW_PACKAGE_KEY"; @SuppressLint("StaticFieldLeak") diff --git a/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java b/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java index 310e2b8..cffdb49 100644 --- a/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java +++ b/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java @@ -60,7 +60,6 @@ public class RemoteManager { for (ConnectedListener listener : mListeners) { listener.onConnected(); } - getLocation(); try { String sn = mGetInfoInterface.getSerial(); CrashReport.setDeviceId(mContext, sn); @@ -197,19 +196,6 @@ public class RemoteManager { return mMMKV.decodeString(SN_KEY, ""); } - public void getLocation() { - if (mGetInfoInterface != null) { - try { - String jsonString = mGetInfoInterface.getMapResult(); - mMMKV.encode(CommonConfig.MAP_LOCATION_JSON_KEY, jsonString); - } catch (Exception e) { - Log.e(TAG, "getMapResult: " + e.getMessage()); - } - } else { - bindInfoService(); - } - } - public String getAppUsedStatistics() { if (mGetInfoInterface != null) { try { @@ -224,72 +210,6 @@ public class RemoteManager { return null; } - public MapBean getMapBean() { - String jsonString = mMMKV.decodeString(CommonConfig.MAP_LOCATION_JSON_KEY); - if (TextUtils.isEmpty(jsonString)) { - return null; - } else { - Gson gson = new Gson(); - Type type = new TypeToken() { - }.getType(); - MapBean mapBean = gson.fromJson(jsonString, type); - mMMKV.encode(CommonConfig.MAP_ADDRESS_KEY, mapBean.getAddress() + mapBean.getLocationDescribe()); - mMMKV.encode(CommonConfig.MAP_LONGITUDE_KEY, mapBean.getLongitude()); - mMMKV.encode(CommonConfig.MAP_LATITUDE_KEY, mapBean.getLatitude()); - return mapBean; - } - } - - public String getCity() { - MapBean mapBean = getMapBean(); - if (mapBean == null) { - getLocation(); - return "北京"; - } else { - return mapBean.getCity(); - } - } - - public String getCityDistrict() { - MapBean mapBean = getMapBean(); - if (mapBean == null) { - getLocation(); - return "北京"; - } else { - return mapBean.getCity() + "\t" + mapBean.getDistrict(); - } - } - - public double getLongitude() { - MapBean mapBean = getMapBean(); - if (mapBean == null) { - getLocation(); - return 0.0; - } else { - return mapBean.getLongitude(); - } - } - - public double getLatitude() { - MapBean mapBean = getMapBean(); - if (mapBean == null) { - getLocation(); - return 0.0; - } else { - return mapBean.getLatitude(); - } - } - - public String getLocationTude() { - MapBean mapBean = getMapBean(); - if (mapBean == null) { - getLocation(); - return "0.0"; - } else { - return mapBean.getLongitude() + "," + mapBean.getLatitude(); - } - } - public boolean getSnIsActivation() { try { return mGetInfoInterface.SnIsActivation(); diff --git a/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java index f479b5c..f379a5c 100644 --- a/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java @@ -31,6 +31,7 @@ import com.uiui.zyos.network.api.CloudLessonAppApi; import com.uiui.zyos.network.api.RunNewApp; import com.uiui.zyos.network.api.SNInfoApi; import com.uiui.zyos.network.api.StudyStatApi; +import com.uiui.zyos.network.api.UpdateAddressApi; import com.uiui.zyos.network.api.UpdateAlarmClockApi; import com.uiui.zyos.network.api.UserInfoControl; import com.uiui.zyos.network.interceptor.RepeatRequestInterceptor; @@ -216,6 +217,14 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable getUpdateAddressObservable(String address, double longitude, double latitude) { + return mRetrofit.create(UpdateAddressApi.class) + .updateAddress(RemoteManager.getInstance().getSerial(), address, longitude, latitude) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + /* * * execution diff --git a/app/src/main/java/com/uiui/zyos/network/UrlAddress.java b/app/src/main/java/com/uiui/zyos/network/UrlAddress.java index 2ea31b5..87e8092 100644 --- a/app/src/main/java/com/uiui/zyos/network/UrlAddress.java +++ b/app/src/main/java/com/uiui/zyos/network/UrlAddress.java @@ -9,6 +9,8 @@ public class UrlAddress { public static final String GET_USER_AVATAR_INFO = "sn/getUserAvatarInfo"; /*获取统计*/ public static final String GET_STUDY_STAT = "Sn/getStudyStat"; + /*上传地址信息*/ + public static final String UPDATE_ADDRESS = "sn/update-address"; /*应用使用记录*/ public static final String APP_USAGE_RECORD = "appUsageRecord"; @@ -19,6 +21,7 @@ public class UrlAddress { /*爱心提醒通知成功*/ public static final String UPDATE_ALARM_CLOCK = "updateAlarmClock"; + /*网课模式*/ public final static String GET_CLOUD_LESSON = "Control/getCloudLessonSetting"; public final static String GET_CLOUD_LESSON_APP = "Control/getCloudLessonApp"; diff --git a/app/src/main/java/com/uiui/zyos/network/api/UpdateAddressApi.java b/app/src/main/java/com/uiui/zyos/network/api/UpdateAddressApi.java new file mode 100644 index 0000000..3b0eba7 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/network/api/UpdateAddressApi.java @@ -0,0 +1,20 @@ +package com.uiui.zyos.network.api; + +import com.uiui.zyos.bean.BaseResponse; +import com.uiui.zyos.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.POST; + +public interface UpdateAddressApi { + @FormUrlEncoded + @POST(UrlAddress.UPDATE_ADDRESS) + Observable updateAddress( + @Field("sn") String sn, + @Field("address") String address, + @Field("longitude") double longitude, + @Field("latitude") double latitude + ); +} diff --git a/app/src/main/java/com/uiui/zyos/push/PushManager.java b/app/src/main/java/com/uiui/zyos/push/PushManager.java index 44c322a..4ce1821 100644 --- a/app/src/main/java/com/uiui/zyos/push/PushManager.java +++ b/app/src/main/java/com/uiui/zyos/push/PushManager.java @@ -7,7 +7,7 @@ import android.content.Intent; import com.uiui.zyos.disklrucache.CacheHelper; import com.uiui.zyos.network.NetInterfaceManager; -import com.uiui.zyos.utils.ToastUtil; +import com.hjq.toast.Toaster; public class PushManager { private static final String TAG = PushManager.class.getSimpleName(); @@ -51,13 +51,13 @@ public class PushManager { public void setPushContent(String title, String extras) { switch (title) { case JIGUANG_ALARM_CLOCK: - ToastUtil.betaShow("收到推送消息: 设置闹钟"); + Toaster.debugShow("收到推送消息: 设置闹钟"); NetInterfaceManager.getInstance().getAlarmClock(); Intent intent = new Intent(SET_ALARMCLOCK); mContext.sendBroadcast(intent); break; case ONLINE_COURSE_MODE: - ToastUtil.betaShow("收到推送消息: 网课模式"); + Toaster.debugShow("收到推送消息: 网课模式"); NetInterfaceManager.getInstance().getCloudLessonSettings(); break; default: diff --git a/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java b/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java index e766409..a20534b 100644 --- a/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java +++ b/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java @@ -6,7 +6,6 @@ import android.content.Intent; import android.text.TextUtils; import android.util.Log; -import com.uiui.zyos.service.main.MainService; import java.util.concurrent.TimeUnit; @@ -18,7 +17,7 @@ import io.reactivex.rxjava3.disposables.Disposable; public class BootReceiver extends BroadcastReceiver { private static final String TAG = BootReceiver.class.getSimpleName(); public static final String BOOT_COMPLETED = "zuoyeos.action.BOOT_COMPLETED"; - public static final String SOS = "zuoyeos.action.SOS"; + public static final String SOS = "zyos.action.SOS"; static { getLockedState(); @@ -72,7 +71,7 @@ public class BootReceiver extends BroadcastReceiver { // Intent alarmIntent = new Intent(MessageReceiver.SET_ALARMCLOCK); // context.sendBroadcast(alarmIntent); case Intent.ACTION_BOOT_COMPLETED: - context.startService(new Intent(context, MainService.class)); +// context.startService(new Intent(context, MainService.class)); break; // TODO: 2023/6/17 频繁唤醒耗电 // case Intent.ACTION_BATTERY_CHANGED: diff --git a/app/src/main/java/com/uiui/zyos/receiver/InstallResultReceiver.java b/app/src/main/java/com/uiui/zyos/receiver/InstallResultReceiver.java index c5fe60d..da1cc4c 100644 --- a/app/src/main/java/com/uiui/zyos/receiver/InstallResultReceiver.java +++ b/app/src/main/java/com/uiui/zyos/receiver/InstallResultReceiver.java @@ -50,7 +50,7 @@ public class InstallResultReceiver extends BroadcastReceiver { // Log.e("fht", LEGACY_STATUS); // Log.e("fht", STATUS_MESSAGE); if (STATUS_MESSAGE != null && "INSTALL_SUCCEEDED".equals(STATUS_MESSAGE)) { -// ToastUtil.show(PACKAGE_NAME + "安装成功"); +// Toaster.show(PACKAGE_NAME + "安装成功"); } } } diff --git a/app/src/main/java/com/uiui/zyos/service/main/MainSContact.java b/app/src/main/java/com/uiui/zyos/service/main/MainSContact.java index 7adac54..b748941 100644 --- a/app/src/main/java/com/uiui/zyos/service/main/MainSContact.java +++ b/app/src/main/java/com/uiui/zyos/service/main/MainSContact.java @@ -1,7 +1,7 @@ package com.uiui.zyos.service.main; -import com.uiui.zyos.base.BasePresenter; -import com.uiui.zyos.base.BaseView; +import com.uiui.zyos.base.mvp.BasePresenter; +import com.uiui.zyos.base.mvp.BaseView; import com.uiui.zyos.bean.AlarmClockData; import java.util.List; diff --git a/app/src/main/java/com/uiui/zyos/service/main/MainService.java b/app/src/main/java/com/uiui/zyos/service/main/MainService.java index 62b56df..ea63180 100644 --- a/app/src/main/java/com/uiui/zyos/service/main/MainService.java +++ b/app/src/main/java/com/uiui/zyos/service/main/MainService.java @@ -1,11 +1,9 @@ package com.uiui.zyos.service.main; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.os.Build; import android.os.IBinder; import android.text.TextUtils; import android.util.Log; @@ -13,16 +11,15 @@ import android.util.Log; import com.blankj.utilcode.util.NetworkUtils; import com.uiui.zyos.activity.NoticeActivity; import com.uiui.zyos.alarm.AlarmUtils; -import com.uiui.zyos.base.BaseService; +import com.uiui.zyos.base.rx.BaseRxService; import com.uiui.zyos.bean.AlarmClockData; -import com.uiui.zyos.jxw.JxwPackageConfig; import com.uiui.zyos.utils.Utils; import java.util.Calendar; import java.util.HashMap; import java.util.List; -public class MainService extends BaseService implements MainSContact.MainSView, NetworkUtils.OnNetworkStatusChangedListener { +public class MainService extends BaseRxService implements MainSContact.MainSView, NetworkUtils.OnNetworkStatusChangedListener { private static final String TAG = MainService.class.getSimpleName(); public MainSPresenter mPresenter; @@ -56,7 +53,7 @@ public class MainService extends BaseService implements MainSContact.MainSView, Log.e(TAG, "onCreate: "); mPresenter = new MainSPresenter(this); mPresenter.attachView(this); - mPresenter.setLifecycle(lifecycleSubject); + mPresenter.setLifecycle(getLifecycleSubject()); mPresenter.getCloudLessonSettings(); // registerAlarmReceiver(); NetworkUtils.registerNetworkStatusChangedListener(this); diff --git a/app/src/main/java/com/uiui/zyos/utils/ActivationUtil.java b/app/src/main/java/com/uiui/zyos/utils/ActivationUtil.java new file mode 100644 index 0000000..be53869 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/utils/ActivationUtil.java @@ -0,0 +1,90 @@ +package com.uiui.zyos.utils; + +import android.content.Context; +import android.provider.Settings; + +import com.uiui.zyos.config.CommonConfig; + +public class ActivationUtil { + + /*写入1为激活*/ + private static final int ACTIVATED_KEY = 1; + private static final int INACTIVATED_KEY = 0; + /*默认激活码类型*/ + private static final int DEFAULT_CODE_TYPE = -1; + /*默认过期时间*/ + private static final int DEFAULT_EXPIRE_TIME = -1; + + + /** + * 获取激活状态 + * + * @param context + * @return + */ + public static int getActivationStateCode(Context context) { + int activation = Settings.Global.getInt(context.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, INACTIVATED_KEY); + return activation; + } + + /** + * 是否激活 + * + * @param context + * @return + */ + public static boolean isActivation(Context context) { + return getActivationStateCode(context) == ACTIVATED_KEY; + } + + /** + * 设置激活状态 + * + * @param context + * @param code + */ + public static void setActivation(Context context, int code) { + Settings.Global.putInt(context.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, code); + } + + /** + * 设置激活码类型 + * + * @param context + * @param code + */ + public static void setActivationCodeType(Context context, int code) { + Settings.Global.putInt(context.getContentResolver(), CommonConfig.UIUI_CODE_TYPE_KEY, code); + } + + /** + * 获取激活码类型 + * + * @param context + * @return + */ + public static int getActivationCodeType(Context context) { + return Settings.Global.getInt(context.getContentResolver(), CommonConfig.UIUI_CODE_TYPE_KEY, DEFAULT_CODE_TYPE); + } + + /** + * 设置过期时间 + * + * @param context + * @param expireTime + */ + public static void setActivationExpireTime(Context context, long expireTime) { + Settings.Global.putLong(context.getContentResolver(), CommonConfig.UIUI_EXPIRE_TIME_KEY, expireTime); + } + + /** + * 获取过期时间 + * + * @param context + * @return + */ + public static long getActivationExpireTime(Context context) { + return Settings.Global.getLong(context.getContentResolver(), CommonConfig.UIUI_EXPIRE_TIME_KEY, DEFAULT_EXPIRE_TIME); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java b/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java index 509c4da..44c6b79 100644 --- a/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java @@ -5,12 +5,16 @@ import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Build; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import com.hjq.toast.Toaster; import com.tencent.mmkv.MMKV; import com.uiui.zyos.bean.LessonJson; import com.uiui.zyos.config.CommonConfig; @@ -61,14 +65,14 @@ public class OpenApkUtils { int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); if (is_activation != 1) { ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); - ToastUtil.show("请激活设备后使用"); + Toaster.show("请激活设备后使用"); } return is_activation == 1; } public boolean openPackageWithArgs(String packageName, String className, String name, String args) { if (!ApkUtils.isAvailable(mContext, packageName)) { - ToastUtil.show("应用未安装"); + Toaster.show("应用未安装"); return false; } ComponentName cn = new ComponentName(packageName, className); @@ -181,35 +185,35 @@ public class OpenApkUtils { }}; private void sendRuningApp(String packageName) { - AppUsedTimeUtils.getInstance().setAppPackageName(packageName); - AppUsedTimeUtils.getInstance().setStartTime(System.currentTimeMillis()); - AppUsedTimeUtils.getInstance().sendRunningApp(() -> { - }); +// AppUsedTimeUtils.getInstance().setAppPackageName(packageName); +// AppUsedTimeUtils.getInstance().setStartTime(System.currentTimeMillis()); +// AppUsedTimeUtils.getInstance().sendRunningApp(() -> { +// }); } public void openApp(String packageName) { if (!ApkUtils.isAvailable(mContext, packageName)) { - ToastUtil.show("应用未安装"); + Toaster.show("应用未安装"); return; } if (isCloudLessonMod(packageName)) { ApkUtils.openPackage(mContext, packageName); sendRuningApp(packageName); } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } public void openApp(String packageName, String className) { if (!ApkUtils.isAvailable(mContext, packageName)) { - ToastUtil.show("应用未安装"); + Toaster.show("应用未安装"); return; } if (isCloudLessonMod(packageName)) { ApkUtils.openPackage(mContext, packageName, className); sendRuningApp(packageName); } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } @@ -224,7 +228,7 @@ public class OpenApkUtils { sendRuningApp(packageName); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } @@ -239,7 +243,7 @@ public class OpenApkUtils { sendRuningApp(packageName); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } @@ -254,7 +258,7 @@ public class OpenApkUtils { sendRuningApp(packageName); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } @@ -269,7 +273,7 @@ public class OpenApkUtils { sendRuningApp(packageName); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } @@ -282,9 +286,35 @@ public class OpenApkUtils { if (isCloudLessonMod(packageName)) { if (openPackageWithArgs(packageName, className, "StartArgs", "中华文化")) { sendRuningApp(packageName); + } else { + Toaster.show("打开失败:应用未安装"); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); + } + } + + public boolean isNewAiApp() { + PackageManager pm = mContext.getPackageManager(); + PackageInfo packageInfo = null; + try { + packageInfo = pm.getPackageInfo(JxwPackageConfig.JXW_PRECISION_PACKAGE_NAME, 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + if (packageInfo == null) { + return false; + } + long appVersionCode; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + appVersionCode = packageInfo.getLongVersionCode(); + } else { + appVersionCode = packageInfo.versionCode; + } + if (appVersionCode == 85) { + return false; + } else { + return true; } } @@ -293,16 +323,79 @@ public class OpenApkUtils { return; } String packageName = JxwPackageConfig.JXW_PRECISION_PACKAGE_NAME; - String className = JxwPackageConfig.JXW_PRECISION_CLASS_NAME; + String className = JxwPackageConfig.JXW_PRECISION_CLASS_NAME_85; if (isCloudLessonMod(packageName)) { if (openPackageWithArgs(packageName, className, "tiku_func_type", args)) { sendRuningApp(packageName); + } else { + Toaster.show("打开失败:应用未安装"); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } + public void openAiPrecision(int page, String subject) { + if (!checkActivation()) { + return; + } + String packageName = JxwPackageConfig.JXW_PRECISION_PACKAGE_NAME; + String className = JxwPackageConfig.JXW_PRECISION_CLASS_NAME_1; + if (isCloudLessonMod(packageName)) { + if (openAiWithArgs(packageName, className, page, subject)) { + sendRuningApp(packageName); + } else { + Toaster.show("打开失败:应用未安装"); + } + } else { + Toaster.show("专注模式只允许使用指定应用"); + } + } + + + public static final String NAME_PRIMARY_SCHOOL = "小学"; + public static final String NAME_MIDDLE_SCHOOL = "初中"; + public static final String NAME_HIGH_SCHOOL = "高中"; + + /** + * page_navigate 写死传0 + * appoint_subject_list 不需要传 + * appoint_period_name 这个是学段,一定要传 , + *

+ * public static final String NAME_PRIMARY_SCHOOL = "小学"; + * public static final String NAME_MIDDLE_SCHOOL = "初中"; + * public static final String NAME_HIGH_SCHOOL = "高中"; + *

+ * appoint_period_name字段的值是上面这三个之一 + * + * @param packageName + * @param className + * @param page + * @param subject + * @return + */ + public boolean openAiWithArgs(String packageName, String className, int page, String subject) { + if (!ApkUtils.isAvailable(mContext, packageName)) { + Toaster.show("应用未安装"); + return false; + } + ComponentName cn = new ComponentName(packageName, className); + Intent intent = new Intent(); + intent.setComponent(cn); + intent.putExtra("page_navigate", page); + intent.putExtra("appoint_subject_name", subject); + intent.putExtra("appoint_period_name", NAME_HIGH_SCHOOL); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + try { + mContext.startActivity(intent); + return true; + } catch (Exception e) { + Log.e(TAG, "openPackageWithArgs: " + e.getMessage()); + } + return false; + } + public void openAppWithoutArgs(String packageName, String className) { if (!checkActivation()) { return; @@ -310,7 +403,7 @@ public class OpenApkUtils { if (isCloudLessonMod(packageName)) { openApp(packageName, className); } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } @@ -325,7 +418,7 @@ public class OpenApkUtils { sendRuningApp(packageName); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } @@ -340,13 +433,13 @@ public class OpenApkUtils { sendRuningApp(packageName); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } public boolean openLetterApp(String packageName, String className) { if (!ApkUtils.isAvailable(mContext, packageName)) { - ToastUtil.show("应用未安装"); + Toaster.show("应用未安装"); return false; } ComponentName cn = new ComponentName(packageName, className); @@ -377,7 +470,7 @@ public class OpenApkUtils { sendRuningApp(packageName); } } else { - ToastUtil.show("专注模式只允许使用指定应用"); + Toaster.show("专注模式只允许使用指定应用"); } } diff --git a/app/src/main/java/com/uiui/zyos/utils/ToastUtil.java b/app/src/main/java/com/uiui/zyos/utils/ToastUtil.java deleted file mode 100644 index 0b43f5a..0000000 --- a/app/src/main/java/com/uiui/zyos/utils/ToastUtil.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.uiui.zyos.utils; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.graphics.Color; -import android.os.Build; -import android.os.Handler; -import android.os.Looper; -import android.util.Log; -import android.widget.Toast; - -import com.blankj.utilcode.util.ToastUtils; -import com.uiui.zyos.BuildConfig; - - -/** - * Created by haoge on 2017/3/2. - */ - -public class ToastUtil { - private static final String TAG = ToastUtil.class.getSimpleName(); - @SuppressLint("StaticFieldLeak") - private static Context mContext; - private static Handler mainHandler = new Handler(Looper.getMainLooper()); - private static Toast debugToast; - private static Toast toast; - - - @SuppressLint("ShowToast") - public static void init(Context context) { - mContext = context; - toast = Toast.makeText(mContext, "", Toast.LENGTH_SHORT); - debugToast = Toast.makeText(mContext, "", Toast.LENGTH_SHORT); - - } - - private static long time1 = 0L; - private static long time2 = 0L; - - public static void show(final String msg) { - ToastUtils.make() -// .setBgColor(ColorUtils.getColor(R.color.toast_color)) - .setTextColor(Color.DKGRAY) -// .setGravity(Gravity.CENTER, 0, 0) - .setNotUseSystemToast() - .show(msg); - } - - public static void betaShow(final String msg) { - if (BuildConfig.DEBUG) { - ToastUtils.make() -// .setBgColor(ColorUtils.getColor(R.color.toast_color)) - .setTextColor(Color.RED) -// .setGravity(Gravity.CENTER, 0, 0) - .setNotUseSystemToast() - .setDurationIsLong(true) - .show(msg); - } else { - Log.e(TAG, "debugShow: " + msg); - } - } - - private static Toast mToast = null; - - //android 8.0以后限制 - //https://www.jianshu.com/p/d9813ad03d59 - //https://www.jianshu.com/p/050ce052b873 - public static void showToast(Context context, String text, int duration) { - if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P) { - Toast.makeText(context, text, duration).show(); - } else { - if (mToast == null) { - mToast = Toast.makeText(context, text, duration); - } else { - mToast.setText(text); - mToast.setDuration(duration); - } - mToast.show(); - } - } - - // public static void showInCenter(String msg) { -// mainHandler.post(() -> { -// if (toast != null) { -// toast.setGravity(Gravity.CENTER, 0, 0); -// toast.setText(msg); -// toast.show(); -// } -// }); -// } - - -} diff --git a/app/src/main/java/com/uiui/zyos/base/CustomContent.java b/app/src/main/java/com/uiui/zyos/view/CustomContent.java similarity index 98% rename from app/src/main/java/com/uiui/zyos/base/CustomContent.java rename to app/src/main/java/com/uiui/zyos/view/CustomContent.java index ab9b9e4..df9c87d 100644 --- a/app/src/main/java/com/uiui/zyos/base/CustomContent.java +++ b/app/src/main/java/com/uiui/zyos/view/CustomContent.java @@ -1,4 +1,4 @@ -package com.uiui.zyos.base; +package com.uiui.zyos.view; import android.content.Context; import android.util.AttributeSet; diff --git a/app/src/main/java/com/uiui/zyos/base/CustomContentCallbacks.java b/app/src/main/java/com/uiui/zyos/view/CustomContentCallbacks.java similarity index 95% rename from app/src/main/java/com/uiui/zyos/base/CustomContentCallbacks.java rename to app/src/main/java/com/uiui/zyos/view/CustomContentCallbacks.java index d5b771d..952e686 100644 --- a/app/src/main/java/com/uiui/zyos/base/CustomContentCallbacks.java +++ b/app/src/main/java/com/uiui/zyos/view/CustomContentCallbacks.java @@ -1,4 +1,4 @@ -package com.uiui.zyos.base; +package com.uiui.zyos.view; // add by codemx.cn ---- 20190712 ---plus- start diff --git a/app/src/main/java/com/uiui/zyos/base/viewpager/BaseFragmentPagerAdapter.java b/app/src/main/java/com/uiui/zyos/view/viewpager/BaseFragmentPagerAdapter.java similarity index 99% rename from app/src/main/java/com/uiui/zyos/base/viewpager/BaseFragmentPagerAdapter.java rename to app/src/main/java/com/uiui/zyos/view/viewpager/BaseFragmentPagerAdapter.java index eddcc78..2ebbc93 100644 --- a/app/src/main/java/com/uiui/zyos/base/viewpager/BaseFragmentPagerAdapter.java +++ b/app/src/main/java/com/uiui/zyos/view/viewpager/BaseFragmentPagerAdapter.java @@ -1,4 +1,4 @@ -package com.uiui.zyos.base.viewpager; +package com.uiui.zyos.view.viewpager; import android.util.SparseArray; diff --git a/app/src/main/java/com/uiui/zyos/base/viewpager/SubjectViewPagerAdapter.java b/app/src/main/java/com/uiui/zyos/view/viewpager/SubjectViewPagerAdapter.java similarity index 94% rename from app/src/main/java/com/uiui/zyos/base/viewpager/SubjectViewPagerAdapter.java rename to app/src/main/java/com/uiui/zyos/view/viewpager/SubjectViewPagerAdapter.java index fff57cb..74823b6 100644 --- a/app/src/main/java/com/uiui/zyos/base/viewpager/SubjectViewPagerAdapter.java +++ b/app/src/main/java/com/uiui/zyos/view/viewpager/SubjectViewPagerAdapter.java @@ -1,4 +1,4 @@ -package com.uiui.zyos.base.viewpager; +package com.uiui.zyos.view.viewpager; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; diff --git a/app/src/main/java/com/uiui/zyos/base/viewpager/ViewPager2Adapter.java b/app/src/main/java/com/uiui/zyos/view/viewpager/ViewPager2Adapter.java similarity index 96% rename from app/src/main/java/com/uiui/zyos/base/viewpager/ViewPager2Adapter.java rename to app/src/main/java/com/uiui/zyos/view/viewpager/ViewPager2Adapter.java index 6ebd341..d2cfb4a 100644 --- a/app/src/main/java/com/uiui/zyos/base/viewpager/ViewPager2Adapter.java +++ b/app/src/main/java/com/uiui/zyos/view/viewpager/ViewPager2Adapter.java @@ -1,4 +1,4 @@ -package com.uiui.zyos.base.viewpager; +package com.uiui.zyos.view.viewpager; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; diff --git a/app/src/main/res/drawable-hdpi/com_jxw_examsystem.png b/app/src/main/res/drawable-hdpi/com_jxw_examsystem.png new file mode 100644 index 0000000000000000000000000000000000000000..ead9ec7789a8b6992f3ec0dc01e5828346fa4418 GIT binary patch literal 7322 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/service_icon.png b/app/src/main/res/drawable-hdpi/service_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e099d764096a405c6cf0e52a5d8a61fc2500b4e0 GIT binary patch literal 29577 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

<`Do?cmp|J18}R;viUmq3Y z(Whrw|2(?etc^(Q3(_w;q%Z4iZV;?ae}-uoP#y~$f>BMqK-}xBND#V5IbUv^Kou2% z+ZSLnEdSZruL>5I2O;Mh7oR^HCZ*G6pOaj}gOJ(CO8c+JQ!aZNe&|~^82eGJP_8pN z{@!?bR1M0+q$p-_blSkD5!Z; zMCR`<&;@tVYeCd>MN#zxx&0w)!Kmq}EvVcpKgRj}In`{6n?lOf`txdHYCi^%Kg)r& zxcw+a++vR$=U)Ut9LBzdjZBgEeVYUo;@cW26k#78wkQ+V9tHVVaK&dMS*6kYaCWm- z8=1(-)Y_&%@!e-qBwSUV3@lxFgBj&3v0lONmc%Y{ao3%jd@p93GxdIhsAZ2`xNWpk z5#*AvGn=k^H>u&ct6qC)()G^UGFctcEp#hpmO1>cmagP{+V)OLZE=kuC91XRxgW7; zrjzJib{FsYkO=fz>|qqP170wl$Yb!fZy zz0{QUr!EvcA4M+I-OJ7;7gffTO6BmJ?$Cv6eyBv6oyD!>r+N1GHqDmrQ=UU!x7-YQA%tt{`40Nv*-5ZRs@W@uKBjc@WZs`WcgXz zhLBTWRW6A%AGPqjbn*a@e?uE^)>Z=2NOCCv*fu$=XHLmsmmL)jhDCE=HzEN( zbdc#Nz>^txf(fi|O1PagkaEA>$?@1b4orwOFT=GEh`iFte}c^~ge0XzGf!V_PxCvs zKXSF-$$G)ahmf@O*J=Mxz2LMQ1)&4q!msd~Kz$Zcrv59@4&?>SUcRtd>I2V*RqV_H zLyE~$F@fM&XK1~J-Q65@Fahq`({%E_`wUKML%n1~)@LHEseo0>U>nb8kzOnnWPPaV zqCcNmay)sbSeMV1gB`!Y?7z3>8)2@HTEfI2te%~jsn|@_cCn8Z_uVr7ssjh8XvfJZ zFVJa>LCBTK&9?_&TqKA?@hI^uL1Oh@b~7S~u_;n@G!p#ZDgmV>+Dj_B_s)IL`OFD(qml zUHs|h+RhQk*fc3qWCNG%Oj0`ffV-J}HsRe@G$E;`b!S>qs2@()b2wMh9)YaCH-yr8 z>=^>~(sK+HMv|Fv4In?`0dtxZAXzSMBzn(yqD21O0<-ys{N2Jho)oX_JFpQeDb_0JQrPSG4 ztIK$v+?HuvFeL~osm}4GzghxqY@Xf}FYdGd3zNWQ-}d8YU{9Se^H(1XZfeIq zU(H0ZMC`#GuVVp4$;sl51fW_RR;uIAyjb?@*k1{g3>4v^vt4K&OZ+xa=A5(zc@l1W zzWzGzG(fTRg)TpW&L^iF7QDsUA@w-Y!weL9f4O$+jpcP#`Q6Lafa-|p=HWIinsYnh zHjs9{yY2tHoN>4*OJY)kQKJDN#l_1##oPIa0w5RM;wHR-a=vKUF$%N4e`LXdG3vP3*Fy$bPNZvO6=V)i zie^8-RqC{YiFdnfq(8}xY>@jjWmyAT5Kq*pK7dT7Kf}n^C`4M1mW)4Ak%kNnx=t_` z1A)^WrGD#t)EZY)Fg)7Y3q&`+T>gUZu3-{{U>fPWz#_p`QZ-E`8b z<|AXCuiKyD!HCoLn`u>_i@b<3iy`AH1A64}o)-W&a*ro|=&E+V-14er&g@l)=_Q5q zM`h#ddQN1vPv8rFL}FYzm_FjJ!f!IG$|tHq8ZEK?LWCP#+TfiF`ZlXk=NAgnrdl;V|%#)tp@&T~32q8|d;VE3k z5)8=>gSe}rcU$F|)i@C+delbp^@3b8)#?+u5Nk9`NZmxXEBFzU4t zjzF*>Kheb5JYVUx*)=6J&3uc+!-YMaj1O?e$b+sl4is)ck63Hu}TK^AVNR)^ZlTr4-RlHkw|N11>^*m8z@xhd^V97 z1c8$;{M_g-+jg2@vk;dxHj?alOtEwYhLuVh7MHM)2zJ2#iiQ2=qT<(Arc^X1EWe;4 zU(#257XqX%Od3yk#qsQ~VSfd<|9JAW$JMy5+6sQ!zausu>r64?k_#%XO^lTJM&4N# zR_aYQfdUCXVllMTqC`PbE%bS|u@aew>BvxlN@CSc^qoy7!-)F6;yh8*bVbiH){KRV zhv)LCOQ=7yYe@>5yk)?`a6!$lfbS`l_kl_9O@qN>a2vt)i|tk{JPut$&2apFgZ?Q& z&=C2&o}?eKsM#bAD6)T|+E3IEAwR@xZEk_rx)PoH3`VG6OR5org6qFOcsP!^^>exf z+#x=R+SFYz#WYrnE?=t!%s$_4R@>xdxUHp!4qAwu+OdyMNXyCB@GVP>pSp#{+A44| zS#a_63@x~Ybhq*^HE=Ww){GG>-6y=pG*>!|dC9zgOgFkWDC2$Z7;is@viwCG%nmAa zamn3BZ%+}q|2qTDE9`o#Dki9M=Ba2nf%)bCXqGQg-xZwbb= zyZ88$p1Asz#L>~w1i93zM>T3B9u)akE=%CB||FyK`msJJ`Y|=yS~0Ftlj(T}T9zcXEmB6irz(!|)TQ z{K3Gt+wwF-Cg6yj5H>MFPC)0I1CctJZffhzov}bN@U*pc zM|J$gs6-!zF|%4WC5ALTMV3j&Qrw5 z4!>EZUK z9Vs^O$lqm$CANS_5jVGGajJjJZwI3s%!^iGSo!-(M#`Ib);2MZ1`K94BN1X0BQwc> z2fE}}TN+5yQEgHDBRJhco#AV!<|L07je)iC`q4Z z5S(7wzgvq=L(Y=A5OTLn3X;hDn>@(~%{fhZ{(8XsZA{)F zB}5~?ZLF;dzDk7}3>|Dhb^!Elpl*yB4gUE^zk~F`JImGu;vxHztOZ715I&eK&v)q? z1mhFS5CZNJn|X51=E^`zO>0?KF6)i1^lyu$36whKObL<4TsxId-)|(v5_-mi@6h)jKj(W#K|)5N{kCx+(}`RYPinU#ntt2!uKuH9w9N8=>qm8=dz`C` z@Utd6qHEKEZ)u8kG2A`wnn#$+*zm-&n2{SgTt1@^TxL(|Wz7^(-^p733K@gyDm2Wz zJVw)nGp6YcX!|KLscm<-Rf!80LAOF_-b2XpB{Kwpbm-fynW{WBaWE)$CcWV(1&a~m z^Gw=2vRf`k`~$b#M~gs@Rr|&%*=q;9yE=K=g$Au23FC|O@8YjZxm_O(J{ZLleX_CN z^#NN;iXf?%q>f|3?rwnZz>$*l{M!%Cfi503BXR3ftTz*g^{hK$#nnW)fwEomVXn!y z>~xBfwhp#cOU_484W4cnXAWGu43kr!hv@z-pf|&h(bUXnq~L${5-k%may4h_vbB`H z)vp(gg}kfxU}87SU2R}|`h2p|z3AG4P1LDEVECNwn9$&3Lmha46DSouc@IhO60-kY z)QRpm;slliBq69bYT3TLit-zp=4NBjG7}GdJBEO2DV+N^M^n90&{RAB3#$rqa{W&6f}G!F5djM zD14l;Lwff#TYfilAAfBmdI)pv= z4Gm2*zluisCJ^x)h3E-Hjc*__9cCB)gY~SljJ5omu%+tZ&>HDp~q3T?rHoc&e zZJg5SX94|ysupY6CJ?ld>b1Y@+HB$wDf{6kofIHoou^S<#e(Y;0)uE1dDIz&MSC&M zzc)L=%33tv$Ws*o&(~4ofw7p%WkV4{Dut<4>I-f*w(&#L$G5Eoeg??`nPCE>2HPLH z0P0PtFS~1J+IDwS zM426NeCn@0So1x{%0k|(+3oQvMPK)NZQ%O)P$L2hC3vu<;4j9g*^!_5!+hwd!BvZ~ z{e5)iutfCHxio)GtI_N7+O3=S?Z@Ek)FB6*m}d;k)0t%_Xv zWNwfU&hPy+#pL6U{@2Gw(-#=M&xN9QSqmv?MGRuHxU`+i^-TF^T!IzUaftyvgNFAj z^S@wvk{bvQ{vv@EPuqT+55C_?GJM@k=Cv>ox%<2Awpf%>m;FgcwqOW+!L9Wk3S^P6 z=UbbvXtib%KeOZ(4?M*m;e_o(kO;&$v|ReYGW-i(88~(G(xptOQvAUFX}_>N7UAf3 zZFCT0^Z=QIC4b<#@|aVxjxmeAtDzSHi;}Vry-w1HEaPmVPw~_OJk^xh6;P#+! zGv_+7{YZkOio(3b{=B5sDPbgfuJ4cZXScI+S96{VQ?otwNfFKwyz&;YJgbXu)gc6Y zyP!Vcy=dn?iN=Yhw$$vwW&c%i$$5le+s_s<1f`x(*+#RkK8{KRUvnFXP>!R?lvJ9^ zs?4qdPcKB?F~rrP9)hgQUFE&|uj^jO!zIuu}g2W9lEc^Z4GsVfc)#Hg?iBHX7UL8QW^y*j8gZjcwaT zW7~Gq*!T4NyZ-BW-oeaTduAWUhhyaz9O>hox$F%|d=d*M$&S8dht#T7Mau>P9s+KB zAksS|G==C-gdUJYI=peHL8|xA+myH8Gj^vX-C-vNi&8i%LQ@N$K^3 z(?r(^13nlH2Xz}5c19*N+#5~dV{OHugyjm)RG_RrA8~+5vDf4#^ z0b(d=H!PNm;u`GLn4lliJBc^{gEuR@T0c}5Z3WUC+84u@H8)VfxhYc<1BVR zPcg&jUKVdv(32ovYET5DIIHismrRxPKbBG-RQx_xTf~U|vh22}%*q-5Td1Eeic4YO z6q@yK{s-!5&FSMWk|L+H^dC<%wb=hG1?;}JS}E&9CuUWQSH(0q(LaiaUp}r8@!(Pg zA|81_lPYXY^Bo;Md7Sy37XN8kkq|;h@tw+Ks#s3XG}GD{4ldm*)v|N4`52l~Zm=OL z8P@9-2oC`gB1bs!qMX>tXr5ex4hb6A!sdCW9z$vXL&EZ;3nbb0x*41{DweRlf4lX? zJNhtUHLx;J2gJx0(YPU+xguXMy+i$lst+}qId=a(+Is*6PpH@qF7vtDN{hDu8+k+d zg31e&^&am9&vkDxyz~=Yio1BV^4gOlHgW{AHTK4ex%BpMRM301sChg4n+^` z*!(EC@WVDM8>cAce2LrDgLNk4vMmpBDCjP*@1(0Fm@@pqf1CO!n701QfGJ}9ttV6J1-sz;ybL*8!ZDU2{YwKLAhtMnB z5XJ2pLio{bhsZc~m#5v!cE5z!mq$cidijz=_(x3?uO_^`;1cc5H}}R|OVP=XqB6#) zT5XKe%Iiv}^OESK)FMjRVGQIc7hBG<|loo1#WJfnl-uj z>{WF>?Vp-rEGI=FtAx30CMi|QeL_rJ8-WInqsM4UC~*HTWa0LIH0?)vcX~u>|Jk~6 zR!y4tnaa~NxVwlY$Vx8&!gQTn5DIj|5o+xP8){rdh;9livo)t|z7tO0`d3)^r%XrrA8jV$Jc=E6k}cb4gWchsCSx-9IEh`>oWk*$)D)Sa zHh;f}yC*2$hD@FX`(}NjbdJz73l5)htLs@sLI3ldG{dQRv^O^AD7*;V`!S&@CK*4^fQM7cBV3N| z@|B&GQ%=GZ?n}6o!kMbxMS1Iw&|W)wWU<1jiJ2HVp zD4kxw8ov$sp5|K~H`;R62(Cfs{yE9BubvFcs6{-L3k{GkA%G{< z(bh{;AB6O%9b0>q4mwxHf63LCtN0d>I5B@eGvM1_5l+9my}D- zZ}{ok4umBLPgN`aQ3wLGR?}h-L{90cUC1Ej|3MZJ9b{0qdo6m;G?x!KKYTM_Fe_-_ zj;cjW7x&Tu;e7t}Bu{eJSS)ORl#mpac#i$Xp}yd&%R#E?RDFpObt?GptsQyzlgreW zA6@g(A}mE_oxmf)N~agk;TS7c$zK=yAi{4MECm$1+y=dzPfsm+NPV=n;x*ynR6`NR zvwgc0uA8ZB2=%4IllKLPMcL^R)rJ7P+F1jxx2Cilwd4*ipu}wUpcTE;t?R2I5xh7) ztP>>lM*TI>5c~RD*#4p;=``g|Rlaj^Si*($Goqn$#V5;En!j))%5_d$PAff*nVO$M zU4@G{jwK78xUy}<>4%3Vo~Vet&X~2^{GLPHBG<{k{=bpGMO9)zy2W|GC*?+#d|spbkE z&$012)eD-@h$aw(@Fwx{m0w?2T%4xlzp~@Lor`Y)e@bZrO)F7+t1MMTyd@!dnhI7X zK{Xo33O&$3cK?Y?L^yNc@BE(`;vQ`H8~XDP4Ic z0w>fwr_b})wXh`=LS!zs_M@e|Mfr}<&)0wJFxk}9=5(ih_*Giu^Hn4C8`wO?WmKy5 zI*5;sh<#l@qHaF(r8}~5A^o`Q>>&1y;q!|MGaJ5}?;y^rcJ^=DELhK8YCrY7E%|`+ zC|ZAM&vahl@~k@P zfe1&Pkr8}+tcmsxOf1lHX_z5Ves8*5>Un$wedTOqT^;dy%03ZTi#N^El66^k!l4zq zet6D}g*=&y_TKx%=KbPL;o4{^6UbHSQGM0QPUaDs@DLy#x5@JT5@g(uNiL6!Q^yA) z((#i}o0{I|TlXn*5~=zLcZKgt>! z61{z{FEz|JoDInwG)m-ixq>HiW;dUSuVIY-AA5c}@zr`o7MO>>I%g}Ck!8_v@C2*nswDr76;{Q|Y$1Bu3AMC}Oa+<*E^oBTK zawtRewOVdZ{LytCoiKVpl^T^pIcM@`@MV?hj7N2cyWNYqBXRoT*#z)PmYA^%h!U&fUK*MogWR5uAuSn+BIOUb-S7k%wlfg7h zKAv3=F(?FIXD)3z5@8VIEvy1~!i3*`{v0d?!G}G(-y8}|uQZ$rd!b9{P-ZGDi8B4$ zHvSuj8{ztXSkff!=m=s4g|l$R5`@<=83?r2p1ep&7b+p*e&M8nD4mEqiT`LPSQ9?d zYo0l@V}OnmkazhUNe8VyuU^~;q7j@3UDv4(C4clJ)9v|%M3GgGU&n^%V~xQqQbW@} zS1t+B9FjfIY>O3z+D%mX1zm7AI1B&UQHN+iMbDb)tQtFf$g3&iRi3=0;Tb-pAsAi~ z26TLKd)(5gBk(CqN;SPVXnA^=xfMpo{3kvzpWp!c_jQ|-H9+T`q&p1*^769+5|g7^-^0t zu)rM&1{#R+h76)cT&CXEv%^neU%%KX%eY2t?m=DF&H4&<*t^9U_>2CxpxG3PKv1TL zCD4~->eHidmSIkL%%ViOhR$YbFO>grtO!)O+9#fqBXuYJeU5z^`l!md^rX?2JzSrD zme1W75}UKv=ai>oRB9LzJ?D9phF&J?gQWdI-q~G~1417yY>)ZKUb(eDhr6LzSIu?c zc{z|Ag8=zZ%_f(~W8v%%DsR1Mll@rvdiS@)Iw89zX zlwa#K4TxAOYHf~ppIlVcS3=PaN^eGXFni6$<3K->rO^X#=sHB#yms7hLePat`u~c( z%v_3f{0yPzcJHw45thj7Z_}jKq@>7sy`X1J=MiAB;Dd)lXKz-)Fw0( z5S^UJnzX*OH4Twlx>Z6@OR$A$b83f$u(Vbl!3vhk<`R(KB~1?X7GtDW$%;d7%gbLl zxc|f?`}DpR{m?$8SuG9OELyU>pR2mL`o1(mU)AhlAW#OEod?;R;B#Sq6F{#Z@m5@7 zT%p_S;%jjGBjU9cq9bF0w~CqZ^WP(ut;rI%X(wF~XeMGtW_7>#UyQ=(lizic-&n?6 z@)fb>)5p1(b%4RxEo1v0GN733z>PdBzqvv%p_gdDQ%FZHNAFXaWI+ElDkCMa(k{Lc zdXUqxD$s=KMi-{(JB|1$quEBmPvZY>)*6NbPVDeWw@%u&@=mMXykhRuqal3s`QWEk zZj0hFQw(O{oQL89eUT-bqiKl69k`sfF>|s@wQV$r6D?usH<`Hhe-&`kWe+}g=|sZ$ zqAB($wr&yrOiLXcgk?}}a@yb=EEBrrK$q)durw0sz+a^(EdvsUXrxY5y>v7l&<763 zq2OZjlr(wuaB@DW&>oz*T#t}2XO=g9zA$$#I$0TtECdD6Z>3`t^@f3vyTr!3hERHFx2GA?pCT$*jfhaW3a& zjrx1Rz5X}0ISxe!hdRw*Cj;XT9`DCbf7`_)hr1yHic4y!WykGLwM&(Tls_>o9Zvk@ z<`^Wla+4y~((1BNYGu$_S1&%bFtf;p$QajN^=IBn;J(#kNo3Mv0LCb|?}6}J458Nj;>$*0bvz13^uApc_xR+WH@_u+;pEV3Jr-o}b8gq5*Jd+q;cc>(V?f7YTFJ z^sC$P`7?w}7MM_&qR|T#T9a)9XTIiMAL`k&TVll{5|qiQr1SV(b9vvA7|E#S7bKlz zMZCPaCSxstCv}3d`Xn4^E8nx0G+F9~QO7>VH(62q^coV9P9;Y`4Oq;7bAo!tSo1K!?*cc5S+3M?5$7ad_SwK0?CC z=1ohw!X(eF_Eo_Vz3kx)U$Q1F8Y!R> zoWz%VXvAwXHj6EQ+xWL}Ek+@+L6I>2U`&okst{7kYOX0dX2!F@I~*H_gFCj>VHDBa z!gNmf(5TpMT?nI^iq7kiej4a`iV-Q$?jEC<3%X=ou%G-wehbp zysB@S8WbF|@hkq)o%L!-M_z^$^@F601;3yNpX_+Jg(7||O(<0kmN+< z^|Xn>_`-coX=w$40aNBC)q!6MNOBdpZ?1?0I(1#TTo9~PqXc=s2S1(@{q}P`UyRBmiSEZ>ty(Laa}Tc!Xy2J;N*dxQ?*4liUOP>sHSbl#UnPF%vfaObJ!;P9PXWq zOL&Ya3H5wt%0JGyWZkqWaiCqacsJ%%V?#S z#3_4LT$07ucJ_gLC!{4orTbVyO&6fe}4X=X;(R zWmweU`3h6wSnbethsAvzG5dIEIsZuPdSn3mC4YH>yA}_h#~oS6VO)hx7J|jdhDfX3 zmD%e(PKL{iCNW`-lJk)W(aLk5R+i>xjjs2*rkmvVw=&I7x3XnO!6dz*0du@9 zPep3e&316N59u!J4rn?>3xp>bG2GNvPG8<$hXh*FzfYt~wK-qpUV6P7x*zW+m+%mu?JXaAm%f!Wf5hcie^hO(?B(WR zt@mDsb$-Zx_I39K<@;U9q>E*Jwb>9ZQ|lUpsrQun%v1J}A_8r>wt6#b+J~0aHmN zW2VE2;>wc}L{oD5Z^gpj8QjmDFuwUz zBbQi~msRaLqA)#n8~DYe9{ln}fE&0NvnohuElw|@8u1DaKvOO4{&2E#a-w)9udb<% zit#yLWLd?6P4El8#Wb#^r>eiWeWyAIUgeo;MGT*S^^0A8|2`EM6S{}1Oz9pSS)jS9 z6PARbj5qliZ3qroC!{bNMGJ{);YuABBA{svr#uZOQl2JSXn*TBXDh-ttne%3%nS*d zM5^v7m~S6sg+7N=@7Dpv7&nXC8VffBT|@Z7M+Xc{#~rmF9A>nN!ycQ-;6!`qhQ?j3 zFsYF>Fjq{3!j}|`Q2jyP4ym(-M*81WU(=KW#Mh~32_M@=OIHqAeVZSoRTs+$!Lv7P z&%3;i;)cQi)1Oqqhj<=`i$D(M#Bm;R)91^M(6DJ{s&XCbk*N>1Rhpn7qk45q?wu0S z$?-fXn(Gm6$&{ByQYN8MB>OJ zYfawC{7&TVwUTs+_8-#7VAl&b7SmYB<3|Pj?=mN|uEZazhMaU@b_@RSbI03*TaQMf7Z7c05uBBRLHp}?5Au>!fDr6sD)IBW$IW!9 zwofzMQ*;^EiS;~#2w8DydD>TOFuN5WvA&_MB2jT9&=*ckv1|vC4Z49Emt!u#vH1Bj zwO%767W0Ma*JPB8;aqOw$G@U+x`S;MnMWzmZud-c(Afu2CG?#OcD}^O8>ip`eCp4* zY-3m~u`#9HCY~gcbv?W%V<9u#ga%sA=hhY*SfAKsQgE!T&v`ek#v7B=E(>NeRLYVM z-69=n&ocB~_ms<|dTWLeWw@8-MDhYEe^}$ain)6127~ZC|gDd-X1BGaV>^TeV zr)g=lMuY!=YxDPt4Re*mU;Xa&8CimY7VDP7H_(Y{~BWuv5W3$B9d&WG$zCEe*=fqCLMl`1-iNDgu4ujkGax*( zs8tXdOr)lay1SLs1LPMjzKU>TpWbJ98g;N{;*h+;+ps`mHjF_Q5nh$71k6Nx>KWKR^z7N|ypYXA$^1ydC z*(|M$h4W=OTwc$kWpNpFK_*lO2jLYa+-~C^pPEK@1yh!2*!&+P`)`8;bS{9|AvCqQ z6F`#PO{VIA^v$8(ggoC@1a3IM7)lr!olo46X}#PYbm6lF0TvM9#wRB(KBwAqVDq@M z;y$Zh_S*1)7vgW(qE-zV#HL0xlo=b_pDrm%7Y2GiPVBURkb#0=5-;V$KjEbvr!ujR zu@Yki)Jlba?9c@MQg!_OO-mPueb$xRnb*=1y5Y9MqaIRO1T>_{%{ojn6pE6M+`>#@ zLG+<1_HSHG%$gm=kO6x1fw07zrS_o_JGyVCRzaF9fRULz5|1zKay$TyUy|VKj}JAx zUVxw;kIV3LQK{bsCQx=9Y6lapA>Ze#>DwYf2nGV9_V0;(4EeJ-B!_wk{V7lt=YVKt zmttn~LLwgLDKDR{tcFj5DzpQ0U$Z{u#!HZRvH3V(T{BMQnqt@dA$~8K(3vUudZ}oQ zQesF)8ph@G7Vj=QY6U*pl%mX(gd^r`9I~#^>dJ&+R0!xP|Dl=D4wxj?T7v7S^yN^T zlzqA``71|4SZ6cP$@gmUfIbL!PHZo8TGdMBSD(PsT*)jnW|;CvqbTmMK{?#XlAnMg z9@NqJ9i_-&Wc<$UMGF?K(535CCqeqlbG=@1YU^obTgj){kz@Ta3d#N_A;~uG16&}m zUC-4IyO^E0U|r0Ind4u<9X_*Rpj!;V{{bwNzyg8y&nHReJb1F7DgQ=(|9nygrwk(q zWDm=zz3$;NEQ#v`F+sR#2fp22Pn02mG;Yr7Zgy!ajlTu>wkCuJ(Ps@t5ouw8AW|Nu zqpR|9dDfX15DmUEI-%hBynB#=9(S|eWPM&w^~|>f_ilO4F#SUGdmro&iwQNbKyH6} zf{&k0ZH&)x9vTz{locm*fyl0}4K$#?YdZsu%V^%iQRGl?x58Ssy$WSeAph2k%}sk+ zzJ@<|3%qt69|8d3WpOVFc!jE@CGgO*?@6+YNa&}ya9uEX@Vxn62|~ZUet$c+ zxzY1^vsvgi0F_O^kOx7DN9J=m958{F>)lviUs_MiN0TZNqz5&aJ~(kwExnDIPM~I7 z3}LypKBZ+@t|NnDa7|c<&d}wuzE%KFcUCt!ZIb*h-~X4b8a5TAUMkNaj{?$YF@(`^ z+gB;SBa*OAvbjz-Q+w??%0()JB>k7cL-3L6EFX%lTJ#$?+k-09fWf-P&VRwoFD($lTixyU&Ea zXDjp4KuT}`r0Z!jKMWA1-8Un3nC{>VFL)qumEW42T-S*hFH(G8Ye7tjnVrUIm;0ad z7qk9|o z@UnN!AQD1wCLQLU_$XdbDiN(N9fR!!0vg>dIEi25sIX`q|9CpihX&Lf*=Z#WWFxDQ zU#sKhh7BZ$I+j`??VM9TUA|66pP3?$gg7dMR^&Qhr^E; zF!re}x+QA5CaJbGTEl!WWUh$RzkNa_{p;sQ1>dDnUdnLHJkPzZFa&;1c>1b(@�E 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

W9sjz|Agsx*h~r{jmvmDI))#DyT2#u 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ú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

!hX`Ol5Os%L%@BI$ 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout-land/fragment_chinese.xml b/app/src/main/res/layout-land/fragment_chinese.xml index bbcc69e..99b5e94 100644 --- a/app/src/main/res/layout-land/fragment_chinese.xml +++ b/app/src/main/res/layout-land/fragment_chinese.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_complex.xml b/app/src/main/res/layout-land/fragment_complex.xml index fc83ba5..71a0340 100644 --- a/app/src/main/res/layout-land/fragment_complex.xml +++ b/app/src/main/res/layout-land/fragment_complex.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_chinese.xml b/app/src/main/res/layout-sw800dp/fragment_chinese.xml index 56e0f7a..be2d9ef 100644 --- a/app/src/main/res/layout-sw800dp/fragment_chinese.xml +++ b/app/src/main/res/layout-sw800dp/fragment_chinese.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_complex.xml b/app/src/main/res/layout-sw800dp/fragment_complex.xml index 9f2b695..e6bf6a5 100644 --- a/app/src/main/res/layout-sw800dp/fragment_complex.xml +++ b/app/src/main/res/layout-sw800dp/fragment_complex.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index adeacc6..7c51c96 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -68,8 +68,6 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_app.xml b/app/src/main/res/layout/fragment_app.xml new file mode 100644 index 0000000..e5486c8 --- /dev/null +++ b/app/src/main/res/layout/fragment_app.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_ar_study.xml b/app/src/main/res/layout/fragment_ar_study.xml new file mode 100644 index 0000000..a62d91a --- /dev/null +++ b/app/src/main/res/layout/fragment_ar_study.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_biology.xml b/app/src/main/res/layout/fragment_biology.xml new file mode 100644 index 0000000..b13d959 --- /dev/null +++ b/app/src/main/res/layout/fragment_biology.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_chemical.xml b/app/src/main/res/layout/fragment_chemical.xml new file mode 100644 index 0000000..d361a3d --- /dev/null +++ b/app/src/main/res/layout/fragment_chemical.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_chinese.xml b/app/src/main/res/layout/fragment_chinese.xml new file mode 100644 index 0000000..99b5e94 --- /dev/null +++ b/app/src/main/res/layout/fragment_chinese.xml @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_complex.xml b/app/src/main/res/layout/fragment_complex.xml new file mode 100644 index 0000000..71a0340 --- /dev/null +++ b/app/src/main/res/layout/fragment_complex.xml @@ -0,0 +1,442 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_english.xml b/app/src/main/res/layout/fragment_english.xml new file mode 100644 index 0000000..3efc02a --- /dev/null +++ b/app/src/main/res/layout/fragment_english.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml new file mode 100644 index 0000000..337781a --- /dev/null +++ b/app/src/main/res/layout/fragment_main.xml @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_math.xml b/app/src/main/res/layout/fragment_math.xml new file mode 100644 index 0000000..b1706b8 --- /dev/null +++ b/app/src/main/res/layout/fragment_math.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_physics.xml b/app/src/main/res/layout/fragment_physics.xml new file mode 100644 index 0000000..8a2b22d --- /dev/null +++ b/app/src/main/res/layout/fragment_physics.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_precision.xml b/app/src/main/res/layout/fragment_precision.xml new file mode 100644 index 0000000..3f0643e --- /dev/null +++ b/app/src/main/res/layout/fragment_precision.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_subject.xml b/app/src/main/res/layout/fragment_subject.xml new file mode 100644 index 0000000..a480125 --- /dev/null +++ b/app/src/main/res/layout/fragment_subject.xml @@ -0,0 +1,38 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_user.xml b/app/src/main/res/layout/fragment_user.xml new file mode 100644 index 0000000..bedc29f --- /dev/null +++ b/app/src/main/res/layout/fragment_user.xml @@ -0,0 +1,535 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 118dd73..cce1619 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -19,7 +19,7 @@ true - + +