增加使用时间同步

This commit is contained in:
2022-09-27 09:30:37 +08:00
parent 60d98b7166
commit 8df1ae308c
6 changed files with 168 additions and 6 deletions

View File

@@ -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();
}
}

View File

@@ -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<MyAppUsageBean> 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<List<AppInfo>>() {
}.getType();
Gson gson = new Gson();
List<AppInfo> appInfoList = gson.fromJson(jsonString, type);
if (appInfoList != null && appInfoList.size() != 0) {
List<AppInfo> temp = appInfoList.stream().filter(new Predicate<AppInfo>() {
@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 {

View File

@@ -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<BaseResponse<List<MyAppUsageBean>>> 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<AppInfo> 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<String> allAppPkg = new HashSet<>();
for (AppInfo appInfo : appInfoList) {
allAppPkg.add(appInfo.getApp_package());
@@ -2570,4 +2579,36 @@ public class NetInterfaceManager {
}
}
}
interface MyAppListCallback {
void setMyAppList(List<MyAppUsageBean> myAppList);
}
public void getMyAppList(MyAppListCallback callback) {
getMyAppListObservable()
.subscribe(new Observer<BaseResponse<List<MyAppUsageBean>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getMyAppList", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<List<MyAppUsageBean>> listBaseResponse) {
Log.e("getMyAppList", "onNext: " + listBaseResponse);
List<MyAppUsageBean> 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: ");
}
});
}
}

View File

@@ -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";
/*浏览器书签管控*/

View File

@@ -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<BaseResponse<List<MyAppUsageBean>>> getMyAppList(
@Query("sn") String sn
);
}

View File

@@ -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<String>();
for (AppInfo pkg : appInfoList) {
allPkgSet.add(pkg.getApp_package());