diff --git a/app/build.gradle b/app/build.gradle
index 3c83bbe..7321fda 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,8 +15,8 @@ android {
applicationId "com.uiuios.aios"
minSdkVersion 24
targetSdkVersion 29
- versionCode 49
- versionName "5.8"
+ versionCode 51
+ versionName "6.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 380fc68..312b64e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -229,20 +229,20 @@
android:name=".activity.EmergencyActivity"
android:launchMode="singleTask" />
{
- void getAlarmClock();
- }
-
- public interface ClockView extends BaseView {
- void showAlarmClock(List alarmClockData);
- void setAlarmClockEmpty();
- void onError();
- }
-}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockPresenter.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockPresenter.java
deleted file mode 100644
index 40b31f6..0000000
--- a/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockPresenter.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.uiuios.aios.activity.alarmclock;
-
-import android.content.Context;
-
-import androidx.annotation.NonNull;
-
-import com.trello.rxlifecycle4.android.ActivityEvent;
-import com.uiuios.aios.alarm.AlarmClockData;
-import com.uiuios.aios.network.NetInterfaceManager;
-
-import java.util.List;
-
-import io.reactivex.rxjava3.subjects.BehaviorSubject;
-
-public class AlarmClockPresenter implements AlarmClockContact.Presenter {
-
- private AlarmClockContact.ClockView mView;
- private Context mContext;
-
- AlarmClockPresenter(Context context) {
- this.mContext = context;
- }
-
- private BehaviorSubject lifecycle;
-
- void setLifecycle(BehaviorSubject lifecycle) {
- this.lifecycle = lifecycle;
- }
-
- public BehaviorSubject getLifecycle() {
- return lifecycle;
- }
-
- @Override
- public void attachView(@NonNull AlarmClockContact.ClockView view) {
- this.mView = view;
- }
-
- @Override
- public void detachView() {
- this.mView = null;
- }
-
-
- @Override
- public void getAlarmClock() {
- NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() {
- @Override
- public void setAlarmClock(List alarmClockList) {
- mView.showAlarmClock(alarmClockList);
- }
-
- @Override
- public void setAlarmClockEmpty() {
- mView.setAlarmClockEmpty();
- }
-
- @Override
- public void onError() {
- mView.onError();
- }
- });
- }
-}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockAddActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddActivity.java
similarity index 99%
rename from app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockAddActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddActivity.java
index 111a077..8cb67ba 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockAddActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/AlarmClockAddActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity.alarmclock;
+package com.uiuios.aios.activity.alarmclock.add;
import android.content.Intent;
import android.content.res.ColorStateList;
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/port/PortAlarmClockAddActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddActivity.java
similarity index 99%
rename from app/src/main/java/com/uiuios/aios/activity/alarmclock/port/PortAlarmClockAddActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddActivity.java
index af72f03..4b83f2b 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarmclock/port/PortAlarmClockAddActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity.alarmclock.port;
+package com.uiuios.aios.activity.alarmclock.add.port;
import android.content.Intent;
import android.content.res.ColorStateList;
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/port/PortAlarmClockAddViewModel.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddViewModel.java
similarity index 88%
rename from app/src/main/java/com/uiuios/aios/activity/alarmclock/port/PortAlarmClockAddViewModel.java
rename to app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddViewModel.java
index 3f98a6f..6e0ca3a 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarmclock/port/PortAlarmClockAddViewModel.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/add/port/PortAlarmClockAddViewModel.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity.alarmclock.port;
+package com.uiuios.aios.activity.alarmclock.add.port;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.base.mvvm.BaseViewModel;
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockEditActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/edit/AlarmClockEditActivity.java
similarity index 99%
rename from app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockEditActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/alarmclock/edit/AlarmClockEditActivity.java
index fc79a4e..ba32f3e 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockEditActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/edit/AlarmClockEditActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity.alarmclock;
+package com.uiuios.aios.activity.alarmclock.edit;
import android.content.Intent;
import android.content.res.ColorStateList;
@@ -81,6 +81,7 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
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;
@@ -409,8 +410,6 @@ public class AlarmClockEditActivity extends AppCompatActivity implements Lifecyc
}
}
- LoadingDialog mLoadingDialog;
-
private void checkContent() {
pvTime.returnData();
if (TextUtils.isEmpty(et_activation.getText())) {
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/main/AlarmClockActivity.java
similarity index 72%
rename from app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/alarmclock/main/AlarmClockActivity.java
index 20f34e7..ae48c7a 100644
--- a/app/src/main/java/com/uiuios/aios/activity/alarmclock/AlarmClockActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/main/AlarmClockActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity.alarmclock;
+package com.uiuios.aios.activity.alarmclock.main;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -19,11 +19,14 @@ import com.hjq.toast.Toaster;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
+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.mvp.BaseMvpActivity;
+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 com.uiuios.aios.push.PushManager;
@@ -38,21 +41,9 @@ import cn.jzvd.Jzvd;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
-public class AlarmClockActivity extends BaseMvpActivity implements AlarmClockContact.ClockView {
+public class AlarmClockActivity extends BaseMvvmActivity {
private static final String TAG = AlarmClockActivity.class.getSimpleName();
- @BindView(R.id.recyclerView)
- RecyclerView recyclerView;
- @BindView(R.id.iv_back)
- ImageView iv_back;
- @BindView(R.id.swipeRefreshLayout)
- SwipeRefreshLayout swipeRefreshLayout;
- @BindView(R.id.fab)
- FloatingActionButton fab;
- @BindView(R.id.cl_nodata)
- ConstraintLayout cl_nodata;
-
- private AlarmClockPresenter mPresenter;
private AlarmAdapter mAlarmAdapter;
@Override
@@ -60,16 +51,20 @@ public class AlarmClockActivity extends BaseMvpActivity implements AlarmClockCon
return R.layout.activity_alarm;
}
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewDataBinding.setClick(new BtnClick());
+ }
+
@Override
public void initView() {
UltimateBarX.statusBarOnly(this)
.colorRes(R.color.default_blue)
.fitWindow(true)
.apply();
- ButterKnife.bind(this);
- mPresenter = new AlarmClockPresenter(this);
- mPresenter.attachView(this);
- mPresenter.setLifecycle(getLifecycleSubject());
mAlarmAdapter = new AlarmAdapter();
mAlarmAdapter.setOnLongClickListener(new AlarmAdapter.OnLongClickListener() {
@@ -78,26 +73,26 @@ public class AlarmClockActivity extends BaseMvpActivity implements AlarmClockCon
showDialog(alarmClockData);
}
});
- recyclerView.setLayoutManager(new LinearLayoutManager(AlarmClockActivity.this));
- recyclerView.setAdapter(mAlarmAdapter);
- iv_back.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.rvData.setLayoutManager(new LinearLayoutManager(AlarmClockActivity.this));
+ mViewDataBinding.rvData.setAdapter(mAlarmAdapter);
+ mViewDataBinding.ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
- swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- mPresenter.getAlarmClock();
- }
- });
- fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(new Intent(AlarmClockActivity.this, AlarmClockAddActivity.class));
- }
- });
+// mViewDataBinding.swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+// @Override
+// public void onRefresh() {
+// mViewModel.getAlarmClock();
+// }
+// });
+// mViewDataBinding.fab.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View view) {
+// startActivity(new Intent(AlarmClockActivity.this, AlarmClockAddActivity.class));
+// }
+// });
}
private void showDialog(AlarmClockData alarmClockData) {
@@ -156,7 +151,7 @@ public class AlarmClockActivity extends BaseMvpActivity implements AlarmClockCon
@Override
public void onComplete() {
Log.e("deleteAlarm", "onComplete: ");
- mPresenter.getAlarmClock();
+ mViewModel.getAlarmClock();
}
});
}
@@ -167,26 +162,26 @@ public class AlarmClockActivity extends BaseMvpActivity implements AlarmClockCon
registerAlarmClockReceiver();
}
- @Override
- public void showAlarmClock(List alarmClockData) {
- mAlarmAdapter.setAlarmClockData(alarmClockData);
- swipeRefreshLayout.setRefreshing(false);
- cl_nodata.setVisibility(View.GONE);
- recyclerView.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void setAlarmClockEmpty() {
- mAlarmAdapter.setAlarmClockData(null);
- swipeRefreshLayout.setRefreshing(false);
- cl_nodata.setVisibility(View.VISIBLE);
- recyclerView.setVisibility(View.GONE);
- }
-
- @Override
- public void onError() {
- swipeRefreshLayout.setRefreshing(false);
- }
+// @Override
+// public void showAlarmClock(List alarmClockData) {
+// mAlarmAdapter.setAlarmClockData(alarmClockData);
+//// mViewDataBinding.swipeRefreshLayout.setRefreshing(false);
+// mViewDataBinding.clNodata.setVisibility(View.GONE);
+// mViewDataBinding.rvData.setVisibility(View.VISIBLE);
+// }
+//
+// @Override
+// public void setAlarmClockEmpty() {
+// mAlarmAdapter.setAlarmClockData(null);
+//// mViewDataBinding.swipeRefreshLayout.setRefreshing(false);
+// mViewDataBinding.clNodata.setVisibility(View.VISIBLE);
+// mViewDataBinding.rvData.setVisibility(View.GONE);
+// }
+//
+// @Override
+// public void onError() {
+//// mViewDataBinding.swipeRefreshLayout.setRefreshing(false);
+// }
@Override
protected void onDestroy() {
@@ -200,7 +195,7 @@ public class AlarmClockActivity extends BaseMvpActivity implements AlarmClockCon
@Override
protected void onResume() {
super.onResume();
- mPresenter.getAlarmClock();
+ mViewModel.getAlarmClock();
}
private void registerAlarmClockReceiver() {
@@ -222,8 +217,13 @@ public class AlarmClockActivity extends BaseMvpActivity implements AlarmClockCon
String action = intent.getAction();
Log.e(TAG, "onReceive: " + action);
if (PushManager.SET_ALARMCLOCK.equals(action)) {
- mPresenter.getAlarmClock();
+ mViewModel.getAlarmClock();
}
}
}
+
+ public class BtnClick {
+
+
+ }
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/alarmclock/main/AlarmClockViewModel.java b/app/src/main/java/com/uiuios/aios/activity/alarmclock/main/AlarmClockViewModel.java
new file mode 100644
index 0000000..ce1f540
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/alarmclock/main/AlarmClockViewModel.java
@@ -0,0 +1,42 @@
+package com.uiuios.aios.activity.alarmclock.main;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.alarm.AlarmClockData;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityAlarmBinding;
+import com.uiuios.aios.network.NetInterfaceManager;
+
+import java.util.List;
+
+public class AlarmClockViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityAlarmBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+
+
+ public void getAlarmClock() {
+ NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() {
+ @Override
+ public void setAlarmClock(List alarmClockList) {
+// mView.showAlarmClock(alarmClockList);
+ }
+
+ @Override
+ public void setAlarmClockEmpty() {
+// mView.setAlarmClockEmpty();
+ }
+
+ @Override
+ public void onError() {
+// mView.onError();
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/callwechat/CallWechatActivity.java b/app/src/main/java/com/uiuios/aios/activity/callwechat/CallWechatActivity.java
index 71a6964..3d27b20 100644
--- a/app/src/main/java/com/uiuios/aios/activity/callwechat/CallWechatActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/callwechat/CallWechatActivity.java
@@ -2,18 +2,20 @@ package com.uiuios.aios.activity.callwechat;
import android.content.Intent;
import android.net.Uri;
+import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
+import com.hjq.toast.Toaster;
import com.uiuios.aios.R;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
-import com.uiuios.aios.bean.WechatInfo;
+import com.uiuios.aios.bean.Contact;
import com.uiuios.aios.databinding.ActivityWechatCallBinding;
import com.uiuios.aios.service.WeAccessibilityService;
public class CallWechatActivity extends BaseMvvmActivity {
- private WechatInfo mWechatInfo;
+ private Contact mContact;
@Override
public boolean setfitWindow() {
@@ -42,10 +44,10 @@ public class CallWechatActivity extends BaseMvvmActivity {
private static final String TAG = AddContactActivity.class.getSimpleName();
- @BindView(R.id.iv_cancel)
- ImageView iv_cancel;
- @BindView(R.id.iv_confirm)
- ImageView iv_confirm;
- @BindView(R.id.cl_confirm)
- ConstraintLayout cl_confirm;
- @BindView(R.id.nv_avatar)
- NiceImageView nv_avatar;
- @BindView(R.id.et_name)
- EditText et_name;
- @BindView(R.id.et_phone)
- EditText et_phone;
- @BindView(R.id.toggleButton)
- ToggleButton toggleButton;
-
-
private String avatarFilePath;
- private boolean urgent = false;
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_add_contact;
+ }
@Override
protected void initDataBinding() {
- DataBindingUtil.setContentView(this, R.layout.activity_add_contact);
+ mViewModel.setCtx(this);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
- ButterKnife.bind(this);
+
}
@Override
public void initData() {
- nv_avatar.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- selectPicture();
- }
- });
- iv_cancel.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- finish();
- }
- });
- iv_confirm.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- checkContact();
- }
- });
- cl_confirm.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- checkContact();
- }
- });
+
}
private void selectPicture() {
@@ -118,7 +90,7 @@ public class AddContactActivity extends BaseDataBindingActivity {
public void onResult(ArrayList result) {
avatarFilePath = result.get(0).getPath();
Log.e("selectPicture", "onResult: " + avatarFilePath);
- GlideLoadUtils.getInstance().glideLoad(AddContactActivity.this, avatarFilePath, nv_avatar, R.drawable.default_avatar);
+ GlideLoadUtils.getInstance().glideLoad(AddContactActivity.this, avatarFilePath, mViewDataBinding.nvAvatar, R.drawable.default_avatar);
}
@Override
@@ -130,12 +102,12 @@ public class AddContactActivity extends BaseDataBindingActivity {
private void checkContact() {
- String name = et_name.getText().toString();
+ String name = mViewDataBinding.etName.getText().toString();
if (TextUtils.isEmpty(name)) {
Toaster.show("请输入联系人姓名");
return;
}
- String phone = et_phone.getText().toString();
+ String phone = mViewDataBinding.etPhone.getText().toString();
if (TextUtils.isEmpty(phone)) {
Toaster.show("请输入手机号码");
return;
@@ -155,7 +127,7 @@ public class AddContactActivity extends BaseDataBindingActivity {
params.put("sn", RemoteManager.getInstance().getSerial());
params.put("name", name);
params.put("mobile", phone);
- params.put("is_urgent", String.valueOf(toggleButton.isToggleOn()));
+ params.put("is_urgent", String.valueOf(mViewDataBinding.toggleButton.isToggleOn()));
NetInterfaceManager.getInstance()
.getMailListAddObservable(params, body)
.compose(RxLifecycle.bindUntilEvent(getLifecycleSubject(), ActivityEvent.DESTROY))
@@ -220,7 +192,6 @@ public class AddContactActivity extends BaseDataBindingActivity {
return file;
}
-
public static File uriToFile(Uri uri, Context context) {
String path = null;
if ("file".equals(uri.getScheme())) {
@@ -266,4 +237,18 @@ public class AddContactActivity extends BaseDataBindingActivity {
return null;
}
+
+ public class BtnClick {
+ public void exit(View view) {
+ finish();
+ }
+
+ public void selectPic(View v) {
+ selectPicture();
+ }
+
+ public void confirm(View v) {
+ checkContact();
+ }
+ }
}
diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/AddContactViewModel.java b/app/src/main/java/com/uiuios/aios/activity/contact/AddContactViewModel.java
index 258b7d6..ba2290b 100644
--- a/app/src/main/java/com/uiuios/aios/activity/contact/AddContactViewModel.java
+++ b/app/src/main/java/com/uiuios/aios/activity/contact/AddContactViewModel.java
@@ -1,8 +1,16 @@
package com.uiuios.aios.activity.contact;
+import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityAddContactBinding;
+
+public class AddContactViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityAddContactBinding getVDBinding() {
+ return binding;
+ }
-public class AddContactViewModel extends BaseViewModel {
@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
new file mode 100644
index 0000000..8166a74
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java
@@ -0,0 +1,252 @@
+package com.uiuios.aios.activity.contact;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.provider.MediaStore;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+
+import androidx.lifecycle.Observer;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.bumptech.glide.request.RequestOptions;
+import com.hjq.toast.Toaster;
+import com.luck.picture.lib.basic.PictureSelector;
+import com.luck.picture.lib.config.SelectMimeType;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.luck.picture.lib.interfaces.OnResultCallbackListener;
+import com.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;
+
+import java.io.File;
+import java.io.FileOutputStream;
+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;
+
+public class AddWechatContactActivity extends BaseMvvmActivity {
+ private static final String TAG = AddWechatContactActivity.class.getSimpleName();
+
+ private LoadingDialog mLoadingDialog;
+ private String mPictrueFilePath;
+
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_add_wechat_contact;
+ }
+
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewDataBinding.setClick(new BtnClick());
+ }
+
+ @Override
+ protected void initView() {
+ mLoadingDialog = new LoadingDialog(this);
+ mLoadingDialog.setLoadingText("正在上传")
+ .setSuccessText("添加成功")
+ .setFailedText("添加失败")
+ .setInterceptBack(true)
+ .setLoadSpeed(LoadingDialog.Speed.SPEED_TWO)
+ .closeSuccessAnim()
+ .closeFailedAnim();
+ }
+
+ @Override
+ protected void initData() {
+ mViewModel.getBaseResponseMutableLiveData().observe(this, new Observer() {
+ @Override
+ public void onChanged(BaseResponse baseResponse) {
+ if (baseResponse.code == 200) {
+ mLoadingDialog.loadSuccess();
+ mLoadingDialog.close();
+ finish();
+ } else {
+ mLoadingDialog.setFailedText(baseResponse.msg);
+ mLoadingDialog.loadFailed();
+ mLoadingDialog.close();
+ }
+ }
+ });
+ }
+
+
+ private void openSelector() {
+ PictureSelector.create(AddWechatContactActivity.this)
+ .openGallery(SelectMimeType.ofAll())
+ .setSelectionMode(1)
+ .setImageEngine(GlideEngine.createGlideEngine())
+ .forResult(new OnResultCallbackListener() {
+ @Override
+ public void onResult(ArrayList result) {
+ mPictrueFilePath = result.get(0).getRealPath();
+ File file = new File(mPictrueFilePath);
+ if (file.exists()) {
+ RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtil.dip2px(AddWechatContactActivity.this, 8F)));
+ Glide.with(mViewDataBinding.nvAvatar).load(file).apply(options).into(mViewDataBinding.nvAvatar);
+ } else {
+ mPictrueFilePath = "";
+ }
+ }
+
+ @Override
+ public void onCancel() {
+ Log.e(TAG, "onCancel: ");
+ }
+ });
+ }
+
+ private void checkContact() {
+ String name = mViewDataBinding.etName.getText().toString();
+ if (TextUtils.isEmpty(name)) {
+ Toaster.show("请输入联系人姓名");
+ return;
+ }
+ String phone = mViewDataBinding.etPhone.getText().toString();
+ if (TextUtils.isEmpty(phone)) {
+ Toaster.show("请输入手机号码");
+ return;
+ }
+ String groupTag = mViewDataBinding.etGroup.getText().toString();
+ if (TextUtils.isEmpty(groupTag)) {
+ Toaster.show("请输入微信群组标签");
+ return;
+ }
+ File avatarFile;
+ Log.e("checkContact", "mPictrueFilePath: " + mPictrueFilePath);
+ if (TextUtils.isEmpty(mPictrueFilePath)) {
+ avatarFile = drawableToFile(R.drawable.default_avatar, "avatar");
+ } else {
+ Uri uri = Uri.parse(mPictrueFilePath);
+ avatarFile = uriToFile(uri, AddWechatContactActivity.this);
+ }
+ MediaType mediaType = MediaType.Companion.parse("image/png");
+ RequestBody requestBody = RequestBody.Companion.create(avatarFile, mediaType);
+ MultipartBody.Part body = MultipartBody.Part.createFormData("avatar", avatarFile.getName(), requestBody);
+ Map params = new HashMap<>();
+ params.put("sn", RemoteManager.getInstance().getSerial());
+ params.put("name", name);
+ params.put("mobile", phone);
+ params.put("tag", groupTag);
+ params.put("is_urgent", String.valueOf(mViewDataBinding.toggleButton.isToggleOn()));
+ mViewModel.addContact(params, body);
+ mLoadingDialog.show();
+ }
+
+ /**
+ * drawable转为file
+ *
+ * @param drawableId drawable的ID
+ * @param fileName 转换后的文件名
+ * @return
+ */
+ public File drawableToFile(int drawableId, String fileName) {
+// InputStream is = view.getContext().getResources().openRawResource(R.drawable.logo);
+ Bitmap bitmap = BitmapFactory.decodeResource(getResources(), drawableId);
+// Bitmap bitmap = BitmapFactory.decodeStream(is);
+ String defaultPath = getFilesDir().getAbsolutePath() + "/defaultGoodInfo";
+ File file = new File(defaultPath);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ String defaultImgPath = defaultPath + "/" + fileName;
+ file = new File(defaultImgPath);
+ try {
+ file.createNewFile();
+ FileOutputStream fOut = new FileOutputStream(file);
+ bitmap.compress(Bitmap.CompressFormat.PNG, 20, fOut);
+// is.close();
+ fOut.flush();
+ fOut.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return file;
+ }
+
+ public static File uriToFile(Uri uri, Context context) {
+ String path = null;
+ if ("file".equals(uri.getScheme())) {
+ path = uri.getEncodedPath();
+ if (path != null) {
+ path = Uri.decode(path);
+ ContentResolver cr = context.getContentResolver();
+ StringBuffer buff = new StringBuffer();
+ buff.append("(").append(MediaStore.Images.ImageColumns.DATA).append("=").append("'" + path + "'").append(")");
+ Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA}, buff.toString(), null, null);
+ int index = 0;
+ int dataIdx = 0;
+ for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
+ index = cur.getColumnIndex(MediaStore.Images.ImageColumns._ID);
+ index = cur.getInt(index);
+ dataIdx = cur.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
+ path = cur.getString(dataIdx);
+ }
+ cur.close();
+ if (index == 0) {
+ } else {
+ Uri u = Uri.parse("content://media/external/images/media/" + index);
+ System.out.println("temp uri is :" + u);
+ }
+ }
+ if (path != null) {
+ return new File(path);
+ }
+ } else if ("content".equals(uri.getScheme())) {
+ // 4.2.2以后
+ String[] proj = {MediaStore.Images.Media.DATA};
+ Cursor cursor = context.getContentResolver().query(uri, proj, null, null, null);
+ if (cursor.moveToFirst()) {
+ int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
+ path = cursor.getString(columnIndex);
+ }
+ cursor.close();
+
+ return new File(path);
+ } else {
+ //Log.i(TAG, "Uri Scheme:" + uri.getScheme());
+ }
+ return null;
+ }
+
+ public class BtnClick {
+ public void selectPic(View view) {
+ openSelector();
+ }
+
+ public void exit(View view) {
+ finish();
+ }
+
+ public void addContact(View view) {
+ checkContact();
+ }
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactViewModel.java b/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactViewModel.java
new file mode 100644
index 0000000..2ecb381
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactViewModel.java
@@ -0,0 +1,66 @@
+package com.uiuios.aios.activity.contact;
+
+import android.util.Log;
+
+import androidx.lifecycle.MutableLiveData;
+
+import com.hjq.toast.Toaster;
+import com.trello.rxlifecycle4.RxLifecycle;
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.bean.BaseResponse;
+import com.uiuios.aios.databinding.ActivityAddWechatContactBinding;
+import com.uiuios.aios.network.NetInterfaceManager;
+
+import java.util.Map;
+
+import io.reactivex.rxjava3.annotations.NonNull;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+import okhttp3.MultipartBody;
+
+public class AddWechatContactViewModel extends BaseViewModel {
+ @Override
+ public ActivityAddWechatContactBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+
+ private MutableLiveData mBaseResponseMutableLiveData = new MutableLiveData<>();
+
+ public MutableLiveData getBaseResponseMutableLiveData() {
+ return mBaseResponseMutableLiveData;
+ }
+
+ public void addContact(Map params, MultipartBody.Part body) {
+ NetInterfaceManager.getInstance()
+ .getMailListAddObservable(params, body)
+ .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("addContact", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse baseResponse) {
+ Log.e("addContact", "onNext: " + baseResponse);
+ mBaseResponseMutableLiveData.setValue(baseResponse);
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("addContact", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("addContact", "onComplete: ");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/ContactActivity.java b/app/src/main/java/com/uiuios/aios/activity/contact/ContactActivity.java
index 5dd23a9..dca3111 100644
--- a/app/src/main/java/com/uiuios/aios/activity/contact/ContactActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/contact/ContactActivity.java
@@ -17,7 +17,6 @@ import java.util.List;
public class ContactActivity extends BaseMvvmActivity {
-
private OldContactAdapter mOldContactAdapter;
@Override
@@ -80,7 +79,7 @@ public class ContactActivity extends BaseMvvmActivity desktopIcons = ApkUtils.queryFilterAppInfo(this);
+ ArrayList desktopIcons = ApkUtils.getAppstoreAppInfo(this);
int x = 0;
for (int i = 0; i <= desktopIcons.size(); i++) {
- if (i != 0 && i % APP_LIST_SIZE == 0) {
+ if (i != 0 && i % CommonConfig.DESKTOP_LIST_SIZE == 0) {
AppListFragment appListFragment = new AppListFragment();
appListFragment.setAppList(new ArrayList<>(desktopIcons.subList(x, i)));
mFragments.add(appListFragment);
@@ -212,7 +212,7 @@ public class MainActivity extends BaseMvvmActivity desktopIcons) {
int x = 0;
for (int i = 0; i <= desktopIcons.size(); i++) {
- if (i != 0 && i % APP_LIST_SIZE == 0) {
+ if (i != 0 && i % CommonConfig.DESKTOP_LIST_SIZE == 0) {
AppListFragment appListFragment = new AppListFragment();
appListFragment.setAppList(new ArrayList<>(desktopIcons.subList(x, i)));
mFragments.add(appListFragment);
@@ -294,35 +294,42 @@ public class MainActivity extends BaseMvvmActivity fragmentList = new ArrayList<>();
- ArrayList applicationInfoList = ApkUtils.queryFilterAppInfo(this);
+ ArrayList applicationInfoList = ApkUtils.getAppstoreAppInfo(this);
+ Log.e(TAG, "addData: applicationInfoList = " + applicationInfoList);
+ Log.e(TAG, "addData: applicationInfoList size = " + applicationInfoList.size());
int x = 0;
for (int i = 0; i <= applicationInfoList.size(); i++) {
- if (i != 0 && i % APP_LIST_SIZE == 0) {
+ Log.e(TAG, "addData: x = " + x + " i = " + i);
+ if (i != 0 && i % (CommonConfig.DESKTOP_LIST_SIZE) == 0) {//图标数量刚好填满
+ Log.e(TAG, "addData: % = 0");
AppListFragment appListFragment = new AppListFragment();
appListFragment.setAppList(new ArrayList<>(applicationInfoList.subList(x, i)));
fragmentList.add(appListFragment);
x = i;
} else if (i == applicationInfoList.size()) {
+ Log.e(TAG, "addData: i == size");
AppListFragment appListFragment = new AppListFragment();
- fragmentList.add(appListFragment);
appListFragment.setAppList(new ArrayList<>(applicationInfoList.subList(x, i)));
+ fragmentList.add(appListFragment);
}
}
+ Log.e(TAG, "addData: fragmentList = " + fragmentList);
//从第三个开始改
for (int i = 0; i < fragmentList.size(); i++) {
if (i + appListIndex < mFragments.size()) {
mBaseFragmentPagerAdapter.replaceFragment(i + appListIndex, fragmentList.get(i));
+ Log.e(TAG, "addData: replaceFragment = " + fragmentList.get(i));
// mFragments.remove(i + 2);
// mFragments.add(i + 2, fragmentList.get(i));
} else {
// mFragments.add(fragmentList.get(i));
// mBaseFragmentPagerAdapter.getFragments();
mBaseFragmentPagerAdapter.addFragment(fragmentList.get(i));
+ Log.e(TAG, "addData: addFragment = " + fragmentList.get(i));
}
}
for (int i = mFragments.size(); i > fragmentList.size() + appListIndex; i--) {
diff --git a/app/src/main/java/com/uiuios/aios/activity/NoticeActivity.java b/app/src/main/java/com/uiuios/aios/activity/noti/NoticeActivity.java
similarity index 80%
rename from app/src/main/java/com/uiuios/aios/activity/NoticeActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/noti/NoticeActivity.java
index 02087f3..8f3a707 100644
--- a/app/src/main/java/com/uiuios/aios/activity/NoticeActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/noti/NoticeActivity.java
@@ -1,4 +1,4 @@
-package com.uiuios.aios.activity;
+package com.uiuios.aios.activity.noti;
import android.content.Context;
import android.content.Intent;
@@ -8,37 +8,49 @@ import android.os.Bundle;
import android.os.PowerManager;
import android.os.Vibrator;
import android.view.View;
-import android.widget.TextView;
-import androidx.appcompat.app.AppCompatActivity;
+import androidx.databinding.DataBindingUtil;
import com.uiuios.aios.R;
+import com.uiuios.aios.base.BaseDataBindingActivity;
+import com.uiuios.aios.databinding.ActivityNoticeBinding;
import com.uiuios.aios.utils.WakeUpUtils;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import cn.jzvd.Jzvd;
-public class NoticeActivity extends AppCompatActivity {
+public class NoticeActivity extends BaseDataBindingActivity {
private String TAG = NoticeActivity.class.getSimpleName();
- @BindView(R.id.positive)
- TextView positive;
+ private ActivityNoticeBinding mBinding;
private int mId;
private MediaPlayer mMediaPlayer;
private PowerManager mPowerManager;
private PowerManager.WakeLock mWakeLock;
private AudioManager mAudioManager;
-
private Vibrator mVibrator;
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_notice);
- ButterKnife.bind(this);
+ protected void initDataBinding() {
+ mBinding = DataBindingUtil.setContentView(this, R.layout.activity_notice);
+ }
+ @Override
+ protected void initView() {
+ mBinding.positive.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent noticeIntent = new Intent(NoticeActivity.this, NoticeInfoActivity.class);
+ noticeIntent.putExtra("id", mId);
+ startActivity(noticeIntent);
+
+ finish();
+ }
+ });
+ }
+
+ @Override
+ protected void initData() {
Intent intent = getIntent();
mId = intent.getIntExtra("id", -1);
@@ -58,19 +70,8 @@ public class NoticeActivity extends AppCompatActivity {
// 开始播放
mMediaPlayer.start();
- positive.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent noticeIntent = new Intent(NoticeActivity.this, NoticeInfoActivity.class);
- noticeIntent.putExtra("id", mId);
- startActivity(noticeIntent);
-
- finish();
- }
- });
}
-
@Override
protected void onDestroy() {
super.onDestroy();
diff --git a/app/src/main/java/com/uiuios/aios/activity/NoticeInfoActivity.java b/app/src/main/java/com/uiuios/aios/activity/noti/NoticeInfoActivity.java
similarity index 77%
rename from app/src/main/java/com/uiuios/aios/activity/NoticeInfoActivity.java
rename to app/src/main/java/com/uiuios/aios/activity/noti/NoticeInfoActivity.java
index 600cfb5..67a9262 100644
--- a/app/src/main/java/com/uiuios/aios/activity/NoticeInfoActivity.java
+++ b/app/src/main/java/com/uiuios/aios/activity/noti/NoticeInfoActivity.java
@@ -1,21 +1,13 @@
-package com.uiuios.aios.activity;
+package com.uiuios.aios.activity.noti;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
-import android.os.Bundle;
import android.os.PowerManager;
-import android.os.Vibrator;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.constraintlayout.widget.ConstraintLayout;
import com.blankj.utilcode.util.FileUtils;
import com.bumptech.glide.Glide;
@@ -24,13 +16,14 @@ import com.bumptech.glide.request.RequestOptions;
import com.uiuios.aios.R;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.alarm.AlarmUtils;
+import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.BaseResponse;
+import com.uiuios.aios.databinding.ActivityNoticeInfoBinding;
import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.utils.FileUtil;
import com.uiuios.aios.utils.ScreenUtils;
import com.uiuios.aios.utils.Utils;
import com.uiuios.aios.utils.WakeUpUtils;
-import com.uiuios.aios.view.JzvdStdAssert;
import java.io.File;
import java.io.FileInputStream;
@@ -38,30 +31,15 @@ import java.io.IOException;
import java.net.URI;
import java.util.HashMap;
-import butterknife.BindView;
-import butterknife.ButterKnife;
import cn.jzvd.JZDataSource;
import cn.jzvd.Jzvd;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
-public class NoticeInfoActivity extends AppCompatActivity {
+public class NoticeInfoActivity extends BaseMvvmActivity {
private String TAG = NoticeInfoActivity.class.getSimpleName();
- @BindView(R.id.tv_title)
- TextView tv_title;
- @BindView(R.id.bt_ok)
- Button bt_ok;
- @BindView(R.id.cl_voice)
- ConstraintLayout cl_voice;
- @BindView(R.id.cl_vp)
- ConstraintLayout cl_vp;
- @BindView(R.id.jz_video)
- JzvdStdAssert jz_video;
- @BindView(R.id.imageView)
- ImageView imageView;
-
private AlarmClockData mAlarmClockData;
private int mId;
private MediaPlayer mMediaPlayer;
@@ -69,19 +47,31 @@ public class NoticeInfoActivity extends AppCompatActivity {
private PowerManager.WakeLock mWakeLock;
private AudioManager mAudioManager;
- private Vibrator mVibrator;
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_notice_info;
+ }
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_notice_info);
- ButterKnife.bind(this);
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ }
+
+ @Override
+ protected void initView() {
+
+ }
+
+ @Override
+ protected void initData() {
Intent intent = getIntent();
mId = intent.getIntExtra("id", -1);
mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = mPowerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeAndLock");
- mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
+// mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
@@ -93,8 +83,6 @@ public class NoticeInfoActivity extends AppCompatActivity {
finish();
} else {
mWakeLock.acquire(60 * 1000L);
- long[] pattern = {1000, 5000, 1000, 5000};
- mVibrator.vibrate(pattern, 0);
WakeUpUtils.wakeUpAndUnlockScreen(this);
HashMap oldData = AlarmUtils.getInstance().getOldDataMap();
@@ -104,7 +92,7 @@ public class NoticeInfoActivity extends AppCompatActivity {
}
Log.e(TAG, "onCreate: " + mAlarmClockData);
showPic(mAlarmClockData);
- jz_video.postDelayed(new Runnable() {
+ mViewDataBinding.jzVideo.postDelayed(new Runnable() {
@Override
public void run() {
showData(mAlarmClockData);
@@ -114,8 +102,8 @@ public class NoticeInfoActivity extends AppCompatActivity {
}
private void showPic(AlarmClockData alarmClockData) {
- tv_title.setText(alarmClockData.getTitle());
- bt_ok.setOnClickListener(new View.OnClickListener() {
+ mViewDataBinding.tvTitle.setText(alarmClockData.getTitle());
+ mViewDataBinding.btOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
HashMap oldData = AlarmUtils.getInstance().getOldDataMap();
@@ -155,7 +143,7 @@ public class NoticeInfoActivity extends AppCompatActivity {
String voiceUrl = alarmClockData.getVoice();
String voicemd5 = alarmClockData.getVoice_md5();
if (!TextUtils.isEmpty(voiceUrl)) {
- cl_voice.setVisibility(View.VISIBLE);
+ mViewDataBinding.clVoice.setVisibility(View.VISIBLE);
String fileName = Utils.getFileNamefromURL(voiceUrl);
File file = new File(Utils.getDownLoadPath(NoticeInfoActivity.this) + fileName);
String fileMD5 = FileUtils.getFileMD5ToString(file);
@@ -179,17 +167,17 @@ public class NoticeInfoActivity extends AppCompatActivity {
}
// }
} else {
- cl_voice.setVisibility(View.GONE);
+ mViewDataBinding.clVoice.setVisibility(View.GONE);
}
String filePath = alarmClockData.getFile();
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(this, 16F)));
String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());
String realPath = Utils.getDownLoadPath(NoticeInfoActivity.this) + fileName;
File file = new File(realPath);
- if (file.exists()){
- Glide.with(NoticeInfoActivity.this).load(file).apply(options).error(R.drawable.icon_nodata).into(imageView);
- }else {
- Glide.with(NoticeInfoActivity.this).load(filePath).apply(options).error(R.drawable.icon_nodata).into(imageView);
+ if (file.exists()) {
+ Glide.with(NoticeInfoActivity.this).load(file).apply(options).error(R.drawable.icon_nodata).into(mViewDataBinding.imageView);
+ } else {
+ Glide.with(NoticeInfoActivity.this).load(filePath).apply(options).error(R.drawable.icon_nodata).into(mViewDataBinding.imageView);
}
}
@@ -197,24 +185,24 @@ public class NoticeInfoActivity extends AppCompatActivity {
private void showData(AlarmClockData alarmClockData) {
String filePath = alarmClockData.getFile();
if (!TextUtils.isEmpty(filePath)) {
- cl_vp.setVisibility(View.VISIBLE);
+ mViewDataBinding.clVp.setVisibility(View.VISIBLE);
String fileType = FileUtil.getFileType(filePath);
Log.e(TAG, "showData: " + fileType);
if (FileUtil.isPictureFile(fileType)) {
- jz_video.setVisibility(View.GONE);
- imageView.setVisibility(View.VISIBLE);
+ mViewDataBinding.jzVideo.setVisibility(View.GONE);
+ mViewDataBinding.imageView.setVisibility(View.VISIBLE);
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(this, 16F)));
String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());
String realPath = Utils.getDownLoadPath(NoticeInfoActivity.this) + fileName;
File file = new File(realPath);
- if (file.exists()){
- Glide.with(NoticeInfoActivity.this).load(file).apply(options).error(R.drawable.icon_nodata).into(imageView);
- }else {
- Glide.with(NoticeInfoActivity.this).load(filePath).apply(options).error(R.drawable.icon_nodata).into(imageView);
+ if (file.exists()) {
+ Glide.with(NoticeInfoActivity.this).load(file).apply(options).error(R.drawable.icon_nodata).into(mViewDataBinding.imageView);
+ } else {
+ Glide.with(NoticeInfoActivity.this).load(filePath).apply(options).error(R.drawable.icon_nodata).into(mViewDataBinding.imageView);
}
} else if (FileUtil.isVideoFile(fileType)) {
- jz_video.setVisibility(View.VISIBLE);
- imageView.setVisibility(View.GONE);
+ mViewDataBinding.jzVideo.setVisibility(View.VISIBLE);
+ mViewDataBinding.imageView.setVisibility(View.GONE);
String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());
String realPath = Utils.getDownLoadPath(NoticeInfoActivity.this) + fileName;
File file = new File(realPath);
@@ -228,13 +216,13 @@ public class NoticeInfoActivity extends AppCompatActivity {
jzDataSource = new JZDataSource(uri.toString(), "");
}
jzDataSource.looping = true;
- jz_video.setUp(jzDataSource, Jzvd.SCREEN_NORMAL);
- jz_video.startPreloading();
- jz_video.startVideoAfterPreloading();
- jz_video.startVideo();
+ mViewDataBinding.jzVideo.setUp(jzDataSource, Jzvd.SCREEN_NORMAL);
+ mViewDataBinding.jzVideo.startPreloading();
+ mViewDataBinding.jzVideo.startVideoAfterPreloading();
+ mViewDataBinding.jzVideo.startVideo();
}
} else {
- cl_vp.setVisibility(View.GONE);
+ mViewDataBinding.clVp.setVisibility(View.GONE);
}
}
@@ -249,9 +237,6 @@ public class NoticeInfoActivity extends AppCompatActivity {
mMediaPlayer.release();
mMediaPlayer = null;
}
- if (mVibrator != null) {
- mVibrator.cancel();
- }
}
@Override
diff --git a/app/src/main/java/com/uiuios/aios/activity/noti/NoticeInfoViewModel.java b/app/src/main/java/com/uiuios/aios/activity/noti/NoticeInfoViewModel.java
new file mode 100644
index 0000000..910d1aa
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/activity/noti/NoticeInfoViewModel.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.activity.noti;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.uiuios.aios.base.mvvm.BaseViewModel;
+import com.uiuios.aios.databinding.ActivityNoticeInfoBinding;
+
+public class NoticeInfoViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityNoticeInfoBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/uiuios/aios/activity/wecontact/AddWechatContactActivity.java b/app/src/main/java/com/uiuios/aios/activity/wecontact/AddWechatContactActivity.java
deleted file mode 100644
index 1b29394..0000000
--- a/app/src/main/java/com/uiuios/aios/activity/wecontact/AddWechatContactActivity.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.uiuios.aios.activity.wecontact;
-
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
-import com.bumptech.glide.request.RequestOptions;
-import com.hjq.toast.Toaster;
-import com.luck.picture.lib.basic.PictureSelector;
-import com.luck.picture.lib.config.SelectMimeType;
-import com.luck.picture.lib.entity.LocalMedia;
-import com.luck.picture.lib.interfaces.OnResultCallbackListener;
-import com.uiuios.aios.R;
-import com.uiuios.aios.base.GlideEngine;
-import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
-import com.uiuios.aios.bean.WechatInfo;
-import com.uiuios.aios.databinding.ActivityAddWechatContactBinding;
-import com.uiuios.aios.db.ContactManager;
-import com.uiuios.aios.utils.ScreenUtil;
-
-import java.io.File;
-import java.util.ArrayList;
-
-public class AddWechatContactActivity extends BaseMvvmActivity {
- private static final String TAG = AddWechatContactActivity.class.getSimpleName();
-
- private String mPictrueFilePath;
-
-
- @Override
- protected int getLayoutId() {
- return R.layout.activity_add_wechat_contact;
- }
-
- @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 void openSelector() {
- PictureSelector.create(AddWechatContactActivity.this)
- .openGallery(SelectMimeType.ofAll())
- .setSelectionMode(1)
- .setImageEngine(GlideEngine.createGlideEngine())
- .forResult(new OnResultCallbackListener() {
- @Override
- public void onResult(ArrayList result) {
- mPictrueFilePath = result.get(0).getRealPath();
- File file = new File(mPictrueFilePath);
- if (file.exists()) {
- RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtil.dip2px(AddWechatContactActivity.this, 8F)));
- Glide.with(mViewDataBinding.nvAvatar).load(file).apply(options).into(mViewDataBinding.nvAvatar);
- } else {
- mPictrueFilePath = "";
- }
- }
-
- @Override
- public void onCancel() {
- Log.e(TAG, "onCancel: ");
- }
- });
- }
-
- public class BtnClick {
- public void selectPic(View view){
- openSelector();
- }
-
- public void exit(View view){
- finish();
- }
-
- public void addContact(View view) {
- if (TextUtils.isEmpty(mViewDataBinding.etName.getText())) {
- Toaster.show("请输入微信备注");
- return;
- }
- if (TextUtils.isEmpty(mViewDataBinding.etGroup.getText())) {
- Toaster.show("请输入微信群组标签");
- return;
- }
- if (TextUtils.isEmpty(mViewDataBinding.etPhone.getText())) {
- Toaster.show("请输入手机号码");
- return;
- }
-// if (TextUtils.isEmpty(mPictrueFilePath)) {
-// Toaster.show("请选择图片");
-// return;
-// }
- WechatInfo wechatInfo = new WechatInfo();
- if (!TextUtils.isEmpty(mViewDataBinding.etName.getText())) {
- wechatInfo.setNickName(mViewDataBinding.etName.getText().toString());
- }
- if (!TextUtils.isEmpty(mViewDataBinding.etGroup.getText())) {
- wechatInfo.setGroupTag(mViewDataBinding.etGroup.getText().toString());
- }
- if (!TextUtils.isEmpty(mViewDataBinding.etWechatId.getText())) {
- wechatInfo.setWechatId(mViewDataBinding.etWechatId.getText().toString());
- }
- if (!TextUtils.isEmpty(mViewDataBinding.etPhone.getText())) {
- wechatInfo.setMobile(mViewDataBinding.etPhone.getText().toString());
- }
- if (!TextUtils.isEmpty(mPictrueFilePath)) {
- wechatInfo.setAvatarPath(mPictrueFilePath);
- }
- if (ContactManager.getInstance().addWechatInfo(wechatInfo)) {
- Toaster.show("添加成功");
- finish();
- }
-
- }
- }
-}
diff --git a/app/src/main/java/com/uiuios/aios/activity/wecontact/AddWechatContactViewModel.java b/app/src/main/java/com/uiuios/aios/activity/wecontact/AddWechatContactViewModel.java
deleted file mode 100644
index 736b6eb..0000000
--- a/app/src/main/java/com/uiuios/aios/activity/wecontact/AddWechatContactViewModel.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.uiuios.aios.activity.wecontact;
-
-import com.trello.rxlifecycle4.android.ActivityEvent;
-import com.uiuios.aios.base.mvvm.BaseViewModel;
-import com.uiuios.aios.databinding.ActivityAddWechatContactBinding;
-
-public class AddWechatContactViewModel extends BaseViewModel {
- @Override
- public ActivityAddWechatContactBinding getVDBinding() {
- return binding;
- }
-
- @Override
- public void onDestroy() {
-
- }
-}
diff --git a/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java
index e2ac1e1..a77ef76 100644
--- a/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java
+++ b/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java
@@ -18,7 +18,7 @@ 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.contact.AddContactActivity;
+import com.uiuios.aios.activity.contact.AddWechatContactActivity;
import com.uiuios.aios.activity.records.RecordsActivity;
import com.uiuios.aios.bean.Contact;
@@ -70,7 +70,7 @@ public class ContactAdapter extends RecyclerView.Adapter {
private static final String TAG = WechatContactAdapter.class.getSimpleName();
- private List mContactList;
+ private List mContactList;
private Context mContext;
public static final String DIALER_PACKAGE = "com.android.dialer";
public static final String DIALER_ADD_CONTACT = "com.uiui.aios.contact.add";
- public void setContactList(List contactList) {
+ public void setContactList(List contactList) {
this.mContactList = contactList;
notifyDataSetChanged();
}
@@ -51,7 +52,7 @@ public class WechatContactAdapter extends RecyclerView.Adapter extends BaseFragment {
- protected String mTag = this.getClass().getSimpleName();
+ protected String TAG = this.getClass().getSimpleName();
/**
* 是否顯示了
*/
@@ -65,6 +65,7 @@ public abstract class BaseMvvmFragment(context);
}
@@ -82,6 +83,7 @@ public abstract class BaseMvvmFragment {
+public class AppListFragment extends BaseFragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
@@ -70,6 +71,7 @@ public class AppListFragment extends BaseMvvmFragment mDesktopIcons;
private MyGridLayout gridLayout;
private String TAG = AppListFragment.class.getSimpleName();
@@ -100,9 +102,9 @@ public class AppListFragment extends BaseMvvmFragment(Arrays.asList(new DesktopIcon[12 - mDesktopIcons.size()])));
+ private void initView() {
+ if (mDesktopIcons.size() != CommonConfig.DESKTOP_LIST_SIZE) {
+ mDesktopIcons.addAll(new ArrayList<>(Arrays.asList(new DesktopIcon[CommonConfig.DESKTOP_LIST_SIZE - mDesktopIcons.size()])));
}
- gridLayout = getActivity().findViewById(R.id.list);
- if (getCtx().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
+ gridLayout = rootView.findViewById(R.id.list);
+// if (mContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
+// gridLayout.set(3, 3);
+// } else {
gridLayout.set(3, 3);
- } else {
- gridLayout.set(3, 3);
- }
+// }
gridLayout.setGridAdapter(new MyGridLayout.GridAdatper() {
@Override
public View getView(int index) {
- PackageManager pm = getCtx().getPackageManager();
+ PackageManager pm = mContext.getPackageManager();
View view = getLayoutInflater().inflate(R.layout.item_actions, null);
ImageView iv = view.findViewById(R.id.iv);
ImageView iv_app = view.findViewById(R.id.iv_app);
@@ -153,7 +154,7 @@ public class AppListFragment extends BaseMvvmFragment appList) {
this.mDesktopIcons = appList;
-
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
- outState.putParcelableArrayList("applicationInfos", mDesktopIcons);
- super.onSaveInstanceState(outState);
+// outState.putParcelableArrayList("applicationInfos", mDesktopIcons);
+// super.onSaveInstanceState(outState);
}
}
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 e1ad5cb..12608c5 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
@@ -11,9 +11,11 @@ import androidx.recyclerview.widget.GridLayoutManager;
import com.hjq.toast.Toaster;
import com.uiuios.aios.R;
-import com.uiuios.aios.activity.wecontact.AddWechatContactActivity;
+import com.uiuios.aios.activity.contact.AddWechatContactActivity;
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.databinding.FragmentContactHomeBinding;
import com.uiuios.aios.db.ContactManager;
@@ -45,8 +47,8 @@ public class ContactFragment extends BaseMvvmFragment>() {
+ mViewModel.getContactList().observe(this, new Observer>() {
@Override
- public void onChanged(List contacts) {
+ public void onChanged(List contacts) {
if (contacts == null || contacts.size() == 0) {
mViewDataBinding.tvNoContact.setVisibility(View.VISIBLE);
mViewDataBinding.rvContact.setVisibility(View.GONE);
@@ -72,6 +74,17 @@ public class ContactFragment extends BaseMvvmFragment() {
+ @Override
+ public void onChanged(BaseResponse baseResponse) {
+ if (baseResponse.code == 200) {
+ Toaster.show("删除成功");
+ } else {
+ Toaster.show("删除失败:" + baseResponse.msg);
+ }
+ mViewModel.getContact();
+ }
+ });
}
@Override
@@ -86,7 +99,7 @@ public class ContactFragment extends BaseMvvmFragment> mContactList = new MutableLiveData<>();
+ private MutableLiveData> mContactList = new MutableLiveData<>();
- public MutableLiveData> getContactList() {
+ public MutableLiveData> getContactList() {
return mContactList;
}
public void getContact() {
- Observable.create(new ObservableOnSubscribe>() {
- @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: ");
- }
- });
-
-// NetInterfaceManager.getInstance()
-// .getContactListObservable()
+// Observable.create(new ObservableOnSubscribe>() {
+// @Override
+// public void subscribe(@NonNull ObservableEmitter> emitter) throws Throwable {
+// emitter.onNext(ContactManager.getInstance().getWechatInfoList());
+// }
+// })
// .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
-// .subscribe(new Observer>>() {
+// .subscribeOn(Schedulers.io())
+// .observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new Observer>() {
// @Override
// public void onSubscribe(@NonNull Disposable d) {
-// Log.e("getContactList", "onSubscribe: ");
+// Log.e("getWechatInfoList", "onSubscribe: ");
// }
//
// @Override
-// public void onNext(@NonNull BaseResponse> listBaseResponse) {
-// Log.e("getContactList", "onNext: " + listBaseResponse);
-// if (listBaseResponse.code == 200) {
-// mMMKV.putString(UrlAddress.GET_MAIL_LIST, GsonUtils.toJSONString(listBaseResponse.data));
-// mContactList.setValue(listBaseResponse.data);
-// } else {
-// mMMKV.putString(UrlAddress.GET_MAIL_LIST, "");
-// mContactList.setValue(new ArrayList<>());
-// }
+// public void onNext(@NonNull List wechatInfos) {
+// Log.e("getWechatInfoList", "onNext: " + wechatInfos);
+// mContactList.setValue(wechatInfos);
// }
//
// @Override
// public void onError(@NonNull Throwable e) {
-// Log.e("getContactList", "onError: " + e.getMessage());
-// String jsonString = mMMKV.getString(UrlAddress.GET_MAIL_LIST, null);
-// Gson gson = new Gson();
-// Type type = new TypeToken>() {
-// }.getType();
-// List contacts = gson.fromJson(jsonString, type);
-// if (contacts == null) {
-// mContactList.setValue(new ArrayList<>());
-// } else {
-// mContactList.setValue(contacts);
-// }
-// onComplete();
+// Log.e("getWechatInfoList", "onError: " + e.getMessage());
+// mContactList.setValue(null);
// }
//
// @Override
// public void onComplete() {
-// Log.e("getContactList", "onComplete: ");
+// Log.e("getWechatInfoList", "onComplete: ");
// }
// });
+
+ NetInterfaceManager.getInstance()
+ .getContactListObservable()
+ .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getContactList", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("getContactList", "onNext: " + listBaseResponse);
+ if (listBaseResponse.code == 200) {
+ mMMKV.putString(UrlAddress.GET_MAIL_LIST, GsonUtils.toJSONString(listBaseResponse.data));
+ mContactList.setValue(listBaseResponse.data);
+ } else {
+ mMMKV.putString(UrlAddress.GET_MAIL_LIST, "");
+ mContactList.setValue(new ArrayList<>());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getContactList", "onError: " + e.getMessage());
+ String jsonString = mMMKV.getString(UrlAddress.GET_MAIL_LIST, null);
+ Gson gson = new Gson();
+ Type type = new TypeToken>() {
+ }.getType();
+ List contacts = gson.fromJson(jsonString, type);
+ if (contacts == null) {
+ mContactList.setValue(new ArrayList<>());
+ } else {
+ mContactList.setValue(contacts);
+ }
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getContactList", "onComplete: ");
+ }
+ });
+ }
+
+
+ private MutableLiveData mDeleteData =new MutableLiveData<>();
+
+ public MutableLiveData getDeleteData() {
+ return mDeleteData;
+ }
+
+ public void deleteContact(int id) {
+ NetInterfaceManager.getInstance().getMailListDeleteObservable(id)
+ .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("deleteContact", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse baseResponse) {
+ Log.e("deleteContact", "onNext: " + baseResponse);
+ mDeleteData.setValue(baseResponse);
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("deleteContact", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("deleteContact", "onComplete: ");
+ }
+ });
}
}
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 36ca703..cf58b5d 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
@@ -16,8 +16,8 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
+import com.hjq.toast.Toaster;
import com.jeremyliao.liveeventbus.LiveEventBus;
import com.qweather.sdk.bean.weather.WeatherDailyBean;
import com.qweather.sdk.bean.weather.WeatherHourlyBean;
@@ -29,12 +29,12 @@ import com.uiuios.aios.activity.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.weather.WeatherActivity;
import com.uiuios.aios.adapter.HomeAppAdapter;
-import com.uiuios.aios.adapter.NotificationAdapter;
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.AlarmItem;
import com.uiuios.aios.bean.Contact;
import com.uiuios.aios.bean.DesktopIcon;
import com.uiuios.aios.bean.MapBean;
@@ -48,6 +48,7 @@ import com.uiuios.aios.utils.ApkUtils;
import com.uiuios.aios.utils.AppUtil;
import com.uiuios.aios.view.RecyclerViewSpacesItemDecoration;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
@@ -66,8 +67,7 @@ public class HomeFragment extends BaseMvvmFragment alarmItemList;
- private NotificationAdapter notificationAdapter;
+// private NotificationAdapter notificationAdapter;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
@@ -145,11 +145,11 @@ public class HomeFragment extends BaseMvvmFragment desktopIcons) {
Log.e(TAG, "setInstalledApp: " + desktopIcons);
if (desktopIcons == null || desktopIcons.size() == 0) {
- mViewDataBinding.ivNodata.setVisibility(View.VISIBLE);
- mViewDataBinding.rvApp.setVisibility(View.INVISIBLE);
+// mViewDataBinding.ivNodata.setVisibility(View.VISIBLE);
+// mViewDataBinding.rvApp.setVisibility(View.INVISIBLE);
} else {
- mViewDataBinding.ivNodata.setVisibility(View.GONE);
- mViewDataBinding.rvApp.setVisibility(View.VISIBLE);
+// mViewDataBinding.ivNodata.setVisibility(View.GONE);
+// mViewDataBinding.rvApp.setVisibility(View.VISIBLE);
mHomeAppAdapter.setDesktopIcons(desktopIcons);
}
}
@@ -157,14 +157,35 @@ public class HomeFragment extends BaseMvvmFragment>() {
@Override
- public void onChanged(List alarmClockData) {
- if (alarmClockData != null && alarmClockData.size() != 0) {
- notificationAdapter.setDataList(alarmClockData);
- mViewDataBinding.rvNoti.setVisibility(View.VISIBLE);
- mViewDataBinding.ivNoteNodata.setVisibility(View.GONE);
+ public void onChanged(List alarmClockDataList) {
+ if (alarmClockDataList != null && alarmClockDataList.size() != 0) {
+// notificationAdapter.setDataList(alarmClockDataList);
+ AlarmClockData alarmClockData = alarmClockDataList.get(0);
+ switch (alarmClockData.getType()) {
+ case AlarmUtils.ONCE:
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ Date date = sdf.parse(alarmClockData.getTime());
+ SimpleDateFormat hours = new SimpleDateFormat("HH:mm");
+ String time = hours.format(date);
+ mViewDataBinding.tvClock.setText(time);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ break;
+ case AlarmUtils.LOOP:
+ case AlarmUtils.WORKING_DAY:
+ case AlarmUtils.OFF_DAY:
+ mViewDataBinding.tvClock.setText(alarmClockData.getTime());
+ break;
+ default:
+ }
+// mViewDataBinding.rvNoti.setVisibility(View.VISIBLE);
+// mViewDataBinding.ivNoteNodata.setVisibility(View.GONE);
} else {
- mViewDataBinding.rvNoti.setVisibility(View.GONE);
- mViewDataBinding.ivNoteNodata.setVisibility(View.VISIBLE);
+ mViewDataBinding.tvClock.setText("未设置");
+// mViewDataBinding.rvNoti.setVisibility(View.GONE);
+// mViewDataBinding.ivNoteNodata.setVisibility(View.VISIBLE);
}
}
});
@@ -235,19 +256,18 @@ public class HomeFragment extends BaseMvvmFragment stringIntegerHashMap = new HashMap<>();
@@ -269,6 +289,27 @@ public class HomeFragment extends BaseMvvmFragment allowPackages = resolveinfoList.stream().map(resolveInfo -> resolveInfo.activityInfo.packageName).collect(Collectors.toSet());
// List adminApp = RemoteManager.getInstance().getAdminApp();
-// Log.i(TAG, "queryFilterAppInfo: adminapp = " + adminApp);
+// Log.i(TAG, "getFilterAppset: adminapp = " + adminApp);
for (ResolveInfo resolveInfo : resolveinfoList) {
String pkg = resolveInfo.activityInfo.packageName;
if (ApkUtils.appIsDisable(mContext, pkg)) {
- Log.e(TAG, "queryFilterAppInfo: disable = " + pkg);
+ Log.e(TAG, "getFilterAppset: disable = " + pkg);
continue;
}
if (showPackages.contains(pkg)) {
@@ -142,11 +142,11 @@ public class AppManager {
// List adminApp = RemoteManager.getInstance().getAdminApp();
-// Log.i(TAG, "queryFilterAppInfo: adminapp = " + adminApp);
+// Log.i(TAG, "getFilterAppset: adminapp = " + adminApp);
for (ResolveInfo resolveInfo : resolveinfoList) {
String pkg = resolveInfo.activityInfo.packageName;
if (ApkUtils.appIsDisable(mContext, pkg)) {
- Log.e(TAG, "queryFilterAppInfo: disable = " + pkg);
+ Log.e(TAG, "getFilterAppset: disable = " + pkg);
continue;
}
if (showPackages.contains(pkg)) {
@@ -215,11 +215,11 @@ public class AppManager {
// List adminApp = RemoteManager.getInstance().getAdminApp();
-// Log.i(TAG, "queryFilterAppInfo: adminapp = " + adminApp);
+// Log.i(TAG, "getFilterAppset: adminapp = " + adminApp);
for (ResolveInfo resolveInfo : resolveinfoList) {
String pkg = resolveInfo.activityInfo.packageName;
if (ApkUtils.appIsDisable(mContext, pkg)) {
- Log.e(TAG, "queryFilterAppInfo: disable = " + pkg);
+ Log.e(TAG, "getFilterAppset: disable = " + pkg);
continue;
}
if (ApkUtils.excludePackageName.contains(pkg)) {
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 cdce3c3..f8096c8 100644
--- a/app/src/main/java/com/uiuios/aios/manager/AppStatusManager.java
+++ b/app/src/main/java/com/uiuios/aios/manager/AppStatusManager.java
@@ -20,8 +20,10 @@ import java.util.function.Predicate;
public class AppStatusManager {
private static final String TAG = AppStatusManager.class.getSimpleName();
+
@SuppressLint("StaticFieldLeak")
private static AppStatusManager sInstance;
+
private Context mContext;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private Set hidedAppSet;
@@ -34,6 +36,9 @@ public class AppStatusManager {
this.add("com.android.documentsui");
this.add("com.android.calculator2");
this.add("com.android.calendar");
+ this.add("com.mediatek.camera");
+ this.add("com.android.dialer");
+ this.add("com.android.settings");
}};
private AppStatusManager(Context context) {
diff --git a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java
index ea6d534..c4cb936 100644
--- a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java
+++ b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java
@@ -46,6 +46,7 @@ import com.uiuios.aios.manager.ConnectMode;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.network.api.ActivityListApi;
import com.uiuios.aios.network.api.AddressIndexApi;
+import com.uiuios.aios.network.api.MailListDeleteApi;
import com.uiuios.aios.network.api.ServeApi;
import com.uiuios.aios.network.api.alarmclock.AlarmClockAddApi;
import com.uiuios.aios.network.api.alarmclock.AlarmClockApi;
@@ -398,6 +399,14 @@ public class NetInterfaceManager {
}
+ public Observable getMailListDeleteObservable(int id) {
+ return mRetrofit.create(MailListDeleteApi.class)
+ .deleteMailList(RemoteManager.getInstance().getSerial(), id)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+
public Observable>> getGoodsTypeListObservable() {
return mRetrofit.create(GoodsTypeApi.class)
.getGoodsTypeList()
@@ -518,7 +527,7 @@ public class NetInterfaceManager {
public Observable> getOrderExpressObservable(String order_sn, String order_id) {
return mRetrofit.create(OrderExpressApi.class)
- .getOrderExpress(RemoteManager.getInstance().getSerial(), order_sn,order_id)
+ .getOrderExpress(RemoteManager.getInstance().getSerial(), order_sn, order_id)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
@@ -1024,7 +1033,7 @@ public class NetInterfaceManager {
@Override
public void onNext(@NonNull BaseResponse> listBaseResponse) {
- Log.e("getAlarmClockObserver", "onNext: ");
+ Log.e("getAlarmClockObserver", "onNext: " + listBaseResponse);
if (listBaseResponse.code == 200) {
List alarmClockData = listBaseResponse.data;
if (alarmClockData != null && alarmClockData.size() != 0) {
diff --git a/app/src/main/java/com/uiuios/aios/network/api/MailListDeleteApi.java b/app/src/main/java/com/uiuios/aios/network/api/MailListDeleteApi.java
new file mode 100644
index 0000000..7dd6da1
--- /dev/null
+++ b/app/src/main/java/com/uiuios/aios/network/api/MailListDeleteApi.java
@@ -0,0 +1,18 @@
+package com.uiuios.aios.network.api;
+
+import com.uiuios.aios.bean.BaseResponse;
+import com.uiuios.aios.network.UrlAddress;
+
+import io.reactivex.rxjava3.core.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface MailListDeleteApi {
+ @FormUrlEncoded
+ @POST(UrlAddress.MAIL_LIST_DELETE)
+ Observable deleteMailList(
+ @Field("sn") String sn,
+ @Field("id") int id
+ );
+}
diff --git a/app/src/main/java/com/uiuios/aios/service/WeAccessibilityService.java b/app/src/main/java/com/uiuios/aios/service/WeAccessibilityService.java
index 47a9852..873b6a3 100644
--- a/app/src/main/java/com/uiuios/aios/service/WeAccessibilityService.java
+++ b/app/src/main/java/com/uiuios/aios/service/WeAccessibilityService.java
@@ -20,6 +20,7 @@ import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.Toast;
import com.tencent.mmkv.MMKV;
+import com.uiuios.aios.bean.Contact;
import com.uiuios.aios.bean.WechatInfo;
import com.uiuios.aios.config.CommonConfig;
@@ -48,7 +49,7 @@ public class WeAccessibilityService extends AccessibilityService {
private int mCallType = TYPE_VOICE;
- private WechatInfo mWechatInfo;
+ private Contact mContact;
private Step mCurrentStep = Step.WAITING;
private String mName = "";//微信昵称
private String mTagName = "";//微信联系人标签名
@@ -78,11 +79,11 @@ public class WeAccessibilityService extends AccessibilityService {
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e(TAG, "onStartCommand: ");
if (intent != null) {
- mWechatInfo = (WechatInfo) intent.getSerializableExtra("WechatInfo");
- Log.e(TAG, "onStartCommand: wechatInfo = " + mWechatInfo);
+ mContact = (Contact) intent.getSerializableExtra("WechatInfo");
+ Log.e(TAG, "onStartCommand: wechatInfo = " + mContact);
mCallType = intent.getIntExtra("call_type", TYPE_VOICE);
- mName = mWechatInfo.getNickName();
- String groupTag = mWechatInfo.getGroupTag();
+ mName = mContact.getName();
+ String groupTag = mContact.getTag();
if (TextUtils.isEmpty(groupTag)) {
mTagName = TAG_NAME;
} else {
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 dc332e5..45f8b86 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
@@ -15,7 +15,7 @@ import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.task.DownloadTask;
import com.blankj.utilcode.util.NetworkUtils;
import com.uiuios.aios.BuildConfig;
-import com.uiuios.aios.activity.NoticeActivity;
+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;
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 abe06f3..25a644b 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,6 @@ import androidx.annotation.RequiresApi;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
-import com.uiuios.aios.R;
import com.uiuios.aios.activity.QuickAppActivity;
import com.uiuios.aios.bean.DesktopIcon;
import com.uiuios.aios.config.CommonConfig;
@@ -99,10 +98,12 @@ public class ApkUtils {
// this.add("com.android.documentsui");
// this.add("com.android.calculator2");
}};
+
private static HashSet allHintPackage = new HashSet() {{
this.add("com.android.uiuios");
}};
- private static String TAG = ApkUtils.class.getSimpleName();
+
+ private static final String TAG = ApkUtils.class.getSimpleName();
public static ArrayList getSystemApp(Context context) {
PackageManager pm = context.getPackageManager();
@@ -240,8 +241,12 @@ public class ApkUtils {
resolveInfos.add(resolveInfo);
}
} else {
- Log.e(TAG, "queryFilterAppInfo: pkgSet ! contains " + pkg);
- AppStatusManager.getInstance().addHidedApp(pkg);
+ if ("com.uiuios.sn".equals(pkg)) {
+ resolveInfos.add(resolveInfo);
+ } else {
+ Log.e(TAG, "queryFilterAppInfo: pkgSet ! contains " + pkg);
+ AppStatusManager.getInstance().addHidedApp(pkg);
+ }
}
} else {
if (allowPackages.contains(pkg) && !excludePackageName.contains(pkg)) {
@@ -286,17 +291,17 @@ public class ApkUtils {
List shortcutPkgInfos = ShortcutUtils.getInstance().getShortcutList();
desktopIcons.addAll(shortcutPkgInfos);
- DesktopIcon dailyIcon = new DesktopIcon();
-// dailyIcon.setIcon(context.getDrawable(R.drawable.icon_daily_app));
- dailyIcon.setTitle("日常应用");
- dailyIcon.setPackage("aios.daily.app");
- desktopIcons.add(0, dailyIcon);
+// DesktopIcon dailyIcon = new DesktopIcon();
+//// dailyIcon.setIcon(context.getDrawable(R.drawable.icon_daily_app));
+// dailyIcon.setTitle("日常应用");
+// dailyIcon.setPackage("aios.daily.app");
+// desktopIcons.add(0, dailyIcon);
- DesktopIcon familyIcon = new DesktopIcon();
-// familyIcon.setIcon(context.getDrawable(R.drawable.com_android_appstore));
- familyIcon.setTitle("应用市场");
- familyIcon.setPackage("aios.appstore");
- desktopIcons.add(1, familyIcon);
+// DesktopIcon familyIcon = new DesktopIcon();
+//// familyIcon.setIcon(context.getDrawable(R.drawable.com_android_appstore));
+// familyIcon.setTitle("应用市场");
+// familyIcon.setPackage("aios.appstore");
+// desktopIcons.add(0, familyIcon);
// DesktopIcon exitIcon = new DesktopIcon();
// exitIcon.setIcon(context.getDrawable(R.drawable.exit_icon));
@@ -308,6 +313,106 @@ public class ApkUtils {
return desktopIcons;
}
+ public static final HashSet phoneShowPackageName = new HashSet() {{
+ this.add("com.uiuios.sn");
+// this.add("com.uiuios.browser");
+// this.add("com.android.dialer");
+// this.add("com.android.gallery3d");
+// this.add("com.android.settings");
+// this.add("com.android.messaging");
+// this.add("com.android.camera2");
+// this.add("com.mediatek.camera");
+// this.add("com.android.mms");
+// this.add("com.uiui.city");
+// this.add("com.uiui.health");
+ }};
+
+ public static ArrayList getAppstoreAppInfo(Context context) {
+ MMKV mmkv = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+ PackageManager pm = context.getPackageManager();
+ // 查询所有已经安装的应用程序
+ List resolveInfos = new ArrayList<>();
+ // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
+ Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
+ resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
+ // 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName
+ List resolveinfoList = pm.queryIntentActivities(resolveIntent, 0);
+
+ Set allPackages = new HashSet();
+ for (ResolveInfo resolveInfo : resolveinfoList) {
+ Log.i(TAG, "getAppstoreAppInfo: " + resolveInfo.activityInfo.packageName);
+ Log.i(TAG, "getAppstoreAppInfo class: " + resolveInfo.activityInfo.name);
+ allPackages.add(resolveInfo.activityInfo.packageName);
+ }
+ String pkgString = Settings.Global.getString(context.getContentResolver(), CommonConfig.UIUI_APPSTORE_PACKAGE_LIST);
+ Set pkgSet;
+ if (TextUtils.isEmpty(pkgString)) {
+ pkgSet = new ArraySet<>();
+ } else {
+ pkgSet = new HashSet<>(new ArrayList<>(Arrays.asList(pkgString.split(","))));
+ }
+ Log.e(TAG, "getAppstoreAppInfo: pkgSet = " + pkgSet);
+ int frist = mmkv.decodeInt(CommonConfig.UIUI_FIRST_OPEN, 0);
+ for (ResolveInfo resolveInfo : resolveinfoList) {
+ String pkg = resolveInfo.activityInfo.packageName;
+ if (AppStatusManager.getInstance().getHidedAppSet().contains(pkg)) {
+ Log.e(TAG, "getAppstoreAppInfo: hided = " + pkg);
+ continue;
+ }
+ if (frist == 0) {
+ if (pkgSet.contains(pkg)) {
+ if (allPackages.contains(pkg) && !excludePackageName.contains(pkg)) {
+ 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);
+ }
+ }
+ } else {
+ if (allPackages.contains(pkg) && !excludePackageName.contains(pkg)) {
+ resolveInfos.add(resolveInfo);
+ }
+ }
+ }
+ List sort1 = resolveInfos.stream().sorted(new Comparator() {
+ @Override
+ public int compare(ResolveInfo o1, ResolveInfo o2) {
+ return Collator.getInstance(Locale.CHINESE).compare(o1.loadLabel(pm).toString(), o2.loadLabel(pm).toString());
+ }
+ }).collect(Collectors.toList());
+ List sort2 = sort1.stream().sorted(new Comparator() {
+ @Override
+ public int compare(ResolveInfo o1, ResolveInfo o2) {
+ try {
+ if ((pm.getApplicationInfo(o1.activityInfo.packageName, 0).flags & ApplicationInfo.FLAG_SYSTEM) < (pm.getApplicationInfo(o2.activityInfo.packageName, 0).flags & ApplicationInfo.FLAG_SYSTEM)) {
+ return 1;
+ } else {
+ return -1;
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ return 0;
+ }
+ }).collect(Collectors.toList());
+ ArrayList desktopIcons = new ArrayList<>();
+ for (ResolveInfo applicationInfo : sort2) {
+ if (!excludeClassName.contains(applicationInfo.activityInfo.name)) {
+ desktopIcons.add(DesktopIcon.creatDesktopIcon(context, applicationInfo));
+ }
+ }
+
+ List shortcutPkgInfos = ShortcutUtils.getInstance().getShortcutList();
+ desktopIcons.addAll(shortcutPkgInfos);
+
+ mmkv.encode(CommonConfig.UIUI_FIRST_OPEN, 1);
+ return desktopIcons;
+ }
+
public static boolean isSystemApp(Context context, String pkg) {
PackageManager pm = context.getPackageManager();
ApplicationInfo applicationInfo = null;
diff --git a/app/src/main/java/com/uiuios/aios/view/MyGridLayout.java b/app/src/main/java/com/uiuios/aios/view/MyGridLayout.java
index 7adeb0b..8e5dbde 100644
--- a/app/src/main/java/com/uiuios/aios/view/MyGridLayout.java
+++ b/app/src/main/java/com/uiuios/aios/view/MyGridLayout.java
@@ -22,13 +22,14 @@ import static android.view.View.MeasureSpec.makeMeasureSpec;
* @author zihao
*/
public class MyGridLayout extends ViewGroup {
+ private static final String TAG = MyGridLayout.class.getSimpleName();
+
int margin = 0;// 每个格子的水平和垂直间隔
- int colums = 4;//列数
+ int colums = 3;//列数
int rows = 3;//行数
int count = 0;
private GridAdatper adapter;
- private String TAG = MyGridLayout.class.getSimpleName();
@SuppressLint("Recycle")
public MyGridLayout(Context context, AttributeSet attrs, int defStyle) {
@@ -37,7 +38,7 @@ public class MyGridLayout extends ViewGroup {
TypedArray a = getContext().obtainStyledAttributes(attrs,
R.styleable.MyGridLayout);
// margin = a.getInteger(R.styleable.MyGridLayout_itemMargin, 2);
- colums = a.getInteger(R.styleable.MyGridLayout_numColumns, 4);
+ colums = a.getInteger(R.styleable.MyGridLayout_numColumns, 3);
rows = a.getInteger(R.styleable.MyGridLayout_numRows, 3);
}
}
diff --git a/app/src/main/java/com/uiuios/aios/view/RulerSeekBar.java b/app/src/main/java/com/uiuios/aios/view/RulerSeekBar.java
index 183707e..574af75 100644
--- a/app/src/main/java/com/uiuios/aios/view/RulerSeekBar.java
+++ b/app/src/main/java/com/uiuios/aios/view/RulerSeekBar.java
@@ -1,6 +1,5 @@
package com.uiuios.aios.view;
-
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -10,7 +9,10 @@ import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
-public class RulerSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
+import androidx.appcompat.widget.AppCompatSeekBar;
+
+public class RulerSeekBar extends AppCompatSeekBar {
+ private static final String TAG = RulerSeekBar.class.getSimpleName();
/**
* 刻度线画笔
@@ -89,26 +91,26 @@ public class RulerSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
Rect rect = getThumb().getBounds();
thumbRadius = (rect.right - rect.left) / 2;
}
- Log.e("RulerSeekBar", "onDraw: thumbRadius = " + thumbRadius);
+ Log.e(TAG, "onDraw: thumbRadius = " + thumbRadius);
//获取每一份的长度
int length = (getWidth() - getPaddingLeft() - getPaddingRight() - (mRulerCount + 1) * (radius) - thumbRadius * 2) / (mRulerCount + 1);
- Log.e("RulerSeekBar", "onDraw: mRulerCount = " + mRulerCount);
+ Log.e(TAG, "onDraw: mRulerCount = " + mRulerCount);
- Log.e("RulerSeekBar", "onDraw: getWidth = " + getWidth());
- Log.e("RulerSeekBar", "onDraw: getPaddingLeft = " + getPaddingLeft());
- Log.e("RulerSeekBar", "onDraw: getPaddingRight = " + getPaddingRight());
- Log.e("RulerSeekBar", "onDraw: length = " + length);
+ Log.e(TAG, "onDraw: getWidth = " + getWidth());
+ Log.e(TAG, "onDraw: getPaddingLeft = " + getPaddingLeft());
+ Log.e(TAG, "onDraw: getPaddingRight = " + getPaddingRight());
+ Log.e(TAG, "onDraw: length = " + length);
//计算刻度线的顶部坐标和底部坐标
- Log.e("RulerSeekBar", "onDraw: getHeight = " + getHeight());
- Log.e("RulerSeekBar", "onDraw: getMinimumHeight = " + getMinimumHeight());
+ Log.e(TAG, "onDraw: getHeight = " + getHeight());
+ Log.e(TAG, "onDraw: getMinimumHeight = " + getMinimumHeight());
int rulerTop = getHeight() / 2 - getMinimumHeight() / 2;
int rulerBottom = rulerTop + getMinimumHeight();
- Log.e("RulerSeekBar", "onDraw: rulerTop = " + rulerTop);
- Log.e("RulerSeekBar", "onDraw: rulerBottom = " + rulerBottom);
+ Log.e(TAG, "onDraw: rulerTop = " + rulerTop);
+ Log.e(TAG, "onDraw: rulerBottom = " + rulerBottom);
int center = getHeight() / 2;
//获取滑块的位置信息
@@ -116,13 +118,16 @@ public class RulerSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
if (getThumb() != null) {
thumbRect = getThumb().getBounds();
}
- Log.e("RulerSeekBar", "onDraw: thumbRect = " + thumbRect);
+ Log.e(TAG, "onDraw: thumbRect = " + thumbRect);
//绘制刻度线
for (int i = 0; i <= mRulerCount + 1; i++) {
+ if (getProgress() == i) {
+ continue;
+ }
//计算刻度线的左边坐标和右边坐标
int rulerLeft = i * length + getPaddingLeft();
- Log.e("RulerSeekBar", "onDraw: rulerLeft = " + rulerLeft);
+ Log.e(TAG, "onDraw: rulerLeft = " + rulerLeft);
int rulerRight = rulerLeft + mRulerWidth;
//判断是否需要绘制刻度线
diff --git a/app/src/main/res/drawable-hdpi/icon_add.png b/app/src/main/res/drawable-hdpi/icon_add.png
index f66956c..0ee1422 100644
Binary files a/app/src/main/res/drawable-hdpi/icon_add.png and b/app/src/main/res/drawable-hdpi/icon_add.png differ
diff --git a/app/src/main/res/drawable/home_alarm_bg.xml b/app/src/main/res/drawable/home_alarm_bg.xml
new file mode 100644
index 0000000..97b942a
--- /dev/null
+++ b/app/src/main/res/drawable/home_alarm_bg.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/home_card_bg.xml b/app/src/main/res/drawable/home_card_bg.xml
new file mode 100644
index 0000000..0c6896f
--- /dev/null
+++ b/app/src/main/res/drawable/home_card_bg.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/seekbar_progress_default.xml b/app/src/main/res/drawable/seekbar_progress_default.xml
index 47fed2c..30e5bfb 100644
--- a/app/src/main/res/drawable/seekbar_progress_default.xml
+++ b/app/src/main/res/drawable/seekbar_progress_default.xml
@@ -36,7 +36,7 @@
-
+
diff --git a/app/src/main/res/drawable/shape_progress_drawable.xml b/app/src/main/res/drawable/shape_progress_drawable.xml
index fae0676..fe8aa21 100644
--- a/app/src/main/res/drawable/shape_progress_drawable.xml
+++ b/app/src/main/res/drawable/shape_progress_drawable.xml
@@ -2,7 +2,7 @@
-
-
+
diff --git a/app/src/main/res/layout-land/fragment_home.xml b/app/src/main/res/layout-land/fragment_home.xml
index c2d9740..7d73b79 100644
--- a/app/src/main/res/layout-land/fragment_home.xml
+++ b/app/src/main/res/layout-land/fragment_home.xml
@@ -31,8 +31,8 @@
android:id="@+id/cl_weather"
android:layout_width="@dimen/dp_157"
android:layout_height="@dimen/dp_96"
- android:onClick="@{click::toWeather}"
android:background="@drawable/custom_bg_weather"
+ android:onClick="@{click::toWeather}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -170,8 +170,8 @@
android:layout_width="@dimen/dp_115"
android:layout_height="@dimen/dp_142"
android:layout_marginStart="@dimen/dp_13"
- android:onClick="@{click::toVideoplayer}"
android:background="@drawable/bg_black_transparent"
+ android:onClick="@{click::toVideoplayer}"
app:layout_constraintStart_toEndOf="@+id/cl_weather"
app:layout_constraintTop_toTopOf="parent">
@@ -288,6 +288,20 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+
@@ -367,8 +381,8 @@
android:layout_width="@dimen/dp_109"
android:layout_height="@dimen/dp_71"
android:layout_marginStart="@dimen/dp_13"
- android:onClick="@{click::toSos}"
android:background="@drawable/bg_black_transparent"
+ android:onClick="@{click::toSos}"
app:layout_constraintStart_toEndOf="@+id/cl_clear"
app:layout_constraintTop_toTopOf="parent">
@@ -434,9 +448,9 @@
@@ -257,6 +255,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -274,12 +327,25 @@
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/dp_12"
- android:layout_marginTop="@dimen/dp_6"
- android:text="爱心闹钟"
+ android:layout_marginBottom="@dimen/dp_8"
+ android:text="我的闹钟"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
+
+
@@ -292,77 +358,24 @@
android:layout_marginEnd="@dimen/dp_16"
android:onClick="@{click::getAlarmClock}"
android:overScrollMode="never"
- app:layout_constraintBottom_toBottomOf="parent"
+ android:visibility="gone"
+ app:layout_constraintBottom_toTopOf="@+id/textView3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/textView3" />
+ app:layout_constraintTop_toTopOf="parent" />
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@+id/textView3" />
@@ -376,6 +389,7 @@
android:layout_weight="1"
android:background="@drawable/bg_black_transparent"
android:onClick="@{click::toSos}"
+ android:visibility="gone"
app:layout_constraintStart_toEndOf="@+id/cl_clear"
app:layout_constraintTop_toTopOf="parent">
@@ -387,7 +401,7 @@
android:layout_marginTop="@dimen/dp_6"
android:text="紧急呼叫"
android:textColor="@color/white"
- android:textSize="@dimen/sp_9"
+ android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -408,37 +422,122 @@
-
+ android:layout_weight="2"
+ android:orientation="horizontal">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
@@ -470,102 +569,50 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_6"
+ android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_app" />
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_alarm.xml b/app/src/main/res/layout/activity_add_alarm.xml
index dfa9d34..e4783b1 100644
--- a/app/src/main/res/layout/activity_add_alarm.xml
+++ b/app/src/main/res/layout/activity_add_alarm.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray"
- tools:context=".activity.alarmclock.AlarmClockAddActivity">
+ tools:context=".activity.alarmclock.add.AlarmClockAddActivity">
+ android:background="@color/gray">
+ tools:context=".activity.alarmclock.add.port.PortAlarmClockAddActivity">
+ type="com.uiuios.aios.activity.alarmclock.add.port.PortAlarmClockAddActivity.Click" />
@@ -20,7 +20,7 @@
@@ -36,8 +36,8 @@
-
-
-
-
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toTopOf="@+id/tv_add"
+ app:layout_constraintTop_toBottomOf="@+id/cl_exit">
+ android:layout_height="@dimen/dp_200"
+ android:layout_marginStart="@dimen/dp_8"
+ android:layout_marginEnd="@dimen/dp_8"
+ android:layout_marginBottom="@dimen/dp_8"
+ android:background="@drawable/add_alarm_background">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_marginStart="@dimen/dp_8"
+ android:layout_marginEnd="@dimen/dp_8"
+ android:layout_marginBottom="@dimen/dp_8"
+ android:background="@drawable/add_alarm_background"
+ android:visibility="gone">
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_add_contact.xml b/app/src/main/res/layout/activity_add_contact.xml
index cb5b161..164a250 100644
--- a/app/src/main/res/layout/activity_add_contact.xml
+++ b/app/src/main/res/layout/activity_add_contact.xml
@@ -1,284 +1,297 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent">
+ android:layout_height="@dimen/dp_48"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ 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_add_wechat_contact.xml b/app/src/main/res/layout/activity_add_wechat_contact.xml
index d730cbe..951e6bd 100644
--- a/app/src/main/res/layout/activity_add_wechat_contact.xml
+++ b/app/src/main/res/layout/activity_add_wechat_contact.xml
@@ -2,13 +2,13 @@
+ tools:context=".activity.contact.AddWechatContactActivity">
+ type="com.uiuios.aios.activity.contact.AddWechatContactActivity.BtnClick" />
+
+
+
+
+
+
+
+
-
+ tools:context=".activity.alarm.main.AlarmActivity">
+
+
+
+ android:background="@color/alarm_background_color">
+
-
-
-
+
+
+
+
+
+
+
+
+ android:orientation="vertical"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/cl_exit">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ 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_alarm_clock.xml b/app/src/main/res/layout/activity_alarm_clock.xml
index d7c1179..93cbf5d 100644
--- a/app/src/main/res/layout/activity_alarm_clock.xml
+++ b/app/src/main/res/layout/activity_alarm_clock.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.alarmclock.AlarmClockActivity">
+ tools:context=".activity.alarmclock.main.AlarmClockActivity">
-
+ tools:context=".activity.noti.NoticeActivity">
+
+
+
+
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
+ 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_notice_info.xml b/app/src/main/res/layout/activity_notice_info.xml
index 8aaafad..25dfb1f 100644
--- a/app/src/main/res/layout/activity_notice_info.xml
+++ b/app/src/main/res/layout/activity_notice_info.xml
@@ -1,89 +1,99 @@
-
+ tools:context=".activity.noti.NoticeInfoActivity"
+ xmlns:tools="http://schemas.android.com/tools">
-
+
+
+
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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_wechat_call.xml b/app/src/main/res/layout/activity_wechat_call.xml
index b6fe843..575b124 100644
--- a/app/src/main/res/layout/activity_wechat_call.xml
+++ b/app/src/main/res/layout/activity_wechat_call.xml
@@ -11,8 +11,8 @@
type="com.uiuios.aios.activity.callwechat.CallWechatActivity.BtnClick" />
+ name="Contact"
+ type="com.uiuios.aios.bean.Contact" />
diff --git a/app/src/main/res/layout/fragment_contact_home.xml b/app/src/main/res/layout/fragment_contact_home.xml
index 7274186..695eec8 100644
--- a/app/src/main/res/layout/fragment_contact_home.xml
+++ b/app/src/main/res/layout/fragment_contact_home.xml
@@ -15,18 +15,28 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
diff --git a/app/src/main/res/layout/phone_fragment_control.xml b/app/src/main/res/layout/phone_fragment_control.xml
index ca687fc..da9c0b9 100644
--- a/app/src/main/res/layout/phone_fragment_control.xml
+++ b/app/src/main/res/layout/phone_fragment_control.xml
@@ -210,7 +210,7 @@
android:layout_marginStart="@dimen/dp_8"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
- android:src="@drawable/sound2"
+ android:src="@drawable/sound1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -259,7 +259,7 @@
android:layout_marginStart="@dimen/dp_8"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
- android:src="@drawable/brightness2"
+ android:src="@drawable/brightness1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
diff --git a/build.gradle b/build.gradle
index 51a8371..196db1c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,9 +6,9 @@ buildscript {
google()
mavenCentral()
maven { url "https://jitpack.io" }
- maven { url 'http://developer.huawei.com/repo/' }
- maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
- maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }
+ maven { url 'https://developer.huawei.com/repo/' }
+ maven { url 'https://maven.aliyun.com/repository/central/' }
+ maven { url 'https://maven.aliyun.com/repository/public/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.4'
@@ -28,9 +28,9 @@ allprojects {
google()
mavenCentral()
maven { url "https://jitpack.io" }
- maven { url 'http://developer.huawei.com/repo/' }
- maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
- maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }
+ maven { url 'https://developer.huawei.com/repo/' }
+ maven { url 'https://maven.aliyun.com/repository/central/' }
+ maven { url 'https://maven.aliyun.com/repository/public/' }
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {