version:1.9.1
fix: update:个人信息页面完善
@@ -16,8 +16,8 @@ android {
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 29
|
||||
|
||||
versionCode 81
|
||||
versionName "1.8.9"
|
||||
versionCode 83
|
||||
versionName "1.9.1"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
@@ -85,7 +85,7 @@ android {
|
||||
signingConfig signingConfigs.U807
|
||||
buildConfigField "String", "platform", '"U807"'
|
||||
manifestPlaceholders = [
|
||||
AMAP_KEY : "8200776fc8cad995184a9a3a17a552e4"
|
||||
AMAP_KEY: "8200776fc8cad995184a9a3a17a552e4"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ android {
|
||||
signingConfig signingConfigs.U807
|
||||
buildConfigField "String", "platform", '"U807"'
|
||||
manifestPlaceholders = [
|
||||
AMAP_KEY : "8200776fc8cad995184a9a3a17a552e4"
|
||||
AMAP_KEY: "8200776fc8cad995184a9a3a17a552e4"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ android {
|
||||
zipAlignEnabled true
|
||||
buildConfigField "String", "platform", '"tuixin"'
|
||||
manifestPlaceholders = [
|
||||
AMAP_KEY : "9c9fabf3934df224e927b2f9fbc51064"
|
||||
AMAP_KEY: "9c9fabf3934df224e927b2f9fbc51064"
|
||||
]
|
||||
signingConfig signingConfigs.tuixin
|
||||
applicationVariants.all { variant ->
|
||||
@@ -129,7 +129,7 @@ android {
|
||||
signingConfig signingConfigs.tuixin
|
||||
buildConfigField "String", "platform", '"tuixin"'
|
||||
manifestPlaceholders = [
|
||||
AMAP_KEY : "9c9fabf3934df224e927b2f9fbc51064"
|
||||
AMAP_KEY: "9c9fabf3934df224e927b2f9fbc51064"
|
||||
]
|
||||
// 将release版本的包名重命名,加上版本及日期
|
||||
applicationVariants.all { variant ->
|
||||
@@ -148,6 +148,7 @@ android {
|
||||
|
||||
dependencies {
|
||||
// implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||
compileOnly files('libs/framework.jar')
|
||||
implementation project(path: ':niceimageview')
|
||||
implementation project(path: ':FlycoTabLayoutZ_Lib')
|
||||
@@ -232,6 +233,8 @@ dependencies {
|
||||
implementation 'com.github.getActivity:XXPermissions:18.63'
|
||||
// 吐司框架:https://github.com/getActivity/Toaster
|
||||
implementation 'com.github.getActivity:Toaster:12.6'
|
||||
//图片选择
|
||||
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
|
||||
}
|
||||
|
||||
preBuild {
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<!-- 允许读设备等信息,用于问题排查 -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<!-- <uses-permission android:name="android.permission.CALL_PHONE" />-->
|
||||
<!-- <uses-permission android:name="android.permission.CALL_PHONE" />-->
|
||||
|
||||
<!-- 【必须】 移动推送 TPNS SDK 所需权限 -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
@@ -154,10 +154,29 @@
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="userLandscape"
|
||||
android:theme="@style/DialogCloseOnTouchOutside" />
|
||||
<activity
|
||||
android:name=".activity.edit.EditActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="userLandscape"
|
||||
android:theme="@style/activity_styles_full" />
|
||||
<activity
|
||||
android:name=".activity.selectegrade.SelecteGradeActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="userLandscape"
|
||||
android:theme="@style/DialogCloseOnTouchOutside" />
|
||||
<activity
|
||||
android:name=".activity.permission.PermissionActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".activity.user.UserActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="userLandscape" />
|
||||
<activity
|
||||
android:name=".activity.homework.HomeworkActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="userLandscape" />
|
||||
|
||||
|
||||
<receiver
|
||||
android:name=".receiver.BootReceiver"
|
||||
|
||||
117
app/src/main/java/com/uiui/zyos/activity/edit/EditActivity.java
Normal file
@@ -0,0 +1,117 @@
|
||||
package com.uiui.zyos.activity.edit;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.text.InputFilter;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.base.mvvm.BaseMvvmActivity;
|
||||
import com.uiui.zyos.config.CommonConfig;
|
||||
import com.uiui.zyos.databinding.ActivityEditBinding;
|
||||
import com.uiui.zyos.manager.RemoteManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class EditActivity extends BaseMvvmActivity<EditViewModel, ActivityEditBinding> {
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private String mTypeName;
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_edit;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
Intent intent = getIntent();
|
||||
if (intent == null) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
mTypeName = intent.getStringExtra("type");
|
||||
if (TextUtils.isEmpty(mTypeName)) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
String data = intent.getStringExtra("data");
|
||||
if (!TextUtils.isEmpty(data) && !"未设置".equals(data)) {
|
||||
mViewDataBinding.editText.setText(data);
|
||||
}
|
||||
|
||||
int maxEms = intent.getIntExtra("maxLength", 16);
|
||||
mViewDataBinding.editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxEms)});
|
||||
|
||||
switch (mTypeName) {
|
||||
case "name":
|
||||
mViewDataBinding.tvTitle.setText("请输入昵称");
|
||||
break;
|
||||
case "school":
|
||||
mViewDataBinding.tvTitle.setText("请输入学校");
|
||||
break;
|
||||
case "sn_grade":
|
||||
mViewDataBinding.tvTitle.setText("请输入年级");
|
||||
break;
|
||||
case "class_name":
|
||||
mViewDataBinding.tvTitle.setText("请输入班级");
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
mViewModel.mSuccessfulData.observe(this, new Observer<Boolean>() {
|
||||
@Override
|
||||
public void onChanged(Boolean aBoolean) {
|
||||
if (aBoolean) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void confirm(View view) {
|
||||
if (TextUtils.isEmpty(mViewDataBinding.editText.getText())) {
|
||||
Toaster.show("不能为空");
|
||||
return;
|
||||
}
|
||||
if (ActivationUtil.isActivation(EditActivity.this)) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("sn", RemoteManager.getInstance().getSerial());
|
||||
params.put(mTypeName, mViewDataBinding.editText.getText().toString());
|
||||
mViewModel.updateInfo(params);
|
||||
} else {
|
||||
mMMKV.encode("local_" + mTypeName, mViewDataBinding.editText.getText().toString());
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public void exit(View view) {
|
||||
finish();
|
||||
}
|
||||
|
||||
public void empty(View view) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.uiui.zyos.activity.edit;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.uiui.zyos.base.mvvm.BaseViewModel;
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.databinding.ActivityEditBinding;
|
||||
import com.uiui.zyos.network.NetInterfaceManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class EditViewModel extends BaseViewModel<ActivityEditBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityEditBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params) {
|
||||
if (!ActivationUtil.isActivation(getCtx())) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getUpdateInfoObservable(params)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("updateInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
||||
Log.e("updateInfo", "onNext: " + baseResponse);
|
||||
if (baseResponse.code == 200) {
|
||||
mSuccessfulData.setValue(true);
|
||||
} else {
|
||||
Toaster.show(baseResponse.msg);
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("updateInfo", "onError: " + e.getMessage());
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("updateInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
package com.uiui.zyos.activity.homework;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.flyco.tablayout.SlidingTabLayout;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.base.mvvm.BaseMvvmActivity;
|
||||
import com.uiui.zyos.bean.HomeworkBean;
|
||||
import com.uiui.zyos.databinding.ActivityHomeworkBinding;
|
||||
import com.uiui.zyos.fragment.content.ContentFragment;
|
||||
import com.uiui.zyos.view.ScaleCircleNavigator;
|
||||
import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter;
|
||||
|
||||
import net.lucode.hackware.magicindicator.ViewPagerHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class HomeworkActivity extends BaseMvvmActivity<HomeworkViewModel, ActivityHomeworkBinding> {
|
||||
private static final String TAG = "HomeworkActivity";
|
||||
|
||||
private String[] title = new String[]{"语文", "数学", "英语", "物理", "化学", "地理", "生物", "政治", "历史"};
|
||||
|
||||
private int defaultCurrent = 0;
|
||||
|
||||
private FragmentManager mFragmentManager;
|
||||
private BaseFragmentPagerAdapter mBaseFragmentPagerAdapter;
|
||||
private List<Fragment> mFragments;
|
||||
|
||||
private ScaleCircleNavigator scaleCircleNavigator;
|
||||
|
||||
private ContentFragment mChineseFragment;
|
||||
private ContentFragment mMathFragment;
|
||||
private ContentFragment mEnglishFragment;
|
||||
private ContentFragment mPhysicsFragment;
|
||||
private ContentFragment mChemicalFragment;
|
||||
private ContentFragment mGeographyFragment;
|
||||
private ContentFragment mBiologyFragment;
|
||||
private ContentFragment mPoliticsFragment;
|
||||
private ContentFragment mHistoryFragment;
|
||||
|
||||
/**
|
||||
* 设置布局
|
||||
*/
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.activity_homework;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化视图
|
||||
*/
|
||||
@Override
|
||||
public void initView() {
|
||||
mFragmentManager = getSupportFragmentManager();
|
||||
mFragments = new ArrayList<>();
|
||||
|
||||
mChineseFragment = ContentFragment.newInstance("语文");
|
||||
if (!mChineseFragment.isAdded()) mFragments.add(mChineseFragment);
|
||||
mMathFragment = ContentFragment.newInstance("数学");
|
||||
if (!mMathFragment.isAdded()) mFragments.add(mMathFragment);
|
||||
mEnglishFragment = ContentFragment.newInstance("英语");
|
||||
if (!mEnglishFragment.isAdded()) mFragments.add(mEnglishFragment);
|
||||
mPhysicsFragment = ContentFragment.newInstance("物理");
|
||||
if (!mPhysicsFragment.isAdded()) mFragments.add(mPhysicsFragment);
|
||||
mChemicalFragment = ContentFragment.newInstance("化学");
|
||||
if (!mChemicalFragment.isAdded()) mFragments.add(mChemicalFragment);
|
||||
mGeographyFragment = ContentFragment.newInstance("地理");
|
||||
if (!mGeographyFragment.isAdded()) mFragments.add(mGeographyFragment);
|
||||
mBiologyFragment = ContentFragment.newInstance("生物");
|
||||
if (!mBiologyFragment.isAdded()) mFragments.add(mBiologyFragment);
|
||||
mPoliticsFragment = ContentFragment.newInstance("政治");
|
||||
if (!mPoliticsFragment.isAdded()) mFragments.add(mPoliticsFragment);
|
||||
mHistoryFragment = ContentFragment.newInstance("历史");
|
||||
if (!mHistoryFragment.isAdded()) mFragments.add(mHistoryFragment);
|
||||
|
||||
mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments);
|
||||
mViewDataBinding.viewPager.setAdapter(mBaseFragmentPagerAdapter);
|
||||
mViewDataBinding.viewPager.setOffscreenPageLimit(9);
|
||||
mViewDataBinding.viewPager.setCurrentItem(defaultCurrent);
|
||||
|
||||
mViewDataBinding.mainSlidingTabLayout.setViewPager(mViewDataBinding.viewPager, title);
|
||||
|
||||
scaleCircleNavigator = new ScaleCircleNavigator(this);
|
||||
scaleCircleNavigator.setCircleCount(mFragments.size());
|
||||
scaleCircleNavigator.setNormalCircleColor(Color.DKGRAY);
|
||||
scaleCircleNavigator.setSelectedCircleColor(Color.LTGRAY);
|
||||
scaleCircleNavigator.setCircleClickListener(new ScaleCircleNavigator.OnCircleClickListener() {
|
||||
@Override
|
||||
public void onClick(int index) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
mViewDataBinding.magicIndicator.setNavigator(scaleCircleNavigator);
|
||||
ViewPagerHelper.bind(mViewDataBinding.magicIndicator, mViewDataBinding.viewPager);
|
||||
|
||||
mViewDataBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
mViewDataBinding.magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
mViewDataBinding.magicIndicator.onPageSelected(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
mViewDataBinding.magicIndicator.onPageScrollStateChanged(state);
|
||||
}
|
||||
});
|
||||
|
||||
if (mFragments.size() > 1) {
|
||||
mViewDataBinding.viewPager.setCurrentItem(defaultCurrent);
|
||||
mViewDataBinding.magicIndicator.onPageSelected(defaultCurrent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
@Override
|
||||
public void initData() {
|
||||
mViewModel.mHomeworkBeanListData.observe(this, new Observer<List<HomeworkBean>>() {
|
||||
@Override
|
||||
public void onChanged(List<HomeworkBean> homeWorkList) {
|
||||
if (homeWorkList != null && homeWorkList.size() != 0) {
|
||||
List<HomeworkBean> chineseHomeWorkList = homeWorkList.stream().filter(homeWork -> "语文".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mChineseFragment.setHomeWorkList(chineseHomeWorkList);
|
||||
List<HomeworkBean> mathHomeWorkList = homeWorkList.stream().filter(homeWork -> "数学".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mMathFragment.setHomeWorkList(mathHomeWorkList);
|
||||
List<HomeworkBean> englishHomeWorkList = homeWorkList.stream().filter(homeWork -> "英语".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mEnglishFragment.setHomeWorkList(englishHomeWorkList);
|
||||
List<HomeworkBean> physicsHomeWorkList = homeWorkList.stream().filter(homeWork -> "物理".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mPhysicsFragment.setHomeWorkList(physicsHomeWorkList);
|
||||
List<HomeworkBean> chemicalHomeWorkList = homeWorkList.stream().filter(homeWork -> "化学".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mChemicalFragment.setHomeWorkList(chemicalHomeWorkList);
|
||||
List<HomeworkBean> geographyHomeWorkList = homeWorkList.stream().filter(homeWork -> "地理".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mGeographyFragment.setHomeWorkList(geographyHomeWorkList);
|
||||
List<HomeworkBean> biologyHomeWorkList = homeWorkList.stream().filter(homeWork -> "生物".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mBiologyFragment.setHomeWorkList(biologyHomeWorkList);
|
||||
List<HomeworkBean> politicsHomeWorkList = homeWorkList.stream().filter(homeWork -> "政治".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mPoliticsFragment.setHomeWorkList(politicsHomeWorkList);
|
||||
List<HomeworkBean> historyHomeWorkList = homeWorkList.stream().filter(homeWork -> "历史".equals(homeWork.getSubject().getName())).collect(Collectors.toList());
|
||||
mHistoryFragment.setHomeWorkList(historyHomeWorkList);
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.getHomeWork();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
Log.e(TAG, "onResume: ");
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void exit(View v) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.uiui.zyos.activity.homework;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.uiui.zyos.base.mvvm.BaseViewModel;
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.bean.HomeworkBean;
|
||||
import com.uiui.zyos.databinding.ActivityHomeworkBinding;
|
||||
import com.uiui.zyos.network.NetInterfaceManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class HomeworkViewModel extends BaseViewModel<ActivityHomeworkBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityHomeworkBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<List<HomeworkBean>> mHomeworkBeanListData = new MutableLiveData<>();
|
||||
|
||||
public void getHomeWork(){
|
||||
boolean activation = ActivationUtil.isActivation(getCtx());
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getHomeworkObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<List<HomeworkBean>>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getHomework", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<List<HomeworkBean>> listBaseResponse) {
|
||||
Log.e("getHomework", "onNext: " + listBaseResponse);
|
||||
List<HomeworkBean> homeworkBeans = listBaseResponse.data;
|
||||
mHomeworkBeanListData.setValue(homeworkBeans);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getHomework", "onError: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getHomework", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -21,11 +21,8 @@ import android.view.animation.TranslateAnimation;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.download.DownloadEntity;
|
||||
import com.hjq.permissions.OnPermissionCallback;
|
||||
import com.hjq.permissions.Permission;
|
||||
import com.hjq.permissions.XXPermissions;
|
||||
@@ -35,7 +32,6 @@ import com.uiui.zyos.BuildConfig;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.activity.ExitActivity;
|
||||
import com.uiui.zyos.activity.permission.PermissionActivity;
|
||||
import com.uiui.zyos.activity.update.UpdateActivity;
|
||||
import com.uiui.zyos.base.mvvm.BaseMvvmActivity;
|
||||
import com.uiui.zyos.bean.AppUpdateInfo;
|
||||
import com.uiui.zyos.config.CommonConfig;
|
||||
@@ -56,8 +52,6 @@ import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.arialyy.aria.core.inf.IEntity.STATE_RUNNING;
|
||||
|
||||
public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBinding> implements RemoteManager.ConnectedListener {
|
||||
private static final String TAG = "MainActivity";
|
||||
|
||||
@@ -100,6 +94,9 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
||||
public void initView() {
|
||||
Log.e(TAG, "initView: ");
|
||||
|
||||
mViewDataBinding.ivIcon2.setImageDrawable(ApkUtils.getAppDrawable(MainActivity.this, "com.uiui.zy", R.drawable.com_uiui_sn));
|
||||
mViewDataBinding.tvAppname2.setText(ApkUtils.getAppName(MainActivity.this, "com.uiui.zy", "设备守护"));
|
||||
|
||||
// OpenApkUtils.getInstance().openWordLecture();
|
||||
// OpenApkUtils.getInstance().openExamSprint();
|
||||
// OpenApkUtils.getInstance().openApp(JxwPackageConfig.JXW_USAGEDATE_NAME, JxwPackageConfig.JXW_USAGEDATE_CLASS);
|
||||
@@ -216,25 +213,25 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
||||
public void initData() {
|
||||
registmNewAppReceiver();
|
||||
registmUpdateAddressReceiver();
|
||||
mViewModel.getAppUpdateInfoData().observe(this, new Observer<AppUpdateInfo>() {
|
||||
@Override
|
||||
public void onChanged(AppUpdateInfo appUpdateInfo) {
|
||||
mAppUpdateInfo = appUpdateInfo;
|
||||
if (appUpdateInfo == null) {
|
||||
// Toaster.show("已是最新版本");
|
||||
} else {
|
||||
if (ApkUtils.isUpdate(MainActivity.this, appUpdateInfo)) {
|
||||
Intent intent = new Intent(MainActivity.this, UpdateActivity.class);
|
||||
intent.putExtra("appUpdateInfo", appUpdateInfo);
|
||||
startActivity(intent);
|
||||
Toaster.show("有新的版本需要更新");
|
||||
} else {
|
||||
// Toaster.show("已是最新版本");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewModel.checkUpdate();
|
||||
// mViewModel.getAppUpdateInfoData().observe(this, new Observer<AppUpdateInfo>() {
|
||||
// @Override
|
||||
// public void onChanged(AppUpdateInfo appUpdateInfo) {
|
||||
// mAppUpdateInfo = appUpdateInfo;
|
||||
// if (appUpdateInfo == null) {
|
||||
//// Toaster.show("已是最新版本");
|
||||
// } else {
|
||||
// if (ApkUtils.isUpdate(MainActivity.this, appUpdateInfo)) {
|
||||
// Intent intent = new Intent(MainActivity.this, UpdateActivity.class);
|
||||
// intent.putExtra("appUpdateInfo", appUpdateInfo);
|
||||
// startActivity(intent);
|
||||
// Toaster.show("有新的版本需要更新");
|
||||
// } else {
|
||||
//// Toaster.show("已是最新版本");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// mViewModel.checkUpdate();
|
||||
}
|
||||
|
||||
private void hideSystemUI() {
|
||||
@@ -337,7 +334,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
||||
showPolicyDialog();
|
||||
} else {
|
||||
if (checkPermission()) {
|
||||
Log.e(TAG, "onResume: all permission granted" );
|
||||
Log.e(TAG, "onResume: all permission granted");
|
||||
} else {
|
||||
startActivity(new Intent(MainActivity.this, PermissionActivity.class));
|
||||
}
|
||||
@@ -474,7 +471,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
|
||||
return;
|
||||
}
|
||||
Log.e(TAG, "onGranted: 获取权限成功");
|
||||
mViewModel.checkUpdate();
|
||||
// mViewModel.checkUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
package com.uiui.zyos.activity.selectegrade;
|
||||
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.base.mvvm.BaseMvvmActivity;
|
||||
import com.uiui.zyos.config.CommonConfig;
|
||||
import com.uiui.zyos.databinding.ActivitySelecteGradeBinding;
|
||||
import com.uiui.zyos.manager.RemoteManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class SelecteGradeActivity extends BaseMvvmActivity<SelecteGradeViewModel, ActivitySelecteGradeBinding> {
|
||||
private static final String TAG = "SelecteGradeActivity";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private String grade = "一年级";
|
||||
|
||||
|
||||
private void showGroup1() {
|
||||
mViewDataBinding.radioGroup2.clearCheck();
|
||||
mViewDataBinding.radioGroup3.clearCheck();
|
||||
mViewDataBinding.radioGroup4.clearCheck();
|
||||
}
|
||||
|
||||
private void showGroup2() {
|
||||
mViewDataBinding.radioGroup1.clearCheck();
|
||||
mViewDataBinding.radioGroup3.clearCheck();
|
||||
mViewDataBinding.radioGroup4.clearCheck();
|
||||
}
|
||||
|
||||
private void showGroup3() {
|
||||
mViewDataBinding.radioGroup1.clearCheck();
|
||||
mViewDataBinding.radioGroup2.clearCheck();
|
||||
mViewDataBinding.radioGroup4.clearCheck();
|
||||
}
|
||||
|
||||
private void showGroup4() {
|
||||
mViewDataBinding.radioGroup1.clearCheck();
|
||||
mViewDataBinding.radioGroup2.clearCheck();
|
||||
mViewDataBinding.radioGroup3.clearCheck();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.activity_selecte_grade;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
mViewDataBinding.radioButton1.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setPrimary(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton2.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setPrimary(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton3.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setPrimary(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton4.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setPrimary2(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton5.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setPrimary2(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton6.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setPrimary2(compoundButton);
|
||||
});
|
||||
|
||||
mViewDataBinding.radioButton7.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setJuniorHighSchool(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton8.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setJuniorHighSchool(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton9.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setJuniorHighSchool(compoundButton);
|
||||
});
|
||||
|
||||
mViewDataBinding.radioButton10.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setHighSchool(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton11.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setHighSchool(compoundButton);
|
||||
});
|
||||
mViewDataBinding.radioButton12.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
if (b) setHighSchool(compoundButton);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
mViewModel.mSuccessfulData.observe(this, new Observer<Boolean>() {
|
||||
@Override
|
||||
public void onChanged(Boolean aBoolean) {
|
||||
if (aBoolean) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setPrimary(View view) {
|
||||
showGroup1();
|
||||
grade = ((TextView) view).getText().toString();
|
||||
Log.e(TAG, "setPrimary: " + grade);
|
||||
}
|
||||
|
||||
public void setPrimary2(View view) {
|
||||
showGroup2();
|
||||
grade = ((TextView) view).getText().toString();
|
||||
Log.e(TAG, "setPrimary: " + grade);
|
||||
}
|
||||
|
||||
public void setJuniorHighSchool(View view) {
|
||||
showGroup3();
|
||||
grade = ((TextView) view).getText().toString();
|
||||
Log.e(TAG, "setJuniorHighSchool: " + grade);
|
||||
}
|
||||
|
||||
public void setHighSchool(View view) {
|
||||
showGroup4();
|
||||
grade = ((TextView) view).getText().toString();
|
||||
Log.e(TAG, "setHighSchool: " + grade);
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void exit(View view) {
|
||||
finish();
|
||||
}
|
||||
|
||||
public void empty(View view) {
|
||||
|
||||
}
|
||||
|
||||
public void submit(View view) {
|
||||
if (ActivationUtil.isActivation(SelecteGradeActivity.this)) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("sn", RemoteManager.getInstance().getSerial());
|
||||
params.put("sn_grade", grade);
|
||||
mViewModel.updateInfo(params);
|
||||
} else {
|
||||
mMMKV.encode("local_" + "sn_grade", grade);
|
||||
}
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.uiui.zyos.activity.selectegrade;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.uiui.zyos.base.mvvm.BaseViewModel;
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.databinding.ActivitySelecteGradeBinding;
|
||||
import com.uiui.zyos.network.NetInterfaceManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class SelecteGradeViewModel extends BaseViewModel<ActivitySelecteGradeBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivitySelecteGradeBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params) {
|
||||
if (!ActivationUtil.isActivation(getCtx())) {
|
||||
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getUpdateInfoObservable(params)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("updateInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
||||
Log.e("updateInfo", "onNext: " + baseResponse);
|
||||
if (baseResponse.code == 200) {
|
||||
mSuccessfulData.setValue(true);
|
||||
} else {
|
||||
Toaster.show(baseResponse.msg);
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("updateInfo", "onError: " + e.getMessage());
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("updateInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
278
app/src/main/java/com/uiui/zyos/activity/user/UserActivity.java
Normal file
@@ -0,0 +1,278 @@
|
||||
package com.uiui.zyos.activity.user;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.CompoundButton;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.luck.picture.lib.basic.PictureSelector;
|
||||
import com.luck.picture.lib.config.SelectMimeType;
|
||||
import com.luck.picture.lib.entity.LocalMedia;
|
||||
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.uiui.zyos.BuildConfig;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.activity.edit.EditActivity;
|
||||
import com.uiui.zyos.activity.update.UpdateActivity;
|
||||
import com.uiui.zyos.base.mvvm.BaseMvvmActivity;
|
||||
import com.uiui.zyos.bean.AppUpdateInfo;
|
||||
import com.uiui.zyos.bean.UserAvatarInfo;
|
||||
import com.uiui.zyos.config.CommonConfig;
|
||||
import com.uiui.zyos.custom.GlideEngine;
|
||||
import com.uiui.zyos.databinding.ActivityUserBinding;
|
||||
import com.uiui.zyos.fragment.usercenter.device.DeviceFragment;
|
||||
import com.uiui.zyos.fragment.usercenter.info.InfoFragment;
|
||||
import com.uiui.zyos.fragment.usercenter.parents.ParentsFragment;
|
||||
import com.uiui.zyos.manager.RemoteManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
import com.uiui.zyos.utils.ApkUtils;
|
||||
import com.uiui.zyos.utils.FileUtil;
|
||||
import com.uiui.zyos.utils.GlideLoadUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
public class UserActivity extends BaseMvvmActivity<UserViewModel, ActivityUserBinding> {
|
||||
private static final String TAG = "UserActivity";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private FragmentManager mFragmentManager;
|
||||
private Fragment[] mFragments;
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_user;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mFragments = new Fragment[3];
|
||||
mFragmentManager = getSupportFragmentManager();
|
||||
|
||||
mViewDataBinding.tvVersion.setText("版本:V" + BuildConfig.VERSION_NAME);
|
||||
mViewDataBinding.rbCenter.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
Log.d(TAG, "onCheckedChanged: rbCenter Checked = " + b);
|
||||
if (b) {
|
||||
switchContent(0);
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewDataBinding.rbParents.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
Log.d(TAG, "onCheckedChanged: rbParents Checked = " + b);
|
||||
if (b) {
|
||||
switchContent(1);
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewDataBinding.rbDevice.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
Log.d(TAG, "onCheckedChanged: rbDevice Checked = " + b);
|
||||
if (b) {
|
||||
switchContent(2);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mViewDataBinding.rbCenter.setChecked(true);
|
||||
switchContent(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
mViewModel.mUserAvatarInfoData.observe(this, new Observer<UserAvatarInfo>() {
|
||||
@Override
|
||||
public void onChanged(UserAvatarInfo userAvatarInfo) {
|
||||
mViewDataBinding.setUserAvatarInfo(userAvatarInfo);
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.getAppUpdateInfoData().observe(this, new Observer<AppUpdateInfo>() {
|
||||
@Override
|
||||
public void onChanged(AppUpdateInfo appUpdateInfo) {
|
||||
if (appUpdateInfo == null) {
|
||||
Toaster.show("已是最新版本");
|
||||
} else {
|
||||
if (ApkUtils.isUpdate(UserActivity.this, appUpdateInfo)) {
|
||||
Intent intent = new Intent(UserActivity.this, UpdateActivity.class);
|
||||
intent.putExtra("appUpdateInfo", appUpdateInfo);
|
||||
startActivity(intent);
|
||||
Toaster.show("有新的版本需要更新");
|
||||
} else {
|
||||
Toaster.show("已是最新版本");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewModel.mSuccessfulData.observe(this, new Observer<Boolean>() {
|
||||
@Override
|
||||
public void onChanged(Boolean aBoolean) {
|
||||
if (aBoolean) {
|
||||
Toaster.show("更新成功");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
if (ActivationUtil.isActivation(this)) {
|
||||
mViewModel.getUserAvatarInfo();
|
||||
} else {
|
||||
setLocalData();
|
||||
}
|
||||
}
|
||||
|
||||
private void setLocalData() {
|
||||
String avatarFilePath = mMMKV.decodeString("local_" + "avatar");
|
||||
GlideLoadUtils.getInstance().glideLoad(UserActivity.this, avatarFilePath, mViewDataBinding.nvAvatar, R.drawable.default_avatar);
|
||||
String nickName = mMMKV.decodeString("local_" + "name", "");
|
||||
if (TextUtils.isEmpty(nickName)) {
|
||||
mViewDataBinding.tvNickName.setText(getString(R.string.default_nickname));
|
||||
} else {
|
||||
mViewDataBinding.tvNickName.setText(nickName);
|
||||
}
|
||||
}
|
||||
|
||||
// 切换显示内容
|
||||
public void switchContent(int index) {
|
||||
FragmentTransaction transaction = mFragmentManager.beginTransaction();
|
||||
hideFragments(transaction);
|
||||
try {
|
||||
switch (index) {
|
||||
case 0:
|
||||
if (mFragments[0] == null) {
|
||||
mFragments[0] = new InfoFragment();
|
||||
transaction.add(R.id.content, mFragments[0], 0 + "");
|
||||
} else {
|
||||
transaction.show(mFragments[0]);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (mFragments[1] == null) {
|
||||
mFragments[1] = new ParentsFragment();
|
||||
transaction.add(R.id.content, mFragments[1], 1 + "");
|
||||
} else {
|
||||
transaction.show(mFragments[1]);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (mFragments[2] == null) {
|
||||
mFragments[2] = new DeviceFragment();
|
||||
transaction.add(R.id.content, mFragments[2], 2 + "");
|
||||
} else {
|
||||
transaction.show(mFragments[2]);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
transaction.commit();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 将所有的Fragment都置为隐藏状态。
|
||||
private void hideFragments(FragmentTransaction transaction) {
|
||||
if (mFragments != null) {
|
||||
for (Fragment fragment : mFragments) {
|
||||
if (fragment != null) {
|
||||
transaction.hide(fragment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void selectPicture() {
|
||||
PictureSelector.create(this)
|
||||
.openGallery(SelectMimeType.ofImage())
|
||||
.setSelectionMode(1)
|
||||
.setImageEngine(GlideEngine.createGlideEngine())
|
||||
.forResult(new OnResultCallbackListener<LocalMedia>() {
|
||||
@Override
|
||||
public void onResult(ArrayList<LocalMedia> result) {
|
||||
String avatarFilePath = result.get(0).getPath();
|
||||
Log.e("selectPicture", "onResult: " + avatarFilePath);
|
||||
GlideLoadUtils.getInstance().glideLoad(UserActivity.this, avatarFilePath, mViewDataBinding.nvAvatar, R.drawable.default_avatar);
|
||||
|
||||
if (ActivationUtil.isActivation(UserActivity.this)) {
|
||||
File avatarFile;
|
||||
if (TextUtils.isEmpty(avatarFilePath)) {
|
||||
avatarFile = FileUtil.drawableToFile(UserActivity.this, R.drawable.default_avatar, "avatar");
|
||||
} else {
|
||||
// Uri uri = Uri.parse(avatarFilePath);
|
||||
// avatarFile = FileUtil.uriToFile(uri, UserActivity.this);
|
||||
avatarFile = new File(avatarFilePath);
|
||||
}
|
||||
MediaType mediaType = MediaType.Companion.parse("image/png");
|
||||
RequestBody requestBody = RequestBody.Companion.create(avatarFile, mediaType);
|
||||
MultipartBody.Part body = MultipartBody.Part.createFormData("avatar", avatarFile.getName(), requestBody);
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("sn", RemoteManager.getInstance().getSerial());
|
||||
mViewModel.updateInfo(params, body);
|
||||
} else {
|
||||
mMMKV.encode("local_" + "avatar", avatarFilePath);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel() {
|
||||
Log.e("selectPicture", "onCancel: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void exit(View view) {
|
||||
finish();
|
||||
}
|
||||
|
||||
public void checkUpdate(View view) {
|
||||
mViewModel.checkUpdate();
|
||||
}
|
||||
|
||||
public void edit(View view) {
|
||||
Intent intent = new Intent(UserActivity.this, EditActivity.class);
|
||||
intent.putExtra("type", "name");
|
||||
intent.putExtra("data", mViewDataBinding.tvNickName.getText());
|
||||
intent.putExtra("maxLength", 8);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void selectPic(View v) {
|
||||
selectPicture();
|
||||
}
|
||||
}
|
||||
}
|
||||
148
app/src/main/java/com/uiui/zyos/activity/user/UserViewModel.java
Normal file
@@ -0,0 +1,148 @@
|
||||
package com.uiui.zyos.activity.user;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.uiui.zyos.BuildConfig;
|
||||
import com.uiui.zyos.base.mvvm.BaseViewModel;
|
||||
import com.uiui.zyos.bean.AppUpdateInfo;
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.bean.UserAvatarInfo;
|
||||
import com.uiui.zyos.databinding.ActivityUserBinding;
|
||||
import com.uiui.zyos.network.NetInterfaceManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
import okhttp3.MultipartBody;
|
||||
|
||||
public class UserViewModel extends BaseViewModel<ActivityUserBinding, ActivityEvent> {
|
||||
private static final String TAG = "UserViewModel";
|
||||
|
||||
|
||||
@Override
|
||||
public ActivityUserBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<UserAvatarInfo> mUserAvatarInfoData = new MutableLiveData<>();
|
||||
|
||||
public void getUserAvatarInfo() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getUserAvatarInfoControl()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<UserAvatarInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getUserAvatarInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<UserAvatarInfo> userAvatarInfoBaseResponse) {
|
||||
Log.e("getUserAvatarInfo", "onNext: " + userAvatarInfoBaseResponse);
|
||||
mUserAvatarInfoData.setValue(userAvatarInfoBaseResponse.data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getUserAvatarInfo", "onError: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getUserAvatarInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private MutableLiveData<AppUpdateInfo> mAppUpdateInfoData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<AppUpdateInfo> getAppUpdateInfoData() {
|
||||
return mAppUpdateInfoData;
|
||||
}
|
||||
|
||||
public void checkUpdate() {
|
||||
NetInterfaceManager.getInstance().getCheckUpdateObservable(BuildConfig.APPLICATION_ID)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<AppUpdateInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("checkUpdate", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<AppUpdateInfo> appUpdateInfoBaseResponse) {
|
||||
Log.e("checkUpdate", "onNext: " + appUpdateInfoBaseResponse);
|
||||
if (appUpdateInfoBaseResponse.code == 200) {
|
||||
AppUpdateInfo appUpdateInfo = appUpdateInfoBaseResponse.data;
|
||||
mAppUpdateInfoData.setValue(appUpdateInfo);
|
||||
} else {
|
||||
mAppUpdateInfoData.setValue(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("checkUpdate", "onError: ");
|
||||
Toaster.show("网络连接失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("checkUpdate", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params, MultipartBody.Part multipartBody) {
|
||||
if (!ActivationUtil.isActivation(getCtx())) {
|
||||
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getUpdateInfoObservable(params, multipartBody)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("updateInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
||||
Log.e("updateInfo", "onNext: " + baseResponse);
|
||||
if (baseResponse.code == 200) {
|
||||
mSuccessfulData.setValue(true);
|
||||
} else {
|
||||
Toaster.show(baseResponse.msg);
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("updateInfo", "onError: " + e.getMessage());
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("updateInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
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<HomeworkAdapter.Holder> {
|
||||
|
||||
private Context mContext;
|
||||
private List<String> mHomeworkList;
|
||||
|
||||
public void setHomeworkList(List<String> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.uiui.zyos.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -11,14 +13,22 @@ import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.arialyy.annotations.Download;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.task.DownloadTask;
|
||||
import com.shehuan.niv.NiceImageView;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.bean.HomeworkBean;
|
||||
import com.uiui.zyos.utils.FileUtil;
|
||||
import com.uiui.zyos.utils.GlideLoadUtils;
|
||||
import com.uiui.zyos.utils.OpenFileUtil;
|
||||
import com.uiui.zyos.utils.TimeUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class NewHomeworkAdapter extends RecyclerView.Adapter<NewHomeworkAdapter.Holder> {
|
||||
private static final String TAG = "NewHomeworkAdapter";
|
||||
|
||||
private Context mContext;
|
||||
private List<HomeworkBean> mHomeworkList;
|
||||
@@ -37,11 +47,48 @@ public class NewHomeworkAdapter extends RecyclerView.Adapter<NewHomeworkAdapter.
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull Holder holder, int position) {
|
||||
Aria.download(this).register();
|
||||
|
||||
HomeworkBean homeworkBean = mHomeworkList.get(position);
|
||||
GlideLoadUtils.getInstance().glideLoad(mContext, homeworkBean.getFile_url(), holder.imageView, R.drawable.item_icon_homework);
|
||||
holder.tv_content.setText(homeworkBean.getTitle());
|
||||
holder.tv_type.setText(homeworkBean.getContent());
|
||||
holder.tv_time.setText(homeworkBean.getCreated_at());
|
||||
GlideLoadUtils.getInstance().glideLoad(mContext, homeworkBean.getFile_url(), holder.iv_cover, R.drawable.icon_homework_sample);
|
||||
holder.tv_title.setText(homeworkBean.getTitle());
|
||||
holder.tv_content.setText(homeworkBean.getContent());
|
||||
switch (homeworkBean.getFile_type()) {
|
||||
case 2:
|
||||
holder.tv_type.setText("图片");
|
||||
break;
|
||||
case 3:
|
||||
holder.tv_type.setText("视频");
|
||||
break;
|
||||
case 4:
|
||||
holder.tv_type.setText("文档");
|
||||
break;
|
||||
default:
|
||||
holder.tv_type.setText("文字");
|
||||
}
|
||||
holder.tv_time.setText(TimeUtils.getHomeworkTime(homeworkBean.getCreated_at()));
|
||||
|
||||
String mFileUrl = homeworkBean.getFile_url();
|
||||
File file = new File(FileUtil.getDownLoadPath(mContext) + FileUtil.getFileNamefromURL(mFileUrl));
|
||||
if (file.exists()) {
|
||||
holder.iv_download.setVisibility(View.GONE);
|
||||
holder.root.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenFileUtil.openFile(mContext, file);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
holder.iv_download.setVisibility(View.VISIBLE);
|
||||
holder.iv_download.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
FileUtil.ariaDownloadTestPaper(mContext, mFileUrl, homeworkBean);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -51,16 +98,27 @@ public class NewHomeworkAdapter extends RecyclerView.Adapter<NewHomeworkAdapter.
|
||||
|
||||
class Holder extends RecyclerView.ViewHolder {
|
||||
ConstraintLayout root;
|
||||
NiceImageView imageView;
|
||||
TextView tv_content, tv_type, tv_time;
|
||||
NiceImageView iv_cover;
|
||||
ImageView iv_download;
|
||||
TextView tv_title, tv_content, tv_type, tv_time;
|
||||
|
||||
public Holder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
root = itemView.findViewById(R.id.root);
|
||||
imageView = itemView.findViewById(R.id.imageView);
|
||||
iv_cover = itemView.findViewById(R.id.iv_cover);
|
||||
iv_download = itemView.findViewById(R.id.iv_download);
|
||||
tv_title = itemView.findViewById(R.id.tv_title);
|
||||
tv_content = itemView.findViewById(R.id.tv_content);
|
||||
tv_type = itemView.findViewById(R.id.tv_type);
|
||||
tv_time = itemView.findViewById(R.id.tv_time);
|
||||
}
|
||||
}
|
||||
|
||||
@Download.onTaskComplete
|
||||
void taskComplete(DownloadTask task) {
|
||||
//在这里处理任务完成的状态
|
||||
Log.e(TAG, "taskComplete: " + task.getFilePath());
|
||||
Log.e(TAG, "taskComplete: " + task.getDownloadEntity().getUrl());
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
17
app/src/main/java/com/uiui/zyos/bean/PhraseContent.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package com.uiui.zyos.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class PhraseContent implements Serializable {
|
||||
private static final long serialVersionUID = -3136093792143273374L;
|
||||
|
||||
String content;
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
}
|
||||
@@ -10,27 +10,17 @@ import java.io.Serializable;
|
||||
public class SnInfo implements Serializable {
|
||||
private static final long serialVersionUID = -5268233433601073239L;
|
||||
|
||||
int id;
|
||||
String sn_value;
|
||||
int is_log;
|
||||
int is_log_type;
|
||||
int sex;
|
||||
int age;
|
||||
String height;
|
||||
String weight;
|
||||
int sex;//1 男 2 女 0 默认
|
||||
String devices_version;
|
||||
String sn_name;
|
||||
String school;
|
||||
String is_lock;
|
||||
String is_reset;
|
||||
String grade;
|
||||
int admin_id;
|
||||
String mobile;
|
||||
String avatar;
|
||||
long binding_time;
|
||||
long study_time;
|
||||
String study_time_ranking;
|
||||
|
||||
String class_name;
|
||||
/*
|
||||
*3 商用——企业用户
|
||||
4 C端——老人用户
|
||||
@@ -41,14 +31,11 @@ public class SnInfo implements Serializable {
|
||||
*
|
||||
* */
|
||||
int type_id;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
String mobile;
|
||||
String avatar;
|
||||
long binding_time;
|
||||
long study_time;
|
||||
int study_time_ranking;
|
||||
|
||||
public String getSn_value() {
|
||||
return sn_value;
|
||||
@@ -82,30 +69,6 @@ public class SnInfo implements Serializable {
|
||||
this.sex = sex;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
public void setHeight(String height) {
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
public String getWeight() {
|
||||
return weight;
|
||||
}
|
||||
|
||||
public void setWeight(String weight) {
|
||||
this.weight = weight;
|
||||
}
|
||||
|
||||
public String getDevices_version() {
|
||||
return devices_version;
|
||||
}
|
||||
@@ -154,12 +117,20 @@ public class SnInfo implements Serializable {
|
||||
this.grade = grade;
|
||||
}
|
||||
|
||||
public int getAdmin_id() {
|
||||
return admin_id;
|
||||
public String getClass_name() {
|
||||
return class_name;
|
||||
}
|
||||
|
||||
public void setAdmin_id(int admin_id) {
|
||||
this.admin_id = admin_id;
|
||||
public void setClass_name(String class_name) {
|
||||
this.class_name = class_name;
|
||||
}
|
||||
|
||||
public int getType_id() {
|
||||
return type_id;
|
||||
}
|
||||
|
||||
public void setType_id(int type_id) {
|
||||
this.type_id = type_id;
|
||||
}
|
||||
|
||||
public String getMobile() {
|
||||
@@ -186,15 +157,7 @@ public class SnInfo implements Serializable {
|
||||
this.binding_time = binding_time;
|
||||
}
|
||||
|
||||
public int getType_id() {
|
||||
return type_id;
|
||||
}
|
||||
|
||||
public void setType_id(int type_id) {
|
||||
this.type_id = type_id;
|
||||
}
|
||||
|
||||
public Long getStudy_time() {
|
||||
public long getStudy_time() {
|
||||
return study_time;
|
||||
}
|
||||
|
||||
@@ -202,11 +165,11 @@ public class SnInfo implements Serializable {
|
||||
this.study_time = study_time;
|
||||
}
|
||||
|
||||
public String getStudy_time_ranking() {
|
||||
public int getStudy_time_ranking() {
|
||||
return study_time_ranking;
|
||||
}
|
||||
|
||||
public void setStudy_time_ranking(String study_time_ranking) {
|
||||
public void setStudy_time_ranking(int study_time_ranking) {
|
||||
this.study_time_ranking = study_time_ranking;
|
||||
}
|
||||
|
||||
|
||||
118
app/src/main/java/com/uiui/zyos/custom/GlideEngine.java
Normal file
@@ -0,0 +1,118 @@
|
||||
package com.uiui.zyos.custom;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||
import com.luck.picture.lib.engine.ImageEngine;
|
||||
import com.luck.picture.lib.utils.ActivityCompatHelper;
|
||||
import com.uiui.zyos.R;
|
||||
|
||||
/**
|
||||
* @author:luck
|
||||
* @date:2019-11-13 17:02
|
||||
* @describe:Glide加载引擎
|
||||
*/
|
||||
public class GlideEngine implements ImageEngine {
|
||||
|
||||
/**
|
||||
* 加载图片
|
||||
*
|
||||
* @param context 上下文
|
||||
* @param url 资源url
|
||||
* @param imageView 图片承载控件
|
||||
*/
|
||||
@Override
|
||||
public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
|
||||
if (!ActivityCompatHelper.assertValidRequest(context)) {
|
||||
return;
|
||||
}
|
||||
Glide.with(context)
|
||||
.load(url)
|
||||
.into(imageView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) {
|
||||
if (!ActivityCompatHelper.assertValidRequest(context)) {
|
||||
return;
|
||||
}
|
||||
Glide.with(context)
|
||||
.load(url)
|
||||
.override(maxWidth, maxHeight)
|
||||
.into(imageView);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载相册目录封面
|
||||
*
|
||||
* @param context 上下文
|
||||
* @param url 图片路径
|
||||
* @param imageView 承载图片ImageView
|
||||
*/
|
||||
@Override
|
||||
public void loadAlbumCover(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
|
||||
if (!ActivityCompatHelper.assertValidRequest(context)) {
|
||||
return;
|
||||
}
|
||||
Glide.with(context)
|
||||
.asBitmap()
|
||||
.load(url)
|
||||
.override(180, 180)
|
||||
.sizeMultiplier(0.5f)
|
||||
.transform(new CenterCrop(), new RoundedCorners(8))
|
||||
.placeholder(R.drawable.ps_image_placeholder)
|
||||
.into(imageView);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 加载图片列表图片
|
||||
*
|
||||
* @param context 上下文
|
||||
* @param url 图片路径
|
||||
* @param imageView 承载图片ImageView
|
||||
*/
|
||||
@Override
|
||||
public void loadGridImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
|
||||
if (!ActivityCompatHelper.assertValidRequest(context)) {
|
||||
return;
|
||||
}
|
||||
Glide.with(context)
|
||||
.load(url)
|
||||
.override(200, 200)
|
||||
.centerCrop()
|
||||
.placeholder(R.drawable.ps_image_placeholder)
|
||||
.into(imageView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pauseRequests(Context context) {
|
||||
Glide.with(context).pauseRequests();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resumeRequests(Context context) {
|
||||
Glide.with(context).resumeRequests();
|
||||
}
|
||||
|
||||
private GlideEngine() {
|
||||
}
|
||||
|
||||
private static GlideEngine instance;
|
||||
|
||||
public static GlideEngine createGlideEngine() {
|
||||
if (null == instance) {
|
||||
synchronized (GlideEngine.class) {
|
||||
if (null == instance) {
|
||||
instance = new GlideEngine();
|
||||
}
|
||||
}
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.adapter.HomeworkAdapter;
|
||||
import com.uiui.zyos.base.BaseDataBindingFragment;
|
||||
import com.uiui.zyos.databinding.FragmentArStudyBinding;
|
||||
import com.uiui.zyos.utils.ApkUtils;
|
||||
@@ -32,7 +31,7 @@ public class ARStudyFragment extends BaseDataBindingFragment<FragmentArStudyBind
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
private HomeworkAdapter mHomeworkAdapter;
|
||||
// private HomeworkAdapter mHomeworkAdapter;
|
||||
|
||||
// TODO: Rename parameter arguments, choose names that match
|
||||
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
||||
@@ -99,14 +98,14 @@ public class ARStudyFragment extends BaseDataBindingFragment<FragmentArStudyBind
|
||||
// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距
|
||||
mViewDataBinding.recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));
|
||||
|
||||
mHomeworkAdapter = new HomeworkAdapter();
|
||||
// mHomeworkAdapter = new HomeworkAdapter();
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
|
||||
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
|
||||
mViewDataBinding.recyclerView.setLayoutManager(linearLayoutManager);
|
||||
mViewDataBinding.recyclerView.setAdapter(mHomeworkAdapter);
|
||||
// mViewDataBinding.recyclerView.setAdapter(mHomeworkAdapter);
|
||||
List<String> homeworkList = new ArrayList<>();
|
||||
homeworkList.add("暂时没有作业");
|
||||
mHomeworkAdapter.setHomeworkList(homeworkList);
|
||||
// mHomeworkAdapter.setHomeworkList(homeworkList);
|
||||
|
||||
mViewDataBinding.ivApp.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
package com.uiui.zyos.fragment.content;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.adapter.NewHomeworkAdapter;
|
||||
import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.uiui.zyos.bean.HomeworkBean;
|
||||
import com.uiui.zyos.config.CommonConfig;
|
||||
import com.uiui.zyos.databinding.FragmentContentBinding;
|
||||
import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ContentFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ContentFragment extends BaseMvvmFragment<ContentViewModel, FragmentContentBinding> {
|
||||
private static final String TAG = "ContentFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private FragmentActivity mContext;
|
||||
|
||||
private NewHomeworkAdapter mHomeworkAdapter;
|
||||
|
||||
|
||||
// TODO: Rename parameter arguments, choose names that match
|
||||
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
||||
private static final String SUBJECT_NAME = "subject_name";
|
||||
|
||||
// TODO: Rename and change types of parameters
|
||||
private String mSubject;
|
||||
|
||||
public ContentFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this factory method to create a new instance of
|
||||
* this fragment using the provided parameters.
|
||||
*
|
||||
* @param subject Parameter 1.
|
||||
* @return A new instance of fragment ContentFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static ContentFragment newInstance(String subject) {
|
||||
ContentFragment fragment = new ContentFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(SUBJECT_NAME, subject);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mSubject = getArguments().getString(SUBJECT_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_content;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
// mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mHomeworkAdapter = new NewHomeworkAdapter();
|
||||
|
||||
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
|
||||
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)
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 10));//top间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 10));//底部间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 10));//左间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 10));//右间距
|
||||
mViewDataBinding.recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));
|
||||
mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(mContext, 2));
|
||||
mViewDataBinding.recyclerView.setAdapter(mHomeworkAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void setHomeWorkList(List<HomeworkBean> homeWorkList) {
|
||||
if (homeWorkList == null || homeWorkList.size() == 0) {
|
||||
mViewDataBinding.ivNodata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.recyclerView.setVisibility(View.GONE);
|
||||
} else {
|
||||
mViewDataBinding.ivNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.recyclerView.setVisibility(View.VISIBLE);
|
||||
mHomeworkAdapter.setHomeworkList(homeWorkList);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
Log.e(TAG, "onResume: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.uiui.zyos.fragment.content;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.uiui.zyos.base.mvvm.BaseViewModel;
|
||||
import com.uiui.zyos.databinding.FragmentContentBinding;
|
||||
|
||||
public class ContentViewModel extends BaseViewModel<FragmentContentBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentContentBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,6 @@ import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
@@ -24,18 +23,20 @@ import com.bumptech.glide.Glide;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.activity.ExitActivity;
|
||||
import com.uiui.zyos.activity.homework.HomeworkActivity;
|
||||
import com.uiui.zyos.activity.more.MoreAppActivity;
|
||||
import com.uiui.zyos.activity.user.UserActivity;
|
||||
import com.uiui.zyos.adapter.AppAdapter;
|
||||
import com.uiui.zyos.adapter.NewHomeworkAdapter;
|
||||
import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.bean.DesktopIcon;
|
||||
import com.uiui.zyos.bean.HomeworkBean;
|
||||
import com.uiui.zyos.bean.PhraseContent;
|
||||
import com.uiui.zyos.bean.SnInfo;
|
||||
import com.uiui.zyos.bean.StudyStatBean;
|
||||
import com.uiui.zyos.config.CommonConfig;
|
||||
import com.uiui.zyos.databinding.FragmentUserBinding;
|
||||
import com.uiui.zyos.dialog.SingleDialog;
|
||||
import com.uiui.zyos.jxw.JxwPackageConfig;
|
||||
import com.uiui.zyos.utils.ApkUtils;
|
||||
import com.uiui.zyos.utils.OpenApkUtils;
|
||||
@@ -115,35 +116,13 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
// mViewDataBinding.setClick(new BtnClick());
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
Log.e(TAG, "initView: ");
|
||||
mViewDataBinding.tvNotification.requestFocus();
|
||||
mViewDataBinding.tvActivated2.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tvActivated.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);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tvApplet.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.ivAvatar.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"));
|
||||
mViewDataBinding.ivAppletQrcode.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"));
|
||||
mViewDataBinding.ivDeviceQrcode.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"));
|
||||
registerOwnReceiver();
|
||||
String name = mMMKV.decodeString("USERINFO_NAME", "");
|
||||
if (TextUtils.isEmpty(name)) {
|
||||
@@ -159,48 +138,17 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
}
|
||||
int logined = mMMKV.decodeInt(CommonConfig.isLogined, 0);
|
||||
if (logined == 1) {
|
||||
mViewDataBinding.clNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.clUsedata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.ivActivation.setVisibility(View.GONE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.VISIBLE);
|
||||
}
|
||||
setButtonVisibility();
|
||||
mViewDataBinding.tvExit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent("Receiver_Refresh_Password_Action");
|
||||
intent.setPackage("com.uiui.zy");
|
||||
mContext.sendBroadcast(intent);
|
||||
|
||||
int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
|
||||
if (is_activation == 1) {
|
||||
showPassword();
|
||||
} else {
|
||||
Utils.exitDesktop(mContext);
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewDataBinding.ivActivation.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
|
||||
}
|
||||
});
|
||||
String avatar = mMMKV.decodeString("USERINFO_AVATAR", "");
|
||||
|
||||
Glide.with(mViewDataBinding.ivAvatar).load(avatar).error(R.drawable.default_avatar).into(mViewDataBinding.ivAvatar);
|
||||
|
||||
mViewDataBinding.tvDate1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.tvDate2.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.clMore.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
startActivity(new Intent(mContext, MoreAppActivity.class));
|
||||
}
|
||||
});
|
||||
mViewDataBinding.clBindStatu.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
|
||||
}
|
||||
});
|
||||
|
||||
mViewDataBinding.tvDate3.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.rvApp.setLayoutManager(new GridLayoutManager(mContext, 4));
|
||||
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
|
||||
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
|
||||
@@ -248,27 +196,19 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
mViewDataBinding.tvPercent.setText(snInfo.getStudy_time_ranking() + "%");
|
||||
mViewDataBinding.tvDuration.setText(String.format(getString(R.string.today_study_time), TimeUtils.formatTime(snInfo.getStudy_time())));
|
||||
|
||||
mViewDataBinding.clNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.clUsedata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.ivBind.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivActivation.setVisibility(View.GONE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case 300: //设备没有绑定
|
||||
case 400://没有授权的设备
|
||||
case 403://设备归属不存在
|
||||
case 402://sn不存在
|
||||
mViewDataBinding.tvName.setText(getString(R.string.unbind));
|
||||
mViewDataBinding.tvGrade.setText(getString(R.string.notset));
|
||||
mViewDataBinding.clNodata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.clUsedata.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivBind.setVisibility(View.VISIBLE);
|
||||
case 403://设备归属不存在
|
||||
// mViewDataBinding.tvName.setText(getString(R.string.default_nickname));
|
||||
// mViewDataBinding.tvGrade.setText(getString(R.string.default_grade));
|
||||
mViewDataBinding.ivActivation.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.GONE);
|
||||
break;
|
||||
// Toaster.show(getString(R.string.device_unauthorized));
|
||||
// Log.e(TAG, "setSnInfo: " + getString(R.string.device_unauthorized));
|
||||
// tvName.setText(getString(R.string.device_unauthorized));
|
||||
// tvGrade.setText(getString(R.string.device_unauthorized));
|
||||
// clNodata.setVisibility(View.GONE);
|
||||
// clUsedata.setVisibility(View.GONE);
|
||||
// break;
|
||||
|
||||
default:
|
||||
}
|
||||
}
|
||||
@@ -324,10 +264,10 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
@Override
|
||||
public void onChanged(List<HomeworkBean> homeworkBeans) {
|
||||
mHomeworkAdapter.setHomeworkList(homeworkBeans);
|
||||
if (homeworkBeans==null||homeworkBeans.isEmpty()){
|
||||
if (homeworkBeans == null || homeworkBeans.isEmpty()) {
|
||||
mViewDataBinding.llNodata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.rvHomework.setVisibility(View.GONE);
|
||||
}else {
|
||||
} else {
|
||||
mViewDataBinding.llNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.rvHomework.setVisibility(View.VISIBLE);
|
||||
}
|
||||
@@ -335,13 +275,21 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
});
|
||||
|
||||
mViewModel.getHomework();
|
||||
|
||||
mViewModel.mPhraseData.observe(this, new Observer<PhraseContent>() {
|
||||
@Override
|
||||
public void onChanged(PhraseContent phraseContent) {
|
||||
String text = phraseContent.getContent();
|
||||
mViewDataBinding.tvNotification.setText(text);
|
||||
mViewDataBinding.tvNotification.requestFocus();
|
||||
}
|
||||
});
|
||||
mViewModel.getPhrase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
// mPresenter.getInstalledApp();
|
||||
// mPresenter.getSnInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -349,57 +297,16 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
private void showSingleDialog() {
|
||||
SingleDialog singleDialog = new SingleDialog(mContext);
|
||||
singleDialog.setTitle("温馨提示");
|
||||
singleDialog.setMessage("退出请绑定小程序后设置退出密码");
|
||||
singleDialog.setOnClickBottomListener(new SingleDialog.OnClickBottomListener() {
|
||||
@Override
|
||||
public void onPositiveClick() {
|
||||
singleDialog.dismiss();
|
||||
}
|
||||
});
|
||||
singleDialog.show();
|
||||
singleDialog.getWindow().setGravity(Gravity.CENTER);
|
||||
singleDialog.setCancelable(true);
|
||||
}
|
||||
|
||||
private void showPassword() {
|
||||
// PasswordDialog passwordDialog = new PasswordDialog(mContext);
|
||||
// passwordDialog.setTitle("退出智慧课堂");
|
||||
// passwordDialog.setOnClickBottomListener(new PasswordDialog.OnClickBottomListener() {
|
||||
// @Override
|
||||
// public void onPositiveClick() {
|
||||
// String password = Settings.Global.getString(mContext.getContentResolver(), CommonConfig.LOCK_SCREEN_PASSWORD);
|
||||
// if (TextUtils.isEmpty(password)) {
|
||||
// password = CommonConfig.DEFAULT_PASSWORD;
|
||||
// }
|
||||
// if (password.equals(passwordDialog.getPassword())) {
|
||||
// passwordDialog.dismiss();
|
||||
// exitDesktop();
|
||||
// } else {
|
||||
// Toaster.show("密码错误");
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onNegtiveClick() {
|
||||
// passwordDialog.dismiss();
|
||||
// }
|
||||
// });
|
||||
// passwordDialog.show();
|
||||
// passwordDialog.getWindow().setGravity(Gravity.CENTER);
|
||||
// passwordDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
|
||||
// passwordDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
|
||||
startActivity(new Intent(mContext, ExitActivity.class));
|
||||
}
|
||||
|
||||
private void setButtonVisibility() {
|
||||
int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
|
||||
Log.e(TAG, "setButtonVisibility: " + is_activation);
|
||||
if (is_activation != 1) {
|
||||
// tvExit.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.ivActivation.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.GONE);
|
||||
Glide.with(mViewDataBinding.ivAvatar).load(mMMKV.decodeString("local_" + "avatar")).error(R.drawable.default_avatar).into(mViewDataBinding.ivAvatar);
|
||||
mViewDataBinding.tvName.setText(mMMKV.decodeString("local_" + "name", getString(R.string.default_nickname)));
|
||||
mViewDataBinding.tvGrade.setText(mMMKV.decodeString("local_" + "sn_grade", getString(R.string.default_grade)));
|
||||
} else {
|
||||
int isReturnAndroid = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_RETURN_ANDROID_KEY, 1);
|
||||
if (isReturnAndroid == 0) {
|
||||
@@ -408,6 +315,7 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
// tvExit.setVisibility(View.VISIBLE);
|
||||
}
|
||||
mViewDataBinding.ivActivation.setVisibility(View.GONE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -490,6 +398,7 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
case Intent.ACTION_TIME_TICK:
|
||||
mViewDataBinding.tvDate1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.tvDate2.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.tvDate3.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -579,4 +488,40 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
|
||||
}
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
|
||||
public void exit(View view) {
|
||||
Intent intent = new Intent("Receiver_Refresh_Password_Action");
|
||||
intent.setPackage("com.uiui.zy");
|
||||
mContext.sendBroadcast(intent);
|
||||
|
||||
int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
|
||||
if (is_activation == 1) {
|
||||
startActivity(new Intent(mContext, ExitActivity.class));
|
||||
} else {
|
||||
Utils.exitDesktop(mContext);
|
||||
}
|
||||
}
|
||||
|
||||
public void openSn(View view) {
|
||||
ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
|
||||
}
|
||||
|
||||
public void openUser(View view) {
|
||||
startActivity(new Intent(mContext, UserActivity.class));
|
||||
}
|
||||
|
||||
public void toMore(View view) {
|
||||
startActivity(new Intent(mContext, MoreAppActivity.class));
|
||||
}
|
||||
|
||||
public void openJxwUpdate(View view) {
|
||||
OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME);
|
||||
}
|
||||
|
||||
public void openHomework(View view) {
|
||||
startActivity(new Intent(mContext, HomeworkActivity.class));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.uiui.zyos.bean.AppUsed;
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.bean.DesktopIcon;
|
||||
import com.uiui.zyos.bean.HomeworkBean;
|
||||
import com.uiui.zyos.bean.PhraseContent;
|
||||
import com.uiui.zyos.bean.SnInfo;
|
||||
import com.uiui.zyos.bean.StudyStatBean;
|
||||
import com.uiui.zyos.config.CommonConfig;
|
||||
@@ -58,6 +59,10 @@ public class UserViewModel extends BaseViewModel<FragmentUserBinding, FragmentEv
|
||||
public MutableLiveData<BaseResponse<SnInfo>> mSnInfoData = new MutableLiveData<>();
|
||||
|
||||
public void getSnInfo() {
|
||||
boolean activation = ActivationUtil.isActivation(getCtx());
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getSnInfo(getLifecycle(), new NetInterfaceManager.ObserverCallback() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
@@ -195,6 +200,10 @@ public class UserViewModel extends BaseViewModel<FragmentUserBinding, FragmentEv
|
||||
public MutableLiveData<List<HomeworkBean>> mHomeworkBeanListData = new MutableLiveData<>();
|
||||
|
||||
public void getHomework() {
|
||||
boolean activation = ActivationUtil.isActivation(getCtx());
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getHomeworkObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<List<HomeworkBean>>>() {
|
||||
@@ -206,8 +215,8 @@ public class UserViewModel extends BaseViewModel<FragmentUserBinding, FragmentEv
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<List<HomeworkBean>> listBaseResponse) {
|
||||
Log.e("getHomework", "onNext: " + listBaseResponse);
|
||||
List<HomeworkBean> homeworkBeans = listBaseResponse.data;
|
||||
mHomeworkBeanListData.setValue(homeworkBeans);
|
||||
List<HomeworkBean> homeworkBeans = listBaseResponse.data;
|
||||
mHomeworkBeanListData.setValue(homeworkBeans);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -221,4 +230,40 @@ public class UserViewModel extends BaseViewModel<FragmentUserBinding, FragmentEv
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<PhraseContent> mPhraseData = new MutableLiveData<>();
|
||||
|
||||
public void getPhrase() {
|
||||
boolean activation = ActivationUtil.isActivation(getCtx());
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getPhraseObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<PhraseContent>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getPhrase", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<PhraseContent> phraseContentBaseResponse) {
|
||||
Log.e("getPhrase", "onNext: " + phraseContentBaseResponse);
|
||||
if (phraseContentBaseResponse.code == 200) {
|
||||
PhraseContent phraseContent = phraseContentBaseResponse.data;
|
||||
mPhraseData.setValue(phraseContent);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getPhrase", "onError: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getPhrase", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.uiui.zyos.fragment.usercenter.device;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.activity.ServiceActivity;
|
||||
import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.uiui.zyos.databinding.FragmentDeviceBinding;
|
||||
import com.uiui.zyos.manager.RemoteManager;
|
||||
import com.uiui.zyos.utils.Utils;
|
||||
|
||||
public class DeviceFragment extends BaseMvvmFragment<DeviceViewModel, FragmentDeviceBinding> {
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public static DeviceFragment newInstance() {
|
||||
return new DeviceFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_device;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.tvModel.setText(Build.MODEL);
|
||||
mViewDataBinding.tvVersion.setText(Utils.getCustomVersion());
|
||||
mViewDataBinding.tvMac.setText(RemoteManager.getInstance().getSerial());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void openService(View view) {
|
||||
startActivity(new Intent(mContext, ServiceActivity.class));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.uiui.zyos.fragment.usercenter.device;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.uiui.zyos.base.mvvm.BaseViewModel;
|
||||
import com.uiui.zyos.databinding.FragmentDeviceBinding;
|
||||
|
||||
public class DeviceViewModel extends BaseViewModel<FragmentDeviceBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentDeviceBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
package com.uiui.zyos.fragment.usercenter.info;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.CompoundButton;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.activity.edit.EditActivity;
|
||||
import com.uiui.zyos.activity.selectegrade.SelecteGradeActivity;
|
||||
import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.uiui.zyos.bean.SnInfo;
|
||||
import com.uiui.zyos.config.CommonConfig;
|
||||
import com.uiui.zyos.databinding.FragmentInfoBinding;
|
||||
import com.uiui.zyos.manager.RemoteManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class InfoFragment extends BaseMvvmFragment<InfoViewModel, FragmentInfoBinding> {
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public static InfoFragment newInstance() {
|
||||
return new InfoFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_info;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.rbMale.setChecked(true);
|
||||
|
||||
}
|
||||
|
||||
private void setRadioButton() {
|
||||
mViewDataBinding.rbMale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
if (b) {
|
||||
if (ActivationUtil.isActivation(mContext)) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("sn", RemoteManager.getInstance().getSerial());
|
||||
params.put("sex", "1");
|
||||
mViewModel.updateInfo(params);
|
||||
} else {
|
||||
mMMKV.encode("local_" + "sex", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewDataBinding.rbFemale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
if (b) {
|
||||
if (ActivationUtil.isActivation(mContext)) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("sn", RemoteManager.getInstance().getSerial());
|
||||
params.put("sex", "2");
|
||||
mViewModel.updateInfo(params);
|
||||
} else {
|
||||
mMMKV.encode("local_" + "sex", 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
mViewModel.mSnInfoData.observe(this, new Observer<SnInfo>() {
|
||||
@Override
|
||||
public void onChanged(SnInfo snInfo) {
|
||||
mViewDataBinding.setSnInfo(snInfo);
|
||||
int gender = snInfo.getSex();
|
||||
if (gender == 0) {
|
||||
mViewDataBinding.rgGender.clearCheck();
|
||||
} else if (gender == 1) {
|
||||
mViewDataBinding.rbMale.setChecked(true);
|
||||
} else if (gender == 2) {
|
||||
mViewDataBinding.rbFemale.setChecked(true);
|
||||
}
|
||||
setRadioButton();
|
||||
}
|
||||
});
|
||||
mViewModel.mSuccessfulData.observe(this, new Observer<Boolean>() {
|
||||
@Override
|
||||
public void onChanged(Boolean aBoolean) {
|
||||
if (aBoolean) {
|
||||
Toaster.show("更新成功");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (ActivationUtil.isActivation(mContext)) {
|
||||
mViewModel.getSnInfo();
|
||||
} else {
|
||||
getLocalData();
|
||||
}
|
||||
}
|
||||
|
||||
private void getLocalData() {
|
||||
int gender = mMMKV.decodeInt("local_" + "sex", 1);
|
||||
if (gender == 1) {
|
||||
mViewDataBinding.rbMale.setChecked(true);
|
||||
} else {
|
||||
mViewDataBinding.rbFemale.setChecked(true);
|
||||
}
|
||||
setRadioButton();
|
||||
|
||||
String class_name = mMMKV.decodeString("local_" + "class_name", "");
|
||||
if (TextUtils.isEmpty(class_name)) {
|
||||
mViewDataBinding.tvClass.setText(getString(R.string.notset));
|
||||
} else {
|
||||
mViewDataBinding.tvClass.setText(class_name);
|
||||
}
|
||||
String sn_grade = mMMKV.decodeString("local_" + "sn_grade", "");
|
||||
if (TextUtils.isEmpty(sn_grade)) {
|
||||
mViewDataBinding.tvGrade.setText(getString(R.string.default_grade));
|
||||
} else {
|
||||
mViewDataBinding.tvGrade.setText(sn_grade);
|
||||
}
|
||||
String school = mMMKV.decodeString("local_" + "school", "");
|
||||
if (TextUtils.isEmpty(class_name)) {
|
||||
mViewDataBinding.tvSchool.setText(getString(R.string.notset));
|
||||
} else {
|
||||
mViewDataBinding.tvSchool.setText(school);
|
||||
}
|
||||
}
|
||||
|
||||
private void edit(String type, String text, int maxLength) {
|
||||
Intent intent = new Intent(mContext, EditActivity.class);
|
||||
intent.putExtra("type", type);
|
||||
intent.putExtra("data", text);
|
||||
intent.putExtra("maxLength", maxLength);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void editClass(View view) {
|
||||
String text = mViewDataBinding.tvClass.getText().toString();
|
||||
edit("class_name", text, 8);
|
||||
}
|
||||
|
||||
public void editGrade(View view) {
|
||||
Intent intent = new Intent(mContext, SelecteGradeActivity.class);
|
||||
intent.putExtra("data", mViewDataBinding.tvGrade.getText());
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void editSchool(View view) {
|
||||
String text = mViewDataBinding.tvSchool.getText().toString();
|
||||
edit("school", text, 16);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
package com.uiui.zyos.fragment.usercenter.info;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.blankj.utilcode.util.ActivityUtils;
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.uiui.zyos.base.mvvm.BaseViewModel;
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.bean.SnInfo;
|
||||
import com.uiui.zyos.databinding.FragmentInfoBinding;
|
||||
import com.uiui.zyos.network.NetInterfaceManager;
|
||||
import com.uiui.zyos.utils.ActivationUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class InfoViewModel extends BaseViewModel<FragmentInfoBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentInfoBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<SnInfo> mSnInfoData = new MutableLiveData<>();
|
||||
|
||||
public void getSnInfo() {
|
||||
if (!ActivationUtil.isActivation(getCtx())) {
|
||||
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getsnInfoControl()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<SnInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getSnInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<SnInfo> snInfoBaseResponse) {
|
||||
Log.e("getSnInfo", "onNext: " + snInfoBaseResponse);
|
||||
if (snInfoBaseResponse.code == 200) {
|
||||
mSnInfoData.setValue(snInfoBaseResponse.data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getSnInfo", "onError: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getSnInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params) {
|
||||
if (!ActivationUtil.isActivation(getCtx())) {
|
||||
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getUpdateInfoObservable(params)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("updateInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
||||
Log.e("updateInfo", "onNext: " + baseResponse);
|
||||
if (baseResponse.code == 200) {
|
||||
mSuccessfulData.setValue(true);
|
||||
} else {
|
||||
Toaster.show(baseResponse.msg);
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("updateInfo", "onError: " + e.getMessage());
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("updateInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.uiui.zyos.fragment.usercenter.parents;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.uiui.zyos.databinding.FragmentParentsBinding;
|
||||
import com.uiui.zyos.fragment.usercenter.device.DeviceFragment;
|
||||
import com.uiui.zyos.utils.OpenApkUtils;
|
||||
|
||||
public class ParentsFragment extends BaseMvvmFragment<ParentsViewModel, FragmentParentsBinding> {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public static ParentsFragment newInstance() {
|
||||
return new ParentsFragment();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_parents;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void openSn(View view) {
|
||||
OpenApkUtils.getInstance().openApp("com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.uiui.zyos.fragment.usercenter.parents;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.uiui.zyos.base.mvvm.BaseViewModel;
|
||||
import com.uiui.zyos.databinding.FragmentParentsBinding;
|
||||
|
||||
public class ParentsViewModel extends BaseViewModel<FragmentParentsBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentParentsBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.uiui.zyos.bean.HomeworkBean;
|
||||
import com.uiui.zyos.bean.LessonApp;
|
||||
import com.uiui.zyos.bean.LessonJson;
|
||||
import com.uiui.zyos.bean.LessonSetting;
|
||||
import com.uiui.zyos.bean.PhraseContent;
|
||||
import com.uiui.zyos.bean.SnInfo;
|
||||
import com.uiui.zyos.bean.StudyStatBean;
|
||||
import com.uiui.zyos.bean.UserAvatarInfo;
|
||||
@@ -35,11 +36,13 @@ import com.uiui.zyos.network.api.CloudLessonAppApi;
|
||||
import com.uiui.zyos.network.api.GetFilesApi;
|
||||
import com.uiui.zyos.network.api.GetHomeworkApi;
|
||||
import com.uiui.zyos.network.api.HomeworkDetailApi;
|
||||
import com.uiui.zyos.network.api.PhraseApi;
|
||||
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.UpdateInfoControl;
|
||||
import com.uiui.zyos.network.api.UserInfoControl;
|
||||
import com.uiui.zyos.network.api.uiuios.CheckUpdateApi;
|
||||
import com.uiui.zyos.network.interceptor.RepeatRequestInterceptor;
|
||||
@@ -48,6 +51,7 @@ import com.uiui.zyos.utils.OpenApkUtils;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -61,8 +65,11 @@ import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
||||
import okhttp3.Cache;
|
||||
import okhttp3.Headers;
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
@@ -197,6 +204,18 @@ public class NetInterfaceManager {
|
||||
return mOkHttpClient;
|
||||
}
|
||||
|
||||
public static RequestBody convertToRequestBody(Object param) {
|
||||
MediaType mediaType = MediaType.Companion.parse("text/plain");
|
||||
RequestBody requestBody = RequestBody.Companion.create(String.valueOf(param), mediaType);
|
||||
return requestBody;
|
||||
}
|
||||
|
||||
public static RequestBody convertToJsonRequestBody(String param) {
|
||||
MediaType mediaType = MediaType.Companion.parse("application/json; charset=utf-8");
|
||||
RequestBody requestBody = RequestBody.Companion.create(String.valueOf(param), mediaType);
|
||||
return requestBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查更新
|
||||
*
|
||||
@@ -239,6 +258,24 @@ public class NetInterfaceManager {
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> getUpdateInfoObservable(Map<String, String> params) {
|
||||
String json = GsonUtils.toJSONString(params);
|
||||
RequestBody body = convertToJsonRequestBody(json);
|
||||
return mRetrofit.create(UpdateInfoControl.class)
|
||||
.updateUserInfo(body)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> getUpdateInfoObservable(Map<String, String> params, MultipartBody.Part multipartBody) {
|
||||
String json = GsonUtils.toJSONString(params);
|
||||
RequestBody requestBody = convertToJsonRequestBody(json);
|
||||
return mRetrofit.create(UpdateInfoControl.class)
|
||||
.updateUserInfo(requestBody, multipartBody)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> getRunningAppObservable(String json) {
|
||||
return mRetrofit.create(RunNewApp.class)
|
||||
.sendRunningInfo(RemoteManager.getInstance().getSerial(), json)
|
||||
@@ -310,6 +347,13 @@ public class NetInterfaceManager {
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<PhraseContent>> getPhraseObservable() {
|
||||
return mRetrofit.create(PhraseApi.class)
|
||||
.getPhrase(RemoteManager.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* execution
|
||||
@@ -390,7 +434,6 @@ public class NetInterfaceManager {
|
||||
if (userInfoBaseResponse.code == 200) {
|
||||
mMMKV.encode(CommonConfig.isLogined, 1);
|
||||
SnInfo snInfo = userInfoBaseResponse.data;
|
||||
mMMKV.encode("sn_id", snInfo.getId());
|
||||
if (!TextUtils.isEmpty(snInfo.getSn_name())) {
|
||||
mMMKV.encode("USERINFO_NAME", snInfo.getSn_name());
|
||||
}
|
||||
|
||||
@@ -7,6 +7,9 @@ public class UrlAddress {
|
||||
public static final String SNINFO = "sn/getSnInfo";
|
||||
/*获取用户头像和信息*/
|
||||
public static final String GET_USER_AVATAR_INFO = "sn/getUserAvatarInfo";
|
||||
/*修改设备个人信息*/
|
||||
public static final String UPDATE_INFO = "sn/update-info";
|
||||
|
||||
/*获取统计*/
|
||||
public static final String GET_STUDY_STAT = "Sn/getStudyStat";
|
||||
/*上传地址信息*/
|
||||
@@ -28,6 +31,8 @@ public class UrlAddress {
|
||||
public static final String GET_HOMEWORK = "homework/index";
|
||||
/*家庭作业详情*/
|
||||
public static final String GET_HOMEWORK_DETAIL = "homework/show";
|
||||
/*获取桌面短语*/
|
||||
public static final String GET_PHRASES = "other/phrase";
|
||||
|
||||
/*网课模式*/
|
||||
public final static String GET_CLOUD_LESSON = "Control/getCloudLessonSetting";
|
||||
|
||||
16
app/src/main/java/com/uiui/zyos/network/api/PhraseApi.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.uiui.zyos.network.api;
|
||||
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.bean.PhraseContent;
|
||||
import com.uiui.zyos.network.UrlAddress;
|
||||
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Query;
|
||||
|
||||
public interface PhraseApi {
|
||||
@GET(UrlAddress.GET_PHRASES)
|
||||
Observable<BaseResponse<PhraseContent>> getPhrase(
|
||||
@Query("sn") String sn
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.uiui.zyos.network.api;
|
||||
|
||||
import com.uiui.zyos.bean.BaseResponse;
|
||||
import com.uiui.zyos.bean.UserAvatarInfo;
|
||||
import com.uiui.zyos.network.UrlAddress;
|
||||
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.Field;
|
||||
import retrofit2.http.FormUrlEncoded;
|
||||
import retrofit2.http.Multipart;
|
||||
import retrofit2.http.POST;
|
||||
import retrofit2.http.Part;
|
||||
|
||||
public interface UpdateInfoControl {
|
||||
@POST(UrlAddress.UPDATE_INFO)
|
||||
Observable<BaseResponse> updateUserInfo(@Body RequestBody requestBody);
|
||||
|
||||
@Multipart
|
||||
@POST(UrlAddress.UPDATE_INFO)
|
||||
Observable<BaseResponse> updateUserInfo(
|
||||
@Body RequestBody requestBody,
|
||||
@Part MultipartBody.Part body);
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageInstaller;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Binder;
|
||||
import android.os.Build;
|
||||
@@ -20,6 +21,7 @@ import androidx.annotation.RequiresApi;
|
||||
import androidx.core.content.FileProvider;
|
||||
|
||||
import com.uiui.zyos.BuildConfig;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.bean.AppUpdateInfo;
|
||||
import com.uiui.zyos.bean.DesktopIcon;
|
||||
import com.uiui.zyos.manager.RemoteManager;
|
||||
@@ -719,4 +721,65 @@ public class ApkUtils {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static Drawable getAppDrawable(Context context, String pkg) {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
PackageInfo packageInfo = null;
|
||||
try {
|
||||
packageInfo = pm.getPackageInfo(pkg, 0);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "getAppDrawable: ");
|
||||
}
|
||||
if (packageInfo != null) {
|
||||
return packageInfo.applicationInfo.loadIcon(pm);
|
||||
} else {
|
||||
return context.getDrawable(R.mipmap.ic_launcher);
|
||||
}
|
||||
}
|
||||
|
||||
public static Drawable getAppDrawable(Context context, String pkg, int resId) {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
PackageInfo packageInfo = null;
|
||||
try {
|
||||
packageInfo = pm.getPackageInfo(pkg, 0);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "getAppDrawable: ");
|
||||
}
|
||||
if (packageInfo != null) {
|
||||
return packageInfo.applicationInfo.loadIcon(pm);
|
||||
} else {
|
||||
return context.getDrawable(resId);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getAppName(Context context, String pkg) {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
ApplicationInfo applicationInfo = null;
|
||||
try {
|
||||
applicationInfo = pm.getApplicationInfo(pkg, 0);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "getAppName: " + e.getMessage());
|
||||
}
|
||||
if (applicationInfo != null) {
|
||||
return applicationInfo.loadLabel(pm).toString();
|
||||
} else {
|
||||
return context.getString(R.string.app_name);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getAppName(Context context, String pkg, String defaultName) {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
ApplicationInfo applicationInfo = null;
|
||||
try {
|
||||
applicationInfo = pm.getApplicationInfo(pkg, 0);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "getAppName: " + e.getMessage());
|
||||
}
|
||||
if (applicationInfo != null) {
|
||||
return applicationInfo.loadLabel(pm).toString();
|
||||
} else {
|
||||
return defaultName;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import androidx.core.content.ContextCompat;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.uiui.zyos.bean.AppUpdateInfo;
|
||||
import com.uiui.zyos.bean.AriaDownloadInfo;
|
||||
import com.uiui.zyos.bean.HomeworkBean;
|
||||
import com.uiui.zyos.gson.GsonUtils;
|
||||
|
||||
import java.io.File;
|
||||
@@ -265,4 +266,19 @@ public class FileUtil {
|
||||
.create(); //启动下载}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ariaDownloadTestPaper(Context context, String url, HomeworkBean homeworkBean) {
|
||||
String fileName = getFileNamefromURL(url);
|
||||
File file = new File(getDownLoadPath(context) + fileName);
|
||||
if (file.exists() && !file.isDirectory()) {
|
||||
Log.e(TAG, "ariaDownload: " + "file exists");
|
||||
} else {
|
||||
Aria.download(context)
|
||||
.load(url) //读取下载地址
|
||||
.setFilePath(getDownLoadPath(context) + fileName)
|
||||
.ignoreFilePathOccupy()
|
||||
.setExtendField(GsonUtils.toJSONString(homeworkBean))
|
||||
.create(); //启动下载}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
221
app/src/main/java/com/uiui/zyos/utils/OpenFileUtil.java
Normal file
@@ -0,0 +1,221 @@
|
||||
package com.uiui.zyos.utils;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.provider.MediaStore;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.webkit.MimeTypeMap;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.core.content.FileProvider;
|
||||
|
||||
import com.uiui.zyos.BuildConfig;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
|
||||
public class OpenFileUtil {
|
||||
|
||||
public static void openFile(Context context, String filePath) {
|
||||
File file = new File(filePath);
|
||||
openFile(context, file);
|
||||
}
|
||||
|
||||
public static void openFile(Context context, File file) {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
//intent.addCategory(Intent.CATEGORY_DEFAULT);
|
||||
Uri uriForFile;
|
||||
if (Build.VERSION.SDK_INT > 23) {
|
||||
//Android 7.0之后
|
||||
uriForFile = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".FileProvider", file);
|
||||
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);//给目标文件临时授权
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//给目标文件临时授权
|
||||
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
||||
} else {
|
||||
uriForFile = Uri.fromFile(file);
|
||||
}
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//系统会检查当前所有已创建的Task中是否有该要启动的Activity的Task;
|
||||
// 若有,则在该Task上创建Activity;若没有则新建具有该Activity属性的Task,并在该新建的Task上创建Activity。
|
||||
intent.setDataAndType(uriForFile, getMimeTypeFromFile(file));
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用自定义方法获得文件的MIME类型
|
||||
*/
|
||||
private static String getMimeTypeFromFile(File file) {
|
||||
String type = "*/*";
|
||||
String fName = file.getName();
|
||||
//获取后缀名前的分隔符"."在fName中的位置。
|
||||
int dotIndex = fName.lastIndexOf(".");
|
||||
if (dotIndex > 0) {
|
||||
//获取文件的后缀名
|
||||
String end = fName.substring(dotIndex, fName.length()).toLowerCase(Locale.getDefault());
|
||||
//在MIME和文件类型的匹配表中找到对应的MIME类型。
|
||||
HashMap<String, String> map = MyMimeMap.getMimeMap();
|
||||
if (!TextUtils.isEmpty(end) && map.keySet().contains(end)) {
|
||||
type = map.get(end);
|
||||
}
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
public static class MyMimeMap {
|
||||
private static final HashMap<String, String> mapSimple = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 常用"文件扩展名—MIME类型"匹配表。
|
||||
* 注意,此表并不全,也并不是唯一的,就像有人喜欢用浏览器打开TXT一样,你可以根据自己的爱好自定义。
|
||||
*/
|
||||
public static HashMap<String, String> getMimeMap() {
|
||||
if (mapSimple.size() == 0) {
|
||||
mapSimple.put(".3gp", "video/3gpp");
|
||||
mapSimple.put(".apk", "application/vnd.android.package-archive");
|
||||
mapSimple.put(".asf", "video/x-ms-asf");
|
||||
mapSimple.put(".avi", "video/x-msvideo");
|
||||
mapSimple.put(".bin", "application/octet-stream");
|
||||
mapSimple.put(".bmp", "image/bmp");
|
||||
mapSimple.put(".c", "text/plain");
|
||||
mapSimple.put(".chm", "application/x-chm");
|
||||
mapSimple.put(".class", "application/octet-stream");
|
||||
mapSimple.put(".conf", "text/plain");
|
||||
mapSimple.put(".cpp", "text/plain");
|
||||
mapSimple.put(".doc", "application/msword");
|
||||
mapSimple.put(".docx", "application/msword");
|
||||
mapSimple.put(".exe", "application/octet-stream");
|
||||
mapSimple.put(".gif", "image/gif");
|
||||
mapSimple.put(".gtar", "application/x-gtar");
|
||||
mapSimple.put(".gz", "application/x-gzip");
|
||||
mapSimple.put(".h", "text/plain");
|
||||
mapSimple.put(".htm", "text/html");
|
||||
mapSimple.put(".html", "text/html");
|
||||
mapSimple.put(".jar", "application/java-archive");
|
||||
mapSimple.put(".java", "text/plain");
|
||||
mapSimple.put(".jpeg", "image/jpeg");
|
||||
mapSimple.put(".jpg", "image/jpeg");
|
||||
mapSimple.put(".js", "application/x-javascript");
|
||||
mapSimple.put(".log", "text/plain");
|
||||
mapSimple.put(".m3u", "audio/x-mpegurl");
|
||||
mapSimple.put(".m4a", "audio/mp4a-latm");
|
||||
mapSimple.put(".m4b", "audio/mp4a-latm");
|
||||
mapSimple.put(".m4p", "audio/mp4a-latm");
|
||||
mapSimple.put(".m4u", "video/vnd.mpegurl");
|
||||
mapSimple.put(".m4v", "video/x-m4v");
|
||||
mapSimple.put(".mov", "video/quicktime");
|
||||
mapSimple.put(".mp2", "audio/x-mpeg");
|
||||
mapSimple.put(".mp3", "audio/x-mpeg");
|
||||
mapSimple.put(".mp4", "video/mp4");
|
||||
mapSimple.put(".mpc", "application/vnd.mpohun.certificate");
|
||||
mapSimple.put(".mpe", "video/mpeg");
|
||||
mapSimple.put(".mpeg", "video/mpeg");
|
||||
mapSimple.put(".mpg", "video/mpeg");
|
||||
mapSimple.put(".mpg4", "video/mp4");
|
||||
mapSimple.put(".mpga", "audio/mpeg");
|
||||
mapSimple.put(".msg", "application/vnd.ms-outlook");
|
||||
mapSimple.put(".ogg", "audio/ogg");
|
||||
mapSimple.put(".pdf", "application/pdf");
|
||||
mapSimple.put(".png", "image/png");
|
||||
mapSimple.put(".pps", "application/vnd.ms-powerpoint");
|
||||
mapSimple.put(".ppt", "application/vnd.ms-powerpoint");
|
||||
mapSimple.put(".pptx", "application/vnd.ms-powerpoint");
|
||||
mapSimple.put(".prop", "text/plain");
|
||||
mapSimple.put(".rar", "application/x-rar-compressed");
|
||||
mapSimple.put(".rc", "text/plain");
|
||||
mapSimple.put(".rmvb", "audio/x-pn-realaudio");
|
||||
mapSimple.put(".rtf", "application/rtf");
|
||||
mapSimple.put(".sh", "text/plain");
|
||||
mapSimple.put(".tar", "application/x-tar");
|
||||
mapSimple.put(".tgz", "application/x-compressed");
|
||||
mapSimple.put(".txt", "text/plain");
|
||||
mapSimple.put(".wav", "audio/x-wav");
|
||||
mapSimple.put(".wma", "audio/x-ms-wma");
|
||||
mapSimple.put(".wmv", "audio/x-ms-wmv");
|
||||
mapSimple.put(".wps", "application/vnd.ms-works");
|
||||
mapSimple.put(".xml", "text/plain");
|
||||
mapSimple.put(".xls", "application/vnd.ms-excel");
|
||||
mapSimple.put(".xlsx", "application/vnd.ms-excel");
|
||||
mapSimple.put(".z", "application/x-compress");
|
||||
mapSimple.put(".zip", "application/zip");
|
||||
mapSimple.put("", "*/*");
|
||||
}
|
||||
return mapSimple;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static String getFileExtension(String fileName) {
|
||||
int dotIndex = fileName.lastIndexOf('.');
|
||||
if (dotIndex < 0) {
|
||||
return "";
|
||||
}
|
||||
return fileName.substring(dotIndex + 1);
|
||||
}
|
||||
|
||||
// Android获取一个用于打开PDF文件的intent
|
||||
public static Intent getPdfFileIntent(Context context, String path) {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.addCategory(Intent.CATEGORY_DEFAULT);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
File file = new File(path);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
||||
intent.addFlags(Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
|
||||
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
|
||||
Uri uri = FileProvider.getUriForFile(context, "com.video.stos.FileProvider", file);
|
||||
intent.setDataAndType(uri, "application/pdf");
|
||||
} else {
|
||||
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
|
||||
}
|
||||
return intent;
|
||||
}
|
||||
|
||||
public static final String DOWNLOAD_URI = "content://com.android.externalstorage.documents/document/primary:Download/";
|
||||
|
||||
// Android获取一个用于打开Word文件的intent
|
||||
public static Intent getWordFileIntent(Context context, File file) {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.addCategory(Intent.CATEGORY_DEFAULT);
|
||||
Uri uriForFile;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
//Android 7.0之后
|
||||
// uriForFile = FileProvider.getUriForFile(context, "com.video.stos.FileProvider", file);
|
||||
uriForFile = getFileUri(context, file.getAbsolutePath());
|
||||
// intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);//给目标文件临时授权
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//给目标文件临时授权
|
||||
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
||||
// intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
} else {
|
||||
uriForFile = Uri.fromFile(file);
|
||||
}
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//系统会检查当前所有已创建的Task中是否有该要启动的Activity的Task;
|
||||
Log.e("lhl", "uri+" + uriForFile + "");
|
||||
//Uri uri = Uri.fromFile(new File(param));
|
||||
intent.setDataAndType(uriForFile, "application/pdf");
|
||||
return intent;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.Q)
|
||||
public static Uri getFileUri(Context context, String filePath) {
|
||||
Log.e("getFileUri", "getFileUri: " + MediaStore.Downloads.EXTERNAL_CONTENT_URI);
|
||||
Cursor cursor = context.getContentResolver().query(MediaStore.Downloads.EXTERNAL_CONTENT_URI,
|
||||
new String[]{MediaStore.Downloads._ID}, MediaStore.Downloads.DATA + "=? ",
|
||||
new String[]{filePath}, null);
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns._ID));
|
||||
Uri baseUri = Uri.parse("content://media/external/downloads");
|
||||
return Uri.withAppendedPath(baseUri, "" + id);
|
||||
} else {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(MediaStore.Downloads.DATA, filePath);
|
||||
return context.getContentResolver().insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, values);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,12 @@ public class TimeUtils {
|
||||
return sdf.format(date);
|
||||
}
|
||||
|
||||
public static String transferSecondgToDate(long second) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Date date = new Date(second * 1000);
|
||||
return sdf.format(date);
|
||||
}
|
||||
|
||||
public static String getDateAndWeek(Long millisecond) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
|
||||
Date date = new Date(millisecond);
|
||||
@@ -49,6 +55,18 @@ public class TimeUtils {
|
||||
return dateString + "\t" + getWeek();
|
||||
}
|
||||
|
||||
public static String getHomeworkTime(String timeString) {
|
||||
SimpleDateFormat old = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Date date = new Date();
|
||||
try {
|
||||
date = old.parse(timeString);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");
|
||||
return sdf.format(date);
|
||||
}
|
||||
|
||||
public static String formatTime(Long s) {
|
||||
if (s == 0) {
|
||||
return "0分钟";
|
||||
@@ -74,9 +92,9 @@ public class TimeUtils {
|
||||
if (minute > 0) {
|
||||
sb.append(minute + "分");
|
||||
}
|
||||
if (second > 0) {
|
||||
sb.append(second + "秒");
|
||||
}
|
||||
// if (second > 0) {
|
||||
// sb.append(second + "秒");
|
||||
// }
|
||||
// if (milliSecond > 0) {
|
||||
// sb.append(milliSecond + "毫秒");
|
||||
// }
|
||||
|
||||
@@ -32,8 +32,15 @@ import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.manager.RemoteManager;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.LineNumberReader;
|
||||
import java.io.Reader;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.NetworkInterface;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class Utils {
|
||||
@@ -263,4 +270,115 @@ public class Utils {
|
||||
context.finish();
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统配置信息
|
||||
*
|
||||
* @param key
|
||||
* @param defaultValue
|
||||
* @return
|
||||
*/
|
||||
public static String getProperty(String key, String defaultValue) {
|
||||
String value = defaultValue;
|
||||
try {
|
||||
Class<?> c = Class.forName("android.os.SystemProperties");
|
||||
Method get = c.getMethod("get", String.class, String.class);
|
||||
value = (String) (get.invoke(c, key, "unknown"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getCustomVersion() {
|
||||
return getProperty("ro.build.display.id", "获取失败");
|
||||
// return getProperty("ro.custom.build.version", "获取失败");
|
||||
// return getProperty("ro.custom.build.version", "获取失败");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取手机的MAC地址
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static String getMac() {
|
||||
String str = "";
|
||||
String macSerial = "";
|
||||
try {
|
||||
Process pp = Runtime.getRuntime().exec(
|
||||
"cat /sys/class/net/wlan0/address");
|
||||
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
|
||||
LineNumberReader input = new LineNumberReader(ir);
|
||||
for (; null != str; ) {
|
||||
str = input.readLine();
|
||||
if (str != null) {
|
||||
macSerial = str.trim();// 去空格
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
if (macSerial == null || "".equals(macSerial)) {
|
||||
try {
|
||||
return loadFileAsString("/sys/class/net/eth0/address")
|
||||
.toUpperCase().substring(0, 17);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
macSerial = getAndroid7MAC();
|
||||
}
|
||||
}
|
||||
return macSerial;
|
||||
}
|
||||
|
||||
/**
|
||||
* 兼容7.0获取不到的问题
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static String getAndroid7MAC() {
|
||||
try {
|
||||
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
|
||||
for (NetworkInterface nif : all) {
|
||||
if (!"wlan0".equalsIgnoreCase(nif.getName()))
|
||||
continue;
|
||||
byte[] macBytes = nif.getHardwareAddress();
|
||||
if (macBytes == null) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder res1 = new StringBuilder();
|
||||
for (byte b : macBytes) {
|
||||
res1.append(String.format("%02X:", b));
|
||||
}
|
||||
if (res1.length() > 0) {
|
||||
res1.deleteCharAt(res1.length() - 1);
|
||||
}
|
||||
return res1.toString();
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Log.e(TAG, "getAndroid7MAC: " + ex.getMessage());
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String loadFileAsString(String fileName) throws Exception {
|
||||
FileReader reader = new FileReader(fileName);
|
||||
String text = loadReaderAsString(reader);
|
||||
reader.close();
|
||||
return text;
|
||||
}
|
||||
|
||||
public static String loadReaderAsString(Reader reader) throws Exception {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
char[] buffer = new char[4096];
|
||||
int readLength = reader.read(buffer);
|
||||
while (readLength >= 0) {
|
||||
builder.append(buffer, 0, readLength);
|
||||
readLength = reader.read(buffer);
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,69 @@
|
||||
package com.uiui.zyos.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.databinding.BindingAdapter;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.uiui.zyos.R;
|
||||
import com.uiui.zyos.utils.GlideLoadUtils;
|
||||
import com.uiui.zyos.utils.TimeUtils;
|
||||
|
||||
public class ImageViewAdapter {
|
||||
@BindingAdapter("android:src")
|
||||
public static void setSrc(ImageView view, Bitmap bitmap) {
|
||||
view.setImageBitmap(bitmap);
|
||||
}
|
||||
|
||||
@BindingAdapter("android:src")
|
||||
public static void setSrc(ImageView view, int resId) {
|
||||
view.setImageResource(resId);
|
||||
}
|
||||
|
||||
@BindingAdapter("imageUrl")
|
||||
public static void setSrc(ImageView imageView, String url) {
|
||||
Glide.with(imageView.getContext())
|
||||
.load(url)
|
||||
.error(R.mipmap.ic_launcher)
|
||||
.centerCrop()
|
||||
.into(imageView);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义设置图片属性 - 在匹配时自定义命名空间会被忽略
|
||||
*/
|
||||
@BindingAdapter({"imageUrl"})
|
||||
public static void loadImage(ImageView imageView, int id) {
|
||||
@BindingAdapter({"imageUrl", "error"})
|
||||
public static void loadImage(ImageView imageView, String url, Drawable error) {
|
||||
Glide.with(imageView.getContext())
|
||||
.load(id)
|
||||
.load(url)
|
||||
.error(error)
|
||||
.into(imageView);
|
||||
}
|
||||
|
||||
@BindingAdapter({"setTime"})
|
||||
public static void setTime(TextView textView, long timestamp) {
|
||||
textView.setText(TimeUtils.transferSecondgToDate(timestamp));
|
||||
}
|
||||
|
||||
@BindingAdapter({"setTemp"})
|
||||
public static void setTemp(TextView textView, String temp) {
|
||||
if (TextUtils.isEmpty(temp)) {
|
||||
textView.setText("N/A ℃");
|
||||
} else {
|
||||
textView.setText(temp + " ℃");
|
||||
}
|
||||
}
|
||||
|
||||
// @BindingAdapter({"setTempIcon"})
|
||||
// public static void setTempIcon(ImageView imageView, String code) {
|
||||
// String imageName = "he" + code;
|
||||
// Context context = imageView.getContext();
|
||||
// int resId = context.getResources().getIdentifier(imageName, "drawable", context.getPackageName());
|
||||
// GlideLoadUtils.getInstance().glideLoad(context, resId, imageView, R.drawable.he999);
|
||||
// }
|
||||
}
|
||||
|
Before Width: | Height: | Size: 8.6 KiB |
BIN
app/src/main/res/drawable-hdpi/bt_back.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 250 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
BIN
app/src/main/res/drawable-hdpi/icon_homework_sample.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
BIN
app/src/main/res/drawable-hdpi/icon_user_back.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/drawable-hdpi/icon_user_edit.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
app/src/main/res/drawable-hdpi/icon_user_more.png
Normal file
|
After Width: | Height: | Size: 483 B |
BIN
app/src/main/res/drawable-hdpi/status_download.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
app/src/main/res/drawable-hdpi/user_edit_avatar.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
app/src/main/res/drawable-hdpi/wechat_bind_process.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
app/src/main/res/drawable-hdpi/wechat_service_qrcode.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 62 KiB |
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:drawable="@drawable/actions_item_bg_s" android:state_focused="true" />
|
||||
<item android:drawable="@color/actions_item_pressed" android:state_pressed="true" />
|
||||
<item>
|
||||
<shape>
|
||||
<solid android:color="@color/colorPrimary" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</selector>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid android:color="@color/white" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners android:radius="16dp" />
|
||||
|
||||
<!-- <padding-->
|
||||
<!-- android:bottom="0dp"-->
|
||||
<!-- android:left="8dp"-->
|
||||
<!-- android:right="8dp"-->
|
||||
<!-- android:top="0dp" />-->
|
||||
</shape>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid android:color="@color/gray" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners android:radius="16dp" />
|
||||
|
||||
<padding
|
||||
android:bottom="8dp"
|
||||
android:left="8dp"
|
||||
android:right="8dp"
|
||||
android:top="8dp" />
|
||||
</shape>
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="@color/yellow" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="8dp"
|
||||
android:topRightRadius="8dp"
|
||||
android:bottomLeftRadius="8dp"
|
||||
android:bottomRightRadius="8dp" />
|
||||
|
||||
<padding
|
||||
android:top="4dp"
|
||||
android:bottom="4dp"
|
||||
android:left="4dp"
|
||||
android:right="4dp"
|
||||
/>
|
||||
</shape>
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid android:color="@color/default_blue" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:bottomLeftRadius="16dp"
|
||||
android:bottomRightRadius="16dp"
|
||||
android:topLeftRadius="16dp"
|
||||
android:topRightRadius="16dp" />
|
||||
|
||||
<padding
|
||||
android:bottom="4dp"
|
||||
android:left="4dp"
|
||||
android:right="4dp"
|
||||
android:top="4dp" />
|
||||
</shape>
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="#fbc23b" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="16dp"
|
||||
android:topRightRadius="16dp"
|
||||
android:bottomLeftRadius="16dp"
|
||||
android:bottomRightRadius="16dp" />
|
||||
|
||||
<padding
|
||||
android:top="4dp"
|
||||
android:bottom="4dp"
|
||||
android:left="4dp"
|
||||
android:right="4dp"
|
||||
/>
|
||||
</shape>
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="#acd598" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="16dp"
|
||||
android:topRightRadius="16dp"
|
||||
android:bottomLeftRadius="16dp"
|
||||
android:bottomRightRadius="16dp" />
|
||||
|
||||
<padding
|
||||
android:top="4dp"
|
||||
android:bottom="4dp"
|
||||
android:left="4dp"
|
||||
android:right="4dp"
|
||||
/>
|
||||
</shape>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="@color/red" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="30dp"
|
||||
android:topRightRadius="30dp"
|
||||
android:bottomLeftRadius="30dp"
|
||||
android:bottomRightRadius="30dp" />
|
||||
</shape>
|
||||
19
app/src/main/res/drawable/bg_selecte.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="@color/white" />
|
||||
<corners
|
||||
android:topLeftRadius="@dimen/dp_16"
|
||||
android:topRightRadius="@dimen/dp_16"
|
||||
android:bottomLeftRadius="@dimen/dp_16"
|
||||
android:bottomRightRadius="@dimen/dp_16" />
|
||||
|
||||
<!-- 圆角的幅度 -->
|
||||
<padding android:bottom="@dimen/dp_20"
|
||||
android:top="@dimen/dp_20"
|
||||
android:right="@dimen/dp_20"
|
||||
android:left="@dimen/dp_20"/>
|
||||
|
||||
</shape>
|
||||
11
app/src/main/res/drawable/bt_activation_normal.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid android:color="@color/default_blue" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners android:radius="@dimen/dp_32" />
|
||||
|
||||
<padding
|
||||
android:left="@dimen/dp_10"
|
||||
android:right="@dimen/dp_10" />
|
||||
</shape>
|
||||
19
app/src/main/res/drawable/bt_checkupdate_bg.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="@color/default_blue" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="@dimen/dp_16"
|
||||
android:topRightRadius="@dimen/dp_16"
|
||||
android:bottomLeftRadius="@dimen/dp_16"
|
||||
android:bottomRightRadius="@dimen/dp_16" />
|
||||
|
||||
<padding
|
||||
android:bottom="@dimen/dp_3"
|
||||
android:left="@dimen/dp_10"
|
||||
android:right="@dimen/dp_10"
|
||||
android:top="@dimen/dp_3" />
|
||||
</shape>
|
||||
@@ -3,11 +3,17 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="#4880ff" />
|
||||
android:color="@color/default_blue" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="24dp"
|
||||
android:topRightRadius="24dp"
|
||||
android:bottomLeftRadius="24dp"
|
||||
android:bottomRightRadius="24dp" />
|
||||
android:topLeftRadius="@dimen/dp_16"
|
||||
android:topRightRadius="@dimen/dp_16"
|
||||
android:bottomLeftRadius="@dimen/dp_16"
|
||||
android:bottomRightRadius="@dimen/dp_16" />
|
||||
|
||||
<padding
|
||||
android:bottom="@dimen/dp_2"
|
||||
android:left="@dimen/dp_8"
|
||||
android:right="@dimen/dp_8"
|
||||
android:top="@dimen/dp_2" />
|
||||
</shape>
|
||||
@@ -1,13 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="#3e76f6" />
|
||||
<solid android:color="#3e76f6" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="24dp"
|
||||
android:topRightRadius="24dp"
|
||||
android:bottomLeftRadius="24dp"
|
||||
android:bottomRightRadius="24dp" />
|
||||
android:bottomLeftRadius="@dimen/dp_16"
|
||||
android:bottomRightRadius="@dimen/dp_16"
|
||||
android:topLeftRadius="@dimen/dp_16"
|
||||
android:topRightRadius="@dimen/dp_16" />
|
||||
|
||||
<padding
|
||||
android:bottom="@dimen/dp_2"
|
||||
android:left="@dimen/dp_8"
|
||||
android:right="@dimen/dp_8"
|
||||
android:top="@dimen/dp_2" />
|
||||
</shape>
|
||||
@@ -1,18 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid android:color="#444444" />
|
||||
<solid android:color="@color/default_blue" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:bottomLeftRadius="@dimen/dp_8"
|
||||
android:bottomRightRadius="@dimen/dp_8"
|
||||
android:topLeftRadius="@dimen/dp_8"
|
||||
android:topRightRadius="@dimen/dp_8" />
|
||||
android:bottomLeftRadius="@dimen/dp_6"
|
||||
android:bottomRightRadius="@dimen/dp_6"
|
||||
android:topLeftRadius="@dimen/dp_6"
|
||||
android:topRightRadius="@dimen/dp_6" />
|
||||
|
||||
<padding
|
||||
android:right="@dimen/dp_8"
|
||||
android:left="@dimen/dp_8"
|
||||
android:top="@dimen/dp_8"
|
||||
android:bottom="@dimen/dp_8"
|
||||
/>
|
||||
android:left="@dimen/dp_8"
|
||||
android:right="@dimen/dp_8"
|
||||
android:top="@dimen/dp_8" />
|
||||
</shape>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="@color/transparent_white" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="10dp"
|
||||
android:topRightRadius="10dp"
|
||||
android:bottomLeftRadius="10dp"
|
||||
android:bottomRightRadius="10dp" />
|
||||
</shape>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="@color/clean_bg_color" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="10dp"
|
||||
android:topRightRadius="10dp"
|
||||
android:bottomLeftRadius="10dp"
|
||||
android:bottomRightRadius="10dp" />
|
||||
</shape>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="@color/contact_bg_color" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="10dp"
|
||||
android:topRightRadius="10dp"
|
||||
android:bottomLeftRadius="10dp"
|
||||
android:bottomRightRadius="10dp" />
|
||||
</shape>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 内部颜色 -->
|
||||
<solid
|
||||
android:color="@color/guard_bg_color" />
|
||||
<!-- 圆角的幅度 -->
|
||||
<corners
|
||||
android:topLeftRadius="10dp"
|
||||
android:topRightRadius="10dp"
|
||||
android:bottomLeftRadius="10dp"
|
||||
android:bottomRightRadius="10dp" />
|
||||
</shape>
|
||||