diff --git a/app/build.gradle b/app/build.gradle
index b93cc1f..8ee853d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,8 +15,8 @@ android {
applicationId "com.uiuios.aios"
minSdkVersion 24
targetSdkVersion 29
- versionCode 52
- versionName "6.1"
+ versionCode 53
+ versionName "6.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -27,7 +27,7 @@ android {
}
manifestPlaceholders = [
- AMAP_KEY : "372937d213ff288dc150c31967a200cd"
+ AMAP_KEY: "372937d213ff288dc150c31967a200cd"
]
}
@@ -121,6 +121,7 @@ dependencies {
implementation "androidx.fragment:fragment:1.4.1"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ implementation 'androidx.preference:preference:1.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 50a6e00..28d9760 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,6 +32,7 @@
+
@@ -141,7 +142,7 @@
-
-
+
+
-
-
+
+
+
+
+ android:launchMode="singleTask"
+ android:screenOrientation="portrait" />
@@ -230,7 +239,7 @@
android:screenOrientation="portrait"
android:theme="@style/activity_styles" />
{
private static final String TAG = AddItemActivity.class.getSimpleName();
- @BindView(R.id.tv_app_name)
- TextView tv_app_name;
- @BindView(R.id.iv_icon)
- ImageView iv_icon;
- @BindView(R.id.tv_add)
- TextView tv_add;
- @BindView(R.id.tv_cancel)
- TextView tv_cancel;
-
int mIconDpi = 1000;
@@ -56,9 +49,18 @@ public class AddItemActivity extends BaseDataBindingActivity {
private ShortcutPkgInfo mShortcutPkgInfo;
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_add_item;
+ }
+
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this, R.layout.add_item_confirmation_activity);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
/**
@@ -66,14 +68,13 @@ public class AddItemActivity extends BaseDataBindingActivity {
*/
@Override
public void initView() {
- ButterKnife.bind(this);
- tv_cancel.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.tvCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
- tv_add.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.tvAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -117,9 +118,9 @@ public class AddItemActivity extends BaseDataBindingActivity {
mId = mInfo.getId();
mPackageName = mInfo.getPackage();
mTitle = mInfo.getShortLabel().toString();
- tv_app_name.setText(mTitle);
+ mViewDataBinding.tvAppName.setText(mTitle);
Drawable d = getSystemService(LauncherApps.class).getShortcutIconDrawable(mInfo, mIconDpi);
- iv_icon.setImageDrawable(d);
+ mViewDataBinding.ivIcon.setImageDrawable(d);
mComponentName = mInfo.getActivity();
// Drawable icon = getFullResIcon(mAppWidgetProviderInfo.provider.getPackageName(), mAppWidgetProviderInfo.icon);
// RemoteViews remoteViews = getPreview(mRequest);
@@ -165,4 +166,6 @@ public class AddItemActivity extends BaseDataBindingActivity {
? android.R.drawable.sym_def_app_icon : android.R.mipmap.sym_def_app_icon,
iconDpi);
}
+
+
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/additem/AddItemViewModel.java b/app/src/main/java/com/uiuios/aios/activity/additem/AddItemViewModel.java
new file mode 100644
index 0000000..c8b39d3
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/additem/AddItemViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.additem;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityAddItemBinding;
+
+public class AddItemViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityAddItemBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmActivity.java
index 56971f8..e0f9cde 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmActivity.java
@@ -3,13 +3,9 @@ package com.uiuios.aios.activity.alarm.main;
import android.content.Intent;
import android.util.Log;
import android.view.View;
-import android.widget.ImageView;
import androidx.annotation.NonNull;
-import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
import com.hjq.toast.Toaster;
import com.trello.rxlifecycle4.RxLifecycle;
@@ -19,64 +15,34 @@ import com.uiuios.aios.activity.alarmclock.add.AlarmClockAddActivity;
import com.uiuios.aios.alarm.AlarmAdapter;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.alarm.AlarmUtils;
-import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.BaseResponse;
+import com.uiuios.aios.databinding.ActivityAlarmBinding;
import com.uiuios.aios.dialog.DeleteDialog;
import com.uiuios.aios.network.NetInterfaceManager;
import java.util.List;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
-public class AlarmActivity extends BaseDataBindingActivity implements AlarmContact.AlarmView {
+public class AlarmActivity extends BaseMvvmActivity {
private static final String TAG = AlarmActivity.class.getSimpleName();
- @BindView(R.id.cl_exit)
- ConstraintLayout cl_exit;
- @BindView(R.id.cl_all)
- ConstraintLayout cl_all;
- @BindView(R.id.cl_medicine)
- ConstraintLayout cl_medicine;
- @BindView(R.id.cl_look)
- ConstraintLayout cl_look;
- @BindView(R.id.cl_reserve)
- ConstraintLayout cl_reserve;
- @BindView(R.id.imageView1)
- ImageView imageView1;
- @BindView(R.id.imageView3)
- ImageView imageView3;
- @BindView(R.id.imageView5)
- ImageView imageView5;
- @BindView(R.id.imageView7)
- ImageView imageView7;
-
- @BindView(R.id.rv_data)
- RecyclerView rv_data;
- @BindView(R.id.cl_nodata)
- ConstraintLayout cl_nodata;
-
- @BindView(R.id.imageView2)
- ImageView imageView2;
- @BindView(R.id.imageView4)
- ImageView imageView4;
- @BindView(R.id.imageView6)
- ImageView imageView6;
- @BindView(R.id.imageView8)
- ImageView imageView8;
-
- @BindView(R.id.iv_add)
- ImageView iv_add;
-
- private AlarmPresenter mPresenter;
private AlarmAdapter mAlarmAdapter;
private int mType = 0;
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_alarm;
+ }
+
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this, R.layout.activity_alarm);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
/**
@@ -84,11 +50,6 @@ public class AlarmActivity extends BaseDataBindingActivity implements AlarmConta
*/
@Override
public void initView() {
- ButterKnife.bind(this);
- mPresenter = new AlarmPresenter(this);
- mPresenter.attachView(this);
- mPresenter.setLifecycle(getLifecycleSubject());
-
mAlarmAdapter = new AlarmAdapter();
mAlarmAdapter.setOnLongClickListener(new AlarmAdapter.OnLongClickListener() {
@Override
@@ -96,45 +57,45 @@ public class AlarmActivity extends BaseDataBindingActivity implements AlarmConta
showDialog(alarmClockData);
}
});
- rv_data.setLayoutManager(new LinearLayoutManager(AlarmActivity.this));
- rv_data.setAdapter(mAlarmAdapter);
+ mViewDataBinding.rvData.setLayoutManager(new LinearLayoutManager(AlarmActivity.this));
+ mViewDataBinding.rvData.setAdapter(mAlarmAdapter);
switchItem(0);
- cl_exit.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
- cl_all.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switchItem(0);
- mPresenter.getAlarmClock(mType);
+ mViewModel.getAlarmClock(mType);
}
});
- cl_medicine.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clMedicine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switchItem(1);
- mPresenter.getAlarmClock(mType);
+ mViewModel.getAlarmClock(mType);
}
});
- cl_look.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clLook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switchItem(2);
- mPresenter.getAlarmClock(mType);
+ mViewModel.getAlarmClock(mType);
}
});
- cl_reserve.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clReserve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switchItem(3);
- mPresenter.getAlarmClock(mType);
+ mViewModel.getAlarmClock(mType);
}
});
- iv_add.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(AlarmActivity.this, AlarmClockAddActivity.class));
@@ -147,60 +108,82 @@ public class AlarmActivity extends BaseDataBindingActivity implements AlarmConta
*/
@Override
public void initData() {
- mPresenter.getAlarmClock(mType);
+ mViewModel.getAlarmClockDataData().observe(this, new androidx.lifecycle.Observer>() {
+ @Override
+ public void onChanged(List alarmClockData) {
+ List localAddAlarm = AlarmUtils.getInstance().getLocalAddAlarm();
+ Log.e(TAG, "setAlarmClock: localAddAlarm size = " + localAddAlarm);
+ if (alarmClockData != null) {
+ localAddAlarm.addAll(alarmClockData);
+ }
+ if (localAddAlarm.size() == 0) {
+ mAlarmAdapter.setAlarmClockData(null);
+// swipeRefreshLayout.setRefreshing(false);
+ mViewDataBinding.clNodata.setVisibility(View.VISIBLE);
+ mViewDataBinding.rvData.setVisibility(View.GONE);
+ Toaster.show("没有数据");
+ } else {
+ mAlarmAdapter.setAlarmClockData(localAddAlarm);
+// swipeRefreshLayout.setRefreshing(false);
+ mViewDataBinding.clNodata.setVisibility(View.GONE);
+ mViewDataBinding.rvData.setVisibility(View.VISIBLE);
+ }
+ }
+ });
+ mViewModel.getAlarmClock(mType);
}
@Override
protected void onResume() {
super.onResume();
- mPresenter.getAlarmClock(mType);
+ mViewModel.getAlarmClock(mType);
}
private void switchItem(int position) {
mType = position;
- cl_all.setBackground(null);
- cl_medicine.setBackground(null);
- cl_look.setBackground(null);
- cl_reserve.setBackground(null);
+ mViewDataBinding.clAll.setBackground(null);
+ mViewDataBinding.clMedicine.setBackground(null);
+ mViewDataBinding.clLook.setBackground(null);
+ mViewDataBinding.clReserve.setBackground(null);
- imageView2.setImageDrawable(null);
- imageView4.setImageDrawable(null);
- imageView6.setImageDrawable(null);
- imageView8.setImageDrawable(null);
+ mViewDataBinding.imageView2.setImageDrawable(null);
+ mViewDataBinding.imageView4.setImageDrawable(null);
+ mViewDataBinding.imageView6.setImageDrawable(null);
+ mViewDataBinding.imageView8.setImageDrawable(null);
switch (position) {
case 0:
default:
// cl_all.setBackground(getDrawable(R.drawable.alarm_pressed_background));
- imageView2.setImageDrawable(getDrawable(R.drawable.icon_touch));
- imageView1.setImageDrawable(getDrawable(R.drawable.icon_alarm_all_pressed));
- imageView3.setImageDrawable(getDrawable(R.drawable.icon_alarm_medicine));
- imageView5.setImageDrawable(getDrawable(R.drawable.icon_alarm_look));
- imageView7.setImageDrawable(getDrawable(R.drawable.icon_alarm_reserve));
+ mViewDataBinding.imageView2.setImageDrawable(getDrawable(R.drawable.icon_touch));
+ mViewDataBinding.imageView1.setImageDrawable(getDrawable(R.drawable.icon_alarm_all_pressed));
+ mViewDataBinding.imageView3.setImageDrawable(getDrawable(R.drawable.icon_alarm_medicine));
+ mViewDataBinding.imageView5.setImageDrawable(getDrawable(R.drawable.icon_alarm_look));
+ mViewDataBinding.imageView7.setImageDrawable(getDrawable(R.drawable.icon_alarm_reserve));
break;
case 1:
// cl_medicine.setBackground(getDrawable(R.drawable.alarm_pressed_background));
- imageView4.setImageDrawable(getDrawable(R.drawable.icon_touch));
- imageView1.setImageDrawable(getDrawable(R.drawable.icon_alarm_all));
- imageView3.setImageDrawable(getDrawable(R.drawable.icon_alarm_medicine_pressed));
- imageView5.setImageDrawable(getDrawable(R.drawable.icon_alarm_look));
- imageView7.setImageDrawable(getDrawable(R.drawable.icon_alarm_reserve));
+ mViewDataBinding.imageView4.setImageDrawable(getDrawable(R.drawable.icon_touch));
+ mViewDataBinding.imageView1.setImageDrawable(getDrawable(R.drawable.icon_alarm_all));
+ mViewDataBinding.imageView3.setImageDrawable(getDrawable(R.drawable.icon_alarm_medicine_pressed));
+ mViewDataBinding.imageView5.setImageDrawable(getDrawable(R.drawable.icon_alarm_look));
+ mViewDataBinding.imageView7.setImageDrawable(getDrawable(R.drawable.icon_alarm_reserve));
break;
case 2:
// cl_look.setBackground(getDrawable(R.drawable.alarm_pressed_background));
- imageView6.setImageDrawable(getDrawable(R.drawable.icon_touch));
- imageView1.setImageDrawable(getDrawable(R.drawable.icon_alarm_all));
- imageView3.setImageDrawable(getDrawable(R.drawable.icon_alarm_medicine));
- imageView5.setImageDrawable(getDrawable(R.drawable.icon_alarm_look_pressed));
- imageView7.setImageDrawable(getDrawable(R.drawable.icon_alarm_reserve));
+ mViewDataBinding.imageView6.setImageDrawable(getDrawable(R.drawable.icon_touch));
+ mViewDataBinding.imageView1.setImageDrawable(getDrawable(R.drawable.icon_alarm_all));
+ mViewDataBinding.imageView3.setImageDrawable(getDrawable(R.drawable.icon_alarm_medicine));
+ mViewDataBinding.imageView5.setImageDrawable(getDrawable(R.drawable.icon_alarm_look_pressed));
+ mViewDataBinding.imageView7.setImageDrawable(getDrawable(R.drawable.icon_alarm_reserve));
break;
case 3:
// cl_reserve.setBackground(getDrawable(R.drawable.alarm_pressed_background));
- imageView8.setImageDrawable(getDrawable(R.drawable.icon_touch));
- imageView1.setImageDrawable(getDrawable(R.drawable.icon_alarm_all));
- imageView3.setImageDrawable(getDrawable(R.drawable.icon_alarm_medicine));
- imageView5.setImageDrawable(getDrawable(R.drawable.icon_alarm_look));
- imageView7.setImageDrawable(getDrawable(R.drawable.icon_alarm_reserve_pressed));
+ mViewDataBinding.imageView8.setImageDrawable(getDrawable(R.drawable.icon_touch));
+ mViewDataBinding.imageView1.setImageDrawable(getDrawable(R.drawable.icon_alarm_all));
+ mViewDataBinding.imageView3.setImageDrawable(getDrawable(R.drawable.icon_alarm_medicine));
+ mViewDataBinding.imageView5.setImageDrawable(getDrawable(R.drawable.icon_alarm_look));
+ mViewDataBinding.imageView7.setImageDrawable(getDrawable(R.drawable.icon_alarm_reserve_pressed));
break;
}
}
@@ -231,7 +214,7 @@ public class AlarmActivity extends BaseDataBindingActivity implements AlarmConta
if (alarmClockData.isIs_local()) {
alarmClockData.setDeleted(true);
AlarmUtils.getInstance().deleteAlarmClock(alarmClockData);
- mPresenter.getAlarmClock(mType);
+ mViewModel.getAlarmClock(mType);
} else {
NetInterfaceManager.getInstance().deleteAlarmClockObservable(alarmClockData.getId())
.compose(RxLifecycle.bindUntilEvent(getLifecycleSubject(), ActivityEvent.DESTROY))
@@ -263,36 +246,10 @@ public class AlarmActivity extends BaseDataBindingActivity implements AlarmConta
@Override
public void onComplete() {
Log.e("deleteAlarm", "onComplete: ");
- mPresenter.getAlarmClock(mType);
+ mViewModel.getAlarmClock(mType);
}
});
}
}
-
- @Override
- public void setAlarmClock(List alarmClockData) {
- List localAddAlarm = AlarmUtils.getInstance().getLocalAddAlarm();
- Log.e(TAG, "setAlarmClock: localAddAlarm size = " + localAddAlarm);
- if (alarmClockData != null) {
- localAddAlarm.addAll(alarmClockData);
- }
- if (localAddAlarm.size() == 0) {
- mAlarmAdapter.setAlarmClockData(null);
-// swipeRefreshLayout.setRefreshing(false);
- cl_nodata.setVisibility(View.VISIBLE);
- rv_data.setVisibility(View.GONE);
- Toaster.show("没有数据");
- } else {
- mAlarmAdapter.setAlarmClockData(localAddAlarm);
-// swipeRefreshLayout.setRefreshing(false);
- cl_nodata.setVisibility(View.GONE);
- rv_data.setVisibility(View.VISIBLE);
- }
- }
-
- @Override
- public void setAlarmClockEmpty() {
-
- }
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmContact.java b/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmContact.java
deleted file mode 100644
index fa169d1..0000000
--- a/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmContact.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.uiuios.aios.activity.alarm.main;
-
-import com.uiuios.aios.alarm.AlarmClockData;
-import com.uiuios.aios.base.mvp.BasePresenter;
-import com.uiuios.aios.base.mvp.BaseView;
-
-import java.util.List;
-
-public class AlarmContact {
- public interface Presenter extends BasePresenter {
- void getAlarmClock();
-
- void getAlarmClock(int type);
- }
-
- public interface AlarmView extends BaseView {
- void setAlarmClock(List alarmClockData);
-
- void setAlarmClockEmpty();
- }
-}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmPresenter.java b/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmViewModel.java
similarity index 71%
rename from app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmPresenter.java
rename to app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmViewModel.java
index 298115a..9ff36a5 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmPresenter.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarm/main/AlarmViewModel.java
@@ -1,11 +1,14 @@
package com.uiuios.aios.activity.alarm.main;
-import android.content.Context;
import android.util.Log;
+import androidx.lifecycle.MutableLiveData;
+
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.alarm.AlarmClockData;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
import com.uiuios.aios.bean.BaseResponse;
+import com.uiuios.aios.databinding.ActivityAlarmBinding;
import com.uiuios.aios.network.NetInterfaceManager;
import java.util.List;
@@ -13,40 +16,22 @@ import java.util.List;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
-import io.reactivex.rxjava3.subjects.BehaviorSubject;
-public class AlarmPresenter implements AlarmContact.Presenter {
- private static final String TAG = AlarmPresenter.class.getSimpleName();
-
- private AlarmContact.AlarmView mView;
- private Context mContext;
-
- AlarmPresenter(Context context) {
- this.mContext = context;
- }
-
- private BehaviorSubject lifecycle;
-
- void setLifecycle(BehaviorSubject lifecycle) {
- this.lifecycle = lifecycle;
- }
-
- public BehaviorSubject getLifecycle() {
- return lifecycle;
- }
+public class AlarmViewModel extends BaseViewModel {
@Override
- public void attachView(@NonNull AlarmContact.AlarmView view) {
- this.mView = view;
+ public ActivityAlarmBinding getVDBinding() {
+ return binding;
}
+ private static final String TAG = AlarmViewModel.class.getSimpleName();
+
@Override
- public void detachView() {
- this.mView = null;
+ public void onDestroy() {
+
}
- @Override
public void getAlarmClock() {
NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() {
@Override
@@ -70,7 +55,12 @@ public class AlarmPresenter implements AlarmContact.Presenter {
});
}
- @Override
+ private MutableLiveData> mAlarmClockDataData = new MutableLiveData<>();
+
+ public MutableLiveData> getAlarmClockDataData() {
+ return mAlarmClockDataData;
+ }
+
public void getAlarmClock(int type) {
Log.e(TAG, "getAlarmClock: " + type);
NetInterfaceManager.getInstance().getAlarmClockObservable(type)
@@ -83,7 +73,7 @@ public class AlarmPresenter implements AlarmContact.Presenter {
@Override
public void onNext(@NonNull BaseResponse> listBaseResponse) {
Log.e("getAlarmClock", "onNext: " + listBaseResponse);
- mView.setAlarmClock(listBaseResponse.data);
+ mAlarmClockDataData.setValue(listBaseResponse.data);
}
@Override
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddActivity.java
index 8cb67ba..238a767 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddActivity.java
@@ -9,15 +9,9 @@ import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
import android.widget.PopupWindow;
-import android.widget.RadioButton;
import android.widget.TextView;
-import androidx.constraintlayout.widget.ConstraintLayout;
-
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.CustomListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
@@ -30,19 +24,18 @@ 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.shehuan.niv.NiceImageView;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.alarm.AlarmUtils;
import com.uiuios.aios.base.GlideEngine;
-import com.uiuios.aios.base.mvp.BaseMvpActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
+import com.uiuios.aios.databinding.ActivityAddAlarmBinding;
import com.uiuios.aios.service.main.MainService;
import com.uiuios.aios.utils.FFmpegUtils;
import com.uiuios.aios.utils.FileUtil;
import com.uiuios.aios.utils.ScreenUtil;
import com.uiuios.aios.utils.TimeUtils;
-
import com.uiuios.aios.utils.Utils;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
@@ -55,8 +48,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
@@ -64,42 +55,9 @@ import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
-public class AlarmClockAddActivity extends BaseMvpActivity {
+public class AlarmClockAddActivity extends BaseMvvmActivity {
private static final String TAG = AlarmClockAddActivity.class.getSimpleName();
- @BindView(R.id.cl_content)
- ConstraintLayout cl_content;
- @BindView(R.id.ll_type)
- LinearLayout ll_type;
- @BindView(R.id.cl_type)
- ConstraintLayout cl_type;
- @BindView(R.id.tv_type)
- TextView tv_type;
- @BindView(R.id.cl_pic)
- ConstraintLayout cl_pic;
- @BindView(R.id.et_activation)
- EditText et_activation;
- @BindView(R.id.nv_pic)
- NiceImageView nv_pic;
- @BindView(R.id.iv_back)
- ImageView iv_back;
- @BindView(R.id.tv_duration)
- TextView tv_duration;
-
- @BindView(R.id.rb1)
- RadioButton rb1;
- @BindView(R.id.rb2)
- RadioButton rb2;
- @BindView(R.id.rb_all)
- RadioButton rb_all;
- @BindView(R.id.rb_look)
- RadioButton rb_look;
- @BindView(R.id.rb_reserve)
- RadioButton rb_reserve;
-
- @BindView(R.id.iv_add)
- ImageView iv_add;
-
private PopupWindow mPopupWindow;
private TimePickerView pvTime;
@@ -115,6 +73,14 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
return R.layout.activity_add_alarm;
}
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
+ }
+
@Override
public void initView() {
getLifecycleSubject().onNext(ActivityEvent.CREATE);
@@ -123,95 +89,94 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
.fitWindow(true)
.apply();
- ButterKnife.bind(this);
initTimePicker();
- rb1.setChecked(true);
- rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rb1.setChecked(true);
+ mViewDataBinding.rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
ColorStateList colorStateList = getResources().getColorStateList(R.color.white);
- rb1.setTextColor(colorStateList);
+ mViewDataBinding.rb1.setTextColor(colorStateList);
mDayType = 1;
} else {
ColorStateList colorStateList = getResources().getColorStateList(R.color.radio_botton_gray);
- rb1.setTextColor(colorStateList);
+ mViewDataBinding.rb1.setTextColor(colorStateList);
}
}
});
- rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
ColorStateList colorStateList = getResources().getColorStateList(R.color.white);
- rb2.setTextColor(colorStateList);
+ mViewDataBinding.rb2.setTextColor(colorStateList);
mDayType = 2;
} else {
ColorStateList colorStateList = getResources().getColorStateList(R.color.radio_botton_gray);
- rb2.setTextColor(colorStateList);
+ mViewDataBinding.rb2.setTextColor(colorStateList);
}
}
});
- rb_all.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rbAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mClockType = 1;
- et_activation.setText("用药闹钟");
+ mViewDataBinding.etActivation.setText("用药闹钟");
} else {
}
}
});
- rb_look.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rbLook.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mClockType = 2;
- et_activation.setText("接送闹钟");
+ mViewDataBinding.etActivation.setText("接送闹钟");
} else {
}
}
});
- rb_reserve.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rbReserve.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mClockType = 3;
- et_activation.setText("预约闹钟");
+ mViewDataBinding.etActivation.setText("预约闹钟");
} else {
}
}
});
- cl_pic.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openSelector();
}
});
- cl_type.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clType.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// showTimeFilterWindow();
}
});
- nv_pic.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.nvPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openSelector();
}
});
- iv_add.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkContent();
}
});
- iv_back.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
@@ -237,7 +202,7 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
@Override
public void onClick(View view) {
mDayType = 1;
- tv_type.setText("只响一次");
+ mViewDataBinding.tvType.setText("只响一次");
mPopupWindow.dismiss();
}
});
@@ -245,7 +210,7 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
@Override
public void onClick(View view) {
mDayType = 2;
- tv_type.setText("每天");
+ mViewDataBinding.tvType.setText("每天");
mPopupWindow.dismiss();
}
});
@@ -253,7 +218,7 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
@Override
public void onClick(View view) {
mDayType = 3;
- tv_type.setText("周一至周五");
+ mViewDataBinding.tvType.setText("周一至周五");
mPopupWindow.dismiss();
}
});
@@ -261,7 +226,7 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
@Override
public void onClick(View view) {
mDayType = 4;
- tv_type.setText("周六至周日");
+ mViewDataBinding.tvType.setText("周六至周日");
mPopupWindow.dismiss();
}
});
@@ -269,11 +234,11 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
if (mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
} else {
- Log.e(TAG, "showTimeFilterWindow: right " + tv_type.getRight());
- Log.e(TAG, "showTimeFilterWindow: top " + tv_type.getTop());
- Log.e(TAG, "showTimeFilterWindow: right " + cl_type.getRight());
- Log.e(TAG, "showTimeFilterWindow: top " + cl_type.getTop());
- mPopupWindow.showAtLocation(cl_type, Gravity.END, 20, 0);
+ Log.e(TAG, "showTimeFilterWindow: right " + mViewDataBinding.tvType.getRight());
+ Log.e(TAG, "showTimeFilterWindow: top " + mViewDataBinding.tvType.getTop());
+ Log.e(TAG, "showTimeFilterWindow: right " + mViewDataBinding.clType.getRight());
+ Log.e(TAG, "showTimeFilterWindow: top " + mViewDataBinding.clType.getTop());
+ mPopupWindow.showAtLocation(mViewDataBinding.clType, Gravity.END, 20, 0);
}
}
@@ -282,7 +247,7 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
private void checkContent() {
pvTime.returnData();
- if (TextUtils.isEmpty(et_activation.getText())) {
+ if (TextUtils.isEmpty(mViewDataBinding.etActivation.getText())) {
Toaster.show("请输入标题");
return;
}
@@ -304,7 +269,7 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
alarmClockData.setFile(mPictrueFilePath);
alarmClockData.setType(mDayType);
alarmClockData.setTime(timeStamp);
- alarmClockData.setTitle(et_activation.getText().toString());
+ alarmClockData.setTitle(mViewDataBinding.etActivation.getText().toString());
alarmClockData.setRemind_type(0);
alarmClockData.setIs_onoff(1);
alarmClockData.setClazz(mClockType);
@@ -313,7 +278,7 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
params.put("sn", Utils.getSerial());
params.put("time", timeStamp);
params.put("type", String.valueOf(mDayType));
- params.put("title", et_activation.getText().toString());
+ params.put("title", mViewDataBinding.etActivation.getText().toString());
params.put("remind_type", "0");
params.put("is_onoff", "1");
params.put("class", String.valueOf(mClockType));
@@ -390,9 +355,9 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
File file = new File(mPictrueFilePath);
if (file.exists()) {
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtil.dip2px(AlarmClockAddActivity.this, 8F)));
- Glide.with(nv_pic).load(file).apply(options).into(nv_pic);
- nv_pic.setVisibility(View.VISIBLE);
- cl_pic.setVisibility(View.GONE);
+ Glide.with(mViewDataBinding.nvPic).load(file).apply(options).into(mViewDataBinding.nvPic);
+ mViewDataBinding.nvPic.setVisibility(View.VISIBLE);
+ mViewDataBinding.clPic.setVisibility(View.GONE);
if (FileUtil.isVideoFile(mPictrueFilePath)) {
FFmpegUtils.getDurationInMilliseconds(mPictrueFilePath, new Observer() {
@Override
@@ -403,7 +368,7 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
@Override
public void onNext(@NonNull Integer integer) {
Log.e("openSelector", "onNext: " + integer);
- tv_duration.setText(TimeUtils.secToTime(integer));
+ mViewDataBinding.tvDuration.setText(TimeUtils.secToTime(integer));
}
@Override
@@ -417,12 +382,12 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
}
});
} else {
- tv_duration.setText("");
+ mViewDataBinding.tvDuration.setText("");
}
} else {
mPictrueFilePath = "";
- nv_pic.setVisibility(View.GONE);
- cl_pic.setVisibility(View.VISIBLE);
+ mViewDataBinding.nvPic.setVisibility(View.GONE);
+ mViewDataBinding.clPic.setVisibility(View.VISIBLE);
}
}
@@ -466,12 +431,12 @@ public class AlarmClockAddActivity extends BaseMvpActivity {
.setContentTextSize(30)
.setDate(selectedDate)
.setRangDate(startDate, selectedDate)
- .setDecorView(cl_content)//非dialog模式下,设置ViewGroup, pickerView将会添加到这个ViewGroup中
+ .setDecorView(mViewDataBinding.clContent)//非dialog模式下,设置ViewGroup, pickerView将会添加到这个ViewGroup中
.setOutSideColor(0x00000000)
.setOutSideCancelable(false)
.build();
pvTime.setKeyBackCancelable(false);//系统返回键监听屏蔽掉
- pvTime.show(cl_content, false);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view
+ pvTime.show(mViewDataBinding.clContent, false);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddViewModel.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddViewModel.java
new file mode 100644
index 0000000..b4f81ec
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.alarmclock.add;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityAddAlarmBinding;
+
+public class AlarmClockAddViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityAddAlarmBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddActivity.java
index 4b83f2b..3bd13b8 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddActivity.java
@@ -83,7 +83,6 @@ public class PortAlarmClockAddActivity extends BaseMvvmActivity {
-
+public class AlarmClockEditActivity extends BaseMvvmActivity {
private static final String TAG = AlarmClockEditActivity.class.getSimpleName();
- private final BehaviorSubject lifecycleSubject = BehaviorSubject.create();
private LoadingDialog mLoadingDialog;
-
- @BindView(R.id.cl_content)
- ConstraintLayout cl_content;
- @BindView(R.id.ll_type)
- LinearLayout ll_type;
- @BindView(R.id.cl_type)
- ConstraintLayout cl_type;
- @BindView(R.id.tv_type)
- TextView tv_type;
- @BindView(R.id.cl_pic)
- ConstraintLayout cl_pic;
- @BindView(R.id.et_activation)
- EditText et_activation;
- @BindView(R.id.nv_pic)
- NiceImageView nv_pic;
- @BindView(R.id.iv_back)
- ImageView iv_back;
- @BindView(R.id.tv_duration)
- TextView tv_duration;
-
- @BindView(R.id.rb1)
- RadioButton rb1;
- @BindView(R.id.rb2)
- RadioButton rb2;
- @BindView(R.id.rb_all)
- RadioButton rb_all;
- @BindView(R.id.rb_look)
- RadioButton rb_look;
- @BindView(R.id.rb_reserve)
- RadioButton rb_reserve;
-
- @BindView(R.id.iv_add)
- ImageView iv_add;
-
private PopupWindow mMenuPopupWindow;
private TimePickerView pvTime;
@@ -128,132 +73,77 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
private int mId;
private AlarmClockData mAlarmClockData;
+
@Override
- @androidx.annotation.NonNull
- @CheckResult
- public final Observable lifecycle() {
- return lifecycleSubject.hide();
+ protected int getLayoutId() {
+ return R.layout.activity_add_alarm;
}
@Override
- @androidx.annotation.NonNull
- @CheckResult
- public final LifecycleTransformer bindUntilEvent(@androidx.annotation.NonNull ActivityEvent event) {
- return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
@Override
- @androidx.annotation.NonNull
- @CheckResult
- public final LifecycleTransformer bindToLifecycle() {
- return RxLifecycleAndroid.bindActivity(lifecycleSubject);
- }
-
- @Override
- @CallSuper
- protected void onStart() {
- super.onStart();
- lifecycleSubject.onNext(ActivityEvent.START);
- }
-
- @Override
- @CallSuper
- protected void onResume() {
- super.onResume();
- lifecycleSubject.onNext(ActivityEvent.RESUME);
- }
-
- @Override
- @CallSuper
- protected void onPause() {
- lifecycleSubject.onNext(ActivityEvent.PAUSE);
- super.onPause();
- }
-
- @Override
- @CallSuper
- protected void onStop() {
- lifecycleSubject.onNext(ActivityEvent.STOP);
- super.onStop();
- }
-
- @Override
- @CallSuper
- protected void onDestroy() {
- lifecycleSubject.onNext(ActivityEvent.DESTROY);
- super.onDestroy();
- }
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_add_alarm);
- lifecycleSubject.onNext(ActivityEvent.CREATE);
- UltimateBarX.statusBarOnly(this)
- .colorRes(R.color.default_blue)
- .fitWindow(true)
- .apply();
- initView();
- initData();
- }
-
- private void initView() {
- ButterKnife.bind(this);
+ public void initView() {
// tv_title.setText("编辑闹钟");
initTimePicker();
- cl_pic.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openSelector();
}
});
- cl_type.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clType.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// showTimeFilterWindow();
}
});
- nv_pic.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.nvPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openSelector();
}
});
- iv_back.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
- rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {
ColorStateList colorStateList = getResources().getColorStateList(R.color.white);
- rb1.setTextColor(colorStateList);
+ mViewDataBinding.rb1.setTextColor(colorStateList);
mDayType = 1;
} else {
ColorStateList colorStateList = getResources().getColorStateList(R.color.radio_botton_gray);
- rb1.setTextColor(colorStateList);
+ mViewDataBinding.rb1.setTextColor(colorStateList);
}
}
});
- rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {
ColorStateList colorStateList = getResources().getColorStateList(R.color.white);
- rb2.setTextColor(colorStateList);
+ mViewDataBinding.rb2.setTextColor(colorStateList);
mDayType = 2;
} else {
ColorStateList colorStateList = getResources().getColorStateList(R.color.radio_botton_gray);
- rb2.setTextColor(colorStateList);
+ mViewDataBinding.rb2.setTextColor(colorStateList);
}
}
});
- rb_all.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rbAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
@@ -263,7 +153,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
}
}
});
- rb_look.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rbLook.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
@@ -273,7 +163,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
}
}
});
- rb_reserve.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ mViewDataBinding.rbReserve.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
@@ -283,7 +173,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
}
}
});
- iv_add.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkContent();
@@ -291,7 +181,8 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
});
}
- private void initData() {
+ @Override
+ public void initData() {
Intent intent = getIntent();
if (intent == null) {
Toaster.show("获取闹钟信息失败");
@@ -308,7 +199,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
AlarmClockData alarmClockData = clockDataHashMap.get(mId);
if (alarmClockData == null || !alarmClockData.isIs_local()) {
NetInterfaceManager.getInstance().getAlarmClockByIdObservable(mId)
- .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY))
+ .compose(RxLifecycle.bindUntilEvent(getLifecycleSubject(), ActivityEvent.DESTROY))
.subscribe(new Observer>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -355,33 +246,33 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
switch (mDayType) {
default:
case AlarmUtils.ONCE:
- rb1.setChecked(true);
-// tv_type.setText("只响一次");
+ mViewDataBinding.rb1.setChecked(true);
+// tvType.setText("只响一次");
break;
case AlarmUtils.LOOP:
- rb2.setChecked(true);
-// tv_type.setText("每天");
+ mViewDataBinding.rb2.setChecked(true);
+// tvType.setText("每天");
break;
// case AlarmUtils.WORKING_DAY:
// rb3.setChecked(true);
-// tv_type.setText("周一至周五");
+// tvType.setText("周一至周五");
// break;
// case AlarmUtils.OFF_DAY:
// rb4.setChecked(true);
-// tv_type.setText("周六至周日");
+// tvType.setText("周六至周日");
// break;
}
mClockType = alarmClockData.getClazz();
switch (mClockType) {
case 1:
default:
- rb_all.setChecked(true);
+ mViewDataBinding.rbAll.setChecked(true);
break;
case 2:
- rb_look.setChecked(true);
+ mViewDataBinding.rbLook.setChecked(true);
break;
case 3:
- rb_reserve.setChecked(true);
+ mViewDataBinding.rbReserve.setChecked(true);
break;
}
String time = alarmClockData.getTime();
@@ -391,28 +282,28 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
Log.e(TAG, "setAlarmClockInfo: " + date.getTimeInMillis());
pvTime.setDate(date);
String title = alarmClockData.getTitle();
- et_activation.setText(title);
+ mViewDataBinding.etActivation.setText(title);
String fileUrl = alarmClockData.getFile();
mPictrueFilePath = fileUrl;
String fileName = Utils.getFileNamefromURL(fileUrl);
File file = new File(Utils.getDownLoadPath(AlarmClockEditActivity.this) + fileName);
if (TextUtils.isEmpty(fileUrl)) {
- cl_pic.setVisibility(View.VISIBLE);
- nv_pic.setVisibility(View.GONE);
+ mViewDataBinding.clPic.setVisibility(View.VISIBLE);
+ mViewDataBinding.nvPic.setVisibility(View.GONE);
} else {
if (file.exists() && !file.isDirectory()) {
- GlideLoadUtils.getInstance().glideLoad(this, file, nv_pic);
+ GlideLoadUtils.getInstance().glideLoad(this, file, mViewDataBinding.nvPic);
} else {
- GlideLoadUtils.getInstance().glideLoad(this, fileUrl, nv_pic);
+ GlideLoadUtils.getInstance().glideLoad(this, fileUrl, mViewDataBinding.nvPic);
}
- cl_pic.setVisibility(View.GONE);
- nv_pic.setVisibility(View.VISIBLE);
+ mViewDataBinding.clPic.setVisibility(View.GONE);
+ mViewDataBinding.nvPic.setVisibility(View.VISIBLE);
}
}
private void checkContent() {
pvTime.returnData();
- if (TextUtils.isEmpty(et_activation.getText())) {
+ if (TextUtils.isEmpty(mViewDataBinding.etActivation.getText())) {
Toaster.show("请输入标题");
return;
}
@@ -442,7 +333,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
mAlarmClockData.setId(mId);
mAlarmClockData.setType(mDayType);
mAlarmClockData.setTime(timeStamp);
- mAlarmClockData.setTitle(et_activation.getText().toString());
+ mAlarmClockData.setTitle(mViewDataBinding.etActivation.getText().toString());
mAlarmClockData.setFile(mPictrueFilePath);
mAlarmClockData.setRemind_type(0);
mAlarmClockData.setIs_onoff(1);
@@ -455,7 +346,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
params.put("id", String.valueOf(mId));
params.put("type", String.valueOf(mDayType));
params.put("time", timeStamp);
- params.put("title", et_activation.getText().toString());
+ params.put("title", mViewDataBinding.etActivation.getText().toString());
params.put("remind_type", "0");
params.put("is_onoff", "1");
params.put("class", String.valueOf(mClockType));
@@ -479,13 +370,13 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
finish();
} else {
NetInterfaceManager.getInstance().getAlarmClockEditObservable(params, body)
- .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY))
+ .compose(RxLifecycle.bindUntilEvent(getLifecycleSubject(), ActivityEvent.DESTROY))
.subscribe(new Observer() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("checkContent", "onSubscribe: ");
Toaster.show("正在上传");
- iv_add.setEnabled(false);
+ mViewDataBinding.ivAdd.setEnabled(false);
}
@Override
@@ -515,7 +406,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
@Override
public void onComplete() {
Log.e("checkContent", "onComplete: ");
- iv_add.setEnabled(true);
+ mViewDataBinding.ivAdd.setEnabled(true);
finish();
mLoadingDialog.close();
}
@@ -537,7 +428,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
@Override
public void onClick(View view) {
mDayType = 1;
- tv_type.setText("只响一次");
+ mViewDataBinding.tvType.setText("只响一次");
mMenuPopupWindow.dismiss();
}
});
@@ -545,7 +436,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
@Override
public void onClick(View view) {
mDayType = 2;
- tv_type.setText("每天");
+ mViewDataBinding.tvType.setText("每天");
mMenuPopupWindow.dismiss();
}
});
@@ -553,7 +444,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
@Override
public void onClick(View view) {
mDayType = 3;
- tv_type.setText("周一至周五");
+ mViewDataBinding.tvType.setText("周一至周五");
mMenuPopupWindow.dismiss();
}
});
@@ -561,7 +452,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
@Override
public void onClick(View view) {
mDayType = 4;
- tv_type.setText("周六至周日");
+ mViewDataBinding.tvType.setText("周六至周日");
mMenuPopupWindow.dismiss();
}
});
@@ -569,11 +460,11 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
if (mMenuPopupWindow.isShowing()) {
mMenuPopupWindow.dismiss();
} else {
- Log.e(TAG, "showTimeFilterWindow: right " + tv_type.getRight());
- Log.e(TAG, "showTimeFilterWindow: top " + tv_type.getTop());
- Log.e(TAG, "showTimeFilterWindow: right " + cl_type.getRight());
- Log.e(TAG, "showTimeFilterWindow: top " + cl_type.getTop());
- mMenuPopupWindow.showAtLocation(cl_type, Gravity.END, 20, 0);
+ Log.e(TAG, "showTimeFilterWindow: right " + mViewDataBinding.tvType.getRight());
+ Log.e(TAG, "showTimeFilterWindow: top " + mViewDataBinding.tvType.getTop());
+ Log.e(TAG, "showTimeFilterWindow: right " + mViewDataBinding.clType.getRight());
+ Log.e(TAG, "showTimeFilterWindow: top " + mViewDataBinding.clType.getTop());
+ mMenuPopupWindow.showAtLocation(mViewDataBinding.clType, Gravity.END, 20, 0);
}
}
@@ -589,9 +480,9 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
File file = new File(mPictrueFilePath);
if (file.exists()) {
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtil.dip2px(AlarmClockEditActivity.this, 8F)));
- Glide.with(nv_pic).load(file).apply(options).into(nv_pic);
- nv_pic.setVisibility(View.VISIBLE);
- cl_pic.setVisibility(View.GONE);
+ Glide.with(mViewDataBinding.nvPic).load(file).apply(options).into(mViewDataBinding.nvPic);
+ mViewDataBinding.nvPic.setVisibility(View.VISIBLE);
+ mViewDataBinding.clPic.setVisibility(View.GONE);
if (FileUtil.isVideoFile(mPictrueFilePath)) {
FFmpegUtils.getDurationInMilliseconds(mPictrueFilePath, new Observer() {
@Override
@@ -602,7 +493,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
@Override
public void onNext(@NonNull Integer integer) {
Log.e("openSelector", "onNext: " + integer);
- tv_duration.setText(TimeUtils.secToTime(integer));
+ mViewDataBinding.tvDuration.setText(TimeUtils.secToTime(integer));
}
@Override
@@ -616,12 +507,12 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
}
});
} else {
- tv_duration.setText("");
+ mViewDataBinding.tvDuration.setText("");
}
} else {
mPictrueFilePath = "";
- nv_pic.setVisibility(View.GONE);
- cl_pic.setVisibility(View.VISIBLE);
+ mViewDataBinding.nvPic.setVisibility(View.GONE);
+ mViewDataBinding.clPic.setVisibility(View.VISIBLE);
}
}
@@ -665,12 +556,12 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
.setContentTextSize(30)
.setDate(selectedDate)
.setRangDate(startDate, selectedDate)
- .setDecorView(cl_content)//非dialog模式下,设置ViewGroup, pickerView将会添加到这个ViewGroup中
+ .setDecorView(mViewDataBinding.clContent)//非dialog模式下,设置ViewGroup, pickerView将会添加到这个ViewGroup中
.setOutSideColor(0x00000000)
.setOutSideCancelable(false)
.build();
pvTime.setKeyBackCancelable(false);//系统返回键监听屏蔽掉
- pvTime.show(cl_content, false);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view
+ pvTime.show(mViewDataBinding.clContent, false);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/edit/AlarmClockEditViewModel.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/edit/AlarmClockEditViewModel.java
new file mode 100644
index 0000000..75deb3b
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/edit/AlarmClockEditViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.alarmclock.edit;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityAddAlarmBinding;
+
+public class AlarmClockEditViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityAddAlarmBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/ArticleActivity.java b/app/src/main/java/com/uiuios/aios/activity/article/ArticleActivity.java
similarity index 55%
rename from app/src/main/java/com/uiuios/aios/activity/ArticleActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/article/ArticleActivity.java
index a14c830..bca3c37 100644
--- a/app/src/main/java/com/uiuios/aios/activity/ArticleActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/article/ArticleActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity;
+package com.uiuios.aios.activity.article;
import android.content.Intent;
import android.graphics.Bitmap;
@@ -7,42 +7,35 @@ import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.databinding.DataBindingUtil;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
-import com.shehuan.niv.NiceImageView;
import com.uiuios.aios.R;
-import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.ArticleInfo;
+import com.uiuios.aios.databinding.ActivityArticlBinding;
-import butterknife.BindView;
-import butterknife.ButterKnife;
+public class ArticleActivity extends BaseMvvmActivity {
-public class ArticleActivity extends BaseDataBindingActivity {
- @BindView(R.id.iv_back)
- ImageView iv_back;
- @BindView(R.id.tv_title)
- TextView tv_title;
- @BindView(R.id.tv_content)
- TextView tv_content;
- @BindView(R.id.iv_img)
- NiceImageView iv_img;
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_articl;
+ }
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this, R.layout.activity_articl);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
- ButterKnife.bind(this);
Intent intent = getIntent();
if (intent == null) {
finish();
@@ -51,35 +44,35 @@ public class ArticleActivity extends BaseDataBindingActivity {
if (articleInfo == null) {
finish();
}
- iv_back.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
- tv_title.setText(articleInfo.getTitle());
- tv_content.setText(articleInfo.getContent());
- ViewTreeObserver observer = iv_img.getViewTreeObserver();
+ mViewDataBinding.tvTitle.setText(articleInfo.getTitle());
+ mViewDataBinding.tvContent.setText(articleInfo.getContent());
+ ViewTreeObserver observer = mViewDataBinding.ivImg.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
- ViewGroup.LayoutParams layoutParams = iv_img.getLayoutParams();
- int width = iv_img.getWidth();
+ ViewGroup.LayoutParams layoutParams = mViewDataBinding.ivImg.getLayoutParams();
+ int width = mViewDataBinding.ivImg.getWidth();
// layoutParams.height = width;
-// iv_img.setLayoutParams(layoutParams);
+// ivImg.setLayoutParams(layoutParams);
}
});
- Glide.with(iv_img).asBitmap().load(articleInfo.getImg()).into(new CustomTarget() {
+ Glide.with(mViewDataBinding.ivImg).asBitmap().load(articleInfo.getImg()).into(new CustomTarget() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition super Bitmap> transition) {
int imgWidth = resource.getWidth();
int imgHeight = resource.getHeight();
- iv_img.setImageBitmap(resource);
+ mViewDataBinding.ivImg.setImageBitmap(resource);
Log.e("into", "onResourceReady: width = " + imgWidth + "height = " + imgHeight);
- ViewGroup.LayoutParams layoutParams = iv_img.getLayoutParams();
- int width = iv_img.getWidth();
+ ViewGroup.LayoutParams layoutParams = mViewDataBinding.ivImg.getLayoutParams();
+ int width = mViewDataBinding.ivImg.getWidth();
layoutParams.height = (int) (imgHeight * (1.0f * width / imgWidth));
- iv_img.setLayoutParams(layoutParams);
+ mViewDataBinding.ivImg.setLayoutParams(layoutParams);
}
@Override
@@ -93,4 +86,6 @@ public class ArticleActivity extends BaseDataBindingActivity {
public void initData() {
}
+
+
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/article/ArticleViewModel.java b/app/src/main/java/com/uiuios/aios/activity/article/ArticleViewModel.java
new file mode 100644
index 0000000..e162c72
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/article/ArticleViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.article;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityArticlBinding;
+
+public class ArticleViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityArticlBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java b/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java
index 9ecf5d7..3bb1a6b 100644
--- a/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java
@@ -21,17 +21,12 @@ 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.trello.rxlifecycle4.RxLifecycle;
-import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
import com.uiuios.aios.base.GlideEngine;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.BaseResponse;
-import com.uiuios.aios.bean.WechatInfo;
import com.uiuios.aios.databinding.ActivityAddWechatContactBinding;
-import com.uiuios.aios.db.ContactManager;
import com.uiuios.aios.manager.RemoteManager;
-import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.utils.ScreenUtil;
import com.xiasuhuei321.loadingdialog.view.LoadingDialog;
@@ -41,8 +36,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
-import io.reactivex.rxjava3.annotations.NonNull;
-import io.reactivex.rxjava3.disposables.Disposable;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
diff --git a/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java b/app/src/main/java/com/uiuios/aios/activity/control/ControlActivity.java
similarity index 81%
rename from app/src/main/java/com/uiuios/aios/activity/ControlActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/control/ControlActivity.java
index 5dc9ce5..588e43e 100644
--- a/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/control/ControlActivity.java
@@ -1,9 +1,8 @@
-package com.uiuios.aios.activity;
+package com.uiuios.aios.activity.control;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -22,24 +21,18 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
-import android.widget.ImageView;
import android.widget.SeekBar;
-import android.widget.TextView;
-
-import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.databinding.DataBindingUtil;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
-import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.config.CommonConfig;
+import com.uiuios.aios.databinding.ActivityControlBinding;
import com.uiuios.aios.manager.AmapManager;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.utils.BrightnessUtils;
-import com.uiuios.aios.view.RulerSeekBar;
-
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
@@ -47,73 +40,27 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.OnClick;
-
-public class ControlActivity extends BaseDataBindingActivity {
+public class ControlActivity extends BaseMvvmActivity {
private static final String TAG = ControlActivity.class.getSimpleName();
- @BindView(R.id.iv_back)
- ImageView iv_back;
- @BindView(R.id.tv_wifi)
- TextView tv_wifi;
- @BindView(R.id.tv_bt)
- TextView tv_bt;
-
- @BindView(R.id.seekBar)
- RulerSeekBar seekBar;
- @BindView(R.id.seekbar_brightness)
- SeekBar seekbar_brightness;
- @BindView(R.id.seekbar_sound)
- SeekBar seekbar_sound;
-
- @BindView(R.id.tv_sound)
- TextView tv_sound;
- @BindView(R.id.tv_battery)
- TextView tv_battery;
- @BindView(R.id.tv_flashlight)
- TextView tv_flashlight;
- @BindView(R.id.tv_brightness)
- TextView tv_brightness;
- @BindView(R.id.tv_location)
- TextView tv_location;
- @BindView(R.id.cl_wifi)
- ConstraintLayout cl_wifi;
- @BindView(R.id.cl_bt)
- ConstraintLayout cl_bt;
- @BindView(R.id.cl_battery)
- ConstraintLayout cl_battery;
- @BindView(R.id.cl_flashlight)
- ConstraintLayout cl_flashlight;
- @BindView(R.id.cl_location)
- ConstraintLayout cl_location;
-
-
- @OnClick({R.id.iv_back})
- void OnClick(View v) {
- switch (v.getId()) {
- case R.id.iv_back:
- finish();
- break;
- default:
- }
- }
-
-
- private ContentResolver crv;
private static final String ACTION_FLASHLIGHT_CHANGED =
"com.android.settings.flashlight.action.FLASHLIGHT_CHANGED";
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_control;
+ }
+
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this,R.layout.activity_control);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
- ButterKnife.bind(this);
- crv = getContentResolver();
getWifi();
registerReceivers();
getBluetooth();
@@ -125,7 +72,7 @@ public class ControlActivity extends BaseDataBindingActivity {
getLocation();
getBrightness();
getSound();
- cl_flashlight.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clFlashlight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
@@ -136,7 +83,7 @@ public class ControlActivity extends BaseDataBindingActivity {
}
}
});
- cl_battery.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clBattery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Settings.ACTION_BATTERY_SAVER_SETTINGS));
@@ -150,7 +97,7 @@ public class ControlActivity extends BaseDataBindingActivity {
}
private void getWifi() {
- cl_wifi.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
@@ -159,10 +106,10 @@ public class ControlActivity extends BaseDataBindingActivity {
});
if (isWifiEnabled()) {
// tv_wifi_ssid.setText(getConnectWifiSsid());
- cl_wifi.setBackground(getDrawable(R.drawable.control_background_item));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item));
} else {
// tv_wifi_ssid.setText("未连接");
- cl_wifi.setBackground(getDrawable(R.drawable.control_background_item_dis));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item_dis));
}
}
@@ -214,14 +161,14 @@ public class ControlActivity extends BaseDataBindingActivity {
if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
Log.e(TAG, "wifi断开");
// tv_wifi_ssid.setText("未连接");
- cl_wifi.setBackground(getDrawable(R.drawable.control_background_item_dis));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item_dis));
} else if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
//获取当前wifi名称
String newSSID = wifiInfo.getSSID();
// tv_wifi_ssid.setText(getConnectWifiSsid());
- cl_wifi.setBackground(getDrawable(R.drawable.control_background_item));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item));
}
break;
//wifi打开与否
@@ -230,7 +177,7 @@ public class ControlActivity extends BaseDataBindingActivity {
if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
Log.e(TAG, "系统关闭wifi");
// tv_wifi_ssid.setText("关");
- cl_wifi.setBackground(getDrawable(R.drawable.control_background_item_dis));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item_dis));
} else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
Log.e(TAG, "系统开启wifi");
}
@@ -277,18 +224,18 @@ public class ControlActivity extends BaseDataBindingActivity {
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter.isEnabled()) {
// if (isConnected()) {
-// cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
+// clBt.setBackground(getDrawable(R.drawable.control_background_item));
// tv_bt_ssid.setText(getBluetoothDeviceName());
// } else {
-// cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis));
+// clBt.setBackground(getDrawable(R.drawable.control_background_item_dis));
// tv_bt_ssid.setText("未连接");
// }
} else {
- cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis));
+ mViewDataBinding.clBt.setBackground(getDrawable(R.drawable.control_background_item_dis));
// tv_bt_ssid.setText("已关闭");
}
getConnectedDevicesV1();
- cl_bt.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
@@ -425,30 +372,30 @@ public class ControlActivity extends BaseDataBindingActivity {
switch (blueState) {
case BluetoothAdapter.STATE_TURNING_ON:
// tv_bt_ssid.setText("正在打开");
- cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
+ mViewDataBinding.clBt.setBackground(getDrawable(R.drawable.control_background_item));
break;
case BluetoothAdapter.STATE_ON:
// tv_bt_ssid.setText("已打开");
- cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
+ mViewDataBinding.clBt.setBackground(getDrawable(R.drawable.control_background_item));
break;
case BluetoothAdapter.STATE_TURNING_OFF:
// tv_bt_ssid.setText("正在关闭");
- cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
+ mViewDataBinding.clBt.setBackground(getDrawable(R.drawable.control_background_item));
break;
case BluetoothAdapter.STATE_OFF:
// tv_bt_ssid.setText("已关闭");
- cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis));
+ mViewDataBinding.clBt.setBackground(getDrawable(R.drawable.control_background_item_dis));
break;
default:
}
break;
case BluetoothDevice.ACTION_ACL_CONNECTED:
// tv_bt_ssid.setText(getBluetoothDeviceName());
- cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
+ mViewDataBinding.clBt.setBackground(getDrawable(R.drawable.control_background_item));
break;
case BluetoothDevice.ACTION_ACL_DISCONNECTED:
// tv_bt_ssid.setText("未连接");
- cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis));
+ mViewDataBinding.clBt.setBackground(getDrawable(R.drawable.control_background_item_dis));
break;
default:
}
@@ -460,9 +407,9 @@ public class ControlActivity extends BaseDataBindingActivity {
private void getBattery() {
// tv_electricity.setText(getBatteryCapacity() + "%");
if (isBatteryCharging()) {
- cl_battery.setBackground(getDrawable(R.drawable.control_background_item));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item));
} else {
- cl_battery.setBackground(getDrawable(R.drawable.control_background_item_dis));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item_dis));
}
}
@@ -528,10 +475,10 @@ public class ControlActivity extends BaseDataBindingActivity {
Log.e(TAG, "onReceive: " + action);
switch (action) {
case Intent.ACTION_POWER_CONNECTED:
- cl_battery.setBackground(getDrawable(R.drawable.control_background_item));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item));
break;
case Intent.ACTION_POWER_DISCONNECTED:
- cl_battery.setBackground(getDrawable(R.drawable.control_background_item_dis));
+ mViewDataBinding.clBattery.setBackground(getDrawable(R.drawable.control_background_item_dis));
break;
// case Intent.ACTION_BATTERY_LEVEL_CHANGED:
// tv_electricity.setText(getBatteryCapacity() + "%");
@@ -547,23 +494,23 @@ public class ControlActivity extends BaseDataBindingActivity {
// private void getFlashlight() {
// if (isFlashlightAvailable()) {
// tv_flashlight_switch.setText("关");
-// cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
+// clFlashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
// } else {
// tv_flashlight_switch.setText("不可用");
-// cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
+// clFlashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
// return;
// }
//// if (isFlashlightEnabled()) {
//// tv_flashlight_switch.setText("开");
-//// cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item));
+//// clFlashlight.setBackground(getDrawable(R.drawable.control_background_item));
//// } else {
//// tv_flashlight_switch.setText("关");
-//// cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
+//// clFlashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
//// }
//
// cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
//
-// cl_flashlight.setOnClickListener(new View.OnClickListener() {
+// clFlashlight.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// if (flashing) {
@@ -575,7 +522,7 @@ public class ControlActivity extends BaseDataBindingActivity {
// }
// flashing = false;
// tv_flashlight_switch.setText("关");
-// cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
+// clFlashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
// } else {
// try {
// String CameraId = cameraManager.getCameraIdList()[0];
@@ -584,7 +531,7 @@ public class ControlActivity extends BaseDataBindingActivity {
// e.printStackTrace();
// }
// tv_flashlight_switch.setText("开");
-// cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item));
+// clFlashlight.setBackground(getDrawable(R.drawable.control_background_item));
// flashing = true;
// }
// }
@@ -631,23 +578,23 @@ public class ControlActivity extends BaseDataBindingActivity {
updateTimeUi();
// if (isFlashlightAvailable()) {
// tv_flashlight_switch.setText("关");
-// cl_flashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
+// clFlashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
// } else {
// tv_flashlight_switch.setText("不可用");
-// cl_flashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
+// clFlashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
// return;
// }
//// if (isFlashlightEnabled()) {
//// tv_flashlight_switch.setText("开");
-//// cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item));
+//// clFlashlight.setBackground(getDrawable(R.drawable.control_background_item));
//// } else {
//// tv_flashlight_switch.setText("关");
-//// cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
+//// clFlashlight.setBackground(getDrawable(R.drawable.control_background_item_dis));
//// }
//
// cameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
//
-// cl_flashlight.setOnClickListener(new View.OnClickListener() {
+// clFlashlight.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// if (flashing) {
@@ -659,7 +606,7 @@ public class ControlActivity extends BaseDataBindingActivity {
// }
// flashing = false;
// tv_flashlight_switch.setText("关");
-// cl_flashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
+// clFlashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item_dis));
// } else {
// try {
// String CameraId = cameraManager.getCameraIdList()[0];
@@ -668,7 +615,7 @@ public class ControlActivity extends BaseDataBindingActivity {
// e.printStackTrace();
// }
// tv_flashlight_switch.setText("开");
-// cl_flashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item));
+// clFlashlight.setBackground(mContext.getDrawable(R.drawable.control_background_item));
// flashing = true;
// }
// }
@@ -695,15 +642,15 @@ public class ControlActivity extends BaseDataBindingActivity {
}
// private boolean isFlashlightEnabled() {
-// return Settings.Secure.getInt(crv, Settings.Secure.FLASHLIGHT_ENABLED, 0) == 1;
+// return Settings.Secure.getInt(getContentResolver(), Settings.Secure.FLASHLIGHT_ENABLED, 0) == 1;
// }
private void getFontSize() {
- float fontScale = Settings.System.getFloat(crv, Settings.System.FONT_SCALE, 0.0f);
+ float fontScale = Settings.System.getFloat(getContentResolver(), Settings.System.FONT_SCALE, 0.0f);
Log.e(TAG, "getHardware: fontScale = " + fontScale);
List mEntries = Arrays.asList(getResources().getStringArray(R.array.entries_font_size));
List strEntryValues = Arrays.asList(getResources().getStringArray(R.array.entryvalues_font_size));
- seekBar.setMax(mEntries.size() - 1);
+ mViewDataBinding.seekBar.setMax(mEntries.size() - 1);
String font_size;
int index = strEntryValues.indexOf(String.valueOf(fontScale));
if (index == -1) {
@@ -712,11 +659,11 @@ public class ControlActivity extends BaseDataBindingActivity {
font_size = mEntries.get(index);
}
// tv_font_size.setText(font_size);
- seekBar.setProgress(index);
- seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+ mViewDataBinding.seekBar.setProgress(index);
+ mViewDataBinding.seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
- Settings.System.putFloat(crv, Settings.System.FONT_SCALE, Float.parseFloat(strEntryValues.get(i)));
+ Settings.System.putFloat(getContentResolver(), Settings.System.FONT_SCALE, Float.parseFloat(strEntryValues.get(i)));
}
@Override
@@ -735,11 +682,11 @@ public class ControlActivity extends BaseDataBindingActivity {
String addr = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE).decodeString(CommonConfig.MAP_ADDRESS_KEY);
if (TextUtils.isEmpty(addr) || "nullnull".equals(addr) || "null".equals(addr)) {
- tv_location.setText("未能获取到位置信息");
+ mViewDataBinding.tvLocation.setText("未能获取到位置信息");
} else {
- tv_location.setText(addr);
+ mViewDataBinding.tvLocation.setText(addr);
}
- cl_location.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.clLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AmapManager.getInstance().startLocation();
@@ -748,17 +695,17 @@ public class ControlActivity extends BaseDataBindingActivity {
}
private void getBrightness() {
- seekbar_brightness.setMax(255);
+ mViewDataBinding.seekbarBrightness.setMax(255);
//亮度
- int brightness = Settings.System.getInt(crv, Settings.System.SCREEN_BRIGHTNESS, 1);
- seekbar_brightness.setProgress(brightness);
+ int brightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 1);
+ mViewDataBinding.seekbarBrightness.setProgress(brightness);
Log.e(TAG, "getHardware: brightness = " + brightness);
int gamma = BrightnessUtils.convertLinearToGamma(brightness, 1, 255);
Log.e(TAG, "getHardware: gamma = " + gamma);
long percentage = Math.round((((double) gamma / 65535) * 100f));
// tv_brightness.setText(percentage + "%");
Log.e(TAG, "getHardware: percentage = " + percentage);
- seekbar_brightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+ mViewDataBinding.seekbarBrightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
Log.e(TAG, "onProgressChanged: i = " + i);
@@ -788,20 +735,20 @@ public class ControlActivity extends BaseDataBindingActivity {
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
//最大音量
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
- seekbar_sound.setMax(maxVolume);
+ mViewDataBinding.seekbarSound.setMax(maxVolume);
Log.e(TAG, "getHardware: maxVolume = " + maxVolume);
//音量
int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
- seekbar_sound.setProgress(streamVolume);
+ mViewDataBinding.seekbarSound.setProgress(streamVolume);
Log.e(TAG, "getHardware: streamVolume = " + streamVolume);
int currentVolume = (int) (((double) streamVolume / (double) maxVolume) * 100f);
Log.e(TAG, "getHardware: currentVolume = " + currentVolume);
- tv_sound.setText(currentVolume + "%");
- seekbar_sound.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+ mViewDataBinding.tvSound.setText(currentVolume + "%");
+ mViewDataBinding.seekbarSound.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
int volume = (int) (((double) i / (double) maxVolume) * 100f);
- tv_sound.setText(volume + "%");
+ mViewDataBinding.tvSound.setText(volume + "%");
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0);
}
@@ -823,4 +770,10 @@ public class ControlActivity extends BaseDataBindingActivity {
if (mWifiReceiver != null) unregisterReceiver(mWifiReceiver);
if (mTimeUpdateReceiver != null) unregisterReceiver(mTimeUpdateReceiver);
}
+
+ public class BtnClick {
+ public void exit(View view) {
+ finish();
+ }
+ }
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/control/ControlViewModel.java b/app/src/main/java/com/uiuios/aios/activity/control/ControlViewModel.java
new file mode 100644
index 0000000..4d52e50
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/control/ControlViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.control;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityControlBinding;
+
+public class ControlViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityControlBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/dailyapp/DailyAppActivity.java b/app/src/main/java/com/uiuios/aios/activity/dailyapp/DailyAppActivity.java
index b4ac196..3ee48f7 100644
--- a/app/src/main/java/com/uiuios/aios/activity/dailyapp/DailyAppActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/dailyapp/DailyAppActivity.java
@@ -2,55 +2,49 @@ package com.uiuios.aios.activity.dailyapp;
import android.content.res.Configuration;
import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
import com.uiuios.aios.R;
import com.uiuios.aios.adapter.DailyAppAdapter;
-import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.DailyAppBean;
+import com.uiuios.aios.databinding.ActivityDailyappBinding;
import com.uiuios.aios.manager.AppStatusManager;
import com.uiuios.aios.view.GridSpaceItemDecoration;
import java.util.List;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-public class DailyAppActivity extends BaseDataBindingActivity {
+public class DailyAppActivity extends BaseMvvmActivity {
private static final String TAG = DailyAppActivity.class.getSimpleName();
private DailyAppAdapter mDailyAppAdapter;
- @BindView(R.id.recyclerView)
- RecyclerView recyclerView;
- @BindView(R.id.iv_back)
- ImageView iv_back;
- @BindView(R.id.tv_appsize)
- TextView tv_appsize;
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_dailyapp;
+ }
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this,R.layout.activity_dailyapp);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
- ButterKnife.bind(this);
mDailyAppAdapter = new DailyAppAdapter();
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
- recyclerView.setLayoutManager(new GridLayoutManager(this, 5));
- recyclerView.addItemDecoration(new GridSpaceItemDecoration(5, 50, 50));
+ mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 5));
+ mViewDataBinding.recyclerView.addItemDecoration(new GridSpaceItemDecoration(5, 50, 50));
} else {
- recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
- recyclerView.addItemDecoration(new GridSpaceItemDecoration(3, 50, 50));
+ mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
+ mViewDataBinding.recyclerView.addItemDecoration(new GridSpaceItemDecoration(3, 50, 50));
}
- recyclerView.setAdapter(mDailyAppAdapter);
- iv_back.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.recyclerView.setAdapter(mDailyAppAdapter);
+ mViewDataBinding.ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
@@ -62,6 +56,7 @@ public class DailyAppActivity extends BaseDataBindingActivity {
public void initData() {
List appBeanList = AppStatusManager.getInstance().getPackageList();
mDailyAppAdapter.setDailyAppBeans(appBeanList);
- tv_appsize.setText(String.format(getString(R.string.app_size), appBeanList.size()));
+ mViewDataBinding.tvAppsize.setText(String.format(getString(R.string.app_size), appBeanList.size()));
}
+
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/dailyapp/DailyAppViewModel.java b/app/src/main/java/com/uiuios/aios/activity/dailyapp/DailyAppViewModel.java
new file mode 100644
index 0000000..3c52777
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/dailyapp/DailyAppViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.dailyapp;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityDailyappBinding;
+
+public class DailyAppViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityDailyappBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/DetailsActivity.java b/app/src/main/java/com/uiuios/aios/activity/details/DetailsActivity.java
similarity index 70%
rename from app/src/main/java/com/uiuios/aios/activity/DetailsActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/details/DetailsActivity.java
index 61d6bed..e2e56ca 100644
--- a/app/src/main/java/com/uiuios/aios/activity/DetailsActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/details/DetailsActivity.java
@@ -1,93 +1,26 @@
-package com.uiuios.aios.activity;
+package com.uiuios.aios.activity.details;
import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.databinding.DataBindingUtil;
import com.bumptech.glide.Glide;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
-import com.uiuios.aios.base.BaseDataBindingActivity;
-import com.uiuios.aios.bean.BaseResponse;
+import com.uiuios.aios.activity.OrderActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.GoodsInfo;
-import com.uiuios.aios.bean.RegionInfo;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.ActivityDetailsBinding;
-import com.uiuios.aios.network.NetInterfaceManager;
-import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
-
-import org.reactivestreams.Publisher;
import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import butterknife.BindView;
import butterknife.ButterKnife;
-import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
-import io.reactivex.rxjava3.annotations.NonNull;
-import io.reactivex.rxjava3.core.Observable;
-import io.reactivex.rxjava3.core.ObservableEmitter;
-import io.reactivex.rxjava3.core.ObservableOnSubscribe;
-import io.reactivex.rxjava3.core.ObservableSource;
-import io.reactivex.rxjava3.core.Observer;
-import io.reactivex.rxjava3.disposables.Disposable;
-import io.reactivex.rxjava3.functions.Function;
-import io.reactivex.rxjava3.schedulers.Schedulers;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
-import retrofit2.Retrofit;
-public class DetailsActivity extends BaseDataBindingActivity {
- @BindView(R.id.iv_details)
- ImageView iv_details;
- @BindView(R.id.iv_exit)
- ImageView iv_exit;
- @BindView(R.id.tv_buying_price)
- TextView tv_buying_price;
- @BindView(R.id.tv_original_price)
- TextView tv_original_price;
- @BindView(R.id.tv_stock)
- TextView tv_stock;
- @BindView(R.id.tv_subsidy)
- TextView tv_subsidy;
- @BindView(R.id.tv_price)
- TextView tv_price;
- @BindView(R.id.tv_title)
- TextView tv_title;
- @BindView(R.id.tv_details)
- TextView tv_details;
- @BindView(R.id.tv_certified)
- TextView tv_certified;
- @BindView(R.id.tv_ship)
- TextView tv_ship;
- @BindView(R.id.tv_insurance)
- TextView tv_insurance;
- @BindView(R.id.tv_sale)
- TextView tv_sale;
- @BindView(R.id.tv_type)
- TextView tv_type;
- @BindView(R.id.ll_buy)
- LinearLayout ll_buy;
+public class DetailsActivity extends BaseMvvmActivity {
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
-
- private ActivityDetailsBinding mBinding;
private GoodsInfo mGoodsInfo;
@Override
@@ -95,9 +28,17 @@ public class DetailsActivity extends BaseDataBindingActivity {
return true;
}
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_details;
+ }
+
@Override
protected void initDataBinding() {
- mBinding = DataBindingUtil.setContentView(this, R.layout.activity_details);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
/**
@@ -111,37 +52,37 @@ public class DetailsActivity extends BaseDataBindingActivity {
GoodsInfo goodsInfo = (GoodsInfo) intent.getSerializableExtra("GoodsInfo");
if (goodsInfo == null) return;
mGoodsInfo = goodsInfo;
- Glide.with(iv_details).load(mGoodsInfo.getDetails_img()).into(iv_details);
- ViewTreeObserver observer = iv_details.getViewTreeObserver();
+ Glide.with(mViewDataBinding.ivDetails).load(mGoodsInfo.getDetails_img()).into(mViewDataBinding.ivDetails);
+ ViewTreeObserver observer = mViewDataBinding.ivDetails.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
- ViewGroup.LayoutParams layoutParams = iv_details.getLayoutParams();
- int width = iv_details.getWidth();
+ ViewGroup.LayoutParams layoutParams = mViewDataBinding.ivDetails.getLayoutParams();
+ int width = mViewDataBinding.ivDetails.getWidth();
layoutParams.height = width;
- iv_details.setLayoutParams(layoutParams);
+ mViewDataBinding.ivDetails.setLayoutParams(layoutParams);
}
});
- iv_exit.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
- tv_stock.setText("库存:" + mGoodsInfo.getStock());
+ mViewDataBinding.tvStock.setText("库存:" + mGoodsInfo.getStock());
BigDecimal d = new BigDecimal(mGoodsInfo.getOriginal_price());
BigDecimal d2 = new BigDecimal(mGoodsInfo.getBuying_price());
- tv_subsidy.setText("官方补贴" + d.subtract(d2).toString());
- tv_buying_price.setText("¥" + mGoodsInfo.getBuying_price());
- tv_original_price.setText("原价:" + mGoodsInfo.getOriginal_price() + "元");
- tv_price.setText("抢购:" + mGoodsInfo.getBuying_price() + "元");
- tv_title.setText(mGoodsInfo.getGoods_name());
- tv_details.setText(mGoodsInfo.getGoods_desc());
- tv_certified.setText(mGoodsInfo.getEnsure());
- tv_ship.setText(mGoodsInfo.getDeliver_goods());
- tv_insurance.setText(mGoodsInfo.getInsure());
- tv_sale.setText(mGoodsInfo.getAfter_sales());
- ll_buy.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.tvSubsidy.setText("官方补贴" + d.subtract(d2).toString());
+ mViewDataBinding.tvBuyingPrice.setText("¥" + mGoodsInfo.getBuying_price());
+ mViewDataBinding.tvOriginalPrice.setText("原价:" + mGoodsInfo.getOriginal_price() + "元");
+ mViewDataBinding.tvPrice.setText("抢购:" + mGoodsInfo.getBuying_price() + "元");
+ mViewDataBinding.tvTitle.setText(mGoodsInfo.getGoods_name());
+ mViewDataBinding.tvDetails.setText(mGoodsInfo.getGoods_desc());
+ mViewDataBinding.tvCertified.setText(mGoodsInfo.getEnsure());
+ mViewDataBinding.tvShip.setText(mGoodsInfo.getDeliver_goods());
+ mViewDataBinding.tvInsurance.setText(mGoodsInfo.getInsure());
+ mViewDataBinding.tvSale.setText(mGoodsInfo.getAfter_sales());
+ mViewDataBinding.llBuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Uri uri = Uri.parse(goodsInfo.getJump_url());
@@ -229,7 +170,7 @@ public class DetailsActivity extends BaseDataBindingActivity {
// });
}
});
- tv_type.setText(mGoodsInfo.getType());
+ mViewDataBinding.tvType.setText(mGoodsInfo.getType());
}
/**
diff --git a/app/src/main/java/com/uiuios/aios/activity/details/DetailsViewModel.java b/app/src/main/java/com/uiuios/aios/activity/details/DetailsViewModel.java
new file mode 100644
index 0000000..bbb51b1
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/details/DetailsViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.details;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityDetailsBinding;
+
+public class DetailsViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityDetailsBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/dialer/DialerActivity.java b/app/src/main/java/com/uiuios/aios/activity/dialer/DialerActivity.java
index 527d312..0db8619 100644
--- a/app/src/main/java/com/uiuios/aios/activity/dialer/DialerActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/dialer/DialerActivity.java
@@ -7,72 +7,39 @@ import android.net.Uri;
import android.text.TextUtils;
import android.view.View;
import android.view.WindowManager;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.TextView;
-import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.databinding.DataBindingUtil;
-
-import com.shehuan.niv.NiceImageView;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.contact.ContactActivity;
-import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
+import com.uiuios.aios.databinding.ActivityDialerBinding;
import java.util.HashMap;
-import butterknife.BindView;
import butterknife.ButterKnife;
-public class DialerActivity extends BaseDataBindingActivity {
+public class DialerActivity extends BaseMvvmActivity {
- @BindView(R.id.et_phone)
- EditText et_phone;
- @BindView(R.id.iv_delete)
- ImageView iv_delete;
- @BindView(R.id.nv_dialer)
- NiceImageView nv_dialer;
- @BindView(R.id.iv_contact)
- ImageView iv_contact;
- @BindView(R.id.tv_contact)
- TextView tv_contact;
- @BindView(R.id.cl_0)
- ConstraintLayout cl_0;
- @BindView(R.id.cl_1)
- ConstraintLayout cl_1;
- @BindView(R.id.cl_2)
- ConstraintLayout cl_2;
- @BindView(R.id.cl_3)
- ConstraintLayout cl_3;
- @BindView(R.id.cl_4)
- ConstraintLayout cl_4;
- @BindView(R.id.cl_5)
- ConstraintLayout cl_5;
- @BindView(R.id.cl_6)
- ConstraintLayout cl_6;
- @BindView(R.id.cl_7)
- ConstraintLayout cl_7;
- @BindView(R.id.cl_8)
- ConstraintLayout cl_8;
- @BindView(R.id.cl_9)
- ConstraintLayout cl_9;
- @BindView(R.id.cl_11)
- ConstraintLayout cl_11;
- @BindView(R.id.cl_12)
- ConstraintLayout cl_12;
private SoundPool soundPool;
private HashMap soundMap = new HashMap<>();
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_dialer;
+ }
+
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this,R.layout.activity_dialer);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
- ButterKnife.bind(this);
+
AudioAttributes attr = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_GAME) // 设置音效使用场景
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build(); // 设置音效的类型
soundPool = new SoundPool.Builder().setAudioAttributes(attr) // 设置音效池的属性
@@ -96,107 +63,107 @@ public class DialerActivity extends BaseDataBindingActivity {
@Override
public void initData() {
- cl_0.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("0", 0);
}
});
- cl_1.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("1", 1);
}
});
- cl_2.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("2", 2);
}
});
- cl_3.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("3", 3);
}
});
- cl_4.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("4", 4);
}
});
- cl_5.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("5", 5);
}
});
- cl_6.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("6", 6);
}
});
- cl_7.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("7", 7);
}
});
- cl_8.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("8", 8);
}
});
- cl_9.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("9", 9);
}
});
- cl_11.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl11.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("*", 10);
}
});
- cl_12.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.cl12.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNumber("#", 11);
}
});
- nv_dialer.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.nvDialer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- String phone = et_phone.getText().toString();
+ String phone = mViewDataBinding.etPhone.getText().toString();
Intent dialIntent = new Intent(Intent.ACTION_CALL);
Uri data = Uri.parse("tel:" + phone);
dialIntent.setData(data);
startActivity(dialIntent);
}
});
- iv_delete.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- String tmp = et_phone.getText().toString();
+ String tmp = mViewDataBinding.etPhone.getText().toString();
if (TextUtils.isEmpty(tmp)) {
- et_phone.setText("");
+ mViewDataBinding.etPhone.setText("");
} else {
- et_phone.setText(tmp.substring(0, tmp.length() - 1));
+ mViewDataBinding.etPhone.setText(tmp.substring(0, tmp.length() - 1));
}
}
});
- iv_contact.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivContact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(DialerActivity.this, ContactActivity.class);
startActivity(intent);
}
});
- tv_contact.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.tvContact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(DialerActivity.this, ContactActivity.class);
@@ -207,13 +174,14 @@ public class DialerActivity extends BaseDataBindingActivity {
private void addNumber(String number, int position) {
- String tmp = et_phone.getText().toString();
+ String tmp = mViewDataBinding.etPhone.getText().toString();
if (TextUtils.isEmpty(tmp)) {
- et_phone.setText(number);
+ mViewDataBinding.etPhone.setText(number);
} else {
- et_phone.setText(tmp + number);
+ mViewDataBinding.etPhone.setText(tmp + number);
}
soundPool.play(soundMap.get(position), 1, 1, 0, 0, 1);
}
+
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/dialer/DialerViewModel.java b/app/src/main/java/com/uiuios/aios/activity/dialer/DialerViewModel.java
new file mode 100644
index 0000000..ea5c7e0
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/dialer/DialerViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.dialer;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityDialerBinding;
+
+public class DialerViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityDialerBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java b/app/src/main/java/com/uiuios/aios/activity/emergency/EmergencyActivity.java
similarity index 91%
rename from app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/emergency/EmergencyActivity.java
index aeab661..4d6936a 100644
--- a/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/emergency/EmergencyActivity.java
@@ -1,38 +1,28 @@
-package com.uiuios.aios.activity;
-
-import androidx.appcompat.app.AppCompatActivity;
+package com.uiuios.aios.activity.emergency;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
-import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.BaseResponse;
-import com.uiuios.aios.bean.Contact;
import com.uiuios.aios.config.CommonConfig;
-import com.uiuios.aios.disklrucache.CacheHelper;
+import com.uiuios.aios.databinding.ActivityEmergencyBinding;
import com.uiuios.aios.manager.AmapManager;
import com.uiuios.aios.network.NetInterfaceManager;
-import com.uiuios.aios.network.UrlAddress;
import com.uiuios.aios.receiver.BootReceiver;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.List;
import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -43,17 +33,11 @@ import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
-public class EmergencyActivity extends AppCompatActivity {
+public class EmergencyActivity extends BaseMvvmActivity {
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
- @BindView(R.id.tv_countdown)
- TextView tv_countdown;
- @BindView(R.id.iv_finish)
- ImageView iv_finish;
-
-
private Disposable subscribe;
private String TAG = EmergencyActivity.class.getSimpleName();
private boolean needDial = false;
@@ -62,12 +46,21 @@ public class EmergencyActivity extends AppCompatActivity {
// private CacheHelper mCacheHelper;
@Override
- protected void onCreate(Bundle savedInstanceState) {
- Log.e(TAG, "onCreate: ");
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_emergency);
+ protected int getLayoutId() {
+ return R.layout.activity_emergency;
+ }
+
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
+ }
+
+ @Override
+ protected void initView() {
// mCacheHelper = new CacheHelper(this);
- ButterKnife.bind(this);
//发送紧急广播
Intent bootIntent = new Intent(BootReceiver.SOS);
@@ -107,7 +100,7 @@ public class EmergencyActivity extends AppCompatActivity {
.subscribe(aLong -> {
Log.e("TAG", "倒计时:" + aLong);
if (aLong < time && !subscribe.isDisposed()) {
- tv_countdown.setText("倒计时(" + (time - aLong - 1) + ")秒");
+ mViewDataBinding.tvCountdown.setText("倒计时(" + (time - aLong - 1) + ")秒");
Log.e(TAG, "accept: " + (time - aLong - 1));
} else {
String longitude = mMMKV.decodeString(CommonConfig.MAP_LONGITUDE_KEY, "");
@@ -154,7 +147,7 @@ public class EmergencyActivity extends AppCompatActivity {
finish();
}
});
- iv_finish.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivFinish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
@@ -177,6 +170,11 @@ public class EmergencyActivity extends AppCompatActivity {
//// mStatusBarManager.disable(StatusBarManager.DISABLE_HOME);//隐藏home键
}
+ @Override
+ protected void initData() {
+
+ }
+
@Override
protected void onStart() {
super.onStart();
diff --git a/app/src/main/java/com/uiuios/aios/activity/emergency/EmergencyViewModel.java b/app/src/main/java/com/uiuios/aios/activity/emergency/EmergencyViewModel.java
new file mode 100644
index 0000000..f74ad53
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/emergency/EmergencyViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.emergency;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityEmergencyBinding;
+
+public class EmergencyViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityEmergencyBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/InfoListActivity.java b/app/src/main/java/com/uiuios/aios/activity/infolist/InfoListActivity.java
similarity index 74%
rename from app/src/main/java/com/uiuios/aios/activity/InfoListActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/infolist/InfoListActivity.java
index 28cc641..8e14198 100644
--- a/app/src/main/java/com/uiuios/aios/activity/InfoListActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/infolist/InfoListActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity;
+package com.uiuios.aios.activity.infolist;
import android.util.Log;
import android.view.View;
@@ -13,9 +13,11 @@ import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
import com.uiuios.aios.adapter.ArticleAdapter;
import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.ArticleInfo;
import com.uiuios.aios.bean.ArticleList;
import com.uiuios.aios.bean.BaseResponse;
+import com.uiuios.aios.databinding.ActivityInfoListBinding;
import com.uiuios.aios.network.NetInterfaceManager;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
@@ -27,28 +29,28 @@ import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
-public class InfoListActivity extends BaseDataBindingActivity {
- @BindView(R.id.iv_back)
- ImageView iv_back;
- @BindView(R.id.iv1)
- ImageView iv1;
- @BindView(R.id.recyclerView)
- RecyclerView recyclerView;
-
+public class InfoListActivity extends BaseMvvmActivity {
private ArticleAdapter mArticleAdapter;
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_info_list;
+ }
+
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this,R.layout.activity_info_list);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
- ButterKnife.bind(this);
mArticleAdapter = new ArticleAdapter();
- recyclerView.setLayoutManager(new LinearLayoutManager(this));
- recyclerView.setAdapter(mArticleAdapter);
- iv_back.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ mViewDataBinding.recyclerView.setAdapter(mArticleAdapter);
+ mViewDataBinding.ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
@@ -73,10 +75,10 @@ public class InfoListActivity extends BaseDataBindingActivity {
List articleInfoList = articleList.getData();
if (articleInfoList != null && articleInfoList.size() != 0) {
articleInfoList.sort((o1, o2) -> Integer.compare(o2.getWeight(), o1.getWeight()));
- iv1.setVisibility(android.view.View.GONE);
+ mViewDataBinding.iv1.setVisibility(android.view.View.GONE);
mArticleAdapter.setArticleBeanList(articleInfoList);
} else {
- iv1.setVisibility(android.view.View.VISIBLE);
+ mViewDataBinding.iv1.setVisibility(android.view.View.VISIBLE);
}
}
@@ -91,4 +93,5 @@ public class InfoListActivity extends BaseDataBindingActivity {
}
});
}
+
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/infolist/InfoListViewModel.java b/app/src/main/java/com/uiuios/aios/activity/infolist/InfoListViewModel.java
new file mode 100644
index 0000000..48a84b9
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/infolist/InfoListViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.infolist;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityInfoListBinding;
+
+public class InfoListViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityInfoListBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java
index afee0ee..9b58d7d 100644
--- a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java
@@ -11,6 +11,9 @@ import android.content.pm.PackageManager;
import android.content.pm.ShortcutManager;
import android.content.res.Configuration;
import android.graphics.Color;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraManager;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
@@ -22,6 +25,7 @@ import android.view.KeyEvent;
import android.view.View;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
@@ -35,36 +39,44 @@ import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.hjq.toast.Toaster;
+import com.jeremyliao.liveeventbus.LiveEventBus;
+import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.EmergencyActivity;
import com.uiuios.aios.activity.phone.PhoneActivity;
import com.uiuios.aios.base.BaseFragmentPagerAdapter;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.AlarmItem;
import com.uiuios.aios.bean.DesktopIcon;
+import com.uiuios.aios.bean.MapBean;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.PhoneActivityMainBinding;
import com.uiuios.aios.fragment.app.AppListFragment;
-import com.uiuios.aios.fragment.control.ControlFragment;
import com.uiuios.aios.fragment.contact.ContactFragment;
import com.uiuios.aios.fragment.home.HomeFragment;
+import com.uiuios.aios.fragment.settings.SettingsFragment;
import com.uiuios.aios.manager.AmapManager;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.service.NotificationService;
import com.uiuios.aios.utils.ApkUtils;
import com.uiuios.aios.utils.AppUsedTimeUtils;
+import com.uiuios.aios.utils.DayUtils;
import com.uiuios.aios.view.ScaleCircleNavigator;
import net.lucode.hackware.magicindicator.ViewPagerHelper;
import java.lang.reflect.Type;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
-public class MainActivity extends BaseMvvmActivity implements RemoteManager.ConnectedListener {
+public class MainActivity extends BaseMvvmActivity implements RemoteManager.ConnectedListener, NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = MainActivity.class.getSimpleName();
+
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
private FragmentManager mFragmentManager;
private FragmentTransaction mFragmentTransaction;
@@ -72,15 +84,29 @@ public class MainActivity extends BaseMvvmActivity mFragments;
- private ControlFragment mControlFragment;
+ // private ControlFragment mControlFragment;
+ private SettingsFragment mSettingsFragment;
private HomeFragment mHomeFragment;
// private CustomFragment mCustomFragment;
- private ContactFragment mSecondFragment;
+ private ContactFragment mContactFragment;
private boolean is_twoscreen = false;
private int appListIndex = 3;
private int defaultCurrent = 2;
+ private CameraManager cameraManager;
+
+ @Override
+ public void onDisconnected() {
+ Log.e(TAG, "onDisconnected: ");
+ }
+
+ @Override
+ public void onConnected(NetworkUtils.NetworkType networkType) {
+ Log.e(TAG, "onConnected: " + networkType);
+ initAmap();
+ }
+
@Override
public void onRemoteConnected() {
setDefaultDesktop();
@@ -121,6 +147,7 @@ public class MainActivity extends BaseMvvmActivity(desktopIcons.subList(x, i)));
mFragments.add(appListFragment);
x = i;
- } else if (i != 0 &&i == desktopIcons.size()) {
+ } else if (i != 0 && i == desktopIcons.size()) {
AppListFragment appListFragment = new AppListFragment();
appListFragment.setAppList(new ArrayList<>(desktopIcons.subList(x, i)));
mFragments.add(appListFragment);
@@ -177,8 +205,8 @@ public class MainActivity extends BaseMvvmActivity(desktopIcons.subList(x, i)));
mFragments.add(appListFragment);
x = i;
- } else if (i != 0 &&i == desktopIcons.size()) {
+ } else if (i != 0 && i == desktopIcons.size()) {
AppListFragment appListFragment = new AppListFragment();
appListFragment.setAppList(new ArrayList<>(desktopIcons.subList(x, i)));
mFragments.add(appListFragment);
@@ -247,6 +275,28 @@ public class MainActivity extends BaseMvvmActivity() {
+ @Override
+ public void onChanged(@Nullable MapBean mapBean) {
+ mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_DISTRICT, mapBean.getDistrict());
+ mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_TUDE, mapBean.getLongitude() + "," + mapBean.getLatitude());
+// mViewDataBinding.tvLocation.setText(mapBean.getDistrict());
+ mViewModel.getWeather(mapBean.getLongitude() + "," + mapBean.getLatitude());
+ }
+ });
+ } else {
+ String district = mMMKV.decodeString(CommonConfig.MANUALLY_SELECT_LOCATION_DISTRICT, CommonConfig.DEFAULT_LOCATION_DISTRICT);
+// mViewDataBinding.tvLocation.setText(district);
+ mViewModel.getWeather(tude);
+ }
}
private ServiceConnection mAlarmServiceConnection;
@@ -312,7 +362,7 @@ public class MainActivity extends BaseMvvmActivity(applicationInfoList.subList(x, i)));
fragmentList.add(appListFragment);
x = i;
- } else if (i != 0 &&i == applicationInfoList.size()) {
+ } else if (i != 0 && i == applicationInfoList.size()) {
Log.e(TAG, "addData: i == size");
AppListFragment appListFragment = new AppListFragment();
appListFragment.setAppList(new ArrayList<>(applicationInfoList.subList(x, i)));
@@ -361,7 +411,6 @@ public class MainActivity extends BaseMvvmActivity mNowBaseBeanData = new MutableLiveData<>();
+
+ public MutableLiveData getNowBaseBeanData() {
+ return mNowBaseBeanData;
+ }
+
+ public void getWeatherNow(String location) {
+ Log.e(TAG, "getWeatherNow: " + location);
+ /**
+ * 实况天气数据
+ * @param location 所查询的地区,可通过该地区名称、ID、IP和经纬度进行查询经纬度格式:经度,纬度
+ * (英文,分隔,十进制格式,北纬东经为正,南纬西经为负)
+ * @param lang (选填)多语言,可以不使用该参数,默认为简体中文
+ * @param unit (选填)单位选择,公制(m)或英制(i),默认为公制单位
+ * @param listener 网络访问结果回调
+ */
+ QWeather.getWeatherNow(getCtx(), location, Lang.ZH_HANS, Unit.METRIC, new QWeather.OnResultWeatherNowListener() {
+ @Override
+ public void onError(Throwable e) {
+ Log.e("getWeatherNow", "onError: " + e);
+ }
+
+ @Override
+ public void onSuccess(WeatherNowBean weatherBean) {
+ Log.d("getWeatherNow", "onSuccess: " + new Gson().toJson(weatherBean));
+ //先判断返回的status是否正确,当status正确时获取数据,若status不正确,可查看status对应的Code值找到原因
+ if (Code.OK == weatherBean.getCode()) {
+ WeatherNowBean.NowBaseBean now = weatherBean.getNow();
+ LiveEventBus
+ .get("some_key1")
+ .post(now);
+ mNowBaseBeanData.postValue(now);
+ Log.d("getWeatherNow", "onSuccess: now " + new Gson().toJson(now));
+ } else {
+ //在此查看返回数据失败的原因
+ Code code = weatherBean.getCode();
+ Log.d("getWeatherNow", "failed code: " + code);
+ }
+ }
+ });
+ }
+
+ private MutableLiveData mHourlyBeanData = new MutableLiveData<>();
+
+ public MutableLiveData getHourlyBeanData() {
+ return mHourlyBeanData;
+ }
+
+ public void getWeather24Hourly(String location) {
+ QWeather.getWeather24Hourly(getCtx(), location, new QWeather.OnResultWeatherHourlyListener() {
+ @Override
+ public void onError(Throwable throwable) {
+ Log.e("getWeather24Hourly", "onError: " + throwable);
+ }
+
+ @Override
+ public void onSuccess(WeatherHourlyBean weatherHourlyBean) {
+ Log.d("getWeather24Hourly", "onSuccess: " + new Gson().toJson(weatherHourlyBean));
+ if (Code.OK == weatherHourlyBean.getCode()) {
+ List hourly = weatherHourlyBean.getHourly();
+ if (hourly != null && hourly.size() != 0) {
+ WeatherHourlyBean.HourlyBean now = hourly.get(0);
+ mHourlyBeanData.postValue(now);
+ LiveEventBus
+ .get("some_key2")
+ .post(now);
+ }
+ } else {
+ //在此查看返回数据失败的原因
+ Code code = weatherHourlyBean.getCode();
+ Log.e("getWeather24Hourly", "failed code: " + code);
+ }
+ }
+ });
+ }
+
+ private MutableLiveData DailyBeanData = new MutableLiveData<>();
+
+ public MutableLiveData getDailyBeanData() {
+ return DailyBeanData;
+ }
+
+ public void getWeather7D(String location) {
+ QWeather.getWeather7D(getCtx(), location, new QWeather.OnResultWeatherDailyListener() {
+ @Override
+ public void onError(Throwable throwable) {
+ Log.e("getWeather7D", "onError: " + throwable.getMessage());
+
+ }
+
+ @Override
+ public void onSuccess(WeatherDailyBean weatherDailyBean) {
+ String jsonString = new Gson().toJson(weatherDailyBean);
+ Log.d("getWeather7D", "onSuccess: " + jsonString);
+ mMMKV.encode(CommonConfig.WEATHER_DAILY_KEY, jsonString);
+ List dailyBeans = weatherDailyBean.getDaily();
+ if (dailyBeans != null && dailyBeans.size() != 0) {
+ WeatherDailyBean.DailyBean dailyBean = weatherDailyBean.getDaily().get(0);
+ DailyBeanData.postValue(dailyBean);
+ LiveEventBus
+ .get("some_key3")
+ .post(dailyBean);
+ }
+ }
+ });
+ }
+
+
+
private MutableLiveData mSnInfoData = new MutableLiveData<>();
public MutableLiveData getSnInfoData() {
@@ -88,6 +221,7 @@ public class MainViewModel extends BaseViewModel> mDesktopIconData = new MutableLiveData<>();
public MutableLiveData> getDesktopIconData() {
diff --git a/app/src/main/java/com/uiuios/aios/activity/main/OldMainActivity.java b/app/src/main/java/com/uiuios/aios/activity/main/deprecated/OldMainActivity.java
similarity index 89%
rename from app/src/main/java/com/uiuios/aios/activity/main/OldMainActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/main/deprecated/OldMainActivity.java
index 16432b9..15f1066 100644
--- a/app/src/main/java/com/uiuios/aios/activity/main/OldMainActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/main/deprecated/OldMainActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity.main;
+package com.uiuios.aios.activity.main.deprecated;
import android.content.Intent;
import android.os.Bundle;
@@ -8,7 +8,9 @@ import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import com.uiuios.aios.R;
+import com.uiuios.aios.activity.main.MainActivity;
+@Deprecated
public class OldMainActivity extends MainActivity {
private static final String TAG = OldMainActivity.class.getSimpleName();
diff --git a/app/src/main/java/com/uiuios/aios/activity/main/PhoneMainActivity.java b/app/src/main/java/com/uiuios/aios/activity/main/deprecated/PhoneMainActivity.java
similarity index 89%
rename from app/src/main/java/com/uiuios/aios/activity/main/PhoneMainActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/main/deprecated/PhoneMainActivity.java
index 9c6eed9..5c982be 100644
--- a/app/src/main/java/com/uiuios/aios/activity/main/PhoneMainActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/main/deprecated/PhoneMainActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity.main;
+package com.uiuios.aios.activity.main.deprecated;
import android.content.Intent;
import android.view.View;
@@ -6,10 +6,12 @@ import android.view.View;
import androidx.databinding.DataBindingUtil;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.EmergencyActivity;
+import com.uiuios.aios.activity.emergency.EmergencyActivity;
+import com.uiuios.aios.activity.main.MainActivity;
import com.uiuios.aios.databinding.PhoneActivityMainBinding;
import com.uiuios.aios.utils.ApkUtils;
+@Deprecated
public class PhoneMainActivity extends MainActivity {
private static final String TAG = PhoneMainActivity.class.getSimpleName();
diff --git a/app/src/main/java/com/uiuios/aios/activity/QuickAppActivity.java b/app/src/main/java/com/uiuios/aios/activity/quickapp/QuickAppActivity.java
similarity index 69%
rename from app/src/main/java/com/uiuios/aios/activity/QuickAppActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/quickapp/QuickAppActivity.java
index 90fdc04..bffacb9 100644
--- a/app/src/main/java/com/uiuios/aios/activity/QuickAppActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/quickapp/QuickAppActivity.java
@@ -1,28 +1,24 @@
-package com.uiuios.aios.activity;
+package com.uiuios.aios.activity.quickapp;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
-import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.R;
import com.uiuios.aios.adapter.AppSelectedAdapter;
-import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.AppSelectBean;
+import com.uiuios.aios.databinding.ActivityQuickAppBinding;
import com.uiuios.aios.view.GridSpaceItemDecoration;
import java.util.ArrayList;
import java.util.List;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-public class QuickAppActivity extends BaseDataBindingActivity {
+public class QuickAppActivity extends BaseMvvmActivity {
private static final String TAG = QuickAppActivity.class.getSimpleName();
public static final String QUICK_APP_KEY = "QuickAppPackageKey";
@@ -31,26 +27,30 @@ public class QuickAppActivity extends BaseDataBindingActivity {
private AppSelectedAdapter mAppSelectedAdapter;
- @BindView(R.id.rv_goods)
- RecyclerView recyclerView;
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_quick_app;
+ }
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this,R.layout.activity_quick_app);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
- ButterKnife.bind(this);
mAppSelectedAdapter = new AppSelectedAdapter();
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
- recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
- recyclerView.addItemDecoration(new GridSpaceItemDecoration(3,50,50));
+ mViewDataBinding.rvApps.setLayoutManager(new GridLayoutManager(this, 3));
+ mViewDataBinding.rvApps.addItemDecoration(new GridSpaceItemDecoration(3, 50, 50));
} else {
- recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
- recyclerView.addItemDecoration(new GridSpaceItemDecoration(2,50,50));
+ mViewDataBinding.rvApps.setLayoutManager(new GridLayoutManager(this, 2));
+ mViewDataBinding.rvApps.addItemDecoration(new GridSpaceItemDecoration(2, 50, 50));
}
- recyclerView.setAdapter(mAppSelectedAdapter);
+ mViewDataBinding.rvApps.setAdapter(mAppSelectedAdapter);
}
@Override
@@ -76,4 +76,5 @@ public class QuickAppActivity extends BaseDataBindingActivity {
}
return appSelectBeanList;
}
+
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/quickapp/QuickAppViewModel.java b/app/src/main/java/com/uiuios/aios/activity/quickapp/QuickAppViewModel.java
new file mode 100644
index 0000000..dea5b73
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/quickapp/QuickAppViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.quickapp;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityQuickAppBinding;
+
+public class QuickAppViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityQuickAppBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/records/RecordsActivity.java b/app/src/main/java/com/uiuios/aios/activity/records/RecordsActivity.java
index e05c233..efb10a1 100644
--- a/app/src/main/java/com/uiuios/aios/activity/records/RecordsActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/records/RecordsActivity.java
@@ -7,73 +7,72 @@ import android.os.Bundle;
import android.provider.CallLog;
import android.util.Log;
import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import com.shehuan.niv.NiceImageView;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.dialer.DialerActivity;
import com.uiuios.aios.adapter.CallRecordAdapter;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.RecordsInfo;
+import com.uiuios.aios.databinding.ActivityRecordsBinding;
import com.uiuios.aios.dialog.DeleteDialog;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
import java.util.ArrayList;
import java.util.List;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-public class RecordsActivity extends AppCompatActivity {
+public class RecordsActivity extends BaseMvvmActivity {
private static final String TAG = RecordsActivity.class.getSimpleName();
- @BindView(R.id.recyclerView)
- RecyclerView recyclerView;
- @BindView(R.id.iv_cancel)
- ImageView iv_cancel;
- @BindView(R.id.iv_clear)
- ImageView iv_clear;
- @BindView(R.id.nv_dialer)
- NiceImageView nv_dialer;
- @BindView(R.id.tv_nodata)
- TextView tv_nodata;
-
private CallRecordAdapter mCallRecordAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_records);
+
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_records;
+ }
+
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
+ }
+
+ @Override
+ protected void initView() {
UltimateBarX.statusBarOnly(this)
.colorRes(R.color.default_blue)
.fitWindow(true)
.apply();
- ButterKnife.bind(this);
Log.e(TAG, "initData: " + dataList);
mCallRecordAdapter = new CallRecordAdapter();
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(RecordsActivity.this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
- recyclerView.setLayoutManager(linearLayoutManager);
- recyclerView.setAdapter(mCallRecordAdapter);
+ mViewDataBinding.recyclerView.setLayoutManager(linearLayoutManager);
+ mViewDataBinding.recyclerView.setAdapter(mCallRecordAdapter);
- iv_cancel.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
- nv_dialer.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.nvDialer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(RecordsActivity.this, DialerActivity.class));
}
});
- iv_clear.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog();
@@ -81,6 +80,11 @@ public class RecordsActivity extends AppCompatActivity {
});
}
+ @Override
+ protected void initData() {
+
+ }
+
private void showDialog() {
DeleteDialog dialog = new DeleteDialog(this);
dialog.setTitle("提醒")
@@ -116,11 +120,11 @@ public class RecordsActivity extends AppCompatActivity {
private void getData() {
dataList = getDataList();
if (dataList.size() == 0) {
- tv_nodata.setVisibility(View.VISIBLE);
- recyclerView.setVisibility(View.GONE);
+ mViewDataBinding.tvNodata.setVisibility(View.VISIBLE);
+ mViewDataBinding.recyclerView.setVisibility(View.GONE);
} else {
- tv_nodata.setVisibility(View.GONE);
- recyclerView.setVisibility(View.VISIBLE);
+ mViewDataBinding.tvNodata.setVisibility(View.GONE);
+ mViewDataBinding.recyclerView.setVisibility(View.VISIBLE);
}
mCallRecordAdapter.setRecordsInfoList(dataList);
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/records/RecordsViewModel.java b/app/src/main/java/com/uiuios/aios/activity/records/RecordsViewModel.java
new file mode 100644
index 0000000..9af7d5b
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/records/RecordsViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.records;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityRecordsBinding;
+
+public class RecordsViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityRecordsBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/ScreenLockActivity.java b/app/src/main/java/com/uiuios/aios/activity/screenlock/ScreenLockActivity.java
similarity index 58%
rename from app/src/main/java/com/uiuios/aios/activity/ScreenLockActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/screenlock/ScreenLockActivity.java
index 3f9ba75..1ca2dbd 100644
--- a/app/src/main/java/com/uiuios/aios/activity/ScreenLockActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/screenlock/ScreenLockActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity;
+package com.uiuios.aios.activity.screenlock;
import android.content.Context;
import android.media.AudioAttributes;
@@ -11,63 +11,22 @@ import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
import androidx.annotation.Nullable;
-import androidx.databinding.DataBindingUtil;
import com.tuo.customview.VerificationCodeView;
import com.uiuios.aios.R;
-import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.config.CommonConfig;
+import com.uiuios.aios.databinding.ActivityScreenLockBinding;
import com.uiuios.aios.manager.RemoteManager;
-import butterknife.BindView;
import butterknife.ButterKnife;
-public class ScreenLockActivity extends BaseDataBindingActivity {
-
+public class ScreenLockActivity extends BaseMvvmActivity {
private static final String TAG = ScreenLockActivity.class.getSimpleName();
- @BindView(R.id.iv_back)
- ImageView iv_back;
- @BindView(R.id.bt_0)
- TextView bt0;
- @BindView(R.id.bt_1)
- TextView bt1;
- @BindView(R.id.bt_2)
- TextView bt2;
- @BindView(R.id.bt_3)
- TextView bt3;
- @BindView(R.id.bt_4)
- TextView bt4;
- @BindView(R.id.bt_5)
- TextView bt5;
- @BindView(R.id.bt_6)
- TextView bt6;
- @BindView(R.id.bt_7)
- TextView bt7;
- @BindView(R.id.bt_8)
- TextView bt8;
- @BindView(R.id.bt_9)
- TextView bt9;
- @BindView(R.id.bt_del)
- TextView bt_del;
- @BindView(R.id.bt_confirm)
- TextView bt_confirm;
-
- @BindView(R.id.textView)
- TextView textView;
- @BindView(R.id.tv_hint)
- TextView tv_hint;
- @BindView(R.id.ll_keyboard)
- LinearLayout ll_keyboard;
- @BindView(R.id.icv)
- VerificationCodeView codeView;
-
private SoundPool soundPool;
private int soundId;
@@ -86,23 +45,30 @@ public class ScreenLockActivity extends BaseDataBindingActivity {
soundId = soundPool.load(this, R.raw.click, 1);
}
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_screen_lock;
+ }
+
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this,R.layout.activity_screen_lock);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
- ButterKnife.bind(this);
InputMethodManager imm = (InputMethodManager) ScreenLockActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(codeView.getWindowToken(), 0);
- codeView.getEditText().setOnClickListener(new View.OnClickListener() {
+ imm.hideSoftInputFromWindow(mViewDataBinding.codeView.getWindowToken(), 0);
+ mViewDataBinding.codeView.getEditText().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- ll_keyboard.setVisibility(View.VISIBLE);
+ mViewDataBinding.llKeyboard.setVisibility(View.VISIBLE);
}
});
- codeView.setInputCompleteListener(new VerificationCodeView.InputCompleteListener() {
+ mViewDataBinding.codeView.setInputCompleteListener(new VerificationCodeView.InputCompleteListener() {
@Override
public void inputComplete() {
checkPasswd();
@@ -114,39 +80,39 @@ public class ScreenLockActivity extends BaseDataBindingActivity {
}
});
- bt_del.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.btDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- tv_hint.setText("");
- codeView.clearInputContent();
+ mViewDataBinding.tvHint.setText("");
+ mViewDataBinding.codeView.clearInputContent();
}
});
- bt_confirm.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.btConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkPasswd();
}
});
- iv_back.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
- bt0.setOnClickListener(view1 -> add(codeView, "0"));
- bt1.setOnClickListener(view1 -> add(codeView, "1"));
- bt2.setOnClickListener(view1 -> add(codeView, "2"));
- bt3.setOnClickListener(view1 -> add(codeView, "3"));
- bt4.setOnClickListener(view1 -> add(codeView, "4"));
- bt5.setOnClickListener(view1 -> add(codeView, "5"));
- bt6.setOnClickListener(view1 -> add(codeView, "6"));
- bt7.setOnClickListener(view1 -> add(codeView, "7"));
- bt8.setOnClickListener(view1 -> add(codeView, "8"));
- bt9.setOnClickListener(view1 -> add(codeView, "9"));
+ mViewDataBinding.bt0.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "0"));
+ mViewDataBinding.bt1.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "1"));
+ mViewDataBinding.bt2.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "2"));
+ mViewDataBinding.bt3.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "3"));
+ mViewDataBinding.bt4.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "4"));
+ mViewDataBinding.bt5.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "5"));
+ mViewDataBinding.bt6.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "6"));
+ mViewDataBinding.bt7.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "7"));
+ mViewDataBinding.bt8.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "8"));
+ mViewDataBinding.bt9.setOnClickListener(view1 -> add(mViewDataBinding.codeView, "9"));
}
private void checkPasswd() {
- String content = codeView.getInputContent();
+ String content = mViewDataBinding.codeView.getInputContent();
if (TextUtils.isEmpty(content) || content.length() != 4) {
return;
}
@@ -157,13 +123,13 @@ public class ScreenLockActivity extends BaseDataBindingActivity {
exitDesktop();
} else {
setEmpty();
- tv_hint.setText("密码错误");
+ mViewDataBinding.tvHint.setText("密码错误");
}
} else if (CommonConfig.DEFAULT_PASSWORD.equals(content)) {
exitDesktop();
} else {
setEmpty();
- tv_hint.setText("密码错误");
+ mViewDataBinding.tvHint.setText("密码错误");
}
}
@@ -171,8 +137,8 @@ public class ScreenLockActivity extends BaseDataBindingActivity {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
- codeView.clearInputContent();
- tv_hint.setText("");
+ mViewDataBinding.codeView.clearInputContent();
+ mViewDataBinding.tvHint.setText("");
}
}, 1000);
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/screenlock/ScreenLockViewModel.java b/app/src/main/java/com/uiuios/aios/activity/screenlock/ScreenLockViewModel.java
new file mode 100644
index 0000000..58431fd
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/screenlock/ScreenLockViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.screenlock;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityScreenLockBinding;
+
+public class ScreenLockViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityScreenLockBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/setting/SettingActivity.java b/app/src/main/java/com/uiuios/aios/activity/setting/SettingActivity.java
new file mode 100644
index 0000000..9e44ae5
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/setting/SettingActivity.java
@@ -0,0 +1,167 @@
+package com.uiuios.aios.activity.setting;
+
+import android.Manifest;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Build;
+import android.provider.Settings;
+import android.view.View;
+import android.widget.Toast;
+
+import androidx.core.content.ContextCompat;
+
+import com.tencent.mmkv.MMKV;
+import com.uiuios.aios.R;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
+import com.uiuios.aios.config.CommonConfig;
+import com.uiuios.aios.databinding.ActivitySettingBinding;
+import com.uiuios.aios.service.main.MainService;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+public class SettingActivity extends BaseMvvmActivity {
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_setting;
+ }
+
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewDataBinding.setClick(new BtnClick());
+ }
+
+ @Override
+ protected void initView() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ private static final int REQUEST_CODE_DRAW_OVER_OTHER_APPS_PERMISSION = 200;
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (requestCode == REQUEST_CODE_DRAW_OVER_OTHER_APPS_PERMISSION) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {
+ // 权限被拒绝
+ Toast.makeText(this, "用户取消授予悬浮窗权限", Toast.LENGTH_SHORT).show();
+ } else {
+ // 权限已授予,可以显示悬浮窗
+ showFloatingWindow();
+ }
+ }
+ }
+
+ private void showFloatingWindow() {
+ mViewDataBinding.setFloatWindowEnable(true);
+ mMMKV.encode(CommonConfig.FLOAT_WINDOW, true);
+ startService(new Intent(SettingActivity.this, MainService.class));
+ sendBroadcast(new Intent(MainService.ACTION_FLOAT_WINDOW_ON));
+ }
+
+
+ private void hideFloatingWindow() {
+ mViewDataBinding.setFloatWindowEnable(false);
+ mMMKV.encode(CommonConfig.FLOAT_WINDOW, false);
+ startService(new Intent(SettingActivity.this, MainService.class));
+ sendBroadcast(new Intent(MainService.ACTION_FLOAT_WINDOW_OFF));
+ }
+
+ /***
+ * 检查悬浮窗开启权限
+ * @param context
+ * @return
+ */
+ public boolean checkFloatPermission(Context context) {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
+ return true;
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ try {
+ Class cls = Class.forName("android.content.Context");
+ Field declaredField = cls.getDeclaredField("APP_OPS_SERVICE");
+ declaredField.setAccessible(true);
+ Object obj = declaredField.get(cls);
+ if (!(obj instanceof String)) {
+ return false;
+ }
+ String str2 = (String) obj;
+ obj = cls.getMethod("getSystemService", String.class).invoke(context, str2);
+ cls = Class.forName("android.app.AppOpsManager");
+ Field declaredField2 = cls.getDeclaredField("MODE_ALLOWED");
+ declaredField2.setAccessible(true);
+ Method checkOp = cls.getMethod("checkOp", Integer.TYPE, Integer.TYPE, String.class);
+ int result = (Integer) checkOp.invoke(obj, 24, Binder.getCallingUid(), context.getPackageName());
+ return result == declaredField2.getInt(cls);
+ } catch (Exception e) {
+ return false;
+ }
+ } else {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ AppOpsManager appOpsMgr = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+ if (appOpsMgr == null)
+ return false;
+ int mode = appOpsMgr.checkOpNoThrow("android:system_alert_window", android.os.Process.myUid(), context
+ .getPackageName());
+ return Settings.canDrawOverlays(context) || mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_IGNORED;
+ } else {
+ return Settings.canDrawOverlays(context);
+ }
+ }
+ }
+
+ public class BtnClick {
+ public void openFloat(View view) {
+ boolean floatWindowEnable = mMMKV.decodeBool(CommonConfig.FLOAT_WINDOW, false);
+ if (floatWindowEnable) {
+
+ hideFloatingWindow();
+ } else {
+ boolean permission = checkFloatPermission(SettingActivity.this);
+ if (permission) {
+ showFloatingWindow();
+ } else {
+ // 在Activity或Fragment中请求权限
+ if (!Settings.canDrawOverlays(SettingActivity.this)) {
+ Toast.makeText(SettingActivity.this, "请先打开悬浮窗权限", Toast.LENGTH_LONG).show();
+ Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
+ Uri.parse("package:" + getPackageName()));
+ startActivityForResult(intent, REQUEST_CODE_DRAW_OVER_OTHER_APPS_PERMISSION);
+ } else {
+ showFloatingWindow();
+ }
+ }
+ }
+ }
+
+ public void toInternet(View view) {
+ startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+ }
+
+ public void toFont(View view) {
+ startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS));
+ }
+
+ public void toTouch(View view) {
+ startActivity(new Intent(SettingActivity.this, TouchActivity.class));
+ }
+
+ public void toSettings(View view) {
+ startActivity(new Intent(Settings.ACTION_SETTINGS));
+ }
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/setting/SettingViewModel.java b/app/src/main/java/com/uiuios/aios/activity/setting/SettingViewModel.java
new file mode 100644
index 0000000..23fab4a
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/setting/SettingViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.setting;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivitySettingBinding;
+
+public class SettingViewModel extends BaseViewModel {
+
+ @Override
+ public ActivitySettingBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/setting/SettingsActivity.java b/app/src/main/java/com/uiuios/aios/activity/setting/SettingsActivity.java
new file mode 100644
index 0000000..f33d583
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/setting/SettingsActivity.java
@@ -0,0 +1,54 @@
+package com.uiuios.aios.activity.setting;
+
+import android.os.Bundle;
+
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.uiuios.aios.R;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
+
+public class SettingsActivity extends BaseMvvmActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.settings_activity);
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.settings, new SettingsFragment())
+ .commit();
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return 0;
+ }
+
+ @Override
+ protected void initDataBinding() {
+
+ }
+
+ @Override
+ protected void initView() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ public static class SettingsFragment extends PreferenceFragmentCompat {
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ setPreferencesFromResource(R.xml.root_preferences, rootKey);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/uiuios/aios/activity/setting/TouchActivity.java b/app/src/main/java/com/uiuios/aios/activity/setting/TouchActivity.java
new file mode 100644
index 0000000..609724d
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/setting/TouchActivity.java
@@ -0,0 +1,51 @@
+package com.uiuios.aios.activity.setting;
+
+import android.content.Intent;
+import android.provider.Settings;
+import android.view.View;
+
+import com.uiuios.aios.R;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
+import com.uiuios.aios.databinding.ActivitySettingBinding;
+import com.uiuios.aios.databinding.ActivityTouchBinding;
+
+public class TouchActivity extends BaseMvvmActivity {
+
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_touch;
+ }
+
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewDataBinding.setClick(new BtnClick());
+ }
+
+ @Override
+ protected void initView() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ public class BtnClick {
+ public void toInternet(View view) {
+ startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+ }
+
+ public void toFont(View view) {
+ startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS));
+ }
+
+ public void toSettings(View view) {
+ startActivity(new Intent(Settings.ACTION_SETTINGS));
+ }
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/setting/TouchViewModel.java b/app/src/main/java/com/uiuios/aios/activity/setting/TouchViewModel.java
new file mode 100644
index 0000000..d8a9c9d
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/setting/TouchViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.setting;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityTouchBinding;
+
+public class TouchViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityTouchBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiContact.java b/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiContact.java
deleted file mode 100644
index ce94a3f..0000000
--- a/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiContact.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.uiuios.aios.activity.wifi;
-
-import com.uiuios.aios.base.mvp.BasePresenter;
-import com.uiuios.aios.base.mvp.BaseView;
-import com.uiuios.aios.bean.WiFiInfo;
-
-import java.util.List;
-
-public class WiFiContact {
- public interface Presenter extends BasePresenter {
- void getWiFiList();
- }
-
- public interface WiFiView extends BaseView {
- void setSavedWiFiList(List wiFiList);
- void setAvailableWiFiList(List wiFiList);
- }
-}
diff --git a/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiManagerActivity.java b/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiManagerActivity.java
index fd52f02..c100fc1 100644
--- a/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiManagerActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiManagerActivity.java
@@ -7,77 +7,65 @@ import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-import androidx.databinding.DataBindingUtil;
+import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
import com.hjq.toast.Toaster;
import com.uiuios.aios.R;
import com.uiuios.aios.adapter.AvailableWiFiAdapter;
import com.uiuios.aios.adapter.SavedWiFiAdapter;
-import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.WiFiInfo;
+import com.uiuios.aios.databinding.ActivityWifiManagerBinding;
import com.uiuios.aios.view.HorizontalItemDecoration;
import java.util.List;
-import butterknife.BindView;
import butterknife.ButterKnife;
-public class WiFiManagerActivity extends BaseDataBindingActivity implements WiFiContact.WiFiView {
+public class WiFiManagerActivity extends BaseMvvmActivity {
-
- @BindView(R.id.iv_close)
- ImageView iv_close;
- @BindView(R.id.rv_saved)
- RecyclerView rv_saved;
- @BindView(R.id.rv_available)
- RecyclerView rv_available;
- @BindView(R.id.tv_refresh)
- TextView tv_refresh;
- @BindView(R.id.tv_refresh2)
- TextView tv_refresh2;
-
- private WiFiPresenter mPresenter;
private SavedWiFiAdapter mSavedWiFiAdapter;
private AvailableWiFiAdapter mAvailableWiFiAdapter;
+
@Override
public boolean setNightMode() {
return true;
}
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_wifi_manager;
+ }
+
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this, R.layout.activity_wifi_manager);
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+// mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
- ButterKnife.bind(this);
- mPresenter = new WiFiPresenter(this);
- mPresenter.attachView(this);
- mPresenter.setLifecycle(getLifecycleSubject());
-
- iv_close.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.ivClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
- tv_refresh.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.tvRefresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- mPresenter.getWiFiList();
+ mViewModel.getWiFiList();
}
});
- tv_refresh2.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.tvRefresh2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- mPresenter.getWiFiList();
+ mViewModel.getWiFiList();
}
});
@@ -86,14 +74,14 @@ public class WiFiManagerActivity extends BaseDataBindingActivity implements WiFi
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
- rv_saved.setLayoutManager(linearLayoutManager);
- rv_saved.addItemDecoration(new HorizontalItemDecoration(30, this));
- rv_saved.setAdapter(mSavedWiFiAdapter);
+ mViewDataBinding.rvSaved.setLayoutManager(linearLayoutManager);
+ mViewDataBinding.rvSaved.addItemDecoration(new HorizontalItemDecoration(30, this));
+ mViewDataBinding.rvSaved.setAdapter(mSavedWiFiAdapter);
LinearLayoutManager linearLayoutManager2 = new LinearLayoutManager(this);
linearLayoutManager2.setOrientation(LinearLayoutManager.VERTICAL);
- rv_available.setLayoutManager(linearLayoutManager2);
- rv_available.setAdapter(mAvailableWiFiAdapter);
+ mViewDataBinding.rvAvailable.setLayoutManager(linearLayoutManager2);
+ mViewDataBinding.rvAvailable.setAdapter(mAvailableWiFiAdapter);
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
@@ -105,12 +93,25 @@ public class WiFiManagerActivity extends BaseDataBindingActivity implements WiFi
registerReceiver(broadcastReceiver, filter);
- mPresenter.getWiFiList();
+ mViewModel.getWiFiList();
}
@Override
public void initData() {
+ mViewModel.getSavedWiFiList().observe(this, new Observer>() {
+ @Override
+ public void onChanged(List wiFiInfos) {
+ Toaster.show("刷新成功");
+ mSavedWiFiAdapter.setResultList(wiFiInfos);
+ }
+ });
+ mViewModel.getAvailableWiFiList().observe(this, new Observer>() {
+ @Override
+ public void onChanged(List wiFiInfos) {
+ mAvailableWiFiAdapter.setResultList(wiFiInfos);
+ }
+ });
}
@Override
@@ -132,22 +133,11 @@ public class WiFiManagerActivity extends BaseDataBindingActivity implements WiFi
case WifiManager.NETWORK_STATE_CHANGED_ACTION:
case WifiManager.SUPPLICANT_STATE_CHANGED_ACTION:
default:
- mPresenter.getWiFiList();
+ mViewModel.getWiFiList();
break;
}
}
}
};
-
- @Override
- public void setSavedWiFiList(List wiFiList) {
- Toaster.show("刷新成功");
- mSavedWiFiAdapter.setResultList(wiFiList);
- }
-
- @Override
- public void setAvailableWiFiList(List wiFiList) {
- mAvailableWiFiAdapter.setResultList(wiFiList);
- }
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiPresenter.java b/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiManagerViewModel.java
similarity index 79%
rename from app/src/main/java/com/uiuios/aios/activity/wifi/WiFiPresenter.java
rename to app/src/main/java/com/uiuios/aios/activity/wifi/WiFiManagerViewModel.java
index 200da9b..940c933 100644
--- a/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiPresenter.java
+++ b/app/src/main/java/com/uiuios/aios/activity/wifi/WiFiManagerViewModel.java
@@ -6,10 +6,12 @@ import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
-import androidx.annotation.NonNull;
+import androidx.lifecycle.MutableLiveData;
import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
import com.uiuios.aios.bean.WiFiInfo;
+import com.uiuios.aios.databinding.ActivityWifiManagerBinding;
import java.util.ArrayList;
import java.util.Comparator;
@@ -19,42 +21,35 @@ import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Collectors;
-import io.reactivex.rxjava3.subjects.BehaviorSubject;
-
import static android.text.TextUtils.isEmpty;
-public class WiFiPresenter implements WiFiContact.Presenter {
+public class WiFiManagerViewModel extends BaseViewModel {
- private WiFiContact.WiFiView mView;
- private Context mContext;
-
- private BehaviorSubject lifecycle;
-
- public void setLifecycle(BehaviorSubject lifecycle) {
- this.lifecycle = lifecycle;
- }
-
- public BehaviorSubject getLifecycle() {
- return lifecycle;
- }
-
- WiFiPresenter(Context context) {
- this.mContext = context;
+ @Override
+ public ActivityWifiManagerBinding getVDBinding() {
+ return binding;
}
@Override
- public void attachView(@NonNull WiFiContact.WiFiView view) {
- this.mView = view;
+ public void onDestroy() {
+
}
- @Override
- public void detachView() {
- this.mView = null;
+ private MutableLiveData> mSavedWiFiList =new MutableLiveData<>();
+
+ public MutableLiveData> getSavedWiFiList() {
+ return mSavedWiFiList;
+ }
+
+ private MutableLiveData> mAvailableWiFiList =new MutableLiveData<>();
+
+ public MutableLiveData> getAvailableWiFiList() {
+ return mAvailableWiFiList;
}
- @Override
public void getWiFiList() {
- WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+ if (getCtx()==null)return;
+ WifiManager wifiManager = (WifiManager) getCtx().getSystemService(Context.WIFI_SERVICE);
List wifiConfigurations = wifiManager.getConfiguredNetworks();
Map savedWifiConfiguration = new HashMap<>();
for (WifiConfiguration wifiConfiguration : wifiConfigurations) {
@@ -110,7 +105,7 @@ public class WiFiPresenter implements WiFiContact.Presenter {
}
});
}
- mView.setSavedWiFiList(savedList.stream().sorted(new Comparator() {
+ mSavedWiFiList.setValue(savedList.stream().sorted(new Comparator() {
@Override
public int compare(WiFiInfo o1, WiFiInfo o2) {
if (o1.isAvailable()) {
@@ -122,6 +117,6 @@ public class WiFiPresenter implements WiFiContact.Presenter {
}
}
}).collect(Collectors.toList()));
- mView.setAvailableWiFiList(availableList);
+ mAvailableWiFiList.setValue(availableList);
}
}
diff --git a/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java
index c3ee060..1b08332 100644
--- a/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java
+++ b/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java
@@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.QuickAppActivity;
+import com.uiuios.aios.activity.quickapp.QuickAppActivity;
import com.uiuios.aios.bean.AppSelectBean;
import com.uiuios.aios.config.CommonConfig;
diff --git a/app/src/main/java/com/uiuios/aios/adapter/ArticleAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/ArticleAdapter.java
index 93b57fe..8d49066 100644
--- a/app/src/main/java/com/uiuios/aios/adapter/ArticleAdapter.java
+++ b/app/src/main/java/com/uiuios/aios/adapter/ArticleAdapter.java
@@ -13,7 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.shehuan.niv.NiceImageView;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.ArticleActivity;
+import com.uiuios.aios.activity.article.ArticleActivity;
import com.uiuios.aios.bean.ArticleInfo;
import java.util.List;
diff --git a/app/src/main/java/com/uiuios/aios/adapter/GoodsAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/GoodsAdapter.java
index 002842a..2232ddc 100644
--- a/app/src/main/java/com/uiuios/aios/adapter/GoodsAdapter.java
+++ b/app/src/main/java/com/uiuios/aios/adapter/GoodsAdapter.java
@@ -2,12 +2,10 @@ package com.uiuios.aios.adapter;
import android.content.Context;
import android.content.Intent;
-import android.net.Uri;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -17,7 +15,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.shehuan.niv.NiceImageView;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.DetailsActivity;
+import com.uiuios.aios.activity.details.DetailsActivity;
import com.uiuios.aios.bean.GoodsInfo;
import java.util.List;
diff --git a/app/src/main/java/com/uiuios/aios/adapter/GoodsListAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/GoodsListAdapter.java
index 1b0afd2..320ecdc 100644
--- a/app/src/main/java/com/uiuios/aios/adapter/GoodsListAdapter.java
+++ b/app/src/main/java/com/uiuios/aios/adapter/GoodsListAdapter.java
@@ -15,7 +15,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.shehuan.niv.NiceImageView;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.DetailsActivity;
+import com.uiuios.aios.activity.details.DetailsActivity;
import com.uiuios.aios.bean.GoodsInfo;
import java.util.List;
diff --git a/app/src/main/java/com/uiuios/aios/adapter/NewGoodsAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/NewGoodsAdapter.java
index 05846df..13ce5ef 100644
--- a/app/src/main/java/com/uiuios/aios/adapter/NewGoodsAdapter.java
+++ b/app/src/main/java/com/uiuios/aios/adapter/NewGoodsAdapter.java
@@ -2,7 +2,6 @@ package com.uiuios.aios.adapter;
import android.content.Context;
import android.content.Intent;
-import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -15,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.shehuan.niv.NiceImageView;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.DetailsActivity;
+import com.uiuios.aios.activity.details.DetailsActivity;
import com.uiuios.aios.activity.GoodsActivity;
import com.uiuios.aios.bean.GoodsInfo;
diff --git a/app/src/main/java/com/uiuios/aios/adapter/SOSNnmberAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/SOSNnmberAdapter.java
index d8a9669..e2b8a9a 100644
--- a/app/src/main/java/com/uiuios/aios/adapter/SOSNnmberAdapter.java
+++ b/app/src/main/java/com/uiuios/aios/adapter/SOSNnmberAdapter.java
@@ -12,7 +12,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.EmergencyActivity;
+import com.uiuios.aios.activity.emergency.EmergencyActivity;
import com.uiuios.aios.bean.Contact;
import java.util.List;
diff --git a/app/src/main/java/com/uiuios/aios/adapter/WechatContactAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/WechatContactAdapter.java
index 62a3696..7247fd6 100644
--- a/app/src/main/java/com/uiuios/aios/adapter/WechatContactAdapter.java
+++ b/app/src/main/java/com/uiuios/aios/adapter/WechatContactAdapter.java
@@ -3,7 +3,6 @@ package com.uiuios.aios.adapter;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
-import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -16,17 +15,10 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
-import com.hjq.toast.Toaster;
import com.shehuan.niv.NiceImageView;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.callwechat.CallWechatActivity;
-import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.bean.Contact;
-import com.uiuios.aios.bean.WechatInfo;
-import com.uiuios.aios.db.ContactManager;
-import com.uiuios.aios.dialog.DeleteContactDialog;
-import com.uiuios.aios.dialog.DeleteDialog;
-import com.uiuios.aios.service.WeAccessibilityService;
import com.uiuios.aios.utils.AccessibilityUtils;
import java.util.List;
diff --git a/app/src/main/java/com/uiuios/aios/base/BaseApplication.java b/app/src/main/java/com/uiuios/aios/base/BaseApplication.java
index 3f3b223..573efbb 100644
--- a/app/src/main/java/com/uiuios/aios/base/BaseApplication.java
+++ b/app/src/main/java/com/uiuios/aios/base/BaseApplication.java
@@ -17,7 +17,7 @@ import com.tencent.bugly.crashreport.CrashReport;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.alarm.AlarmUtils;
-import com.uiuios.aios.db.ContactManager;
+import com.uiuios.aios.db.WechatContactManager;
import com.uiuios.aios.manager.AmapManager;
import com.uiuios.aios.manager.AppManager;
import com.uiuios.aios.manager.AppStatusManager;
@@ -76,7 +76,7 @@ public class BaseApplication extends Application {
} catch (Exception e) {
Log.e(TAG, "onCreate: " + e.getMessage());
}
- ContactManager.init(this);
+ WechatContactManager.init(this);
}
private void aliyunPushInit() {
diff --git a/app/src/main/java/com/uiuios/aios/config/CommonConfig.java b/app/src/main/java/com/uiuios/aios/config/CommonConfig.java
index f00867f..2d06076 100644
--- a/app/src/main/java/com/uiuios/aios/config/CommonConfig.java
+++ b/app/src/main/java/com/uiuios/aios/config/CommonConfig.java
@@ -74,4 +74,8 @@ public class CommonConfig {
public static final String EMERGENCY_CONTACT_KEY = "emergency_contact_phone";
public static final String FAMILY_ADDRESS_KEY = "Family_Address";
+ public static final String FLOAT_WINDOW = "FloatWindowEnable";
+
+ public static final String AMAP_LOCATION_MAP_BEAN = "AMapLocation_MapBean_key";
+ public static final String AMAP_LOCATION_District = "AMapLocationMapBean_key";
}
diff --git a/app/src/main/java/com/uiuios/aios/db/ContactDbHelper.java b/app/src/main/java/com/uiuios/aios/db/WechatContactDbHelper.java
similarity index 72%
rename from app/src/main/java/com/uiuios/aios/db/ContactDbHelper.java
rename to app/src/main/java/com/uiuios/aios/db/WechatContactDbHelper.java
index e4d3994..ef25128 100644
--- a/app/src/main/java/com/uiuios/aios/db/ContactDbHelper.java
+++ b/app/src/main/java/com/uiuios/aios/db/WechatContactDbHelper.java
@@ -10,27 +10,27 @@ import androidx.annotation.Nullable;
import java.io.File;
-public class ContactDbHelper extends SQLiteOpenHelper {
+public class WechatContactDbHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "contactList.db";
public static final String TABLE_NAME = "contact_table";
private static final int DATABASE_VERSION = 1;
- public ContactDbHelper(Context context) {
+ public WechatContactDbHelper(Context context) {
// super(context, DATABASE_FILE_NAME, null, DATABASE_VERSION);
super(context, context.getExternalCacheDir() + File.separator + DATABASE_NAME, null, DATABASE_VERSION);
// super(context, Environment.getExternalStorageDirectory().getPath() + File.separator + DATABASE_FILE_NAME, null, DATABASE_VERSION);
}
- public ContactDbHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
+ public WechatContactDbHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
- public ContactDbHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version, @Nullable DatabaseErrorHandler errorHandler) {
+ public WechatContactDbHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version, @Nullable DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
-// public ContactDbHelper(@Nullable Context context, @Nullable String name, int version, @NonNull SQLiteDatabase.OpenParams openParams) {
+// public WechatContactDbHelper(@Nullable Context context, @Nullable String name, int version, @NonNull SQLiteDatabase.OpenParams openParams) {
// super(context, name, version, openParams);
// }
diff --git a/app/src/main/java/com/uiuios/aios/db/ContactManager.java b/app/src/main/java/com/uiuios/aios/db/WechatContactManager.java
similarity index 75%
rename from app/src/main/java/com/uiuios/aios/db/ContactManager.java
rename to app/src/main/java/com/uiuios/aios/db/WechatContactManager.java
index 3817d34..ef035dd 100644
--- a/app/src/main/java/com/uiuios/aios/db/ContactManager.java
+++ b/app/src/main/java/com/uiuios/aios/db/WechatContactManager.java
@@ -12,39 +12,39 @@ import com.uiuios.aios.bean.WechatInfo;
import java.util.ArrayList;
import java.util.List;
-public class ContactManager {
- private static String TAG = ContactManager.class.getSimpleName();
+public class WechatContactManager {
+ private static String TAG = WechatContactManager.class.getSimpleName();
@SuppressLint("StaticFieldLeak")
- private static ContactManager sInstance;
+ private static WechatContactManager sInstance;
private Context mContext;
- private ContactDbHelper mDBHelper;
+ private WechatContactDbHelper mDBHelper;
- private ContactManager(Context context) {
+ private WechatContactManager(Context context) {
if (context == null) {
throw new RuntimeException("Context is NULL");
}
mContext = context;
- mDBHelper = new ContactDbHelper(context);
+ mDBHelper = new WechatContactDbHelper(context);
}
public static void init(Context context) {
if (sInstance == null) {
- sInstance = new ContactManager(context);
+ sInstance = new WechatContactManager(context);
}
}
- public static ContactManager getInstance() {
+ public static WechatContactManager getInstance() {
if (sInstance == null) {
- throw new IllegalStateException("You must be init ContactManager first");
+ throw new IllegalStateException("You must be init WechatContactManager first");
}
return sInstance;
}
- public ContactDbHelper getDBHelper() {
+ public WechatContactDbHelper getDBHelper() {
if (mDBHelper == null) {
- mDBHelper = new ContactDbHelper(mContext);
+ mDBHelper = new WechatContactDbHelper(mContext);
}
return mDBHelper;
}
@@ -57,11 +57,11 @@ public class ContactManager {
values.put("wechatid", wechatInfo.getWechatId());
values.put("mobile", wechatInfo.getMobile());
values.put("avatar_path", wechatInfo.getAvatarPath());
-// long id = db.insert(ContactDbHelper.TABLE_NAME, null, values);
+// long id = db.insert(WechatContactDbHelper.TABLE_NAME, null, values);
long id = -1;
db.beginTransaction();
try {
- id = db.insertWithOnConflict(ContactDbHelper.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_REPLACE);
+ id = db.insertWithOnConflict(WechatContactDbHelper.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_REPLACE);
db.setTransactionSuccessful();
} catch (Exception e) {
Log.e(TAG, "addWechatInfo: " + e.getMessage());
@@ -73,13 +73,13 @@ public class ContactManager {
public boolean delete(Integer sqlId) {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
- long id = db.delete(ContactDbHelper.TABLE_NAME, "_id=?", new String[]{sqlId.toString()});
+ long id = db.delete(WechatContactDbHelper.TABLE_NAME, "_id=?", new String[]{sqlId.toString()});
return id > 0;
}
public boolean deleteAll() {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
- long id = db.delete(ContactDbHelper.TABLE_NAME, "", null);
+ long id = db.delete(WechatContactDbHelper.TABLE_NAME, "", null);
return id > 0;
}
@@ -91,7 +91,7 @@ public class ContactManager {
values.put("wechatid", wechatInfo.getWechatId());
values.put("mobile", wechatInfo.getMobile());
values.put("avatar_path", wechatInfo.getAvatarPath());
- long id = db.update(ContactDbHelper.TABLE_NAME, values, "_id=?", new String[]{String.valueOf(wechatInfo.getId())});
+ long id = db.update(WechatContactDbHelper.TABLE_NAME, values, "_id=?", new String[]{String.valueOf(wechatInfo.getId())});
return id > 0;
}
@@ -99,7 +99,7 @@ public class ContactManager {
List wechatInfoList = new ArrayList<>();
SQLiteDatabase db = mDBHelper.getReadableDatabase();
long time = System.currentTimeMillis();
- String sql = "select * from " + ContactDbHelper.TABLE_NAME;
+ String sql = "select * from " + WechatContactDbHelper.TABLE_NAME;
Cursor cursor = null;
try {
cursor = db.rawQuery(sql, null);
diff --git a/app/src/main/java/com/uiuios/aios/fragment/app/AppListFragment.java b/app/src/main/java/com/uiuios/aios/fragment/app/AppListFragment.java
index 6f29957..3105912 100644
--- a/app/src/main/java/com/uiuios/aios/fragment/app/AppListFragment.java
+++ b/app/src/main/java/com/uiuios/aios/fragment/app/AppListFragment.java
@@ -5,7 +5,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
-import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Process;
@@ -27,15 +26,13 @@ import com.hjq.toast.Toaster;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.FragmentEvent;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.ScreenLockActivity;
+import com.uiuios.aios.activity.screenlock.ScreenLockActivity;
import com.uiuios.aios.activity.dailyapp.DailyAppActivity;
-import com.uiuios.aios.activity.main.OldMainActivity;
+import com.uiuios.aios.activity.main.deprecated.OldMainActivity;
import com.uiuios.aios.base.BaseFragment;
-import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.DesktopIcon;
import com.uiuios.aios.config.CommonConfig;
-import com.uiuios.aios.databinding.FragmentApplistBinding;
import com.uiuios.aios.dialog.DailyAppDialog;
import com.uiuios.aios.dialog.ShortcutDialog;
import com.uiuios.aios.manager.AppManager;
diff --git a/app/src/main/java/com/uiuios/aios/fragment/contact/ContactFragment.java b/app/src/main/java/com/uiuios/aios/fragment/contact/ContactFragment.java
index 14c8a66..6435205 100644
--- a/app/src/main/java/com/uiuios/aios/fragment/contact/ContactFragment.java
+++ b/app/src/main/java/com/uiuios/aios/fragment/contact/ContactFragment.java
@@ -8,10 +8,17 @@ import android.view.Gravity;
import android.view.View;
import android.view.Window;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.GridLayoutManager;
import com.hjq.toast.Toaster;
+import com.jeremyliao.liveeventbus.LiveEventBus;
+import com.qweather.sdk.bean.weather.WeatherDailyBean;
+import com.qweather.sdk.bean.weather.WeatherHourlyBean;
+import com.qweather.sdk.bean.weather.WeatherNowBean;
+import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.contact.AddWechatContactActivity;
import com.uiuios.aios.activity.contact.EditContactActivity;
@@ -19,18 +26,22 @@ import com.uiuios.aios.adapter.WechatContactAdapter;
import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.Contact;
-import com.uiuios.aios.bean.WechatInfo;
+import com.uiuios.aios.bean.MapBean;
+import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.FragmentContactHomeBinding;
-import com.uiuios.aios.db.ContactManager;
-import com.uiuios.aios.dialog.DeleteContactDialog;
import com.uiuios.aios.dialog.EditContactDialog;
+import com.uiuios.aios.utils.DayUtils;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
public class ContactFragment extends BaseMvvmFragment {
private static final String TAG = ContactFragment.class.getSimpleName();
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+ private FragmentActivity mContext;
private WechatContactAdapter mContactAdapter;
@Override
@@ -40,6 +51,7 @@ public class ContactFragment extends BaseMvvmFragment() {
+ @Override
+ public void onChanged(@Nullable MapBean mapBean) {
+ mViewDataBinding.tvLocation.setText(mapBean.getDistrict());
+ }
+ });
+ } else {
+
+ }
}
@Override
protected void initData(Bundle savedInstanceState) {
+ LiveEventBus
+ .get("some_key1", WeatherNowBean.NowBaseBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherNowBean.NowBaseBean nowBaseBean) {
+ mViewDataBinding.tvTemp.setText(nowBaseBean.getTemp() + "℃");
+ if (DayUtils.isNight()) {
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_night));
+ } else {
+ switch (nowBaseBean.getIcon()) {
+ default:
+ case "100":
+ case "150":
+ //晴
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather));
+ break;
+ case "102":
+ case "152":
+ //少云
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_rain));
+ break;
+ }
+ }
+// mViewDataBinding.tvWeather.setText(nowBaseBean.getText());
+ }
+ });
+
+ LiveEventBus
+ .get("some_key2", WeatherHourlyBean.HourlyBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherHourlyBean.HourlyBean hourlyBean) {
+ String imageName = "he" + hourlyBean.getIcon();
+ Log.e(TAG, "onSuccess: " + imageName);
+ if (isAdded()) {
+ int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
+ Log.e(TAG, "onSuccess: " + resId);
+ if (resId == 0) {
+ mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
+ } else {
+ mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(resId));
+ }
+ mViewDataBinding.tvTemp.setText(hourlyBean.getTemp() + "℃");
+ }
+ }
+ });
+
+ LiveEventBus
+ .get("some_key3", WeatherDailyBean.DailyBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherDailyBean.DailyBean dailyBean) {
+ mViewDataBinding.tvWeather.setText(dailyBean.getTempMin() + "℃ - " + dailyBean.getTempMax() + "℃");
+ }
+ });
+
+ LiveEventBus
+ .get("time", String.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable String s) {
+ mViewDataBinding.tvTime.setText(s);
+ }
+ });
+
+ LiveEventBus
+ .get("week", String.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable String s) {
+ mViewDataBinding.tvData.setText(s);
+ }
+ });
+
mViewModel.getContactList().observe(this, new Observer>() {
@Override
public void onChanged(List contacts) {
@@ -94,13 +207,14 @@ public class ContactFragment extends BaseMvvmFragment {
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
@@ -52,40 +46,21 @@ public class ContactViewModel extends BaseViewModel>() {
-// @Override
-// public void subscribe(@NonNull ObservableEmitter> emitter) throws Throwable {
-// emitter.onNext(ContactManager.getInstance().getWechatInfoList());
-// }
-// })
-// .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new Observer>() {
-// @Override
-// public void onSubscribe(@NonNull Disposable d) {
-// Log.e("getWechatInfoList", "onSubscribe: ");
-// }
-//
-// @Override
-// public void onNext(@NonNull List wechatInfos) {
-// Log.e("getWechatInfoList", "onNext: " + wechatInfos);
-// mContactList.setValue(wechatInfos);
-// }
-//
-// @Override
-// public void onError(@NonNull Throwable e) {
-// Log.e("getWechatInfoList", "onError: " + e.getMessage());
-// mContactList.setValue(null);
-// }
-//
-// @Override
-// public void onComplete() {
-// Log.e("getWechatInfoList", "onComplete: ");
-// }
-// });
+ public void getCacheContact() {
+ String jsonString = mMMKV.getString(UrlAddress.GET_MAIL_LIST, null);
+ Gson gson = new Gson();
+ Type type = new TypeToken>() {
+ }.getType();
+ if (!TextUtils.isEmpty(jsonString)) {
+ List contacts = gson.fromJson(jsonString, type);
+ if (contacts != null) {
+ mContactList.setValue(contacts);
+ }
+ }
+ getContact();
+ }
+ public void getContact() {
NetInterfaceManager.getInstance()
.getContactListObservable()
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
diff --git a/app/src/main/java/com/uiuios/aios/fragment/control/ControlFragment.java b/app/src/main/java/com/uiuios/aios/fragment/control/ControlFragment.java
index 8f4b20c..ded36a0 100644
--- a/app/src/main/java/com/uiuios/aios/fragment/control/ControlFragment.java
+++ b/app/src/main/java/com/uiuios/aios/fragment/control/ControlFragment.java
@@ -32,17 +32,14 @@ import android.view.WindowManager;
import android.widget.SeekBar;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
-import com.hjq.toast.Toaster;
-import com.jeremyliao.liveeventbus.LiveEventBus;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
+import com.uiuios.aios.activity.setting.SettingActivity;
import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
import com.uiuios.aios.bean.FamilyAddress;
-import com.uiuios.aios.bean.MapBean;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.PhoneFragmentControlBinding;
import com.uiuios.aios.manager.AmapManager;
@@ -171,12 +168,13 @@ public class ControlFragment extends BaseMvvmFragment() {
// @Override
// public void onChanged(@Nullable MapBean mapBean) {
diff --git a/app/src/main/java/com/uiuios/aios/fragment/custom/CustomFragment.java b/app/src/main/java/com/uiuios/aios/fragment/custom/CustomFragment.java
index 383fef1..e5cce6e 100644
--- a/app/src/main/java/com/uiuios/aios/fragment/custom/CustomFragment.java
+++ b/app/src/main/java/com/uiuios/aios/fragment/custom/CustomFragment.java
@@ -50,9 +50,9 @@ import com.qweather.sdk.view.QWeather;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.ControlActivity;
-import com.uiuios.aios.activity.EmergencyActivity;
-import com.uiuios.aios.activity.QuickAppActivity;
+import com.uiuios.aios.activity.control.ControlActivity;
+import com.uiuios.aios.activity.emergency.EmergencyActivity;
+import com.uiuios.aios.activity.quickapp.QuickAppActivity;
import com.uiuios.aios.activity.alarm.port.PortAlarmActivity;
import com.uiuios.aios.activity.code.FamilySpaceActivity;
import com.uiuios.aios.activity.contact.ContactActivity;
@@ -79,6 +79,7 @@ import com.uiuios.aios.push.PushManager;
import com.uiuios.aios.utils.ApkUtils;
import com.uiuios.aios.utils.AppUtil;
import com.uiuios.aios.utils.BitmapUtils;
+import com.uiuios.aios.utils.DayUtils;
import com.uiuios.aios.utils.NetStateUtils;
import com.uiuios.aios.utils.SchemeUtils;
@@ -902,7 +903,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
case "150":
case "102":
case "152":
- if (isnight()) {
+ if (DayUtils.isNight()) {
cl_weather.setBackground(ContextCompat.getDrawable(mContext, R.drawable.background_weather_sun));
} else {
cl_weather.setBackground(ContextCompat.getDrawable(mContext, R.drawable.background_weather_sun_night));
@@ -974,14 +975,6 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
});
}
- private boolean isnight() {
- Calendar calendar = Calendar.getInstance();
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- int minute = calendar.get(Calendar.MINUTE);
- int second = calendar.get(Calendar.SECOND);
- return hour >= 16 && minute >= 30;
- }
-
private void killBackgroundApp() {
List pkgList = ApkUtils.queryFilterAppList(mContext);
for (String pkg : pkgList) {
diff --git a/app/src/main/java/com/uiuios/aios/fragment/home/HomeFragment.java b/app/src/main/java/com/uiuios/aios/fragment/home/HomeFragment.java
index 26b94d4..376f641 100644
--- a/app/src/main/java/com/uiuios/aios/fragment/home/HomeFragment.java
+++ b/app/src/main/java/com/uiuios/aios/fragment/home/HomeFragment.java
@@ -26,11 +26,12 @@ import com.qweather.sdk.bean.weather.WeatherNowBean;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.EmergencyActivity;
+import com.uiuios.aios.activity.emergency.EmergencyActivity;
import com.uiuios.aios.activity.addicon.AddIconActivity;
import com.uiuios.aios.activity.alarm.port.PortAlarmActivity;
import com.uiuios.aios.activity.contact.ContactActivity;
import com.uiuios.aios.activity.dailyapp.DailyAppActivity;
+import com.uiuios.aios.activity.setting.SettingActivity;
import com.uiuios.aios.activity.weather.WeatherActivity;
import com.uiuios.aios.adapter.HomeAppAdapter;
import com.uiuios.aios.alarm.AlarmClockData;
@@ -47,6 +48,7 @@ import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.push.PushManager;
import com.uiuios.aios.utils.ApkUtils;
import com.uiuios.aios.utils.AppUtil;
+import com.uiuios.aios.utils.DayUtils;
import com.uiuios.aios.view.RecyclerViewSpacesItemDecoration;
import java.text.ParseException;
@@ -128,7 +130,7 @@ public class HomeFragment extends BaseMvvmFragment() {
- @Override
- public void onChanged(WeatherNowBean.NowBaseBean nowBaseBean) {
- mViewDataBinding.tvTemp.setText(nowBaseBean.getTemp() + "℃");
- if (isNight()) {
- mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_night));
- } else {
- switch (nowBaseBean.getIcon()) {
- default:
- case "100":
- case "150":
- //晴
- mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather));
- break;
- case "102":
- case "152":
- //少云
- mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_rain));
- break;
- }
- }
+ LiveEventBus
+ .get("some_key1", WeatherNowBean.NowBaseBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherNowBean.NowBaseBean nowBaseBean) {
+ mViewDataBinding.tvTemp.setText(nowBaseBean.getTemp() + "℃");
+ if (DayUtils.isNight()) {
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_night));
+ } else {
+ switch (nowBaseBean.getIcon()) {
+ default:
+ case "100":
+ case "150":
+ //晴
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather));
+ break;
+ case "102":
+ case "152":
+ //少云
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_rain));
+ break;
+ }
+ }
// mViewDataBinding.tvWeather.setText(nowBaseBean.getText());
- }
- });
-
- mViewModel.getHourlyBeanData().observe(this, new Observer() {
- @Override
- public void onChanged(WeatherHourlyBean.HourlyBean hourlyBean) {
- String imageName = "he" + hourlyBean.getIcon();
- Log.e(TAG, "onSuccess: " + imageName);
- if (isAdded()) {
- int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
- Log.e(TAG, "onSuccess: " + resId);
- if (resId == 0) {
- mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
- } else {
- mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(resId));
}
- mViewDataBinding.tvTemp.setText(hourlyBean.getTemp() + "℃");
- }
- }
- });
+ });
- mViewModel.getDailyBeanData().observe(this, new Observer() {
- @Override
- public void onChanged(WeatherDailyBean.DailyBean dailyBean) {
- mViewDataBinding.tvWeather.setText(dailyBean.getTempMin() + "℃ - " + dailyBean.getTempMax() + "℃");
- }
- });
+ LiveEventBus
+ .get("some_key2", WeatherHourlyBean.HourlyBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherHourlyBean.HourlyBean hourlyBean) {
+ String imageName = "he" + hourlyBean.getIcon();
+ Log.e(TAG, "onSuccess: " + imageName);
+ if (isAdded()) {
+ int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
+ Log.e(TAG, "onSuccess: " + resId);
+ if (resId == 0) {
+ mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
+ } else {
+ mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(resId));
+ }
+ mViewDataBinding.tvTemp.setText(hourlyBean.getTemp() + "℃");
+ }
+ }
+ });
+
+ LiveEventBus
+ .get("some_key3", WeatherDailyBean.DailyBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherDailyBean.DailyBean dailyBean) {
+ mViewDataBinding.tvWeather.setText(dailyBean.getTempMin() + "℃ - " + dailyBean.getTempMax() + "℃");
+ }
+ });
+
+ LiveEventBus
+ .get("time", String.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable String s) {
+ mViewDataBinding.tvTime.setText(s);
+ }
+ });
+
+ LiveEventBus
+ .get("week", String.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable String s) {
+ mViewDataBinding.tvData.setText(s);
+ }
+ });
}
@@ -271,18 +297,6 @@ public class HomeFragment extends BaseMvvmFragment stringIntegerHashMap = new HashMap<>();
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
@@ -304,6 +318,8 @@ public class HomeFragment extends BaseMvvmFragment() {
@Override
public void onChanged(@Nullable MapBean mapBean) {
- mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_DISTRICT, mapBean.getDistrict());
- mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_TUDE, mapBean.getLongitude() + "," + mapBean.getLatitude());
mViewDataBinding.tvLocation.setText(mapBean.getDistrict());
- mViewModel.getWeather(mapBean.getLongitude() + "," + mapBean.getLatitude());
}
});
+ } else {
+
}
}
-
- private boolean isNight() {
- Calendar calendar = Calendar.getInstance();
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- int minute = calendar.get(Calendar.MINUTE);
- int second = calendar.get(Calendar.SECOND);
- return hour >= 16 && minute >= 30;
- }
-
public class BtnClick {
public void edit(View view) {
startActivity(new Intent(mContext, AddIconActivity.class));
@@ -537,6 +505,11 @@ public class HomeFragment extends BaseMvvmFragment mNowBaseBeanData = new MutableLiveData<>();
-
- public MutableLiveData getNowBaseBeanData() {
- return mNowBaseBeanData;
- }
-
- public void getWeatherNow(String location) {
- Log.e(TAG, "getWeatherNow: " + location);
- /**
- * 实况天气数据
- * @param location 所查询的地区,可通过该地区名称、ID、IP和经纬度进行查询经纬度格式:经度,纬度
- * (英文,分隔,十进制格式,北纬东经为正,南纬西经为负)
- * @param lang (选填)多语言,可以不使用该参数,默认为简体中文
- * @param unit (选填)单位选择,公制(m)或英制(i),默认为公制单位
- * @param listener 网络访问结果回调
- */
- QWeather.getWeatherNow(getCtx(), location, Lang.ZH_HANS, Unit.METRIC, new QWeather.OnResultWeatherNowListener() {
- @Override
- public void onError(Throwable e) {
- Log.e("getWeatherNow", "onError: " + e);
- }
-
- @Override
- public void onSuccess(WeatherNowBean weatherBean) {
- Log.d("getWeatherNow", "onSuccess: " + new Gson().toJson(weatherBean));
- //先判断返回的status是否正确,当status正确时获取数据,若status不正确,可查看status对应的Code值找到原因
- if (Code.OK == weatherBean.getCode()) {
- WeatherNowBean.NowBaseBean now = weatherBean.getNow();
- mNowBaseBeanData.postValue(now);
- Log.d("getWeatherNow", "onSuccess: now " + new Gson().toJson(now));
- } else {
- //在此查看返回数据失败的原因
- Code code = weatherBean.getCode();
- Log.d("getWeatherNow", "failed code: " + code);
- }
- }
- });
- }
-
- private MutableLiveData mHourlyBeanData = new MutableLiveData<>();
-
- public MutableLiveData getHourlyBeanData() {
- return mHourlyBeanData;
- }
-
- public void getWeather24Hourly(String location) {
- QWeather.getWeather24Hourly(getCtx(), location, new QWeather.OnResultWeatherHourlyListener() {
- @Override
- public void onError(Throwable throwable) {
- Log.e("getWeather24Hourly", "onError: " + throwable);
- }
-
- @Override
- public void onSuccess(WeatherHourlyBean weatherHourlyBean) {
- Log.d("getWeather24Hourly", "onSuccess: " + new Gson().toJson(weatherHourlyBean));
- if (Code.OK == weatherHourlyBean.getCode()) {
- List hourly = weatherHourlyBean.getHourly();
- if (hourly != null && hourly.size() != 0) {
- WeatherHourlyBean.HourlyBean now = hourly.get(0);
- mHourlyBeanData.postValue(now);
- }
- } else {
- //在此查看返回数据失败的原因
- Code code = weatherHourlyBean.getCode();
- Log.e("getWeather24Hourly", "failed code: " + code);
- }
- }
- });
- }
-
- private MutableLiveData DailyBeanData = new MutableLiveData<>();
-
- public MutableLiveData getDailyBeanData() {
- return DailyBeanData;
- }
-
- public void getWeather7D(String location) {
- QWeather.getWeather7D(getCtx(), location, new QWeather.OnResultWeatherDailyListener() {
- @Override
- public void onError(Throwable throwable) {
- Log.e("getWeather7D", "onError: " + throwable.getMessage());
-
- }
-
- @Override
- public void onSuccess(WeatherDailyBean weatherDailyBean) {
- String jsonString = new Gson().toJson(weatherDailyBean);
- Log.d("getWeather7D", "onSuccess: " + jsonString);
- mMMKV.encode(CommonConfig.WEATHER_DAILY_KEY, jsonString);
- List dailyBeans = weatherDailyBean.getDaily();
- if (dailyBeans != null && dailyBeans.size() != 0) {
- WeatherDailyBean.DailyBean dailyBean = weatherDailyBean.getDaily().get(0);
- DailyBeanData.postValue(dailyBean);
- }
- }
- });
- }
-
}
diff --git a/app/src/main/java/com/uiuios/aios/fragment/phone/contact/ContactFragment.java b/app/src/main/java/com/uiuios/aios/fragment/phone/contact/ContactFragment.java
index 5e989a2..977a8d4 100644
--- a/app/src/main/java/com/uiuios/aios/fragment/phone/contact/ContactFragment.java
+++ b/app/src/main/java/com/uiuios/aios/fragment/phone/contact/ContactFragment.java
@@ -105,10 +105,10 @@ public class ContactFragment extends BaseMvvmFragment>() {
+ }.getType();
+ if (!TextUtils.isEmpty(jsonString)) {
+ List contacts = gson.fromJson(jsonString, type);
+ if (contacts != null) {
+ mContactListData.setValue(contacts);
+ }
+ }
+ getContact();
+ }
+
public void getContact() {
NetInterfaceManager.getInstance()
.getContactListObservable()
@@ -62,7 +78,7 @@ public class ContactViewModel extends BaseViewModel());
}
}
@@ -75,7 +91,7 @@ public class ContactViewModel extends BaseViewModel contacts = gson.fromJson(jsonString, type);
if (contacts == null) {
-// mContactListData.setValue(null);
+ mContactListData.setValue(new ArrayList<>());
} else {
mContactListData.setValue(contacts);
}
@@ -89,7 +105,7 @@ public class ContactViewModel extends BaseViewModel mDeleteData =new MutableLiveData<>();
+ private MutableLiveData mDeleteData = new MutableLiveData<>();
public MutableLiveData getDeleteData() {
return mDeleteData;
diff --git a/app/src/main/java/com/uiuios/aios/fragment/settings/SettingsFragment.java b/app/src/main/java/com/uiuios/aios/fragment/settings/SettingsFragment.java
new file mode 100644
index 0000000..877b3d5
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/fragment/settings/SettingsFragment.java
@@ -0,0 +1,315 @@
+package com.uiuios.aios.fragment.settings;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.Handler;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.View;
+import android.view.WindowManager;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.lifecycle.Observer;
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.blankj.utilcode.util.NetworkUtils;
+import com.hjq.toast.Toaster;
+import com.jeremyliao.liveeventbus.LiveEventBus;
+import com.qweather.sdk.bean.weather.WeatherDailyBean;
+import com.qweather.sdk.bean.weather.WeatherHourlyBean;
+import com.qweather.sdk.bean.weather.WeatherNowBean;
+import com.tencent.mmkv.MMKV;
+import com.uiuios.aios.BuildConfig;
+import com.uiuios.aios.R;
+import com.uiuios.aios.activity.addicon.AddIconActivity;
+import com.uiuios.aios.activity.alarm.port.PortAlarmActivity;
+import com.uiuios.aios.activity.contact.AddContactActivity;
+import com.uiuios.aios.activity.contact.ContactActivity;
+import com.uiuios.aios.activity.dailyapp.DailyAppActivity;
+import com.uiuios.aios.activity.emergency.EmergencyActivity;
+import com.uiuios.aios.activity.setting.SettingActivity;
+import com.uiuios.aios.activity.weather.WeatherActivity;
+import com.uiuios.aios.adapter.HomeAppAdapter;
+import com.uiuios.aios.alarm.AlarmClockData;
+import com.uiuios.aios.alarm.AlarmUtils;
+import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
+import com.uiuios.aios.bean.Contact;
+import com.uiuios.aios.bean.DesktopIcon;
+import com.uiuios.aios.bean.MapBean;
+import com.uiuios.aios.config.CommonConfig;
+import com.uiuios.aios.databinding.FragmentHomeBinding;
+import com.uiuios.aios.databinding.FragmentSettingsBinding;
+import com.uiuios.aios.dialog.SingleDialog;
+import com.uiuios.aios.fragment.home.HomeViewModel;
+import com.uiuios.aios.manager.AmapManager;
+import com.uiuios.aios.manager.RemoteManager;
+import com.uiuios.aios.network.NetInterfaceManager;
+import com.uiuios.aios.push.PushManager;
+import com.uiuios.aios.utils.ApkUtils;
+import com.uiuios.aios.utils.AppUtil;
+import com.uiuios.aios.utils.DayUtils;
+import com.uiuios.aios.view.RecyclerViewSpacesItemDecoration;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link SettingsFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class SettingsFragment extends BaseMvvmFragment implements NetworkUtils.OnNetworkStatusChangedListener {
+ private static final String TAG = SettingsFragment.class.getSimpleName();
+
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
+
+ private FragmentActivity mContext;
+
+ public SettingsFragment() {
+
+ }
+
+
+ public static SettingsFragment newInstance() {
+ SettingsFragment fragment = new SettingsFragment();
+ return fragment;
+ }
+
+ @Override
+ public void onDisconnected() {
+ Log.e(TAG, "onDisconnected: ");
+ }
+
+ @Override
+ public void onConnected(NetworkUtils.NetworkType networkType) {
+ Log.e(TAG, "onConnected: " + networkType);
+ initAmap();
+ }
+
+ @Override
+ public void fetchData() {
+ Log.e(TAG, "fetchData: ");
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.fragment_settings;
+ }
+
+ @Override
+ protected void initDataBinding() {
+ mContext = getActivity();
+ mViewModel.setCtx(mContext);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewDataBinding.setClick(new BtnClick());
+ }
+
+ @Override
+ protected void initView(Bundle bundle) {
+ NetworkUtils.registerNetworkStatusChangedListener(this);
+ initView();
+ }
+
+ @Override
+ protected void initData(Bundle savedInstanceState) {
+ LiveEventBus.get(CommonConfig.AMAP_LOCATION_MAP_BEAN, MapBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable MapBean mapBean) {
+ mViewDataBinding.tvLocation2.setText(mapBean.getAddress());
+ }
+ });
+ LiveEventBus
+ .get("some_key1", WeatherNowBean.NowBaseBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherNowBean.NowBaseBean nowBaseBean) {
+ mViewDataBinding.tvTemp.setText(nowBaseBean.getTemp() + "℃");
+ if (DayUtils.isNight()) {
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_night));
+ } else {
+ switch (nowBaseBean.getIcon()) {
+ default:
+ case "100":
+ case "150":
+ //晴
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather));
+ break;
+ case "102":
+ case "152":
+ //少云
+ mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_rain));
+ break;
+ }
+ }
+// mViewDataBinding.tvWeather.setText(nowBaseBean.getText());
+ }
+ });
+
+ LiveEventBus
+ .get("some_key2", WeatherHourlyBean.HourlyBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherHourlyBean.HourlyBean hourlyBean) {
+ String imageName = "he" + hourlyBean.getIcon();
+ Log.e(TAG, "onSuccess: " + imageName);
+ if (isAdded()) {
+ int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
+ Log.e(TAG, "onSuccess: " + resId);
+ if (resId == 0) {
+ mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
+ } else {
+ mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(resId));
+ }
+ mViewDataBinding.tvTemp.setText(hourlyBean.getTemp() + "℃");
+ }
+ }
+ });
+
+ LiveEventBus
+ .get("some_key3", WeatherDailyBean.DailyBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable WeatherDailyBean.DailyBean dailyBean) {
+ mViewDataBinding.tvWeather.setText(dailyBean.getTempMin() + "℃ - " + dailyBean.getTempMax() + "℃");
+ }
+ });
+
+ LiveEventBus
+ .get("time", String.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable String s) {
+ mViewDataBinding.tvTime.setText(s);
+ }
+ });
+
+ LiveEventBus
+ .get("week", String.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable String s) {
+ mViewDataBinding.tvData.setText(s);
+ }
+ });
+
+ }
+
+ private void initView() {
+ initAmap();
+ setTime();
+ getLocation();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ Log.e(TAG, "onResume: ");
+ mViewModel.init();
+ registerReceivers();
+ String district = mMMKV.decodeString(CommonConfig.MANUALLY_SELECT_LOCATION_DISTRICT, CommonConfig.DEFAULT_LOCATION_DISTRICT);
+ mViewDataBinding.tvLocation.setText(district);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ unregisterReceivers();
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ NetworkUtils.unregisterNetworkStatusChangedListener(this);
+ }
+
+ private void registerReceivers() {
+
+ }
+
+ private void unregisterReceivers() {
+ }
+
+
+ private void setTime() {
+ long time = System.currentTimeMillis();
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+ Date date = new Date(time);
+ mViewDataBinding.tvTime.setText(sdf.format(date));
+ SimpleDateFormat sdf2 = new SimpleDateFormat("MM月-dd日");
+ Date date2 = new Date(time);
+ mViewDataBinding.tvData.setText(sdf2.format(date2) + "\t" + DayUtils.getWeek());
+ }
+
+
+ private void initAmap() {
+ boolean manual = mMMKV.decodeBool(CommonConfig.MANUALLY_SELECT_LOCATION_KEY, false);
+
+ if (!manual) {
+ LiveEventBus.get(CommonConfig.AMAP_LOCATION_MAP_BEAN, MapBean.class)
+ .observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable MapBean mapBean) {
+ mViewDataBinding.tvLocation.setText(mapBean.getDistrict());
+ }
+ });
+ } else {
+
+ }
+ }
+
+ private void getLocation() {
+ String addr = mMMKV.decodeString(CommonConfig.MAP_ADDRESS_KEY);
+ if (TextUtils.isEmpty(addr) || "nullnull".equals(addr) || "null".equals(addr)) {
+ mViewDataBinding.tvLocation2.setText("获取地址失败");
+ } else {
+ mViewDataBinding.tvLocation2.setText(addr);
+ }
+ }
+
+
+ public class BtnClick {
+
+ public void toSn(View view) {
+ if (!ApkUtils.openPackage(mContext, "com.uiuios.sn")) {
+ Toaster.show("打开失败,请检查应用是否安装");
+ }
+ }
+
+ public void addContact(View view) {
+ startActivity(new Intent(mContext, AddContactActivity.class));
+ }
+
+ public void openWifi(View view) {
+ startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+ }
+
+ public void openNetwork(View view) {
+ startActivity(new Intent(Settings.ACTION_DATA_USAGE_SETTINGS));
+// startActivity(new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS));
+ }
+
+ public void toWeather(View view) {
+ startActivity(new Intent(mContext, WeatherActivity.class));
+ }
+
+ public void getAddress(View view) {
+ AmapManager.getInstance().startLocation();
+ }
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/fragment/settings/SettingsViewModel.java b/app/src/main/java/com/uiuios/aios/fragment/settings/SettingsViewModel.java
new file mode 100644
index 0000000..938043f
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/fragment/settings/SettingsViewModel.java
@@ -0,0 +1,29 @@
+package com.uiuios.aios.fragment.settings;
+
+import com.tencent.mmkv.MMKV;
+import com.trello.rxlifecycle4.android.FragmentEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.config.CommonConfig;
+import com.uiuios.aios.databinding.FragmentSettingsBinding;
+
+public class SettingsViewModel extends BaseViewModel {
+ private static final String TAG = SettingsViewModel.class.getSimpleName();
+
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
+ @Override
+ public FragmentSettingsBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+
+ public void init() {
+
+ }
+
+
+}
diff --git a/app/src/main/java/com/uiuios/aios/manager/AmapManager.java b/app/src/main/java/com/uiuios/aios/manager/AmapManager.java
index 131da95..ac4cb7a 100644
--- a/app/src/main/java/com/uiuios/aios/manager/AmapManager.java
+++ b/app/src/main/java/com/uiuios/aios/manager/AmapManager.java
@@ -128,7 +128,7 @@ public class AmapManager {
mMapBean = getMapBean(aMapLocation);
saveMapResult(mMapBean);
LiveEventBus
- .get("MapBean")
+ .get(CommonConfig.AMAP_LOCATION_MAP_BEAN)
.post(mMapBean);
Log.e(TAG, "onLocationChanged: " + aMapLocation.getAddress());
sb.append(aMapLocation.getAddress()).append("\n");
diff --git a/app/src/main/java/com/uiuios/aios/manager/AppStatusManager.java b/app/src/main/java/com/uiuios/aios/manager/AppStatusManager.java
index f8096c8..590b125 100644
--- a/app/src/main/java/com/uiuios/aios/manager/AppStatusManager.java
+++ b/app/src/main/java/com/uiuios/aios/manager/AppStatusManager.java
@@ -8,7 +8,7 @@ import android.content.pm.ResolveInfo;
import android.util.Log;
import com.tencent.mmkv.MMKV;
-import com.uiuios.aios.activity.main.OldMainActivity;
+import com.uiuios.aios.activity.main.deprecated.OldMainActivity;
import com.uiuios.aios.bean.DailyAppBean;
import com.uiuios.aios.config.CommonConfig;
diff --git a/app/src/main/java/com/uiuios/aios/service/main/MainService.java b/app/src/main/java/com/uiuios/aios/service/main/MainService.java
index 45f8b86..16dc2ac 100644
--- a/app/src/main/java/com/uiuios/aios/service/main/MainService.java
+++ b/app/src/main/java/com/uiuios/aios/service/main/MainService.java
@@ -5,21 +5,33 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.graphics.PixelFormat;
+import android.os.Build;
import android.os.IBinder;
import android.os.PowerManager;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.task.DownloadTask;
import com.blankj.utilcode.util.NetworkUtils;
+import com.shehuan.niv.NiceImageView;
+import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
+import com.uiuios.aios.R;
+import com.uiuios.aios.activity.main.MainActivity;
import com.uiuios.aios.activity.noti.NoticeActivity;
import com.uiuios.aios.alarm.AlarmUtils;
import com.uiuios.aios.base.rx.BaseRxService;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.bean.BaseResponse;
+import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.utils.ApkUtils;
@@ -48,8 +60,18 @@ import okhttp3.RequestBody;
public class MainService extends BaseRxService implements MainSContact.MainSView, NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = MainService.class.getSimpleName();
- @SuppressLint("StaticFieldLeak")
- public MainSPresenter mPresenter;
+
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+ public MainSPresenter mPresenter;
+
+ private boolean mFloatWindowEnable;
+ private WindowManager mWindowManager;
+ private View mBallView;
+ private WindowManager.LayoutParams mBallParams;
+ public boolean isBallShown = false;
+
+ private static final String Float_Window_X = "float_window_x_key";
+ private static final String Float_Window_Y = "float_window_y_key";
public MainService() {
@@ -106,6 +128,11 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
// ApkUtils.UninstallAPP(this, "com.joytv.live");
// ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader");
+ mFloatWindowEnable = mMMKV.decodeBool(CommonConfig.FLOAT_WINDOW, false);
+ mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+ showPopupWindow();
+
+
Aria.init(this);
Aria.download(this).register();
mPresenter = new MainSPresenter(this);
@@ -113,10 +140,12 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
mPresenter.setLifecycle(lifecycleSubject);
NetworkUtils.registerNetworkStatusChangedListener(this);
mPresenter.addAlarmClock();
+
registerAlarmReceiver();
registerTimeReceiver();
registerLockScreenReceiver();
registerRefreshReceiver();
+ registerScreenLockReceiver();
}
@Override
@@ -142,6 +171,9 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
if (mUploadAlarmClockReceiver != null) {
unregisterReceiver(mUploadAlarmClockReceiver);
}
+ if (mWindowReceiver != null) {
+ unregisterReceiver(mWindowReceiver);
+ }
}
@Override
@@ -455,6 +487,158 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
}
}
+ public static final String ACTION_FLOAT_WINDOW_ON = "com.tt.float.window.on";
+ public static final String ACTION_FLOAT_WINDOW_OFF = "com.tt.float.window.off";
+
+ private WindowReceiver mWindowReceiver;
+
+ private void registerScreenLockReceiver() {
+ if (null == mWindowReceiver) {
+ mWindowReceiver = new WindowReceiver();
+ }
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(ACTION_FLOAT_WINDOW_ON);
+ filter.addAction(ACTION_FLOAT_WINDOW_OFF);
+ registerReceiver(mWindowReceiver, filter);
+ }
+
+ private class WindowReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ Log.e(TAG, "onReceive: " + action);
+ if (TextUtils.isEmpty(action)) {
+ return;
+ }
+ switch (action) {
+ case ACTION_FLOAT_WINDOW_ON:
+ mMMKV.encode(CommonConfig.FLOAT_WINDOW, true);
+ mFloatWindowEnable = true;
+ showPopupWindow();
+ break;
+ case ACTION_FLOAT_WINDOW_OFF:
+ mMMKV.encode(CommonConfig.FLOAT_WINDOW, false);
+ mFloatWindowEnable = false;
+ if (mWindowManager != null && mBallView != null) {
+ if (mBallView.isAttachedToWindow()) {
+ mWindowManager.removeView(mBallView);
+ }
+ mMMKV.encode(Float_Window_X, mBallParams.x);
+ mMMKV.encode(Float_Window_Y, mBallParams.y);
+ }
+ isBallShown = false;
+ break;
+ default:
+ }
+ }
+ }
+
+ /**
+ * 显示弹出框
+ */
+ @SuppressWarnings("WrongConstant")
+ public void showPopupWindow() {
+ if (!mFloatWindowEnable) {
+ Log.e(TAG, "showPopupWindow: not enable");
+ return;
+ }
+ if (isBallShown) {
+ return;
+ }
+ if (!Settings.canDrawOverlays(this)) {
+ return;
+ }
+ mBallView = setUpView();
+ mBallParams = new WindowManager.LayoutParams();
+ // 类型,系统提示以及它总是出现在应用程序窗口之上。
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ mBallParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+ } else {
+ mBallParams.type = WindowManager.LayoutParams.TYPE_PHONE;
+ }
+ // 设置flag
+ // | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+ // 如果设置了WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,弹出的View收不到Back键的事件
+ mBallParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
+ | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
+// | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
+ | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
+
+ // 不设置这个弹出框的透明遮罩显示为黑色
+ mBallParams.format = PixelFormat.TRANSLUCENT;
+ // FLAG_NOT_TOUCH_MODAL不阻塞事件传递到后面的窗口
+ // 设置 FLAG_NOT_FOCUSABLE 悬浮窗口较小时,后面的应用图标由不可长按变为可长按
+ // 不设置这个flag的话,home页的划屏会有问题
+ mBallParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
+ mBallParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
+// mBallParams.gravity = Gravity.TOP;
+ int x = mMMKV.decodeInt(Float_Window_X, 0);
+ int y = mMMKV.decodeInt(Float_Window_Y, 0);
+ mBallParams.x = x;
+ mBallParams.y = y;
+ mWindowManager.addView(mBallView, mBallParams);
+ isBallShown = true;
+ }
+
+ private View setUpView() {
+ View view = LayoutInflater.from(this).inflate(R.layout.window_float_ball, null);
+ NiceImageView iv_ball = view.findViewById(R.id.iv_ball);
+ iv_ball.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Log.e("iv_ball", "onClick: ");
+// closeToolWindow();
+ Intent intent = new Intent(MainService.this, MainActivity.class);
+ intent.setAction("android.intent.action.MAIN");
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ }
+ });
+ iv_ball.setOnTouchListener(new View.OnTouchListener() {
+ private float lastX; //上一次位置的X.Y坐标
+ private float lastY;
+ private float nowX; //当前移动位置的X.Y坐标
+ private float nowY;
+ private float tranX; //悬浮窗移动位置的相对值
+ private float tranY;
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ // 获取按下时的X,Y坐标
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ break;
+ case MotionEvent.ACTION_MOVE:
+ // 获取移动时的X,Y坐标
+ nowX = event.getRawX();
+ nowY = event.getRawY();
+ // 计算XY坐标偏移量
+ tranX = nowX - lastX;
+ tranY = nowY - lastY;
+ mBallParams.x += tranX;
+ mBallParams.y += tranY;
+ //更新悬浮窗位置
+ mWindowManager.updateViewLayout(mBallView, mBallParams);
+ mMMKV.encode(Float_Window_X, mBallParams.x);
+ mMMKV.encode(Float_Window_Y, mBallParams.y);
+ //记录当前坐标作为下一次计算的上一次移动的位置坐标
+ lastX = nowX;
+ lastY = nowY;
+ break;
+ case MotionEvent.ACTION_UP:
+
+ break;
+ default:
+ }
+ return false;
+ }
+ });
+ return view;
+ }
+
+
//在这里处理任务执行中的状态,如进度进度条的刷新
@Download.onTaskRunning
protected void running(DownloadTask task) {
diff --git a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java
index c16d0e8..8e0c044 100644
--- a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java
+++ b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java
@@ -22,7 +22,7 @@ import androidx.annotation.RequiresApi;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
-import com.uiuios.aios.activity.QuickAppActivity;
+import com.uiuios.aios.activity.quickapp.QuickAppActivity;
import com.uiuios.aios.bean.DesktopIcon;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.manager.AppManager;
@@ -163,6 +163,7 @@ public class ApkUtils {
}};
private static List hideApp = new ArrayList() {{
+ this.add("com.uiuios.sn");
this.add("com.uiuios.aios");
this.add("com.uiuios.appstore");
this.add("com.android.quicksearchbox");
@@ -373,12 +374,12 @@ public class ApkUtils {
resolveInfos.add(resolveInfo);
}
} else {
- if ("com.uiuios.sn".equals(pkg)) {
- resolveInfos.add(resolveInfo);
- } else {
- Log.e(TAG, "getAppstoreAppInfo: pkgSet ! contains " + pkg);
- AppStatusManager.getInstance().addHidedApp(pkg);
- }
+// if ("com.uiuios.sn".equals(pkg)) {
+// resolveInfos.add(resolveInfo);
+// } else {
+ Log.e(TAG, "getAppstoreAppInfo: pkgSet ! contains " + pkg);
+ AppStatusManager.getInstance().addHidedApp(pkg);
+// }
}
} else {
if (allPackages.contains(pkg) && !excludePackageName.contains(pkg)) {
@@ -528,6 +529,7 @@ public class ApkUtils {
pkgContext.startActivity(intent);
return true;
}
+ Toaster.show("应用未安装");
return false;
}
diff --git a/app/src/main/java/com/uiuios/aios/utils/DayUtils.java b/app/src/main/java/com/uiuios/aios/utils/DayUtils.java
new file mode 100644
index 0000000..5a4e52e
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/utils/DayUtils.java
@@ -0,0 +1,29 @@
+package com.uiuios.aios.utils;
+
+import java.util.Calendar;
+import java.util.Date;
+
+public class DayUtils {
+ public static boolean isNight() {
+ Calendar calendar = Calendar.getInstance();
+ int hour = calendar.get(Calendar.HOUR_OF_DAY);
+ int minute = calendar.get(Calendar.MINUTE);
+ int second = calendar.get(Calendar.SECOND);
+ return hour >= 16 && minute >= 30;
+ }
+
+ /**
+ * @return 根据日期取得星期几
+ */
+ public static String getWeek() {
+ Date date = new Date();
+ String[] weeks = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(date);
+ int weekIndex = cal.get(Calendar.DAY_OF_WEEK) - 1;
+ if (weekIndex < 0) {
+ weekIndex = 0;
+ }
+ return weeks[weekIndex];
+ }
+}
diff --git a/app/src/main/res/drawable-hdpi/home_family_space.png b/app/src/main/res/drawable-hdpi/home_family_space.png
index f22cdf8..cba1fd7 100644
Binary files a/app/src/main/res/drawable-hdpi/home_family_space.png and b/app/src/main/res/drawable-hdpi/home_family_space.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_accessibility.png b/app/src/main/res/drawable-hdpi/home_icon_accessibility.png
new file mode 100644
index 0000000..1bf73c9
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_accessibility.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_app.png b/app/src/main/res/drawable-hdpi/home_icon_app.png
new file mode 100644
index 0000000..ab0ff10
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_app.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_appstore.png b/app/src/main/res/drawable-hdpi/home_icon_appstore.png
new file mode 100644
index 0000000..4e5edf6
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_appstore.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_calendar.png b/app/src/main/res/drawable-hdpi/home_icon_calendar.png
new file mode 100644
index 0000000..5f77c4a
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_calendar.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_clock.png b/app/src/main/res/drawable-hdpi/home_icon_clock.png
new file mode 100644
index 0000000..3caa761
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_clock.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_dialer.png b/app/src/main/res/drawable-hdpi/home_icon_dialer.png
new file mode 100644
index 0000000..1feb747
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_dialer.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_flash.png b/app/src/main/res/drawable-hdpi/home_icon_flash.png
new file mode 100644
index 0000000..bf6975b
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_flash.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_setting.png b/app/src/main/res/drawable-hdpi/home_icon_setting.png
new file mode 100644
index 0000000..4ec0fca
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_setting.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_tiktok.png b/app/src/main/res/drawable-hdpi/home_icon_tiktok.png
new file mode 100644
index 0000000..1633f4d
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_tiktok.png differ
diff --git a/app/src/main/res/drawable-hdpi/home_icon_wechat.png b/app/src/main/res/drawable-hdpi/home_icon_wechat.png
new file mode 100644
index 0000000..24417ec
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_icon_wechat.png differ
diff --git a/app/src/main/res/drawable-hdpi/icon_floatball.png b/app/src/main/res/drawable-hdpi/icon_floatball.png
new file mode 100644
index 0000000..042bb8d
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_floatball.png differ
diff --git a/app/src/main/res/drawable-hdpi/icon_more.png b/app/src/main/res/drawable-hdpi/icon_more.png
index e41c9d8..02efbc7 100644
Binary files a/app/src/main/res/drawable-hdpi/icon_more.png and b/app/src/main/res/drawable-hdpi/icon_more.png differ
diff --git a/app/src/main/res/drawable-hdpi/setting_icon_add_contact.png b/app/src/main/res/drawable-hdpi/setting_icon_add_contact.png
new file mode 100644
index 0000000..c04d48e
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/setting_icon_add_contact.png differ
diff --git a/app/src/main/res/drawable-hdpi/setting_icon_bind.png b/app/src/main/res/drawable-hdpi/setting_icon_bind.png
new file mode 100644
index 0000000..2b3e166
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/setting_icon_bind.png differ
diff --git a/app/src/main/res/drawable-hdpi/setting_icon_network.png b/app/src/main/res/drawable-hdpi/setting_icon_network.png
new file mode 100644
index 0000000..72ea1b8
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/setting_icon_network.png differ
diff --git a/app/src/main/res/drawable-hdpi/setting_icon_wifi.png b/app/src/main/res/drawable-hdpi/setting_icon_wifi.png
new file mode 100644
index 0000000..458da6e
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/setting_icon_wifi.png differ
diff --git a/app/src/main/res/drawable/fragment_add_contact_background.xml b/app/src/main/res/drawable/fragment_add_contact_background.xml
index 7a66681..a10881f 100644
--- a/app/src/main/res/drawable/fragment_add_contact_background.xml
+++ b/app/src/main/res/drawable/fragment_add_contact_background.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/app/src/main/res/drawable/general_setting_bg.xml b/app/src/main/res/drawable/general_setting_bg.xml
new file mode 100644
index 0000000..951d76e
--- /dev/null
+++ b/app/src/main/res/drawable/general_setting_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/home_card_accessibility_bg.xml b/app/src/main/res/drawable/home_card_accessibility_bg.xml
new file mode 100644
index 0000000..1305f8d
--- /dev/null
+++ b/app/src/main/res/drawable/home_card_accessibility_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/home_card_app_bg.xml b/app/src/main/res/drawable/home_card_app_bg.xml
new file mode 100644
index 0000000..48f22aa
--- /dev/null
+++ b/app/src/main/res/drawable/home_card_app_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/home_card_appsotre_bg.xml b/app/src/main/res/drawable/home_card_appsotre_bg.xml
new file mode 100644
index 0000000..4ea417f
--- /dev/null
+++ b/app/src/main/res/drawable/home_card_appsotre_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/home_card_clock_bg.xml b/app/src/main/res/drawable/home_card_clock_bg.xml
new file mode 100644
index 0000000..133119c
--- /dev/null
+++ b/app/src/main/res/drawable/home_card_clock_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/home_card_setting_bg.xml b/app/src/main/res/drawable/home_card_setting_bg.xml
new file mode 100644
index 0000000..4e382af
--- /dev/null
+++ b/app/src/main/res/drawable/home_card_setting_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/setting_card_add_contact_bg.xml b/app/src/main/res/drawable/setting_card_add_contact_bg.xml
new file mode 100644
index 0000000..272ecfa
--- /dev/null
+++ b/app/src/main/res/drawable/setting_card_add_contact_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/setting_card_bind_bg.xml b/app/src/main/res/drawable/setting_card_bind_bg.xml
new file mode 100644
index 0000000..4e382af
--- /dev/null
+++ b/app/src/main/res/drawable/setting_card_bind_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/setting_card_location_bg.xml b/app/src/main/res/drawable/setting_card_location_bg.xml
new file mode 100644
index 0000000..3338927
--- /dev/null
+++ b/app/src/main/res/drawable/setting_card_location_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/setting_card_network_bg.xml b/app/src/main/res/drawable/setting_card_network_bg.xml
new file mode 100644
index 0000000..4ea417f
--- /dev/null
+++ b/app/src/main/res/drawable/setting_card_network_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/setting_card_wifi_bg.xml b/app/src/main/res/drawable/setting_card_wifi_bg.xml
new file mode 100644
index 0000000..48f22aa
--- /dev/null
+++ b/app/src/main/res/drawable/setting_card_wifi_bg.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_control.xml b/app/src/main/res/layout-land/activity_control.xml
index 5b6b497..157cb4b 100644
--- a/app/src/main/res/layout-land/activity_control.xml
+++ b/app/src/main/res/layout-land/activity_control.xml
@@ -1,469 +1,479 @@
-
+ tools:context=".activity.control.ControlActivity">
+
+
+
+
+ android:layout_height="match_parent"
+ android:background="@drawable/control_bg">
-
+ app:layout_constraintTop_toTopOf="parent">
-
+
-
+
+
+
+
+
-
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@+id/constraintLayout5">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:orientation="vertical">
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="2"
+ android:orientation="horizontal">
-
+ android:background="@drawable/control_background_item">
-
+
-
+
+
+
+
+ android:background="@drawable/control_background_item">
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
+ app:layout_constraintEnd_toEndOf="@+id/linearLayout"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="@+id/linearLayout"
+ app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintTop_toTopOf="parent" />
-
+ app:layout_constraintStart_toEndOf="@+id/imageView"
+ app:layout_constraintTop_toBottomOf="@+id/seekBar">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+ android:orientation="vertical">
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_dailyapp.xml b/app/src/main/res/layout-land/activity_dailyapp.xml
index 3de638c..af547f7 100644
--- a/app/src/main/res/layout-land/activity_dailyapp.xml
+++ b/app/src/main/res/layout-land/activity_dailyapp.xml
@@ -1,64 +1,71 @@
-
+
+
+
+
+ android:layout_height="match_parent"
+ android:background="@drawable/control_bg">
-
+
-
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/constraintLayout" />
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_dialer.xml b/app/src/main/res/layout-land/activity_dialer.xml
index f9f7195..371c34c 100644
--- a/app/src/main/res/layout-land/activity_dialer.xml
+++ b/app/src/main/res/layout-land/activity_dialer.xml
@@ -1,465 +1,472 @@
-
-
+
-
+
+
+
+
+
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1">
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toTopOf="parent">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/constraintLayout9" />
-
-
-
-
-
-
+ android:layout_weight="1">
-
+ android:layout_margin="@dimen/dp_32"
+ android:background="@drawable/add_contact_background">
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
+ android:orientation="horizontal">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ android:orientation="horizontal">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ android:orientation="horizontal">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_emergency.xml b/app/src/main/res/layout-land/activity_emergency.xml
index 0aac31d..7bc3639 100644
--- a/app/src/main/res/layout-land/activity_emergency.xml
+++ b/app/src/main/res/layout-land/activity_emergency.xml
@@ -1,49 +1,56 @@
-
+ tools:context=".activity.emergency.EmergencyActivity">
-
+
-
+
-
+
+
+
+
+
+
+
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/activity_control.xml b/app/src/main/res/layout-port/activity_control.xml
index 528f0bc..d44a41b 100644
--- a/app/src/main/res/layout-port/activity_control.xml
+++ b/app/src/main/res/layout-port/activity_control.xml
@@ -1,447 +1,457 @@
-
+ tools:context=".activity.control.ControlActivity">
+
+
+
+
+ android:layout_height="match_parent"
+ android:background="@drawable/control_bg">
-
+ app:layout_constraintTop_toTopOf="parent">
-
+
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@+id/constraintLayout5">
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="4"
+ android:orientation="horizontal">
-
+ android:background="@drawable/control_background_item">
-
+
-
+
+
+
+
+ android:background="@drawable/control_background_item">
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/activity_dailyapp.xml b/app/src/main/res/layout-port/activity_dailyapp.xml
index 9363681..97afa4c 100644
--- a/app/src/main/res/layout-port/activity_dailyapp.xml
+++ b/app/src/main/res/layout-port/activity_dailyapp.xml
@@ -1,64 +1,71 @@
-
+
+
+
+
+ android:layout_height="match_parent"
+ android:background="@drawable/control_bg">
-
+
-
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/constraintLayout" />
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/activity_dialer.xml b/app/src/main/res/layout-port/activity_dialer.xml
index fdaccb6..da8fbd5 100644
--- a/app/src/main/res/layout-port/activity_dialer.xml
+++ b/app/src/main/res/layout-port/activity_dialer.xml
@@ -1,458 +1,466 @@
-
+
+
+
+
+ android:layout_height="match_parent"
+ android:background="@drawable/control_bg">
+ android:layout_height="match_parent">
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/dp_32"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
+ android:orientation="horizontal">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ android:orientation="horizontal">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ android:orientation="horizontal">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+ app:layout_constraintStart_toStartOf="parent">
-
\ No newline at end of file
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/activity_emergency.xml b/app/src/main/res/layout-port/activity_emergency.xml
index 5cc0c5a..ba4046e 100644
--- a/app/src/main/res/layout-port/activity_emergency.xml
+++ b/app/src/main/res/layout-port/activity_emergency.xml
@@ -1,50 +1,57 @@
-
+ tools:context=".activity.emergency.EmergencyActivity">
-
+
-
+
-
+
+
+
+
+
+
+
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/fragment_home.xml b/app/src/main/res/layout-port/fragment_home.xml
index 5ce1ff2..179293e 100644
--- a/app/src/main/res/layout-port/fragment_home.xml
+++ b/app/src/main/res/layout-port/fragment_home.xml
@@ -30,9 +30,8 @@
+
+
+
+
+
+
+
+
+
@@ -181,6 +222,7 @@
android:textColor="#b48a5a"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
+ android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -190,6 +232,7 @@
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/icon_play"
+ android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/niceImageView2"
@@ -275,6 +318,7 @@
android:layout_weight="1"
android:background="@drawable/home_card_bg"
android:onClick="@{click::killApp}"
+ android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -285,7 +329,7 @@
android:layout_marginBottom="@dimen/dp_8"
android:text="一键加速"
android:textColor="@color/white"
- android:textSize="@dimen/sp_16"
+ android:textSize="@dimen/sp_17"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -309,6 +353,46 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -526,7 +622,7 @@
android:layout_marginBottom="@dimen/dp_8"
android:text="更多应用"
android:textColor="@color/white"
- android:textSize="@dimen/sp_16"
+ android:textSize="@dimen/sp_17"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -574,11 +670,11 @@
app:layout_constraintTop_toBottomOf="@+id/tv_app" />
-
+
+
+
+
+ android:layout_height="match_parent"
+ android:background="@color/gray">
-
+ app:layout_constraintTop_toTopOf="parent">
-
+
-
+
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:orientation="horizontal"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/constraintLayout13">
-
-
-
+
+ android:layout_marginStart="@dimen/dp_8"
+ android:layout_marginEnd="@dimen/dp_8"
+ android:layout_marginBottom="@dimen/dp_8"
+ android:layout_weight="4"
+ android:background="@drawable/add_alarm_background">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ android:layout_marginStart="@dimen/dp_48"
+ android:layout_marginEnd="@dimen/dp_48"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/textView24" />
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:id="@+id/cl_type"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1">
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_marginTop="@dimen/dp_8"
+ android:text="标题"
+ android:textColor="@color/black"
+ android:textSize="@dimen/sp_12"
+ android:visibility="gone"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ android:id="@+id/cl_activation"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/dp_28"
+ android:layout_marginStart="@dimen/dp_16"
+ android:layout_marginEnd="@dimen/dp_16"
+ android:background="@drawable/edit_background"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_marginBottom="@dimen/dp_8"
+ android:layout_weight="3"
+ android:background="@drawable/add_alarm_background">
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_add_item.xml b/app/src/main/res/layout/activity_add_item.xml
new file mode 100644
index 0000000..c3ed03b
--- /dev/null
+++ b/app/src/main/res/layout/activity_add_item.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_articl.xml b/app/src/main/res/layout/activity_articl.xml
index 1298e0e..ceb5282 100644
--- a/app/src/main/res/layout/activity_articl.xml
+++ b/app/src/main/res/layout/activity_articl.xml
@@ -1,92 +1,99 @@
-
+ tools:context=".activity.article.ArticleActivity">
+
+
+
+
-
-
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:background="@color/white">
+ android:layout_height="@dimen/dp_36"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
-
-
-
+ app:layout_constraintStart_toEndOf="@+id/iv_back"
+ app:layout_constraintTop_toTopOf="parent" />
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_details.xml b/app/src/main/res/layout/activity_details.xml
index 5e4f062..2ba4b0b 100644
--- a/app/src/main/res/layout/activity_details.xml
+++ b/app/src/main/res/layout/activity_details.xml
@@ -2,7 +2,7 @@
+ tools:context=".activity.details.DetailsActivity">
diff --git a/app/src/main/res/layout/activity_info_list.xml b/app/src/main/res/layout/activity_info_list.xml
index 2d87cb5..d806f3b 100644
--- a/app/src/main/res/layout/activity_info_list.xml
+++ b/app/src/main/res/layout/activity_info_list.xml
@@ -1,104 +1,111 @@
-
+ tools:context=".activity.infolist.InfoListActivity">
+
+
+
+
-
-
+ android:layout_height="match_parent"
+ android:background="@color/gray">
-
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/iv_back"
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main_old.xml b/app/src/main/res/layout/activity_main_old.xml
index c4d82b5..e9b812a 100644
--- a/app/src/main/res/layout/activity_main_old.xml
+++ b/app/src/main/res/layout/activity_main_old.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/control_background"
- tools:context=".activity.main.OldMainActivity">
+ tools:context=".activity.main.deprecated.OldMainActivity">
-
+ tools:context=".activity.quickapp.QuickAppActivity">
-
+
+
+
+
+ android:layout_height="match_parent">
-
\ No newline at end of file
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_records.xml b/app/src/main/res/layout/activity_records.xml
index 3af15bb..db1bcd2 100644
--- a/app/src/main/res/layout/activity_records.xml
+++ b/app/src/main/res/layout/activity_records.xml
@@ -1,102 +1,109 @@
-
-
+
-
+
+
+
+
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/constraintLayout3" />
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintStart_toStartOf="parent">
-
\ No newline at end of file
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_screen_lock.xml b/app/src/main/res/layout/activity_screen_lock.xml
index 63dd006..c93fd50 100644
--- a/app/src/main/res/layout/activity_screen_lock.xml
+++ b/app/src/main/res/layout/activity_screen_lock.xml
@@ -1,250 +1,258 @@
-
+ tools:context=".activity.screenlock.ScreenLockActivity"
+ xmlns:tools="http://schemas.android.com/tools">
-
+
-
+
+ android:layout_height="match_parent"
+ android:background="@drawable/control_bg">
-
-
-
-
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="0.11" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/src/main/res/layout/activity_select_number.xml b/app/src/main/res/layout/activity_select_number.xml
index e4e668e..b74ba41 100644
--- a/app/src/main/res/layout/activity_select_number.xml
+++ b/app/src/main/res/layout/activity_select_number.xml
@@ -1,14 +1,21 @@
-
+
+
+
+
+
+
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml
new file mode 100644
index 0000000..3214c9e
--- /dev/null
+++ b/app/src/main/res/layout/activity_setting.xml
@@ -0,0 +1,432 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_touch.xml b/app/src/main/res/layout/activity_touch.xml
new file mode 100644
index 0000000..028fc3b
--- /dev/null
+++ b/app/src/main/res/layout/activity_touch.xml
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_wifi_manager.xml b/app/src/main/res/layout/activity_wifi_manager.xml
index f479b56..942c64e 100644
--- a/app/src/main/res/layout/activity_wifi_manager.xml
+++ b/app/src/main/res/layout/activity_wifi_manager.xml
@@ -1,142 +1,150 @@
-
+
+
+
+
+ android:background="@color/wifi_background_color">
+
+ android:layout_height="match_parent"
+ android:background="@drawable/background_wifi">
-
+ app:layout_constraintTop_toTopOf="parent">
-
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/constraintLayout12">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/add_item_confirmation_activity.xml b/app/src/main/res/layout/add_item_confirmation_activity.xml
deleted file mode 100644
index 35c80ca..0000000
--- a/app/src/main/res/layout/add_item_confirmation_activity.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_contact_home.xml b/app/src/main/res/layout/fragment_contact_home.xml
index 695eec8..abafdce 100644
--- a/app/src/main/res/layout/fragment_contact_home.xml
+++ b/app/src/main/res/layout/fragment_contact_home.xml
@@ -17,24 +17,136 @@
+ android:layout_height="match_parent"
+ android:layout_marginTop="@dimen/dp_24">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/cl_weather" />
diff --git a/app/src/main/res/layout/fragment_control.xml b/app/src/main/res/layout/fragment_control.xml
index 5e72101..22f9bb8 100644
--- a/app/src/main/res/layout/fragment_control.xml
+++ b/app/src/main/res/layout/fragment_control.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".activity.ControlActivity">
+ tools:context=".activity.control.ControlActivity">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_contact_wechat.xml b/app/src/main/res/layout/item_contact_wechat.xml
index a327957..eb6adde 100644
--- a/app/src/main/res/layout/item_contact_wechat.xml
+++ b/app/src/main/res/layout/item_contact_wechat.xml
@@ -8,8 +8,8 @@
@@ -94,18 +94,18 @@
android:id="@+id/cl_1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:onClick="@{click::mms}"
+ android:onClick="@{click::wechat}"
android:visibility="visible">
@@ -114,7 +114,7 @@
android:id="@+id/tv_appname1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="信息"
+ android:text="微信"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="@+id/iv_icon1"
@@ -126,18 +126,18 @@
android:id="@+id/cl_2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:onClick="@{click::camera}"
+ android:onClick="@{click::toTiktok}"
android:visibility="visible">
@@ -146,7 +146,7 @@
android:id="@+id/tv_appname2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="相机"
+ android:text="抖音"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="@+id/iv_icon2"
@@ -158,18 +158,18 @@
android:id="@+id/cl_3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:onClick="@{click::sos}"
+ android:onClick="@{click::toCalendar}"
android:visibility="visible">
@@ -178,7 +178,7 @@
android:id="@+id/tv_appname3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="呼叫"
+ android:text="万年历"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="@+id/iv_icon3"
@@ -186,6 +186,38 @@
app:layout_constraintTop_toBottomOf="@+id/iv_icon3" />
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml
new file mode 100644
index 0000000..a0300d3
--- /dev/null
+++ b/app/src/main/res/layout/settings_activity.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/window_float_ball.xml b/app/src/main/res/layout/window_float_ball.xml
new file mode 100644
index 0000000..689ea21
--- /dev/null
+++ b/app/src/main/res/layout/window_float_ball.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
new file mode 100644
index 0000000..6cf9ed4
--- /dev/null
+++ b/app/src/main/res/values/arrays.xml
@@ -0,0 +1,12 @@
+
+
+
+ - Reply
+ - Reply to all
+
+
+
+ - reply
+ - reply_all
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index b8796dd..a8caf91 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,6 +3,7 @@
#343336
#272727
#454347
+
#ffffff
#f5433f
#F68F8C
@@ -27,6 +28,7 @@
#2a2b35
#8e6afb
+
#00D56B
#ffffff
#ecfafd
@@ -69,5 +71,6 @@
#3D54D9
#98999a
-
+ #2384BC
+ #9D9D9D
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f14b297..e356319 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,4 +13,20 @@
关爱守护快捷服务
关爱守护一键拨打视频
+ Settings
+
+
+ Messages
+ Sync
+
+
+ Your signature
+ Default reply action
+
+
+ Sync email periodically
+ Download incoming attachments
+ Automatically download attachments for incoming emails
+
+ Only download attachments when manually requested
diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml
new file mode 100644
index 0000000..7124ab7
--- /dev/null
+++ b/app/src/main/res/xml/root_preferences.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+