From 8df1ae308c4dae05e25b232e64397a74c482d732 Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Tue, 27 Sep 2022 09:30:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BD=BF=E7=94=A8=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/uiui/sn/bean/MyAppUsageBean.java | 64 +++++++++++++++++++ .../uiui/sn/desktop/RunningAppManager.java | 44 +++++++++++-- .../uiui/sn/network/NetInterfaceManager.java | 43 ++++++++++++- .../java/com/uiui/sn/network/UrlAddress.java | 2 + .../com/uiui/sn/network/api/MyAppListApi.java | 19 ++++++ .../uiui/sn/service/main/MainSPresenter.java | 2 +- 6 files changed, 168 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/com/uiui/sn/bean/MyAppUsageBean.java create mode 100644 app/src/main/java/com/uiui/sn/network/api/MyAppListApi.java diff --git a/app/src/main/java/com/uiui/sn/bean/MyAppUsageBean.java b/app/src/main/java/com/uiui/sn/bean/MyAppUsageBean.java new file mode 100644 index 0000000..e7185b9 --- /dev/null +++ b/app/src/main/java/com/uiui/sn/bean/MyAppUsageBean.java @@ -0,0 +1,64 @@ +package com.uiui.sn.bean; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; +import com.google.gson.JsonParser; + +import java.io.Serializable; + +public class MyAppUsageBean implements Serializable { + private static final long serialVersionUID = 5340688429095924160L; + + int id; + String app_name; + String app_img; + String class_name; + long use_time;//s + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getApp_name() { + return app_name; + } + + public void setApp_name(String app_name) { + this.app_name = app_name; + } + + public String getApp_img() { + return app_img; + } + + public void setApp_img(String app_img) { + this.app_img = app_img; + } + + public String getClass_name() { + return class_name; + } + + public void setClass_name(String class_name) { + this.class_name = class_name; + } + + public long getUse_time() { + return use_time; + } + + public void setUse_time(long use_time) { + this.use_time = use_time; + } + + @NonNull + @Override + public String toString() { + return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); + } +} diff --git a/app/src/main/java/com/uiui/sn/desktop/RunningAppManager.java b/app/src/main/java/com/uiui/sn/desktop/RunningAppManager.java index 0188cae..4e46e7c 100644 --- a/app/src/main/java/com/uiui/sn/desktop/RunningAppManager.java +++ b/app/src/main/java/com/uiui/sn/desktop/RunningAppManager.java @@ -30,13 +30,16 @@ import com.tencent.mmkv.MMKV; import com.uiui.sn.BuildConfig; import com.uiui.sn.Statistics.AppInformation; import com.uiui.sn.Statistics.StatisticsInfo; +import com.uiui.sn.bean.AppInfo; import com.uiui.sn.bean.AppUsageTime; +import com.uiui.sn.bean.MyAppUsageBean; import com.uiui.sn.bean.PartTime; import com.uiui.sn.bean.RemainTime; import com.uiui.sn.config.CommonConfig; import com.uiui.sn.disklrucache.CacheHelper; import com.uiui.sn.gson.GsonUtils; import com.uiui.sn.network.NetInterfaceManager; +import com.uiui.sn.network.UrlAddress; import com.uiui.sn.utils.JGYUtils; import com.uiui.sn.utils.ToastUtil; @@ -106,7 +109,7 @@ public class RunningAppManager { private RunningAppManager(Context context) { if (context == null) { throw new RuntimeException("Context is NULL"); - } + } this.mContext = context; this.mCacheHelper = new CacheHelper(context); registerTimeReceiver(mContext); @@ -366,7 +369,6 @@ public class RunningAppManager { mContext.startActivity(i); } - /** * @return a list of the recents tasks. * 获取近期任务列表 @@ -454,6 +456,19 @@ public class RunningAppManager { Log.i(TAG, "syncAppRemainingTime: Finish" + mRemainingTimeMap); } + /*同步所有应用使用时间*/ + public void synvAllAppUsageTime(List myAppList) { + if (myAppList == null || myAppList.size() == 0) { + mAllAppUsageTime.clear(); + } else { +// mAllAppUsageTime.clear(); + for (MyAppUsageBean bean : myAppList) { + AppUsageTime appUsageTime = new AppUsageTime(); + appUsageTime.setPkg(bean.getApp_name()); + } + } + } + /** * 保存剩余时间到缓存 */ @@ -534,6 +549,7 @@ public class RunningAppManager { appUsageTime.setUsageTime(1); } else { appUsageTime = mGlobalUsageTime.get(pkg); + appUsageTime.setAppName(getAppName(pkg)); appUsageTime.setUsageTime(appUsageTime.getUsageTime() + 1); } mGlobalUsageTime.put(pkg, appUsageTime); @@ -549,6 +565,7 @@ public class RunningAppManager { singleAppUsageTime.setUsageTime(1); } else { singleAppUsageTime = mAllAppUsageTime.get(pkg); + singleAppUsageTime.setAppName(getAppName(pkg)); long singleTime = singleAppUsageTime.getUsageTime(); Log.e(TAG, "reduceAppRemainingTime: " + singleTime); singleAppUsageTime.setUsageTime(singleTime + 1); @@ -580,8 +597,27 @@ public class RunningAppManager { } private String getAppName(String pkg) { - if (TextUtils.isEmpty(pkg)) return "未知"; - + if (TextUtils.isEmpty(pkg)) { + return "未知"; + } + String jsonString = mCacheHelper.getAsString(UrlAddress.GET_ALL_PACKAGE); + if (!TextUtils.isEmpty(jsonString)) { + Type type = new TypeToken>() { + }.getType(); + Gson gson = new Gson(); + List appInfoList = gson.fromJson(jsonString, type); + if (appInfoList != null && appInfoList.size() != 0) { + List temp = appInfoList.stream().filter(new Predicate() { + @Override + public boolean test(AppInfo appInfo) { + return pkg.equals(appInfo.getApp_package()); + } + }).collect(Collectors.toList()); + if (temp.size() != 0) { + return temp.get(0).getApp_name(); + } + } + } PackageManager pm = mContext.getPackageManager(); PackageInfo info = null; try { diff --git a/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java index 1af7ad2..6735ce7 100644 --- a/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java @@ -27,6 +27,7 @@ import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiui.sn.BuildConfig; import com.uiui.sn.bean.AppInfo; import com.uiui.sn.bean.AppStart; +import com.uiui.sn.bean.MyAppUsageBean; import com.uiui.sn.bean.OverallAppBean; import com.uiui.sn.desktop.AppTimeControl; import com.uiui.sn.bean.AppUploadInfo; @@ -63,6 +64,7 @@ import com.uiui.sn.network.api.GetControlScreenshotApi; import com.uiui.sn.network.api.GetGuideApi; import com.uiui.sn.network.api.GetPublicIPApi; import com.uiui.sn.network.api.MachineTimeControlApi; +import com.uiui.sn.network.api.MyAppListApi; import com.uiui.sn.network.api.NewestAppUpdate; import com.uiui.sn.network.api.OverallAppByPlatformApi; import com.uiui.sn.network.api.QRCodeApi; @@ -477,6 +479,13 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable>> getMyAppListObservable() { + return mRetrofit.create(MyAppListApi.class) + .getMyAppList(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + /* * * execution @@ -1856,7 +1865,7 @@ public class NetInterfaceManager { Log.e("getAllappPackage", "onNext: " + listBaseResponse); List appInfoList = listBaseResponse.data; if (null != appInfoList && appInfoList.size() != 0) { - mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, listBaseResponse.toString()); + mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, appInfoList.toString()); HashSet allAppPkg = new HashSet<>(); for (AppInfo appInfo : appInfoList) { allAppPkg.add(appInfo.getApp_package()); @@ -2570,4 +2579,36 @@ public class NetInterfaceManager { } } } + + interface MyAppListCallback { + void setMyAppList(List myAppList); + } + + public void getMyAppList(MyAppListCallback callback) { + getMyAppListObservable() + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getMyAppList", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getMyAppList", "onNext: " + listBaseResponse); + List myAppUsageBeanList = listBaseResponse.data; + callback.setMyAppList(myAppUsageBeanList); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getMyAppList", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getMyAppList", "onComplete: "); + } + }); + } } diff --git a/app/src/main/java/com/uiui/sn/network/UrlAddress.java b/app/src/main/java/com/uiui/sn/network/UrlAddress.java index 8c45b79..1a52855 100644 --- a/app/src/main/java/com/uiui/sn/network/UrlAddress.java +++ b/app/src/main/java/com/uiui/sn/network/UrlAddress.java @@ -27,6 +27,8 @@ public class UrlAddress { public final static String GET_APP_TIME_CONTROL = "Control/getAppTimeControl"; /*获取整机管控配置*/ public final static String GET_SN_TIME_CONTROL = "Control/getSnTimeControl"; + /*获取所有应用时间*/ + public final static String GET_MY_APP_LIST = "app/myAppList"; /*浏览器网址管控*/ public final static String SET_BROWSER_URL = "control/getBrowser"; /*浏览器书签管控*/ diff --git a/app/src/main/java/com/uiui/sn/network/api/MyAppListApi.java b/app/src/main/java/com/uiui/sn/network/api/MyAppListApi.java new file mode 100644 index 0000000..bbb71e0 --- /dev/null +++ b/app/src/main/java/com/uiui/sn/network/api/MyAppListApi.java @@ -0,0 +1,19 @@ +package com.uiui.sn.network.api; + +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.BatchID; +import com.uiui.sn.bean.MyAppUsageBean; +import com.uiui.sn.network.UrlAddress; + +import java.util.List; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface MyAppListApi { + @GET(UrlAddress.GET_MY_APP_LIST) + Observable>> getMyAppList( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java b/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java index 4b22b17..90a26bc 100644 --- a/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java +++ b/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java @@ -163,7 +163,7 @@ public class MainSPresenter implements MainSContact.Presenter { mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, ""); ApkUtils.writeAppPackageList(mContext, ""); } else { - mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, listBaseResponse.toString()); + mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, appInfoList.toString()); HashSet allPkgSet = new HashSet(); for (AppInfo pkg : appInfoList) { allPkgSet.add(pkg.getApp_package());