diff --git a/app/build.gradle b/app/build.gradle
index c1d2e19..08234f0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,8 +15,8 @@ android {
applicationId "com.xxpatx.os"
minSdkVersion 24
targetSdkVersion 29
- versionCode 1017
- versionName "1.1.6"
+ versionCode 1019
+ versionName "1.1.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b9e79cb..9ab7812 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -154,6 +154,10 @@
android:name=".activity.setting.SettingActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
+
{
private static final String TAG = "AlarmEditActivity";
- private LoadingDialog mLoadingDialog;
- private PopupWindow mMenuPopupWindow;
-
private TimePickerView pvTime;
- private String mPictrueFilePath;
+
+ private String mPictrueFilePath = "";
private Date mDate;
/*类型 1一次性 2每天 3周一到周五 4周六周日*/
private int mDayType = 1;
- private int mClockType = 1;
- private int mId;
+
private AlarmClockData mAlarmClockData;
@@ -137,60 +134,19 @@ public class AlarmEditActivity extends BaseMvvmActivity clockDataHashMap = AlarmUtils.getInstance().getOldDataMap();
- AlarmClockData alarmClockData = clockDataHashMap.get(mId);
- if (alarmClockData == null || !alarmClockData.isIs_local()) {
- NetInterfaceManager.getInstance().getAlarmClockByIdObservable(mId)
- .compose(RxLifecycle.bindUntilEvent(getLifecycleSubject(), ActivityEvent.DESTROY))
- .subscribe(new Observer>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("getAlarmClockById", "onSubscribe: ");
- }
-
- @Override
- public void onNext(@NonNull BaseResponse alarmClockDatabaseResponse) {
- Log.e("getAlarmClockById", "onNext: " + alarmClockDatabaseResponse);
- if (alarmClockDatabaseResponse.code == 200) {
- AlarmClockData alarmClockData = alarmClockDatabaseResponse.data;
- mAlarmClockData = alarmClockData;
- setAlarmClockInfo(alarmClockData);
- }
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("getAlarmClockById", "onError: " + e.getMessage());
- HashMap oldData = AlarmUtils.getInstance().getOldDataMap();
- mAlarmClockData = oldData.get(mId);
- setAlarmClockInfo(mAlarmClockData);
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getAlarmClockById", "onComplete: ");
- }
- });
- } else {
- mAlarmClockData = alarmClockData;
- setAlarmClockInfo(mAlarmClockData);
- }
+ mViewDataBinding.setAlarmClockData(mAlarmClockData);
+ setAlarmClockInfo();
}
- private void setAlarmClockInfo(AlarmClockData alarmClockData) {
- if (alarmClockData == null) {
- Toaster.show("闹钟信息为空");
- return;
- }
- Log.e(TAG, "setAlarmClockInfo: " + alarmClockData);
- mDayType = alarmClockData.getType();
+ private void setAlarmClockInfo() {
+ Log.e(TAG, "setAlarmClockInfo: " + mAlarmClockData);
+ mDayType = mAlarmClockData.getType();
switch (mDayType) {
default:
case AlarmUtils.ONCE:
@@ -210,35 +166,22 @@ public class AlarmEditActivity extends BaseMvvmActivity params = new HashMap<>();
params.put("sn", Utils.getSerial());
- params.put("id", String.valueOf(mId));
+ params.put("id", String.valueOf(mAlarmClockData.getId()));
params.put("type", String.valueOf(mDayType));
params.put("time", timeStamp);
params.put("title", mViewDataBinding.etActivation.getText().toString());
- params.put("remind_type", "0");
- params.put("is_onoff", "1");
- params.put("class", String.valueOf(mClockType));
-
-
- mLoadingDialog = new LoadingDialog(this);
- mLoadingDialog.setLoadingText("正在上传")
- .setSuccessText("编辑成功")
- .setFailedText("编辑失败")
- .setInterceptBack(true)
- .setLoadSpeed(LoadingDialog.Speed.SPEED_ONE)
- .closeSuccessAnim()
- .show();
+ params.put("remind_type", String.valueOf(mAlarmClockData.getRemind_type()));
+ params.put("is_onoff", String.valueOf(mAlarmClockData.getIs_onoff()));
+ params.put("class", String.valueOf(mAlarmClockData.getClazz()));
if (mAlarmClockData.isIs_local()) {
Toaster.show("编辑成功");
- mLoadingDialog.loadSuccess();
- mLoadingDialog.close();
mAlarmClockData.setEdited(false);
AlarmUtils.getInstance().updateAlarmClock(mAlarmClockData);
finish();
@@ -332,14 +263,11 @@ public class AlarmEditActivity extends BaseMvvmActivity>() {
@Override
public void onChanged(List alarmClockData) {
setAlarmClock(alarmClockData);
}
});
-
- mViewModel.getAlarmClock(mType);
+ mViewModel.getAlarmClock();
}
@Override
protected void onResume() {
+ Log.e(TAG, "onResume: ");
super.onResume();
+ mViewModel.getAlarmClock();
}
+ @Override
+ protected void onPause() {
+ super.onPause();
+ Jzvd.releaseAllVideos();
+ }
+
+ @Override
+ protected void onDestroy() {
+ Log.e(TAG, "onDestroy: ");
+ super.onDestroy();
+ unregisterReceivers();
+ }
private void showDialog(AlarmClockData alarmClockData) {
DeleteDialog dialog = new DeleteDialog(this);
@@ -154,7 +175,7 @@ public class AlarmListActivity extends BaseMvvmActivity alarmClockData) {
- List localAddAlarm = AlarmUtils.getInstance().getLocalAddAlarm();
- Log.e(TAG, "setAlarmClock: localAddAlarm size = " + localAddAlarm);
- if (alarmClockData != null) {
- localAddAlarm.addAll(alarmClockData);
- }
- if (localAddAlarm.size() == 0) {
+ if (alarmClockData == null || alarmClockData.size() == 0) {
mAlarmAdapter.setAlarmClockData(null);
// swipeRefreshLayout.setRefreshing(false);
mViewDataBinding.clNodata.setVisibility(View.VISIBLE);
mViewDataBinding.rvData.setVisibility(View.GONE);
// Toaster.show("没有数据");
} else {
- mAlarmAdapter.setAlarmClockData(localAddAlarm);
+ mAlarmAdapter.setAlarmClockData(alarmClockData);
// swipeRefreshLayout.setRefreshing(false);
mViewDataBinding.clNodata.setVisibility(View.GONE);
mViewDataBinding.rvData.setVisibility(View.VISIBLE);
@@ -228,4 +244,33 @@ public class AlarmListActivity extends BaseMvvmActivity alarmClockList) {
- if (alarmClockList.size() == 0) {
- setAlarmClockEmpty();
- } else {
-
- }
+ mAlarmClockData.setValue(alarmClockList);
}
@Override
- public void setAlarmClockEmpty() {
-
- }
-
- @Override
- public void onError() {
-
+ public void onError(String msg) {
+ Toaster.show(msg);
}
});
}
diff --git a/app/src/main/java/com/xxpatx/os/activity/dock/DockActivity.java b/app/src/main/java/com/xxpatx/os/activity/dock/DockActivity.java
new file mode 100644
index 0000000..e61c205
--- /dev/null
+++ b/app/src/main/java/com/xxpatx/os/activity/dock/DockActivity.java
@@ -0,0 +1,111 @@
+package com.xxpatx.os.activity.dock;
+
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+
+import androidx.lifecycle.Observer;
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.tencent.mmkv.MMKV;
+import com.xxpatx.os.R;
+import com.xxpatx.os.adapter.DockAppSelectedAdapter;
+import com.xxpatx.os.base.mvvm.BaseMvvmActivity;
+import com.xxpatx.os.bean.DockApp;
+import com.xxpatx.os.config.CommonConfig;
+import com.xxpatx.os.databinding.ActivityDockBinding;
+import com.xxpatx.os.view.GridSpaceItemDecoration;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+public class DockActivity extends BaseMvvmActivity {
+ private static final String TAG = "DockActivity";
+
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
+ public static final String DOCK_APP_KEY = "DockAppPackageKey";
+
+
+ private DockAppSelectedAdapter mDockAppSelectedAdapter;
+
+ public static final List DEFAULT_DOCK_APP = new ArrayList() {
+ private static final long serialVersionUID = -7406071324804131303L;
+
+ {
+ this.add(new DockApp("xxpatx.os.dialer"));
+ this.add(new DockApp("com.tencent.mm"));
+ this.add(new DockApp("com.ss.android.ugc.aweme"));
+ this.add(new DockApp("com.mediatek.camera"));
+ }
+ };
+
+ public static final List INCLUDE_SYSTEM_APP =new ArrayList(){{
+ this.add("com.mediatek.camera");
+ }};
+
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewDataBinding.setClick(new BtnClick());
+ }
+
+ @Override
+ protected void initView() {
+ mDockAppSelectedAdapter = new DockAppSelectedAdapter();
+// if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
+// mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
+// mViewDataBinding.recyclerView.addItemDecoration(new GridSpaceItemDecoration(3, 20, 20));
+// } else {
+ mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
+ mViewDataBinding.recyclerView.addItemDecoration(new GridSpaceItemDecoration(2, 10, 10));
+// }
+ mViewDataBinding.recyclerView.setAdapter(mDockAppSelectedAdapter);
+ mViewDataBinding.ivBack.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ protected void initData() {
+ mViewModel.getAppSelectBeanListData().observe(this, new Observer>() {
+ @Override
+ public void onChanged(List dockApps) {
+ mDockAppSelectedAdapter.setDockAppList(dockApps);
+ }
+ });
+// mDockAppSelectedAdapter.setSelectedPkgList(DEFAULT_DOCK_APP);
+ String jsonString = mMMKV.decodeString(DockActivity.DOCK_APP_KEY);
+ Log.e(TAG, "setDockApp: " + jsonString);
+ if (!TextUtils.isEmpty(jsonString)) {
+ Gson gson = new Gson();
+ Type type = new TypeToken>() {
+ }.getType();
+ try {
+ List dockApps = gson.fromJson(jsonString, type);
+ mDockAppSelectedAdapter.setSelectedPkgList(dockApps);
+ } catch (Exception e) {
+ Log.e(TAG, "setDockApp: " + e.getMessage());
+ mMMKV.encode(DockActivity.DOCK_APP_KEY, "");
+ }
+ }
+ mViewModel.getPackageList();
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_dock;
+ }
+
+ public class BtnClick {
+
+ }
+}
diff --git a/app/src/main/java/com/xxpatx/os/activity/dock/DockViewModel.java b/app/src/main/java/com/xxpatx/os/activity/dock/DockViewModel.java
new file mode 100644
index 0000000..462b19f
--- /dev/null
+++ b/app/src/main/java/com/xxpatx/os/activity/dock/DockViewModel.java
@@ -0,0 +1,69 @@
+package com.xxpatx.os.activity.dock;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.util.Log;
+
+import androidx.lifecycle.MutableLiveData;
+
+import com.xxpatx.os.base.mvvm.BaseViewModel;
+import com.xxpatx.os.bean.DockApp;
+import com.xxpatx.os.databinding.ActivityDockBinding;
+import com.xxpatx.os.utils.ApkUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DockViewModel extends BaseViewModel {
+ private static final String TAG = "DockViewModel";
+
+ @Override
+ public ActivityDockBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+
+ private MutableLiveData> mAppSelectBeanListData = new MutableLiveData<>();
+
+ public MutableLiveData> getAppSelectBeanListData() {
+ return mAppSelectBeanListData;
+ }
+
+ public void getPackageList() {
+ PackageManager pm = getCtx().getPackageManager();
+ List dockAppList = new ArrayList<>();
+ dockAppList.add(new DockApp("电话", "xxpatx.os.dialer", ""));
+ // 创建一个类别为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);
+
+ for (ResolveInfo resolveInfo : resolveinfoList) {
+ String pkgName = resolveInfo.activityInfo.packageName;
+ if (ApkUtils.excludePackageName.contains(pkgName)) {
+ continue;
+ }
+ if (ApkUtils.isSystemApp(getCtx(), pkgName)) {
+ if (DockActivity.INCLUDE_SYSTEM_APP.contains(pkgName)) {
+
+ } else {
+ continue;
+ }
+ }
+
+ Log.e(TAG, "getPackageList: " + pkgName);
+ DockApp dockApp = new DockApp(resolveInfo.activityInfo.loadLabel(pm).toString(),
+ pkgName, resolveInfo.activityInfo.name);
+ dockAppList.add(dockApp);
+ }
+ mAppSelectBeanListData.setValue(dockAppList);
+ }
+
+}
diff --git a/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java b/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java
index 3112142..ebce9e9 100644
--- a/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java
+++ b/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java
@@ -27,8 +27,12 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.Observer;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.NetworkUtils;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
@@ -38,12 +42,16 @@ import com.tencent.mmkv.MMKV;
import com.xxpatx.os.BuildConfig;
import com.xxpatx.os.R;
import com.xxpatx.os.activity.activation.ActivationActivity;
+import com.xxpatx.os.activity.dock.DockActivity;
import com.xxpatx.os.activity.phone.PhoneActivity;
import com.xxpatx.os.activity.update.UpdateActivity;
+import com.xxpatx.os.adapter.DockAppAdapter;
+import com.xxpatx.os.adapter.DockAppGridAdapter;
import com.xxpatx.os.base.BaseFragmentPagerAdapter;
import com.xxpatx.os.base.mvvm.BaseMvvmActivity;
import com.xxpatx.os.bean.AppInfo;
import com.xxpatx.os.bean.DesktopIcon;
+import com.xxpatx.os.bean.DockApp;
import com.xxpatx.os.bean.MapBean;
import com.xxpatx.os.config.CommonConfig;
import com.xxpatx.os.databinding.ActivityMainBinding;
@@ -63,6 +71,7 @@ import com.xxpatx.os.view.ScaleCircleNavigator;
import net.lucode.hackware.magicindicator.ViewPagerHelper;
+import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
@@ -92,6 +101,9 @@ public class MainActivity extends BaseMvvmActivity 1) {
mViewDataBinding.viewPager.setCurrentItem(defaultCurrent);
}
+
NotificationService.setListener(this);
updateIconBg();
@@ -462,7 +475,48 @@ public class MainActivity extends BaseMvvmActivity mAppSelectBeans;
- private int unselectedStatus = -1;
- private int selecedPosition = unselectedStatus;
- private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+ // private int unselectedStatus = -1;
+// private int selecedPosition = unselectedStatus;
+ private List mPkgList = new ArrayList<>();
+
+ public void setPkgList(List pkgList) {
+ this.mPkgList = pkgList;
+ Log.e(TAG, "setPkgList: " + mPkgList);
+ }
public void setAppSelectBeans(List appSelectBeanList) {
this.mAppSelectBeans = appSelectBeanList;
@@ -46,23 +55,59 @@ public class AppSelectedAdapter extends RecyclerView.Adapter= 4) {
+ Toaster.show("最多选择4个");
+ } else {
+ mPkgList.add(appSelectBean.getPackageName());
+ holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected));
+ holder.root.setBackground(mContext.getDrawable(R.drawable.app_select_background));
+ }
} else {
+ mPkgList.remove(appSelectBean.getPackageName());
holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected));
- selecedPosition = -1;
- Settings.Global.putString(mContext.getContentResolver(),QuickAppActivity.QUICK_APP_KEY, "");
- Log.e(TAG, "setQuickApp: empty");
+ holder.root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background));
+ }
+ if (mPkgList.size() == 0) {
+ mMMKV.encode(QuickAppActivity.QUICK_APP_KEY, "");
+ } else {
+ mMMKV.encode(QuickAppActivity.QUICK_APP_KEY, String.join(",", mPkgList));
+ }
+ notifyDataSetChanged();
+ }
+ });
+
+
+ holder.root.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Log.e(TAG, "setQuickApp: " + appSelectBean.getPackageName());
+ if (!mPkgList.contains(appSelectBean.getPackageName())) {
+ if (mPkgList.size() >= 4) {
+ Toaster.show("最多选择4个");
+ } else {
+ mPkgList.add(appSelectBean.getPackageName());
+ holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected));
+ }
+ } else {
+ mPkgList.remove(appSelectBean.getPackageName());
+ holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected));
+ }
+ if (mPkgList.size() == 0) {
+ mMMKV.encode(QuickAppActivity.QUICK_APP_KEY, "");
+ } else {
+ mMMKV.encode(QuickAppActivity.QUICK_APP_KEY, String.join(",", mPkgList));
}
notifyDataSetChanged();
}
@@ -77,9 +122,11 @@ public class AppSelectedAdapter extends RecyclerView.Adapter {
+ private static final String TAG = "DockAppAdapter";
+
+ private Context mContext;
+ private List mDockApps;
+
+ public void setDockApps(List dockAppList) {
+ this.mDockApps = dockAppList;
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ mContext = parent.getContext();
+ return new Holder(LayoutInflater.from(mContext).inflate(R.layout.item_dock_app, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull Holder holder, int position) {
+ DockApp dockApp = mDockApps.get(position);
+ holder.iv_icon.setImageDrawable(ApkUtils.getAppDrawable(mContext, dockApp.getPackageName()));
+ holder.tv_name.setText(dockApp.getAppName());
+ holder.root.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ ApkUtils.openPackage(mContext, dockApp.getPackageName(), dockApp.getClassName());
+ }
+ });
+ int size = NotificationService.getNotificationLength(dockApp.getPackageName());
+ if (size == 0) {
+ holder.bg.setVisibility(View.GONE);
+ } else if (size < 99) {
+ holder.bg.setVisibility(View.VISIBLE);
+ holder.bg.setText(String.valueOf(size));
+ } else {
+ holder.bg.setVisibility(View.VISIBLE);
+ holder.bg.setText("99+");
+ }
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return mDockApps == null ? 0 : mDockApps.size();
+ }
+
+ static class Holder extends RecyclerView.ViewHolder {
+ ConstraintLayout root;
+ ImageView iv_icon;
+ TextView tv_name;
+ TextView bg;
+
+ Holder(@NonNull View itemView) {
+ super(itemView);
+ root = itemView.findViewById(R.id.root);
+ iv_icon = itemView.findViewById(R.id.iv_icon);
+ tv_name = itemView.findViewById(R.id.tv_name);
+ bg = itemView.findViewById(R.id.bg);
+ }
+ }
+}
diff --git a/app/src/main/java/com/xxpatx/os/adapter/DockAppGridAdapter.java b/app/src/main/java/com/xxpatx/os/adapter/DockAppGridAdapter.java
new file mode 100644
index 0000000..9779d05
--- /dev/null
+++ b/app/src/main/java/com/xxpatx/os/adapter/DockAppGridAdapter.java
@@ -0,0 +1,114 @@
+package com.xxpatx.os.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.constraintlayout.widget.ConstraintLayout;
+
+import com.xxpatx.os.R;
+import com.xxpatx.os.activity.phone.PhoneActivity;
+import com.xxpatx.os.bean.DockApp;
+import com.xxpatx.os.service.NotificationService;
+import com.xxpatx.os.utils.ApkUtils;
+
+import java.util.List;
+
+public class DockAppGridAdapter extends BaseAdapter {
+
+ private Context mContext;
+ private List mDockApps;
+
+ public DockAppGridAdapter(Context context) {
+ mContext = context;
+ }
+
+ public void setDockApps(List dockAppList) {
+ this.mDockApps = dockAppList;
+ notifyDataSetChanged();
+ }
+
+ @Override
+ public int getCount() {
+ return mDockApps == null ? 0 : mDockApps.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mDockApps.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder holder;
+
+ if (convertView == null) {
+ LayoutInflater inflater = LayoutInflater.from(mContext);
+ convertView = inflater.inflate(R.layout.item_dock_app, parent, false);
+ holder = new ViewHolder();
+ holder.root = convertView.findViewById(R.id.root);
+ holder.iv_icon = convertView.findViewById(R.id.iv_icon);
+ holder.tv_name = convertView.findViewById(R.id.tv_name);
+ holder.bg = convertView.findViewById(R.id.bg);
+
+ convertView.setTag(holder);
+ } else {
+ holder = (ViewHolder) convertView.getTag();
+ }
+
+ DockApp dockApp = mDockApps.get(position);
+ String pkg = dockApp.getPackageName();
+ switch (pkg) {
+ case "xxpatx.os.dialer":
+ holder.iv_icon.setImageDrawable(mContext.getDrawable(R.drawable.home_icon_dialer));
+ break;
+ case "com.mediatek.camera":
+ holder.iv_icon.setImageDrawable(mContext.getDrawable(R.drawable.com_android_camera));
+ break;
+ default:
+ holder.iv_icon.setImageDrawable(ApkUtils.getAppDrawable(mContext, pkg));
+ }
+ holder.tv_name.setText(dockApp.getAppName());
+ holder.root.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ switch (pkg) {
+ case "xxpatx.os.dialer":
+ mContext.startActivity(new Intent(mContext, PhoneActivity.class));
+ break;
+ default:
+ ApkUtils.openPackage(mContext, pkg, dockApp.getClassName());
+ }
+ }
+ });
+ int size = NotificationService.getNotificationLength(pkg);
+ if (size == 0) {
+ holder.bg.setVisibility(View.GONE);
+ } else if (size < 99) {
+ holder.bg.setVisibility(View.VISIBLE);
+ holder.bg.setText(String.valueOf(size));
+ } else {
+ holder.bg.setVisibility(View.VISIBLE);
+ holder.bg.setText("99+");
+ }
+
+ return convertView;
+ }
+
+ static class ViewHolder {
+ ConstraintLayout root;
+ ImageView iv_icon;
+ TextView tv_name;
+ TextView bg;
+ }
+}
diff --git a/app/src/main/java/com/xxpatx/os/adapter/DockAppSelectedAdapter.java b/app/src/main/java/com/xxpatx/os/adapter/DockAppSelectedAdapter.java
new file mode 100644
index 0000000..c2b0845
--- /dev/null
+++ b/app/src/main/java/com/xxpatx/os/adapter/DockAppSelectedAdapter.java
@@ -0,0 +1,134 @@
+package com.xxpatx.os.adapter;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.hjq.toast.Toaster;
+import com.tencent.mmkv.MMKV;
+import com.xxpatx.os.R;
+import com.xxpatx.os.activity.dock.DockActivity;
+import com.xxpatx.os.bean.DockApp;
+import com.xxpatx.os.config.CommonConfig;
+import com.xxpatx.os.gson.GsonUtils;
+import com.xxpatx.os.utils.ApkUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DockAppSelectedAdapter extends RecyclerView.Adapter {
+ private static final String TAG = "AppSelectedAdapter";
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
+
+ private Context mContext;
+ private List mDockAppList;
+ private List mSelectedPkgList = new ArrayList<>();
+
+ public void setSelectedPkgList(List selectedPkgList) {
+ this.mSelectedPkgList = selectedPkgList;
+ Log.e(TAG, "setPkgList: " + mSelectedPkgList);
+ notifyDataSetChanged();
+ }
+
+ public void setDockAppList(List dockAppList) {
+ this.mDockAppList = dockAppList;
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ mContext = parent.getContext();
+ return new Holder(LayoutInflater.from(mContext).inflate(R.layout.item_dock_app_select, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull Holder holder, int position) {
+ DockApp dockApp = mDockAppList.get(position);
+ String pkg = dockApp.getPackageName();
+ switch (pkg) {
+ case "xxpatx.os.dialer":
+ holder.iv_icon.setImageDrawable(mContext.getDrawable(R.drawable.home_icon_dialer));
+ break;
+ case "com.mediatek.camera":
+ holder.iv_icon.setImageDrawable(mContext.getDrawable(R.drawable.com_android_camera));
+ break;
+ default:
+ holder.iv_icon.setImageDrawable(ApkUtils.getAppDrawable(mContext, dockApp.getPackageName()));
+ }
+ holder.tv_name.setText(dockApp.getAppName());
+ if (mSelectedPkgList.contains(dockApp)) {
+ holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected));
+ holder.root.setBackground(mContext.getDrawable(R.drawable.app_select_background));
+ } else {
+ holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected));
+ holder.root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background));
+ }
+
+ holder.iv_select.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ holder.selectApp(dockApp);
+ }
+ });
+ holder.root.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ holder.selectApp(dockApp);
+ }
+ });
+ }
+
+
+ @Override
+ public int getItemCount() {
+ return mDockAppList == null ? 0 : mDockAppList.size();
+ }
+
+ class Holder extends RecyclerView.ViewHolder {
+ ImageView iv_select, iv_icon;
+ TextView tv_name;
+ ConstraintLayout root;
+
+ Holder(@NonNull View itemView) {
+ super(itemView);
+ root = itemView.findViewById(R.id.root);
+ iv_select = itemView.findViewById(R.id.iv_select);
+ iv_icon = itemView.findViewById(R.id.iv_icon);
+ tv_name = itemView.findViewById(R.id.tv_name);
+ }
+
+
+ public void selectApp(DockApp dockApp) {
+ Log.e(TAG, "selectApp: " + dockApp.getPackageName());
+ if (!mSelectedPkgList.contains(dockApp)) {
+ if (mSelectedPkgList.size() >= 5) {
+ Toaster.show("最多选择5个");
+ } else {
+ mSelectedPkgList.add(dockApp);
+ iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected));
+ root.setBackground(mContext.getDrawable(R.drawable.app_select_background));
+ }
+ } else {
+ mSelectedPkgList.remove(dockApp);
+ iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected));
+ root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background));
+ }
+ if (mSelectedPkgList.size() == 0) {
+ mMMKV.encode(DockActivity.DOCK_APP_KEY, "");
+ } else {
+ mMMKV.encode(DockActivity.DOCK_APP_KEY, GsonUtils.toJSONString(mSelectedPkgList));
+ }
+ notifyDataSetChanged();
+ }
+ }
+}
diff --git a/app/src/main/java/com/xxpatx/os/alarm/AlarmAdapter.java b/app/src/main/java/com/xxpatx/os/alarm/AlarmAdapter.java
index 67cd77d..9db5922 100644
--- a/app/src/main/java/com/xxpatx/os/alarm/AlarmAdapter.java
+++ b/app/src/main/java/com/xxpatx/os/alarm/AlarmAdapter.java
@@ -242,7 +242,7 @@ public class AlarmAdapter extends RecyclerView.Adapter {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, AlarmEditActivity.class);
- intent.putExtra("id", alarmClockData.getId());
+ intent.putExtra("AlarmClockData", alarmClockData);
mContext.startActivity(intent);
}
});
diff --git a/app/src/main/java/com/xxpatx/os/alarm/AlarmClockData.java b/app/src/main/java/com/xxpatx/os/alarm/AlarmClockData.java
index c0c795c..25be17a 100644
--- a/app/src/main/java/com/xxpatx/os/alarm/AlarmClockData.java
+++ b/app/src/main/java/com/xxpatx/os/alarm/AlarmClockData.java
@@ -28,10 +28,10 @@ public class AlarmClockData implements Serializable {
String voice_md5;
String file;//图片或视频文件地址
String file_md5;
- int remind_type;
+ int remind_type; //提醒方式 1仅震动
int is_onoff;//0关闭 1开启
@SerializedName("class")
- int clazz;
+ int clazz;//分类 1吃药 2接送 3预约
boolean finished = false;
boolean is_local = false;
diff --git a/app/src/main/java/com/xxpatx/os/alarm/AlarmUtils.java b/app/src/main/java/com/xxpatx/os/alarm/AlarmUtils.java
index a46a39e..7c3b003 100644
--- a/app/src/main/java/com/xxpatx/os/alarm/AlarmUtils.java
+++ b/app/src/main/java/com/xxpatx/os/alarm/AlarmUtils.java
@@ -331,33 +331,7 @@ public class AlarmUtils {
* @return 获取单个闹钟
*/
public AlarmClockData getDatabaseSingleAlarm(AlarmClockData data) {
- List list = new ArrayList<>();
- String selectQuery = "SELECT * FROM " + AlarmOpenHelper.TABLE_ALARM + " where id =" + data.getId();
- Cursor cursor = mDatabase.rawQuery(selectQuery, null);
- if (cursor.moveToFirst()) {
- do {
- AlarmClockData alarmClockData = new AlarmClockData();
- alarmClockData.setId(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_ID)));
- alarmClockData.setType(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_TYPE)));
- alarmClockData.setTime(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TIME)));
- alarmClockData.setTitle(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TITLE)));
- alarmClockData.setVoice(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE)));
- alarmClockData.setVoice_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE_MD5)));
- alarmClockData.setFile(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE)));
- alarmClockData.setFile_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE_MD5)));
- alarmClockData.setRemind_type(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_REMIND_TYPE)));
- alarmClockData.setIs_onoff(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_ONOFF)));
- alarmClockData.setClazz(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_CLAZZ)));
-
- alarmClockData.setFinished(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_FINISHED)) == 1);
- alarmClockData.setIs_local(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_LOCAL)) == 1);
- alarmClockData.setEdited(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_EDITED)) == 1);
- alarmClockData.setDeleted(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_DELETED)) == 1);
- list.add(alarmClockData);
- } while (cursor.moveToNext());
- }
- cursor.close();
- return list.size() == 0 ? null : list.get(0);
+ return getDatabaseSingleAlarm(data.getId());
}
public AlarmClockData getDatabaseSingleAlarm(int id) {
diff --git a/app/src/main/java/com/xxpatx/os/bean/DockApp.java b/app/src/main/java/com/xxpatx/os/bean/DockApp.java
new file mode 100644
index 0000000..1b16c0a
--- /dev/null
+++ b/app/src/main/java/com/xxpatx/os/bean/DockApp.java
@@ -0,0 +1,76 @@
+package com.xxpatx.os.bean;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonParser;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class DockApp implements Serializable {
+ private static final long serialVersionUID = 820554935375905745L;
+
+ String appName;
+ String packageName;
+ String className;
+
+ public DockApp(String appName, String packageName, String className) {
+ this.appName = appName;
+ this.packageName = packageName;
+ this.className = className;
+ }
+
+ public DockApp(String packageName, String className) {
+ this.packageName = packageName;
+ this.className = className;
+ }
+
+ public DockApp(String packageName) {
+ this.packageName = packageName;
+ }
+
+ public String getAppName() {
+ return appName;
+ }
+
+ public void setAppName(String appName) {
+ this.appName = appName;
+ }
+
+ public String getPackageName() {
+ return packageName;
+ }
+
+ public void setPackageName(String packageName) {
+ this.packageName = packageName;
+ }
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
+ }
+
+ @Override
+ public boolean equals(@Nullable Object obj) {
+ if (obj instanceof DockApp) {
+ DockApp d = (DockApp) obj;
+ return
+// Objects.equals(appName, d.appName);&&
+ Objects.equals(packageName, d.packageName);
+// && Objects.equals(className, d.className);
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/app/src/main/java/com/xxpatx/os/config/CommonConfig.java b/app/src/main/java/com/xxpatx/os/config/CommonConfig.java
index a84f256..d310f9f 100644
--- a/app/src/main/java/com/xxpatx/os/config/CommonConfig.java
+++ b/app/src/main/java/com/xxpatx/os/config/CommonConfig.java
@@ -90,6 +90,12 @@ public class CommonConfig {
/*禁用闹钟修改*/
public static final String DISABLE_CLOCK_MODIFY = "disable_clock_modify_key";
+ public final static String ACTION_STATUS_BAR_STATE = "xiaoxintong_statusBar_state";
+ /*显示状态栏*/
+ public final static String ACTION_SHOW_STATUS_BAR = "xiaoxintong_show_statusBar";
+ /*隐藏状态栏*/
+ public final static String ACTION_HIDE_STATUS_BAR = "xiaoxintong_hide_statusBar";
+
public static final String AMAP_LOCATION_MAP_BEAN = "AMapLocation_MapBean_key";
public static final String AMAP_LOCATION_DISTRICT = "AMapLocationMapBean_key";
diff --git a/app/src/main/java/com/xxpatx/os/db/ContactCacheHelper.java b/app/src/main/java/com/xxpatx/os/db/ContactCacheHelper.java
index 1c875e5..e1c7f18 100644
--- a/app/src/main/java/com/xxpatx/os/db/ContactCacheHelper.java
+++ b/app/src/main/java/com/xxpatx/os/db/ContactCacheHelper.java
@@ -8,8 +8,6 @@ public class ContactCacheHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "ContactDatabase.db";
- // public static final String DATABASE_FILE_NAME = Environment.getExternalStorageDirectory().getPath() + File.separator + DATABASE_NAME;
- public static final String DATABASE_FILE_NAME = DATABASE_NAME;
public static final String TABLE_ALARM = "ContactTable";
diff --git a/app/src/main/java/com/xxpatx/os/db/ContactCacheUtils.java b/app/src/main/java/com/xxpatx/os/db/ContactCacheUtils.java
index bd8fd60..7bb15fd 100644
--- a/app/src/main/java/com/xxpatx/os/db/ContactCacheUtils.java
+++ b/app/src/main/java/com/xxpatx/os/db/ContactCacheUtils.java
@@ -7,6 +7,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;
+import com.xxpatx.os.BuildConfig;
import com.xxpatx.os.bean.Contact;
import java.io.File;
@@ -25,12 +26,15 @@ public class ContactCacheUtils {
public ContactCacheUtils(Context context) {
this.mContext = context.getApplicationContext();
// this.mContactHelper = new ContactCacheHelper(context, ContactCacheHelper.DATABASE_NAME, null, ContactCacheHelper.DATABASE_VERSION);
-// this.mContactHelper = new ContactCacheHelper(context,
-// context.getExternalCacheDir() + File.separator + ContactCacheHelper.DATABASE_NAME,
-// null, ContactCacheHelper.DATABASE_VERSION);
- this.mContactHelper = new ContactCacheHelper(context,
- Environment.getExternalStorageDirectory() + File.separator + ContactCacheHelper.DATABASE_NAME,
- null, ContactCacheHelper.DATABASE_VERSION);
+ if (BuildConfig.DEBUG) {
+ this.mContactHelper = new ContactCacheHelper(context,
+ Environment.getExternalStorageDirectory() + File.separator + ContactCacheHelper.DATABASE_NAME,
+ null, ContactCacheHelper.DATABASE_VERSION);
+ } else {
+ this.mContactHelper = new ContactCacheHelper(context,
+ context.getExternalCacheDir() + File.separator + ContactCacheHelper.DATABASE_NAME,
+ null, ContactCacheHelper.DATABASE_VERSION);
+ }
this.mDatabase = mContactHelper.getWritableDatabase();
}
diff --git a/app/src/main/java/com/xxpatx/os/fragment/home/HomeFragment.java b/app/src/main/java/com/xxpatx/os/fragment/home/HomeFragment.java
index 799838b..4fc3bc3 100644
--- a/app/src/main/java/com/xxpatx/os/fragment/home/HomeFragment.java
+++ b/app/src/main/java/com/xxpatx/os/fragment/home/HomeFragment.java
@@ -350,7 +350,6 @@ public class HomeFragment extends BaseMvvmFragment());
- }
-
- @Override
- public void onError() {
+ public void onError(String msg) {
}
});
diff --git a/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java b/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java
index cca9980..868dcd8 100644
--- a/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java
+++ b/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java
@@ -61,20 +61,21 @@ import com.xxpatx.os.network.api.uiui.GoodsListApi;
import com.xxpatx.os.network.api.uiui.GoodsTypeApi;
import com.xxpatx.os.network.api.uiui.GoodsTypeListApi;
import com.xxpatx.os.network.api.uiui.HealthCodeApi;
-import com.xxpatx.os.network.api.uiui.SnIsActivationApi;
-import com.xxpatx.os.network.api.uiui.contact.MailListAddApi;
-import com.xxpatx.os.network.api.uiui.contact.MailListDeleteApi;
import com.xxpatx.os.network.api.uiui.RegionListApi;
import com.xxpatx.os.network.api.uiui.RegionListCall;
import com.xxpatx.os.network.api.uiui.ServeApi;
+import com.xxpatx.os.network.api.uiui.SnIsActivationApi;
import com.xxpatx.os.network.api.uiui.UpdateAppIconApi;
import com.xxpatx.os.network.api.uiui.UserInfoControl;
import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockAddApi;
-import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockApi;
+import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockGetApi;
import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockDeleteApi;
import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockEditApi;
import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockQueryApi;
+import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockUpdateApi;
import com.xxpatx.os.network.api.uiui.app.RunNewApp;
+import com.xxpatx.os.network.api.uiui.contact.MailListAddApi;
+import com.xxpatx.os.network.api.uiui.contact.MailListDeleteApi;
import com.xxpatx.os.network.api.uiui.contact.MailListEditApi;
import com.xxpatx.os.network.api.uiui.desktop.GetDesktopApi;
import com.xxpatx.os.network.api.uiui.desktop.UpdateDesktopApi;
@@ -90,7 +91,6 @@ import com.xxpatx.os.network.api.uiui.sn.SettingApi;
import com.xxpatx.os.network.api.uiui.sn.SnInfoApi;
import com.xxpatx.os.network.api.uiui.sn.SosRecordApi;
import com.xxpatx.os.network.api.uiui.sn.UpdateAddressApi;
-import com.xxpatx.os.network.api.uiui.sn.UpdateAlarmClockApi;
import com.xxpatx.os.network.interceptor.RepeatRequestInterceptor;
import com.xxpatx.os.utils.Utils;
@@ -362,7 +362,7 @@ public class NetInterfaceManager {
}
public Observable getUpdateAlarmObservable(int id) {
- return mRetrofit.create(UpdateAlarmClockApi.class)
+ return mRetrofit.create(AlarmClockUpdateApi.class)
.updateAlarm(Utils.getSerial(), id)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
@@ -466,7 +466,7 @@ public class NetInterfaceManager {
public Observable>> getAlarmClockObservable() {
return mRetrofit
- .create(AlarmClockApi.class)
+ .create(AlarmClockGetApi.class)
.getAlarmClock(Utils.getSerial(), 0)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
@@ -474,7 +474,7 @@ public class NetInterfaceManager {
public Observable>> getAlarmClockObservable(int type) {
return mRetrofit
- .create(AlarmClockApi.class)
+ .create(AlarmClockGetApi.class)
.getAlarmClock(Utils.getSerial(), type)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
@@ -1020,41 +1020,9 @@ public class NetInterfaceManager {
public interface AlarmClockCallback {
void setAlarmClock(List alarmClockList);
- void setAlarmClockEmpty();
-
- void onError();
+ void onError(String msg);
}
- public void getAlarmClock(boolean refresh, BehaviorSubject lifecycle, AlarmClockCallback callback) {
-// ConnectMode connectMode = ConnectMode.DEFAULT;
-// if (refresh) {
-// connectMode = ConnectMode.DEFAULT;
-// }
-// if (ConnectManager.getInstance().isNeedConnect(UrlAddress.GET_ALARM_CLOCK, connectMode)) {
- getAlarmClock(lifecycle, callback);
-// } else {
-// getAlarmClockCache(lifecycle, callback);
-// }
- }
-
-// public void getAlarmClockCache(BehaviorSubject lifecycle, AlarmClockCallback callback) {
-// String jsonString = mCacheHelper.getAsString(UrlAddress.GET_ALARM_CLOCK);
-// //为 "" 是已经请求成功的
-// if (jsonString == null) {
-// getAlarmClock(lifecycle, callback);
-// } else {
-// Gson gson = new Gson();
-// Type type = new TypeToken>() {
-// }.getType();
-// List list = gson.fromJson(jsonString, type);
-// if (list == null || list.size() == 0) {
-// callback.setAlarmClockEmpty();
-// } else {
-// callback.setAlarmClock(list);
-// }
-// }
-// }
-
public void getAlarmClockFragment(BehaviorSubject lifecycle, AlarmClockCallback callback) {
getAlarmClockObservable()
.compose(RxLifecycle.bindUntilEvent(lifecycle, FragmentEvent.DESTROY))
@@ -1092,31 +1060,30 @@ public class NetInterfaceManager {
if (alarmClockData != null && alarmClockData.size() != 0) {
AlarmUtils.getInstance().setAlarmClockData(alarmClockData);
mMMKV.encode(UrlAddress.GET_ALARM_CLOCK, GsonUtils.toJSONString(alarmClockData));
-// if (callback != null) {
-// callback.setAlarmClock(alarmClockData);
-// }
} else {
AlarmUtils.getInstance().deleteAllAlarmClock();
AlarmUtils.getInstance().setAlarmClockData(null);
mMMKV.encode(UrlAddress.GET_ALARM_CLOCK, "");
-// if (callback != null) {
-// callback.setAlarmClockEmpty();
-// }
+ if (callback != null) {
+ callback.onError(listBaseResponse.msg);
+ }
}
} else {
AlarmUtils.getInstance().deleteAllAlarmClock();
AlarmUtils.getInstance().setAlarmClockData(null);
mMMKV.encode(UrlAddress.GET_ALARM_CLOCK, "");
-// if (callback != null) {
-// callback.setAlarmClockEmpty();
-// }
+ if (callback != null) {
+ callback.onError(listBaseResponse.msg);
+ }
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("getAlarmClockObserver", "onError: " + e.getMessage());
- if (callback != null) callback.onError();
+ if (callback != null) {
+ callback.onError("请检查网络连接");
+ }
onComplete();
}
@@ -1124,8 +1091,10 @@ public class NetInterfaceManager {
public void onComplete() {
Log.e("getAlarmClockObserver", "onComplete: ");
List list = AlarmUtils.getInstance().getOldData();
+ Log.e("getAlarmClockObserver", "onComplete: list = " + list);
+
if (list == null || list.size() == 0) {
- if (callback != null) callback.setAlarmClockEmpty();
+ if (callback != null) callback.setAlarmClock(null);
} else {
List filter = list.stream().filter(alarmClockData -> !alarmClockData.isDeleted()).collect(Collectors.toList());
if (callback != null) callback.setAlarmClock(filter);
diff --git a/app/src/main/java/com/xxpatx/os/network/UrlAddress.java b/app/src/main/java/com/xxpatx/os/network/UrlAddress.java
index f454cd1..e6c9378 100644
--- a/app/src/main/java/com/xxpatx/os/network/UrlAddress.java
+++ b/app/src/main/java/com/xxpatx/os/network/UrlAddress.java
@@ -23,8 +23,6 @@ public class UrlAddress {
*/
/*获取设备是否激活*/
public static final String GET_SN_IS_ACTIVATION = "sn/getSnIsActivation";
- /*爱心提醒通知成功接口*/
- public static final String UPDATE_ALARM_CLOCK = "updateAlarmClock";
/*上传截屏图片*/
public static final String SEND_SCREENSHOT = "sn/uploadScreenshot";
/*获取系统设置其它管控*/
@@ -106,16 +104,18 @@ public class UrlAddress {
/**
* 闹钟
*/
+ /*获取闹钟*/
+ public static final String GET_ALARM_CLOCK = "getAlarmClock";
+ /*爱心提醒通知成功*/
+ public static final String ALARM_CLOCK_UPDATE = "updateAlarmClock";
+ /*编号查询闹钟*/
+ public static final String ALARM_CLOCK_BY_ID = "AlarmClock/alarmClockById";
/*添加闹钟*/
public static final String ALARM_CLOCK_ADD = "AlarmClock/alarmClockAdd";
/*编辑闹钟*/
public static final String ALARM_CLOCK_EDIT = "AlarmClock/alarmClockEdit";
- /*编号查询闹钟*/
- public static final String ALARM_CLOCK_BY_ID = "AlarmClock/alarmClockById";
/*删除闹钟*/
public static final String ALARM_CLOCK_DELETE = "AlarmClock/alarmClockDelete";
- /*获取闹钟*/
- public static final String GET_ALARM_CLOCK = "getAlarmClock";
/**
* 商品购买
diff --git a/app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockApi.java b/app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockGetApi.java
similarity index 93%
rename from app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockApi.java
rename to app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockGetApi.java
index 5d9a9c2..ac34a37 100644
--- a/app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockApi.java
+++ b/app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockGetApi.java
@@ -10,7 +10,7 @@ import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
-public interface AlarmClockApi {
+public interface AlarmClockGetApi {
@GET(UrlAddress.GET_ALARM_CLOCK)
Observable>> getAlarmClock(
@Query("sn") String sn,
diff --git a/app/src/main/java/com/xxpatx/os/network/api/uiui/sn/UpdateAlarmClockApi.java b/app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockUpdateApi.java
similarity index 73%
rename from app/src/main/java/com/xxpatx/os/network/api/uiui/sn/UpdateAlarmClockApi.java
rename to app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockUpdateApi.java
index 44674b4..f631eba 100644
--- a/app/src/main/java/com/xxpatx/os/network/api/uiui/sn/UpdateAlarmClockApi.java
+++ b/app/src/main/java/com/xxpatx/os/network/api/uiui/alarmclock/AlarmClockUpdateApi.java
@@ -1,4 +1,4 @@
-package com.xxpatx.os.network.api.uiui.sn;
+package com.xxpatx.os.network.api.uiui.alarmclock;
import com.xxpatx.os.bean.BaseResponse;
import com.xxpatx.os.network.UrlAddress;
@@ -8,9 +8,9 @@ import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
-public interface UpdateAlarmClockApi {
+public interface AlarmClockUpdateApi {
@FormUrlEncoded
- @POST(UrlAddress.UPDATE_ALARM_CLOCK)
+ @POST(UrlAddress.ALARM_CLOCK_UPDATE)
Observable updateAlarm(
@Field("sn") String sn,
@Field("id") int id
diff --git a/app/src/main/java/com/xxpatx/os/service/main/MainSContact.java b/app/src/main/java/com/xxpatx/os/service/main/MainSContact.java
index 00dc1c5..67f5e76 100644
--- a/app/src/main/java/com/xxpatx/os/service/main/MainSContact.java
+++ b/app/src/main/java/com/xxpatx/os/service/main/MainSContact.java
@@ -8,16 +8,18 @@ import java.util.List;
public class MainSContact {
public interface Presenter extends BasePresenter {
- void addAlarmClock();
- void deleteAlarmClock();
- //设置所有信息
void getAlarmClock();
+ void addAlarmClock();
+ void editAlarmClock();
+ void updateAlarmClock();
+ void deleteAlarmClock();
}
public interface MainSView extends BaseView {
- void addAlarmClockFinish();
- void deleteAlarmClockFinish();
- //获取所有信息
void setAlarmClock(List dataList);
+ void addAlarmClockFinish();
+ void editAlarmClockFinish();
+ void updateAlarmClockFinish();
+ void deleteAlarmClockFinish();
}
}
diff --git a/app/src/main/java/com/xxpatx/os/service/main/MainSPresenter.java b/app/src/main/java/com/xxpatx/os/service/main/MainSPresenter.java
index 486b890..8a00ee6 100644
--- a/app/src/main/java/com/xxpatx/os/service/main/MainSPresenter.java
+++ b/app/src/main/java/com/xxpatx/os/service/main/MainSPresenter.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
+import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
@@ -39,10 +40,10 @@ import okhttp3.RequestBody;
public class MainSPresenter implements MainSContact.Presenter {
private static final String TAG = "MainSPresenter";
- private static final int OK = 200;
+ MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
private MainSContact.MainSView mView;
private Context mContext;
- MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private BehaviorSubject lifecycle;
@@ -69,6 +70,23 @@ public class MainSPresenter implements MainSContact.Presenter {
this.mView = null;
}
+ @Override
+ public void getAlarmClock() {
+ NetInterfaceManager.getInstance().getAlarmClock(getLifecycle(), new NetInterfaceManager.AlarmClockCallback() {
+ @Override
+ public void setAlarmClock(List alarmClockList) {
+ Log.e(TAG, "setAlarmClock: " + alarmClockList);
+ }
+
+ @Override
+ public void onError(String msg) {
+ Toaster.show(msg);
+ }
+
+ });
+
+ }
+
private int addFinishStatu;
@Override
@@ -195,6 +213,16 @@ public class MainSPresenter implements MainSContact.Presenter {
return NetInterfaceManager.getInstance().getAlarmClockAddObservable(params, body);
}
+ @Override
+ public void editAlarmClock() {
+
+ }
+
+ @Override
+ public void updateAlarmClock() {
+
+ }
+
private int deleteFinishStatu;
@Override
@@ -282,24 +310,4 @@ public class MainSPresenter implements MainSContact.Presenter {
return NetInterfaceManager.getInstance().deleteAlarmClockObservable(alarmClockData.getId());
}
- @Override
- public void getAlarmClock() {
- NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() {
- @Override
- public void setAlarmClock(List alarmClockList) {
- Log.e(TAG, "setAlarmClock: " + alarmClockList);
- }
-
- @Override
- public void setAlarmClockEmpty() {
- Log.e(TAG, "setAlarmClock: ");
- }
-
- @Override
- public void onError() {
- Log.e(TAG, "setAlarmClock: ");
- }
- });
-
- }
}
diff --git a/app/src/main/java/com/xxpatx/os/service/main/MainService.java b/app/src/main/java/com/xxpatx/os/service/main/MainService.java
index 1962194..b8eccb7 100644
--- a/app/src/main/java/com/xxpatx/os/service/main/MainService.java
+++ b/app/src/main/java/com/xxpatx/os/service/main/MainService.java
@@ -65,8 +65,7 @@ import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
-public class MainService extends BaseRxService
- implements MainSContact.MainSView, NetworkUtils.OnNetworkStatusChangedListener {
+public class MainService extends BaseRxService implements MainSContact.MainSView, NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = "MainService";
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
@@ -97,26 +96,46 @@ public class MainService extends BaseRxService
}
}
- private uploadAlarmClockReceiver mUploadAlarmClockReceiver;
+ private OperateAlarmClockReceiver mOperateAlarmClockReceiver;
- private void registerRefreshReceiver() {
- if (mUploadAlarmClockReceiver == null) {
- mUploadAlarmClockReceiver = new uploadAlarmClockReceiver();
+ private void registerOperateAlarmClockReceiver() {
+ if (mOperateAlarmClockReceiver == null) {
+ mOperateAlarmClockReceiver = new OperateAlarmClockReceiver();
}
IntentFilter filter = new IntentFilter();
- filter.addAction(uploadAlarmClockReceiver.UPLOAD_ALARM_RECEIVER_ACTION);
- registerReceiver(mUploadAlarmClockReceiver, filter);
+ filter.addAction(ALARM_RECEIVER_ACTION_ADD);
+ filter.addAction(ALARM_RECEIVER_ACTION_EDIT);
+ filter.addAction(ALARM_RECEIVER_ACTION_UPDATE);
+ filter.addAction(ALARM_RECEIVER_ACTION_DELETE);
+ registerReceiver(mOperateAlarmClockReceiver, filter);
}
- public class uploadAlarmClockReceiver extends BroadcastReceiver {
- public static final String UPLOAD_ALARM_RECEIVER_ACTION = "Receiver_Upload_AlarmClock_Action";
+ public static final String ALARM_RECEIVER_ACTION_ADD = "Receiver_AlarmClock_Action_Add";
+ public static final String ALARM_RECEIVER_ACTION_EDIT = "Receiver_AlarmClock_Action_Edit";
+ public static final String ALARM_RECEIVER_ACTION_UPDATE = "Receiver_AlarmClock_Action_Update";
+ public static final String ALARM_RECEIVER_ACTION_DELETE = "Receiver_AlarmClock_Action_Delete";
+
+ public class OperateAlarmClockReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- Log.e("uploadAlarmClockReceiver", "onReceive: " + action);
- if (!TextUtils.isEmpty(action)) {
- mPresenter.addAlarmClock();
+ Log.e("OperateAlarmClockReceiver", "onReceive: " + action);
+ if (TextUtils.isEmpty(action)) return;
+ switch (action) {
+ case ALARM_RECEIVER_ACTION_ADD:
+ mPresenter.addAlarmClock();
+ break;
+ case ALARM_RECEIVER_ACTION_EDIT:
+ mPresenter.editAlarmClock();
+ break;
+ case ALARM_RECEIVER_ACTION_UPDATE:
+ mPresenter.updateAlarmClock();
+ break;
+ case ALARM_RECEIVER_ACTION_DELETE:
+ mPresenter.deleteAlarmClock();
+ break;
+ default:
}
}
}
@@ -149,7 +168,7 @@ public class MainService extends BaseRxService
registerAlarmReceiver();
registerTimeReceiver();
registerLockScreenReceiver();
- registerRefreshReceiver();
+ registerOperateAlarmClockReceiver();
registerScreenLockReceiver();
registerSmsReceiver();
}
@@ -160,6 +179,31 @@ public class MainService extends BaseRxService
return START_STICKY;
}
+ @Override
+ public void setAlarmClock(List dataList) {
+
+ }
+
+ @Override
+ public void addAlarmClockFinish() {
+ mPresenter.deleteAlarmClock();
+ }
+
+ @Override
+ public void editAlarmClockFinish() {
+
+ }
+
+ @Override
+ public void updateAlarmClockFinish() {
+
+ }
+
+ @Override
+ public void deleteAlarmClockFinish() {
+ mPresenter.getAlarmClock();
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
@@ -174,8 +218,8 @@ public class MainService extends BaseRxService
if (lockScreenReceiver != null) {
unregisterReceiver(lockScreenReceiver);
}
- if (mUploadAlarmClockReceiver != null) {
- unregisterReceiver(mUploadAlarmClockReceiver);
+ if (mOperateAlarmClockReceiver != null) {
+ unregisterReceiver(mOperateAlarmClockReceiver);
}
if (mWindowReceiver != null) {
unregisterReceiver(mWindowReceiver);
@@ -185,21 +229,6 @@ public class MainService extends BaseRxService
}
}
- @Override
- public void addAlarmClockFinish() {
- mPresenter.deleteAlarmClock();
- }
-
- @Override
- public void deleteAlarmClockFinish() {
- mPresenter.getAlarmClock();
- }
-
- @Override
- public void setAlarmClock(List dataList) {
-
- }
-
public boolean isScreenOn() {
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
// true为打开,false为关闭
diff --git a/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java b/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java
index 67ea71b..6eb2ca1 100644
--- a/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java
+++ b/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java
@@ -23,6 +23,7 @@ import com.arialyy.aria.core.Aria;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.xxpatx.os.BuildConfig;
+import com.xxpatx.os.R;
import com.xxpatx.os.activity.quickapp.QuickAppActivity;
import com.xxpatx.os.bean.AppInfo;
import com.xxpatx.os.bean.DesktopIcon;
@@ -508,9 +509,13 @@ public class ApkUtils {
}
public static Drawable getAppDrawable(Context context, String pkg) {
- if (context == null || TextUtils.isEmpty(pkg)) {
+ if (context == null) {
return null;
}
+ Drawable appIcon = context.getDrawable(R.mipmap.ic_launcher);
+ if (TextUtils.isEmpty(pkg)) {
+ return appIcon;
+ }
PackageManager packageManager = context.getPackageManager();
ApplicationInfo applicationInfo = null;
try {
@@ -521,7 +526,7 @@ public class ApkUtils {
if (applicationInfo != null) {
return applicationInfo.loadIcon(packageManager);
} else {
- return null;
+ return appIcon;
}
}
diff --git a/app/src/main/res/drawable/app_select_background.xml b/app/src/main/res/drawable/app_select_background.xml
index ddd205e..dc178ba 100644
--- a/app/src/main/res/drawable/app_select_background.xml
+++ b/app/src/main/res/drawable/app_select_background.xml
@@ -1,7 +1,12 @@
-
+
+
+
+ android:left="8dp"
+ android:right="8dp"
+ android:top="8dp" />
\ No newline at end of file
diff --git a/app/src/main/res/drawable/app_unselect_background.xml b/app/src/main/res/drawable/app_unselect_background.xml
new file mode 100644
index 0000000..b790f5f
--- /dev/null
+++ b/app/src/main/res/drawable/app_unselect_background.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_alarm_edit.xml b/app/src/main/res/layout/activity_alarm_edit.xml
index 028d11e..83cd1b2 100644
--- a/app/src/main/res/layout/activity_alarm_edit.xml
+++ b/app/src/main/res/layout/activity_alarm_edit.xml
@@ -111,70 +111,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 877d120..5ac5181 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -44,12 +44,34 @@
+
+
+
+
+
+
@@ -244,6 +248,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_dock_app_select.xml b/app/src/main/res/layout/item_dock_app_select.xml
new file mode 100644
index 0000000..c1114e1
--- /dev/null
+++ b/app/src/main/res/layout/item_dock_app_select.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file