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 0000000..ead9ec7
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/com_jxw_examsystem.png differ
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 0000000..e099d76
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/service_icon.png differ
diff --git a/app/src/main/res/drawable-hdpi/wechat_service.png b/app/src/main/res/drawable-hdpi/wechat_service.png
new file mode 100644
index 0000000..169ffa6
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/wechat_service.png differ
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
-
+
+