diff --git a/app/build.gradle b/app/build.gradle index dc8956f..c5cf75a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { minSdkVersion 24 targetSdkVersion 29 - versionCode 61 - versionName "1.6.9" + versionCode 62 + versionName "1.7.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java b/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java index 78f92de..e54df1f 100644 --- a/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java @@ -10,6 +10,7 @@ import android.content.res.Configuration; import android.graphics.Color; import android.os.Build; import android.os.Bundle; +import android.os.Debug; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -25,12 +26,17 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.viewpager.widget.ViewPager; +import com.alibaba.sdk.android.push.CloudPushService; +import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; +import com.arialyy.aria.core.Aria; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; +import com.tencent.bugly.crashreport.CrashReport; import com.tencent.mmkv.MMKV; import com.uiui.zyos.BuildConfig; import com.uiui.zyos.R; +import com.uiui.zyos.activity.ExitActivity; import com.uiui.zyos.base.BaseActivity; import com.uiui.zyos.base.viewpager.BaseFragmentPagerAdapter; import com.uiui.zyos.config.CommonConfig; @@ -80,6 +86,8 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, ConstraintLayout cl_7; @BindView(R.id.cl_8) ConstraintLayout cl_8; + @BindView(R.id.cl_9) + ConstraintLayout cl_9; @BindView(R.id.iv_robot) ImageView iv_robot; @@ -109,21 +117,20 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE. // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY View decorView = getWindow().getDecorView(); - decorView.setSystemUiVisibility( - View.SYSTEM_UI_FLAG_IMMERSIVE - // Set the content to appear under the system bars so that the - // content doesn't resize when the system bars hide and show. - | View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE + // Set the content to appear under the system bars so that the + // content doesn't resize when the system bars hide and show. + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - // Hide the nav bar and status bar - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN); + // Hide the nav bar and status bar + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); } @Override public void initView() { Log.e(TAG, "initView: "); + + if (Build.VERSION.SDK_INT >= 33) { hideSystemUI(); } @@ -149,7 +156,6 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments); mViewPager.setAdapter(mBaseFragmentPagerAdapter); - mViewPager.setOffscreenPageLimit(4); mViewPager.setCurrentItem(defaultCurrent); scaleCircleNavigator = new ScaleCircleNavigator(this); @@ -287,7 +293,21 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME); } }); + cl_9.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent("Receiver_Refresh_Password_Action"); + intent.setPackage("com.uiui.zy"); + sendBroadcast(intent); + int is_activation = Settings.Global.getInt(getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); + if (is_activation == 1) { + startActivity(new Intent(MainActivity.this, ExitActivity.class)); + } else { + Utils.exitDesktop(MainActivity.this); + } + } + }); // ComponentName cn = new ComponentName("com.jxw.mskt.video", "com.jxw.mskt.video.VideoDownload"); // Intent intent = new Intent(); // intent.setComponent(cn); @@ -307,6 +327,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, @Override public void initData() { registmNewAppReceiver(); + } @Override @@ -333,8 +354,16 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); + Log.e(TAG, "onWindowFocusChanged: hasFocus = " + hasFocus); if (hasFocus) {//表示渲染结束 - + if (mViewPager != null) { + mViewPager.postDelayed(new Runnable() { + @Override + public void run() { + mViewPager.setOffscreenPageLimit(4); + } + }, 1987); + } } } @@ -440,19 +469,14 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, } private void hide(View view) { - TranslateAnimation mShowAction = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, - Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, - 0.0f, Animation.RELATIVE_TO_SELF, 1.0f); + TranslateAnimation mShowAction = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 1.0f); mShowAction.setDuration(300); view.startAnimation(mShowAction); view.setVisibility(View.GONE); } private void show(View view) { - TranslateAnimation mHiddenAction = new TranslateAnimation(Animation.RELATIVE_TO_SELF, - 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, - Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, - 0.0f); + TranslateAnimation mHiddenAction = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f); mHiddenAction.setDuration(300); view.startAnimation(mHiddenAction); view.setVisibility(View.VISIBLE); @@ -611,8 +635,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.e(TAG, "onReceive: " + action); - if (Intent.ACTION_PACKAGE_ADDED.equals(action) - || Intent.ACTION_PACKAGE_REMOVED.equals(action) + if (Intent.ACTION_PACKAGE_ADDED.equals(action) || Intent.ACTION_PACKAGE_REMOVED.equals(action) // || Intent.ACTION_PACKAGE_CHANGED.equals(action) ) { } diff --git a/app/src/main/java/com/uiui/zyos/adapter/HomeworkAdapter.java b/app/src/main/java/com/uiui/zyos/adapter/HomeworkAdapter.java new file mode 100644 index 0000000..1bf8e4c --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/adapter/HomeworkAdapter.java @@ -0,0 +1,57 @@ +package com.uiui.zyos.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.RecyclerView; + +import com.uiui.zyos.R; + +import java.util.List; + +public class HomeworkAdapter extends RecyclerView.Adapter { + + private Context mContext; + private List mHomeworkList; + + public void setHomeworkList(List homeworkList) { + mHomeworkList = homeworkList; + notifyDataSetChanged(); + } + + @NonNull + @Override + public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new Holder(LayoutInflater.from(mContext).inflate(R.layout.item_homework, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull Holder holder, int position) { + holder.tv_content.setText(mHomeworkList.get(position)); + } + + @Override + public int getItemCount() { + return mHomeworkList == null ? 0 : mHomeworkList.size(); + } + + class Holder extends RecyclerView.ViewHolder { + ConstraintLayout root; + ImageView imageView; + TextView tv_content; + + public Holder(@NonNull View itemView) { + super(itemView); + root = itemView.findViewById(R.id.root); + imageView = itemView.findViewById(R.id.imageView); + tv_content = itemView.findViewById(R.id.tv_content); + } + } +} 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 652c3f7..1086afc 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseApplication.java +++ b/app/src/main/java/com/uiui/zyos/base/BaseApplication.java @@ -3,6 +3,7 @@ package com.uiui.zyos.base; import android.app.Application; import android.content.Intent; import android.content.IntentFilter; +import android.os.Debug; import android.os.Handler; import android.os.Looper; import android.util.Log; @@ -30,28 +31,30 @@ public class BaseApplication extends Application { @Override public void onCreate() { super.onCreate(); + Log.e(TAG, "onCreate: "); if (!BuildConfig.DEBUG) { // catchException(); } + // 在开始分析的地方调用,传入路径 + // 如果是放到外部路径,需要添加权限 + // 默认存储在/sdcard/Android/data/packagename/files +// Debug.startMethodTracing("App" + System.currentTimeMillis()); init(); + // 在结束的地方调用 +// Debug.stopMethodTracing(); } private void init() { + Log.e(TAG, "init: "); if (BuildConfig.DEBUG) { + } if (SystemUtils.isMainProcessName(this, android.os.Process.myPid())) { String rootDir = MMKV.initialize(this); Log.e(TAG, "mmkv root: " + rootDir); - CrashReport.initCrashReport(getApplicationContext(), "d1cd982951", false); - AppManager.init(this); - Aria.init(this); - Aria.get(this).getDownloadConfig().setMaxTaskNum(1); - Aria.get(this).getDownloadConfig().setConvertSpeed(true); PushManager.init(this); - aliyunPushInit(); - RemoteManager.init(this); RemoteManager.setListener(new RemoteManager.ConnectedListener() { @Override @@ -66,22 +69,22 @@ public class BaseApplication extends Application { NetInterfaceManager.init(this); // startService(new Intent(this, MainService.class)); registAppReceive(); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + slowInit(); + } + }, 1234); } } - private APKinstallReceiver apKinstallReceiver; - - private void registAppReceive() { - if (null == apKinstallReceiver) { - apKinstallReceiver = new APKinstallReceiver(); - } - IntentFilter filter = new IntentFilter(); - filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); - filter.addAction(Intent.ACTION_PACKAGE_ADDED); - filter.addAction(Intent.ACTION_PACKAGE_REPLACED); - filter.addAction(Intent.ACTION_PACKAGE_REMOVED); - filter.addDataScheme("package"); - registerReceiver(apKinstallReceiver, filter); + private void slowInit() { + Log.e(TAG, "slowInit: "); + Aria.init(this); +// Aria.get(this).getDownloadConfig().setMaxTaskNum(1); +// Aria.get(this).getDownloadConfig().setConvertSpeed(true); + aliyunPushInit(); + CrashReport.initCrashReport(getApplicationContext(), "d1cd982951", false); } public void aliyunPushInit() { @@ -102,16 +105,29 @@ public class BaseApplication extends Application { // }); } + private APKinstallReceiver apKinstallReceiver; + + private void registAppReceive() { + if (null == apKinstallReceiver) { + apKinstallReceiver = new APKinstallReceiver(); + } + IntentFilter filter = new IntentFilter(); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); + filter.addAction(Intent.ACTION_PACKAGE_ADDED); + filter.addAction(Intent.ACTION_PACKAGE_REPLACED); + filter.addAction(Intent.ACTION_PACKAGE_REMOVED); + filter.addDataScheme("package"); + registerReceiver(apKinstallReceiver, filter); + } + + private void catchException() { - Thread.setDefaultUncaughtExceptionHandler( - new Thread.UncaughtExceptionHandler() { - @Override - public void uncaughtException(Thread t, Throwable e) { - Log.e("捕获异常子线程:", Thread.currentThread().getName() + - "在:" + e.getStackTrace()[0].getClassName()); - } - } - ); + Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { + @Override + public void uncaughtException(Thread t, Throwable e) { + Log.e("捕获异常子线程:", Thread.currentThread().getName() + "在:" + e.getStackTrace()[0].getClassName()); + } + }); //下面是新增方法! new Handler(Looper.getMainLooper()).post(new Runnable() { @Override diff --git a/app/src/main/java/com/uiui/zyos/fragment/ar/ARStudyFragment.java b/app/src/main/java/com/uiui/zyos/fragment/ar/ARStudyFragment.java new file mode 100644 index 0000000..f4db921 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/fragment/ar/ARStudyFragment.java @@ -0,0 +1,179 @@ +package com.uiui.zyos.fragment.ar; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.os.Debug; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.ImageView; + +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.uiui.zyos.R; +import com.uiui.zyos.adapter.HomeworkAdapter; +import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.utils.ApkUtils; +import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link ARStudyFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class ARStudyFragment extends BaseFragment { + private static final String TAG = ARStudyFragment.class.getSimpleName(); + + @BindView(R.id.iv_app) + ImageView iv_app; + @BindView(R.id.recyclerView) + RecyclerView recyclerView; + + private View rootView;// 设置为全局的 + private Activity mContext; + private HomeworkAdapter mHomeworkAdapter; + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public ARStudyFragment() { + // Required empty public constructor + Log.e(TAG, "EnglishFragment: "); + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment EnglishFragment. + */ + // TODO: Rename and change types and number of parameters + public static ARStudyFragment newInstance(String param1, String param2) { + ARStudyFragment fragment = new ARStudyFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + Log.e(TAG, "onCreate: "); + } + + @Override + public void fetchData() { + Log.e(TAG, "fetchData: "); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Inflate the layout for this fragment + Log.e(TAG, "onCreateView: "); + if (null != rootView) { + ViewGroup parent = (ViewGroup) rootView.getParent(); + if (null != parent) { + parent.removeView(rootView); + } + } else { // 如ongoing果rootView为空 ,就实例化该视图 + rootView = inflater.inflate(R.layout.fragment_ar_study, container, false); + mContext = (Activity) rootView.getContext(); + ButterKnife.bind(this, rootView); + initView(); + } + return rootView; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + rootView = null; + } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser); + if (isVisibleToUser){ + if (mUserVisibleHintCallback!=null) { + mUserVisibleHintCallback.onUserVisibleHint(); + } + } + } + private UserVisibleHintCallback mUserVisibleHintCallback; + public interface UserVisibleHintCallback{ + void onUserVisibleHint(); + } + + public void setUserVisibleHintCallback(UserVisibleHintCallback userVisibleHintCallback) { + mUserVisibleHintCallback = userVisibleHintCallback; + } + + private void initView() { + WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics dm = new DisplayMetrics(); + wm.getDefaultDisplay().getRealMetrics(dm); + float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) + HashMap stringIntegerHashMap = new HashMap<>(); + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 10));//top间距 + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 10));//底部间距 +// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距 +// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距 + recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); + + mHomeworkAdapter = new HomeworkAdapter(); + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext); + linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); + recyclerView.setLayoutManager(linearLayoutManager); + recyclerView.setAdapter(mHomeworkAdapter); + List homeworkList = new ArrayList<>(); + homeworkList.add("暂时没有作业"); + mHomeworkAdapter.setHomeworkList(homeworkList); + + iv_app.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + openArApk(); + } + }); + } + + private void openArApk() { + if (ApkUtils.isAvailable(mContext, "com.visiontalk.taskoptions") && ApkUtils.isAvailable(mContext, "com.visiontalk.honor")) { + ApkUtils.openPackage(mContext, "com.visiontalk.taskoptions"); + } else if (ApkUtils.isAvailable(mContext, "com.visiontalk.taskoptions")) { + ApkUtils.openPackage(mContext, "com.visiontalk.taskoptions"); + } else if (ApkUtils.isAvailable(mContext, "com.visiontalk.honor")) { + ApkUtils.openPackage(mContext, "com.visiontalk.honor"); + } else { + Log.e(TAG, "openArApk: not installed"); + } + } +} 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 d3fe79a..ad53f9e 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 @@ -14,6 +14,7 @@ import android.widget.ImageView; import com.uiui.zyos.R; import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.fragment.ar.ARStudyFragment; import com.uiui.zyos.fragment.chinese.ChinesePresenter; import com.uiui.zyos.utils.OpenApkUtils; @@ -113,6 +114,26 @@ public class PrecisionFragment extends BaseFragment { rootView = null; } + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser); + if (isVisibleToUser){ + if (mUserVisibleHintCallback!=null) { + mUserVisibleHintCallback.onUserVisibleHint(); + } + } + } + + private ARStudyFragment.UserVisibleHintCallback mUserVisibleHintCallback; + public interface UserVisibleHintCallback{ + void onUserVisibleHint(); + } + + public void setUserVisibleHintCallback(ARStudyFragment.UserVisibleHintCallback userVisibleHintCallback) { + mUserVisibleHintCallback = userVisibleHintCallback; + } + private void initView() { iv_bunk.setOnClickListener(new View.OnClickListener() { @Override 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 6b847c5..6565bc7 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 @@ -16,6 +16,7 @@ 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.fragment.ar.ARStudyFragment; import com.uiui.zyos.fragment.biology.BiologyFragment; import com.uiui.zyos.fragment.chemical.ChemicalFragment; import com.uiui.zyos.fragment.chinese.ChineseFragment; @@ -44,10 +45,13 @@ public class SubjectFragment extends BaseFragment { @BindView(R.id.viewPager) ViewPager mViewPager; - private String[] title = new String[]{"AI精准学", "语文", "数学", "英语", "物理", "化学", "生物", "综合",}; + private String[] title = new String[]{ +// "AR自主学", + "精准学", "语文", "数学", "英语", "物理", "化学", "生物", "综合",}; private View rootView; private FragmentActivity mContext; +// private ARStudyFragment mARStudyFragment; private PrecisionFragment mPrecisionFragment; private ChineseFragment mChineseFragment; private MathFragment mMathFragment; @@ -78,7 +82,36 @@ public class SubjectFragment extends BaseFragment { long time = System.currentTimeMillis(); Log.e(TAG, "SubjectFragment: start " + time); mFragments = new ArrayList<>(); +// mARStudyFragment = new ARStudyFragment(); +// mARStudyFragment.setUserVisibleHintCallback(new ARStudyFragment.UserVisibleHintCallback() { +// @Override +// public void onUserVisibleHint() { +// if (mViewPager != null) { +// mViewPager.postDelayed(new Runnable() { +// @Override +// public void run() { +// mViewPager.setOffscreenPageLimit(11); +// } +// }, 2345); +// Log.e(TAG, "setUserVisibleHint: setOffscreenPageLimit"); +// } +// } +// }); mPrecisionFragment = new PrecisionFragment(); + mPrecisionFragment.setUserVisibleHintCallback(new ARStudyFragment.UserVisibleHintCallback() { + @Override + public void onUserVisibleHint() { + if (mViewPager != null) { + mViewPager.postDelayed(new Runnable() { + @Override + public void run() { + mViewPager.setOffscreenPageLimit(10); + } + }, 1234); + Log.e(TAG, "setUserVisibleHint: setOffscreenPageLimit"); + } + } + }); mChineseFragment = new ChineseFragment(); mMathFragment = new MathFragment(); mEnglishFragment = new EnglishFragment(); @@ -86,6 +119,7 @@ public class SubjectFragment extends BaseFragment { mChemicalFragment = new ChemicalFragment(); mBiologyFragment = new BiologyFragment(); mComplexFragment = new ComplexFragment(); +// mFragments.add(mARStudyFragment); mFragments.add(mPrecisionFragment); mFragments.add(mChineseFragment); mFragments.add(mMathFragment); @@ -127,8 +161,7 @@ public class SubjectFragment extends BaseFragment { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment Log.e(TAG, "onCreateView: "); if (null != rootView) { @@ -156,6 +189,23 @@ public class SubjectFragment extends BaseFragment { Log.e(TAG, "fetchData: "); } + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser); + if (isVisibleToUser) { + + } else { + + } + } + + @Override + public void onResume() { + Log.e(TAG, "onResume: "); + super.onResume(); + } + public int getFragmentSize() { Log.e(TAG, "getFragmentSize: "); return mFragments == null ? 0 : mFragments.size(); @@ -175,7 +225,6 @@ public class SubjectFragment extends BaseFragment { mFragmentManager = getChildFragmentManager(); mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments); mViewPager.setAdapter(mBaseFragmentPagerAdapter); - mViewPager.setOffscreenPageLimit(10); mViewPager.setOnPageChangeListener(mListener); main_sliding_tab_layout.setViewPager(mViewPager, title); Log.e(TAG, "initView: end = " + (System.currentTimeMillis() - time)); 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 7cd2dc2..37cb426 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 @@ -81,18 +81,20 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { TextView tv_activated; @BindView(R.id.tv_activated2) TextView tv_activated2; + @BindView(R.id.tv_applet) + TextView tv_applet; @BindView(R.id.tv_duration) TextView tv_duration; - @BindView(R.id.cl_activation) - ConstraintLayout cl_activation; + // @BindView(R.id.cl_activation) +// ConstraintLayout cl_activation; @BindView(R.id.tv_date1) TextView tv_date1; @BindView(R.id.iv_applet_qrcode) NiceImageView iv_applet_qrcode; @BindView(R.id.iv_device_qrcode) NiceImageView iv_device_qrcode; - @BindView(R.id.cl_app) - ConstraintLayout cl_app; + // @BindView(R.id.cl_app) +// ConstraintLayout cl_app; @BindView(R.id.tv_date2) TextView tv_date2; @BindView(R.id.cl_more) @@ -198,9 +200,18 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME); } }); - tv_activated.setOnClickListener(view -> { -// ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); - OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME); + tv_activated.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + // ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); + OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME); + } + }); + tv_applet.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); + } }); iv_avatar.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity")); registerOwnReceiver(); @@ -220,8 +231,8 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { if (logined == 1) { cl_nodata.setVisibility(View.GONE); cl_usedata.setVisibility(View.VISIBLE); - cl_activation.setVisibility(View.GONE); - cl_app.setVisibility(View.VISIBLE); +// cl_activation.setVisibility(View.GONE); +// cl_app.setVisibility(View.VISIBLE); } setButtonVisibility(); tv_exit.setOnClickListener(new View.OnClickListener() { @@ -320,14 +331,14 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); Log.e(TAG, "setButtonVisibility: " + is_activation); if (is_activation != 1) { - tv_exit.setVisibility(View.VISIBLE); +// tv_exit.setVisibility(View.VISIBLE); tv_activation.setVisibility(View.VISIBLE); } else { int isReturnAndroid = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_RETURN_ANDROID_KEY, 1); if (isReturnAndroid == 0) { - tv_exit.setVisibility(View.INVISIBLE); +// tv_exit.setVisibility(View.INVISIBLE); } else { - tv_exit.setVisibility(View.VISIBLE); +// tv_exit.setVisibility(View.VISIBLE); } tv_activation.setVisibility(View.GONE); } @@ -384,8 +395,8 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { cl_nodata.setVisibility(View.GONE); cl_usedata.setVisibility(View.VISIBLE); - cl_activation.setVisibility(View.GONE); - cl_app.setVisibility(View.VISIBLE); +// cl_activation.setVisibility(View.GONE); +// cl_app.setVisibility(View.VISIBLE); break; case 300: //设备没有绑定 case 400://没有授权的设备 @@ -395,8 +406,8 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { tv_grade.setText(getString(R.string.notset)); cl_nodata.setVisibility(View.VISIBLE); cl_usedata.setVisibility(View.GONE); - cl_activation.setVisibility(View.VISIBLE); - cl_app.setVisibility(View.GONE); +// cl_activation.setVisibility(View.VISIBLE); +// cl_app.setVisibility(View.GONE); break; // ToastUtil.show(getString(R.string.device_unauthorized)); // Log.e(TAG, "setSnInfo: " + getString(R.string.device_unauthorized)); 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 ca30e94..e766409 100644 --- a/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java +++ b/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java @@ -6,6 +6,8 @@ import android.content.Intent; import android.text.TextUtils; import android.util.Log; +import com.uiui.zyos.service.main.MainService; + import java.util.concurrent.TimeUnit; import io.reactivex.rxjava3.core.Observable; @@ -14,7 +16,7 @@ import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; public class BootReceiver extends BroadcastReceiver { - private static String TAG = BootReceiver.class.getSimpleName(); + 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"; @@ -70,6 +72,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)); break; // TODO: 2023/6/17 频繁唤醒耗电 // case Intent.ACTION_BATTERY_CHANGED: diff --git a/app/src/main/res/drawable-hdpi/exit_icon.png b/app/src/main/res/drawable-hdpi/exit_icon.png index 5a609fc..6905d5a 100644 Binary files a/app/src/main/res/drawable-hdpi/exit_icon.png and b/app/src/main/res/drawable-hdpi/exit_icon.png differ diff --git a/app/src/main/res/drawable-xhdpi/ar_box.png b/app/src/main/res/drawable-xhdpi/ar_box.png new file mode 100644 index 0000000..ffe2f19 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ar_box.png differ diff --git a/app/src/main/res/drawable-xhdpi/ar_homework_box.png b/app/src/main/res/drawable-xhdpi/ar_homework_box.png new file mode 100644 index 0000000..ee94efd Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ar_homework_box.png differ diff --git a/app/src/main/res/drawable-xhdpi/ar_study_module.png b/app/src/main/res/drawable-xhdpi/ar_study_module.png new file mode 100644 index 0000000..8b751b4 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ar_study_module.png differ diff --git a/app/src/main/res/drawable-xhdpi/item_icon_homework.png b/app/src/main/res/drawable-xhdpi/item_icon_homework.png new file mode 100644 index 0000000..f8ebf5e Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/item_icon_homework.png differ diff --git a/app/src/main/res/drawable/item_homework_background.xml b/app/src/main/res/drawable/item_homework_background.xml new file mode 100644 index 0000000..f407ba1 --- /dev/null +++ b/app/src/main/res/drawable/item_homework_background.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_ar_study.xml b/app/src/main/res/layout-land/fragment_ar_study.xml new file mode 100644 index 0000000..a62d91a --- /dev/null +++ b/app/src/main/res/layout-land/fragment_ar_study.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_subject.xml b/app/src/main/res/layout-land/fragment_subject.xml index bf49321..a480125 100644 --- a/app/src/main/res/layout-land/fragment_subject.xml +++ b/app/src/main/res/layout-land/fragment_subject.xml @@ -20,11 +20,10 @@ android:visibility="visible" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:tl_indicator_color="#00000000" - app:tl_indicator_margin_left="2dp" - app:tl_indicator_margin_right="2dp" + app:tl_indicator_color="#FFFFFF" app:tl_indicator_style="NORMAL" app:tl_tab_space_equal="true" + app:tl_indicator_width_equal_title="true" app:tl_textBold="SELECT" app:tl_textSelectSize="@dimen/sp_13" app:tl_textSize="@dimen/sp_11" diff --git a/app/src/main/res/layout-land/fragment_user.xml b/app/src/main/res/layout-land/fragment_user.xml index 7968cd4..32f97c7 100644 --- a/app/src/main/res/layout-land/fragment_user.xml +++ b/app/src/main/res/layout-land/fragment_user.xml @@ -73,9 +73,10 @@ android:paddingTop="@dimen/dp_2" android:paddingEnd="@dimen/dp_8" android:paddingBottom="@dimen/dp_2" - android:textSize="@dimen/sp_10" android:text="退出系统" android:textColor="@color/white" + android:textSize="@dimen/sp_10" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/constraintLayout5" app:layout_constraintTop_toTopOf="parent" @@ -146,7 +147,6 @@ android:visibility="visible"> + + @@ -216,10 +231,10 @@ android:layout_marginEnd="@dimen/dp_8" android:background="@drawable/activation_bg" android:gravity="center" - android:visibility="gone" android:text="学习资源下载" android:textColor="@color/white" android:textSize="@dimen/sp_8" + android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -267,12 +282,12 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_8" android:maxLines="1" - tools:text="@string/today_study_time" android:textColor="@color/white" android:textSize="@dimen/sp_8" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/textView5" /> + app:layout_constraintTop_toBottomOf="@+id/textView5" + tools:text="@string/today_study_time" /> @@ -291,7 +306,7 @@ android:id="@+id/cl_activation" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="visible"> + android:visibility="gone"> @@ -408,7 +423,7 @@ android:id="@+id/cl_app" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="gone"> + android:visibility="visible"> + + + + + + + + diff --git a/app/src/main/res/layout-sw800dp/fragment_subject.xml b/app/src/main/res/layout-sw800dp/fragment_subject.xml index 690e993..d922469 100644 --- a/app/src/main/res/layout-sw800dp/fragment_subject.xml +++ b/app/src/main/res/layout-sw800dp/fragment_subject.xml @@ -20,10 +20,9 @@ android:visibility="visible" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:tl_indicator_color="#00000000" - app:tl_indicator_margin_left="2dp" - app:tl_indicator_margin_right="2dp" + app:tl_indicator_color="#FFFFFF" app:tl_indicator_style="NORMAL" + app:tl_indicator_width_equal_title="true" app:tl_tab_space_equal="true" app:tl_textBold="SELECT" app:tl_textSelectSize="@dimen/sp_15" diff --git a/app/src/main/res/layout-sw800dp/fragment_user.xml b/app/src/main/res/layout-sw800dp/fragment_user.xml index db2218a..e7888b8 100644 --- a/app/src/main/res/layout-sw800dp/fragment_user.xml +++ b/app/src/main/res/layout-sw800dp/fragment_user.xml @@ -73,9 +73,10 @@ android:paddingTop="@dimen/dp_2" android:paddingEnd="@dimen/dp_8" android:paddingBottom="@dimen/dp_2" - android:textSize="@dimen/sp_10" android:text="退出系统" android:textColor="@color/white" + android:textSize="@dimen/sp_10" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/constraintLayout5" app:layout_constraintTop_toTopOf="parent" @@ -155,6 +156,21 @@ android:text="学习资源下载" android:textColor="@color/white" android:textSize="@dimen/sp_5" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + @@ -289,7 +305,7 @@ android:id="@+id/cl_activation" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="visible"> + android:visibility="gone"> + android:visibility="visible"> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 73a3889..761bca7 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -73,7 +73,7 @@ android:id="@+id/iv_icon0" android:layout_width="@dimen/dp_32" android:layout_height="@dimen/dp_32" - android:layout_marginStart="@dimen/dp_8" + android:layout_marginStart="@dimen/dp_4" android:layout_marginEnd="@dimen/dp_4" android:adjustViewBounds="true" android:scaleType="centerCrop" @@ -257,7 +257,7 @@ android:layout_width="@dimen/dp_32" android:layout_height="@dimen/dp_32" android:layout_marginStart="@dimen/dp_4" - android:layout_marginEnd="@dimen/dp_8" + android:layout_marginEnd="@dimen/dp_4" android:adjustViewBounds="true" android:scaleType="centerCrop" android:src="@drawable/icon_dict" @@ -287,7 +287,7 @@ android:layout_width="@dimen/dp_32" android:layout_height="@dimen/dp_32" android:layout_marginStart="@dimen/dp_4" - android:layout_marginEnd="@dimen/dp_8" + android:layout_marginEnd="@dimen/dp_4" android:adjustViewBounds="true" android:scaleType="centerCrop" android:src="@drawable/jxw_update" @@ -338,6 +338,37 @@ app:layout_constraintTop_toBottomOf="@+id/iv_icon5" /> + + + + + + + diff --git a/app/src/main/res/layout/item_homework.xml b/app/src/main/res/layout/item_homework.xml new file mode 100644 index 0000000..16e50d4 --- /dev/null +++ b/app/src/main/res/layout/item_homework.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + \ No newline at end of file