增加投屏开关,发送正在运行app,app内部开关

This commit is contained in:
2022-09-27 18:20:52 +08:00
parent 8df1ae308c
commit 35c747a334
13 changed files with 396 additions and 152 deletions

View File

@@ -2,14 +2,11 @@ package com.uiui.sn.activity.main;
import android.content.Context;
import android.graphics.Bitmap;
import android.provider.Settings;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiui.sn.bean.AppInfo;
import com.uiui.sn.bean.BaseResponse;
import com.uiui.sn.bean.SnInfo;
import com.uiui.sn.config.CommonConfig;
@@ -20,9 +17,7 @@ import com.uiui.sn.utils.CXAESUtil;
import com.uiui.sn.utils.Utils;
import java.lang.reflect.Type;
import java.util.List;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
@@ -132,7 +127,7 @@ public class MainAPresenter implements MainAContact.Presenter {
@Override
public void getForceInstall() {
NetInterfaceManager.getInstance().getForceInstall(false, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().getForceInstall(false, getLifecycle(), new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
Log.e("getForceInstall", "onComplete: ");
@@ -143,7 +138,7 @@ public class MainAPresenter implements MainAContact.Presenter {
@Override
public void getOverallApp() {
NetInterfaceManager.getInstance().getOverallApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().getOverallApp(true, getLifecycle(), new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
mView.setOverallApp();

View File

@@ -12,6 +12,7 @@ public class MyAppUsageBean implements Serializable {
int id;
String app_name;
String app_package;
String app_img;
String class_name;
long use_time;//s
@@ -32,6 +33,14 @@ public class MyAppUsageBean implements Serializable {
this.app_name = app_name;
}
public String getApp_package() {
return app_package;
}
public void setApp_package(String app_package) {
this.app_package = app_package;
}
public String getApp_img() {
return app_img;
}

View File

@@ -38,9 +38,10 @@ public class CommonConfig {
public final static String AOLE_ACTION_USB_USB_MTP = "aole_action_usb_usb_mtp";
/*USB模式-MIDI*/
public final static String AOLE_ACTION_USB_USB_MIDI = "aole_action_usb_usb_midi";
/*投屏开关*/
public final static String AOLE_ACTION_SCREEN_SHARE = "aole_app_screen_share";
/*内部黑名单*/
public final static String AOLE_APP_WEB_WHITE_LIST ="app_web_white_list";
/*应用安装白名单*/
public final static String AOLE_ACTION_APP_FORBID = "aole_app_forbid";
/*强制安装应用,禁止卸载*/

View File

@@ -40,6 +40,7 @@ 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.AppUsedTimeUtils;
import com.uiui.sn.utils.JGYUtils;
import com.uiui.sn.utils.ToastUtil;
@@ -57,8 +58,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -187,10 +186,12 @@ public class RunningAppManager {
Log.i(TAG, "checkForegroundAppName: topPackage = " + topPackage);
String appPackageName = getAppPackageName();
Log.d(TAG, "checkForegroundAppName: appPackageName = " + appPackageName);
if (allowPackage.contains(topPackage)) {
if (allowPackage.contains(topPackage)) {//排除在外的包名都写入空值
if (!TextUtils.isEmpty(appPackageName)) {
if (!topPackage.equals(appPackageName)) {
NetInterfaceManager.getInstance().sendCloseApp(appPackageName, new NetInterfaceManager.onCompleteCallback() {
//切换出去了
Log.i(TAG, "checkForegroundAppName: 切换应用1:" + topPackage);
NetInterfaceManager.getInstance().sendCloseApp(appPackageName, new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
Log.i(TAG, "onComplete: ");
@@ -198,14 +199,28 @@ public class RunningAppManager {
NetInterfaceManager.getInstance().getAppTimeControl();
}
});
NetInterfaceManager.getInstance().getMyAppList(new NetInterfaceManager.MyAppListCallback() {
@Override
public void setMyAppList(List<MyAppUsageBean> myAppList) {
syncAllAppUsageTime(myAppList);
}
});
AppUsedTimeUtils.getInstance().setApp_package(topPackage);
AppUsedTimeUtils.getInstance().setStart_time(System.currentTimeMillis() / 1000);
NetInterfaceManager.getInstance().sendRunningApp();
}
}
mMMKV.encode(RUNNING_APP_PACKAGENAME, "");
Log.d(TAG, "checkForegroundAppName: allow: " + topPackage);
return;
}
//如果appPackageName 为空则topPackage是才打开
if (TextUtils.isEmpty(appPackageName)) {
Log.d(TAG, "checkForegroundAppName: open: " + topPackage);
recordPackageOpenTime(topPackage);
AppUsedTimeUtils.getInstance().setApp_package(topPackage);
AppUsedTimeUtils.getInstance().setStart_time(System.currentTimeMillis() / 1000);
NetInterfaceManager.getInstance().sendRunningApp();
return;
}
long onClickTime = getOnClickTime();
@@ -221,17 +236,26 @@ public class RunningAppManager {
reduceAppRemainingTime(topPackage, 1);
}
} else {
Log.i(TAG, "checkForegroundAppName: 切换应用:" + topPackage);
NetInterfaceManager.getInstance().sendCloseApp(appPackageName, new NetInterfaceManager.onCompleteCallback() {
Log.i(TAG, "checkForegroundAppName: 切换应用2:" + topPackage);
NetInterfaceManager.getInstance().sendCloseApp(appPackageName, new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
NetInterfaceManager.getInstance().getSnTimeControl();
NetInterfaceManager.getInstance().getAppTimeControl();
}
});
NetInterfaceManager.getInstance().getMyAppList(new NetInterfaceManager.MyAppListCallback() {
@Override
public void setMyAppList(List<MyAppUsageBean> myAppList) {
syncAllAppUsageTime(myAppList);
}
});
reduceAppRemainingTime(topPackage, 1);
appPackageName = topPackage;
AppUsedTimeUtils.getInstance().setApp_package(appPackageName);
onClickTime = System.currentTimeMillis() / 1000;
NetInterfaceManager.getInstance().sendRunningApp();
AppUsedTimeUtils.getInstance().setStart_time(onClickTime);
if (RunningAppManager.getInstance().inControlTime(appPackageName)) {
Log.i(TAG, "checkForegroundAppName: 没有剩余时间2");
removeTask(topPackage);
@@ -289,10 +313,13 @@ public class RunningAppManager {
long time = System.currentTimeMillis();
String finaWayDate = sdf.format(time);
if ("00:00:00".equals(finaWayDate)) {
//清除数据保证及时性
mMMKV.encode(RemainingTimeMap, "");
mMMKV.encode(GlobalUsageTimeMap, "");
mMMKV.encode(AllApplUsageTimeMap, "");
mRemainingTimeMap.clear();
mGlobalUsageTime.clear();
mAllAppUsageTime.clear();
}
}
}
@@ -457,16 +484,25 @@ public class RunningAppManager {
}
/*同步所有应用使用时间*/
public void synvAllAppUsageTime(List<MyAppUsageBean> myAppList) {
public void syncAllAppUsageTime(List<MyAppUsageBean> myAppList) {
if (myAppList == null || myAppList.size() == 0) {
mAllAppUsageTime.clear();
} else {
// mAllAppUsageTime.clear();
for (MyAppUsageBean bean : myAppList) {
if (TextUtils.isEmpty(bean.getApp_package())) {
continue;
}
AppUsageTime appUsageTime = new AppUsageTime();
appUsageTime.setPkg(bean.getApp_name());
appUsageTime.setPkg(bean.getApp_package());
appUsageTime.setAppName(bean.getApp_name());
appUsageTime.setUsageTime(bean.getUse_time());
mAllAppUsageTime.put(bean.getApp_package(), appUsageTime);
}
}
String singleString = GsonUtils.toJSONString(mAllAppUsageTime);
mMMKV.encode(AllApplUsageTimeMap, singleString);
Log.e(TAG, "syncAllAppUsageTime: " + mAllAppUsageTime);
}
/**
@@ -600,7 +636,7 @@ public class RunningAppManager {
if (TextUtils.isEmpty(pkg)) {
return "未知";
}
String jsonString = mCacheHelper.getAsString(UrlAddress.GET_ALL_PACKAGE);
String jsonString = mMMKV.decodeString(UrlAddress.GET_ALL_PACKAGE, "");
if (!TextUtils.isEmpty(jsonString)) {
Type type = new TypeToken<List<AppInfo>>() {
}.getType();
@@ -784,6 +820,12 @@ public class RunningAppManager {
public String getDisableContent(String pkg) {
NetInterfaceManager.getInstance().getMyAppList(new NetInterfaceManager.MyAppListCallback() {
@Override
public void setMyAppList(List<MyAppUsageBean> myAppList) {
}
});
RemainTime remainTime = new RemainTime();
remainTime.setPkg(pkg);
// if (allowPackage.contains(pkg)) {
@@ -944,9 +986,12 @@ public class RunningAppManager {
public int compare(AppUsageTime o1, AppUsageTime o2) {
if (o1.getUsageTime() > o2.getUsageTime()) {
return 1;
} else {
} else if (o1.getUsageTime() == o2.getUsageTime()) {
return 0;
} else if (o1.getUsageTime() < o2.getUsageTime()) {
return -1;
}
return 1;
}
});
if (tempTime < allTime) {
@@ -1343,15 +1388,6 @@ public class RunningAppManager {
}
}
public void checkTopAppPackageName() {
String topPackage = getTopActivityInfo();
Log.i(TAG, "onReceive: " + topPackage);
// Log.i(TAG, "onReceive: getWeekDay: " + getWeekDay());
// Log.i(TAG, "onReceive: getWeekDayString: " + getWeekDayString());
// Log.i(TAG, "onReceive: inWeekDay: " + inWeekDay());
}
private String getTopActivityInfo() {
ActivityManager manager = ((ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE));
if (Build.VERSION.SDK_INT >= 21) {

View File

@@ -2,11 +2,13 @@ package com.uiui.sn.desktop;
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.uiui.sn.disklrucache.CacheHelper;
import com.uiui.sn.gson.GsonUtils;
import com.uiui.sn.network.UrlAddress;
import java.lang.reflect.Type;
@@ -35,6 +37,14 @@ public class TimeControlManager {
}
this.mContext = context;
this.mCacheHelper = new CacheHelper(context);
String appTimeControlJson = mCacheHelper.getAsString(UrlAddress.GET_APP_TIME_CONTROL);
if (!TextUtils.isEmpty(appTimeControlJson)) {
Gson gson = new Gson();
Type type = new TypeToken<List<AppTimeControl>>() {
}.getType();
List<AppTimeControl> appTimeControls = gson.fromJson(appTimeControlJson, type);
setAppTimeControlMap(appTimeControls);
}
}
public static void init(Context context) {
@@ -50,7 +60,7 @@ public class TimeControlManager {
return mTimeControlManager;
}
public HashMap<String, AppTimeControl> getAppTimeControlMap(){
public HashMap<String, AppTimeControl> getAppTimeControlMap() {
return mAppTimeControlMap;
}
@@ -81,7 +91,6 @@ public class TimeControlManager {
* @return
*/
public MachineControl getGlobalMachineControl() {
Log.e(TAG, "getGlobalMachineControl: ");
if (mGlobalMachineControl == null) {
String jsonString = mCacheHelper.getAsString(UrlAddress.GET_SN_TIME_CONTROL);
//为 "" 是已经请求成功的

View File

@@ -72,6 +72,7 @@ public class ControlManager {
SystemSettings systemSettings = GsonUtils.toJavaObject(jsonString, SystemSettings.class);
if (null != systemSettings) {
setUSBstate(systemSettings);
setScreenShared(systemSettings);
// ControlPanelManager.getInstance().setUsbStatus(systemSettings.getSetting_usb());
setPhoneList(systemSettings);
setBluetooth(systemSettings);
@@ -126,6 +127,7 @@ public class ControlManager {
public void setDisableSetting() {
Log.e("setDisableSetting", "Close all settings: ");
setUSBstate(1);
setScreenShared(1);
setPhoneList(1);
setBluetooth(0);
setHotspot(0);
@@ -201,7 +203,7 @@ public class ControlManager {
}
Intent usbIntent = new Intent(usbStatus).setPackage("com.android.settings");
// if (!BuildConfig.DEBUG)
mContext.sendBroadcast(usbIntent);
mContext.sendBroadcast(usbIntent);
}
/**
@@ -791,16 +793,16 @@ public class ControlManager {
private void setScreenShared(SystemSettings settings) {
int projection_screen = settings.getProjection_screen();
setScreenShared(projection_screen);
setScreenShared(changeNum(projection_screen));
}
private void setScreenShared(int state) {
Settings.System.putInt(mResolver, "projection_screen", state);
public void setScreenShared(int state) {
Settings.System.putInt(mResolver, CommonConfig.AOLE_ACTION_SCREEN_SHARE, state);
}
private void setHotPoint(SystemSettings settings) {
int hot_point = settings.getHot_point();
setScreenShared(hot_point);
setHotPoint(hot_point);
}
private void setHotPoint(int state) {
@@ -873,4 +875,6 @@ public class ControlManager {
private void closeSettingsApp() {
JGYUtils.getInstance().killBackgroundProcesses("com.android.settings");
}
}

View File

@@ -26,6 +26,7 @@ import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiui.sn.BuildConfig;
import com.uiui.sn.bean.AppInfo;
import com.uiui.sn.bean.AppJump;
import com.uiui.sn.bean.AppStart;
import com.uiui.sn.bean.MyAppUsageBean;
import com.uiui.sn.bean.OverallAppBean;
@@ -486,6 +487,13 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<List<AppJump>>> getAppJumpObservable() {
return getAppJumpControl()
.getSNJump(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/*
*
* execution
@@ -567,7 +575,7 @@ public class NetInterfaceManager {
void onComplete();
}
public interface onCompleteCallback {
public interface CompleteCallback {
void onComplete();
}
@@ -664,7 +672,7 @@ public class NetInterfaceManager {
* @param lifecycle
* @param callback
*/
public void setPushTags(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void setPushTags(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
ConnectMode connectMode = ConnectMode.SIX_HOUR;
if (refresh) {
connectMode = ConnectMode.ONE_HOUR;
@@ -685,7 +693,7 @@ public class NetInterfaceManager {
}
}
public void setPushTags(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void setPushTags(BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
Set set = new HashSet();
JGYUtils.getInstance().getAppPlatform(platform -> {
if (platform == JGYUtils.MTKPlatform) {
@@ -951,7 +959,7 @@ public class NetInterfaceManager {
}
public void checkAllAppUpdate(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void checkAllAppUpdate(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
ConnectMode connectMode = ConnectMode.SIX_HOUR;
if (refresh) {
connectMode = ConnectMode.ONE_HOUR;
@@ -974,7 +982,7 @@ public class NetInterfaceManager {
}
}
public void checkAllAppUpdate(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void checkAllAppUpdate(BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
Observable.zip(
getUpdateObservable(BuildConfig.APPLICATION_ID),
getUpdateObservable(JGYUtils.PACKAGE_APPSTORE),
@@ -1030,7 +1038,7 @@ public class NetInterfaceManager {
});
}
public void checkFXYAppUpdate(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void checkFXYAppUpdate(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
ConnectMode connectMode = ConnectMode.SIX_HOUR;
if (refresh) {
connectMode = ConnectMode.ONE_HOUR;
@@ -1053,7 +1061,7 @@ public class NetInterfaceManager {
}
}
public void checkFXYAppUpdate(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void checkFXYAppUpdate(BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
Observable.zip(
getUpdateObservable(JGYUtils.gkwxhd),
getUpdateObservable(JGYUtils.fuxiaoying),
@@ -1171,7 +1179,7 @@ public class NetInterfaceManager {
}
}
private void getCloudLessonSetting(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
private void getCloudLessonSetting(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
ConnectMode connectMode = ConnectMode.ONE_HOUR;
if (refresh) {
connectMode = ConnectMode.DEFAULT;
@@ -1193,7 +1201,7 @@ public class NetInterfaceManager {
}
}
private void getCloudLessonSetting(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
private void getCloudLessonSetting(BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
getCloudLessonSettingApiControl()
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<CloudLessonSetting>>() {
@@ -1865,7 +1873,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, appInfoList.toString());
mMMKV.encode(UrlAddress.GET_ALL_PACKAGE, GsonUtils.toJSONString(appInfoList));
HashSet<String> allAppPkg = new HashSet<>();
for (AppInfo appInfo : appInfoList) {
allAppPkg.add(appInfo.getApp_package());
@@ -1875,11 +1883,11 @@ public class NetInterfaceManager {
ApkUtils.writeAppPackageList(mContext, allPkgSet);
getAppStart(appInfoList);
} else {
mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, "");
mMMKV.encode(UrlAddress.GET_ALL_PACKAGE, "");
ApkUtils.writeAppPackageList(mContext, "");
}
} else {
mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, "");
mMMKV.encode(UrlAddress.GET_ALL_PACKAGE, "");
ApkUtils.writeAppPackageList(mContext, "");
}
}
@@ -1896,7 +1904,7 @@ public class NetInterfaceManager {
});
}
public void getForceInstall(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void getForceInstall(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
ConnectMode connectMode = ConnectMode.ONE_DAY;
if (refresh) {
connectMode = ConnectMode.ONE_HOUR;
@@ -1919,13 +1927,13 @@ public class NetInterfaceManager {
}
}
public void getForceInstall(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void getForceInstall(BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
getForceInstallControl()
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(getForceInstallObserver(callback));
}
public void getForceInstall(onCompleteCallback callback) {
public void getForceInstall(CompleteCallback callback) {
getForceInstallControl()
.subscribe(getForceInstallObserver(callback));
}
@@ -1935,7 +1943,7 @@ public class NetInterfaceManager {
.subscribe(getForceInstallObserver(null));
}
private Observer<BaseResponse<List<AppInfo>>> getForceInstallObserver(onCompleteCallback callback) {
private Observer<BaseResponse<List<AppInfo>>> getForceInstallObserver(CompleteCallback callback) {
return new Observer<BaseResponse<List<AppInfo>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -2108,12 +2116,12 @@ public class NetInterfaceManager {
}
public void sendRunningApp() {
String packageName = AppUsedTimeUtils.getInstance().getAppPackageName();
long time = AppUsedTimeUtils.getInstance().getStartTime();
String packageName = AppUsedTimeUtils.getInstance().getApp_package();
long time = AppUsedTimeUtils.getInstance().getStart_time();
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("app_package", packageName);
jsonObject.addProperty("version_name", ApkUtils.getAPPVersionName(mContext, packageName));
jsonObject.addProperty("start_time", time / 1000);
jsonObject.addProperty("start_time", time);
String jsonString = jsonObject.toString();
Log.e(TAG, "sendRunningApp: " + jsonString);
getRunningAppObservable(jsonString)
@@ -2259,7 +2267,7 @@ public class NetInterfaceManager {
public static final String APP_TIME_CONTROL_UPDATE = "APP_TIME_CONTROL_UPDATE";
public static final String SN_TIME_CONTROL_UPDATE = "SN_TIME_CONTROL_UPDATE";
public void getAppTimeControl(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void getAppTimeControl(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
ConnectMode connectMode = ConnectMode.ONE_MINUTE;
if (refresh) {
connectMode = ConnectMode.DEFAULT;
@@ -2275,7 +2283,8 @@ public class NetInterfaceManager {
Gson gson = new Gson();
Type type = new TypeToken<List<AppTimeControl>>() {
}.getType();
List<AppTimeControl> appInfos = gson.fromJson(jsonString, type);
List<AppTimeControl> appTimeControls = gson.fromJson(jsonString, type);
TimeControlManager.getInstance().setAppTimeControlMap(appTimeControls);
callback.onComplete();
}
}
@@ -2285,13 +2294,13 @@ public class NetInterfaceManager {
return mCacheHelper.getAsString(UrlAddress.GET_APP_TIME_CONTROL);
}
public void getAppTimeControl(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void getAppTimeControl(BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
getAppTimeControlObservable()
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(getAppTimeControlObserver(callback));
}
public void getAppTimeControl(onCompleteCallback callback) {
public void getAppTimeControl(CompleteCallback callback) {
getAppTimeControlObservable()
.subscribe(getAppTimeControlObserver(callback));
}
@@ -2301,7 +2310,7 @@ public class NetInterfaceManager {
.subscribe(getAppTimeControlObserver(null));
}
private Observer<BaseResponse<List<AppTimeControl>>> getAppTimeControlObserver(onCompleteCallback callback) {
private Observer<BaseResponse<List<AppTimeControl>>> getAppTimeControlObserver(CompleteCallback callback) {
return new Observer<BaseResponse<List<AppTimeControl>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -2345,7 +2354,7 @@ public class NetInterfaceManager {
}
public void getSnTimeControl(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void getSnTimeControl(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
ConnectMode connectMode = ConnectMode.ONE_MINUTE;
if (refresh) {
connectMode = ConnectMode.DEFAULT;
@@ -2371,13 +2380,13 @@ public class NetInterfaceManager {
return mCacheHelper.getAsString(UrlAddress.GET_SN_TIME_CONTROL);
}
public void getSnTimeControl(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void getSnTimeControl(BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
getMachineTimeControlObservable()
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(getSnTimeControlObserver(callback));
}
public void getSnTimeControl(onCompleteCallback callback) {
public void getSnTimeControl(CompleteCallback callback) {
getMachineTimeControlObservable()
.subscribe(getSnTimeControlObserver(callback));
}
@@ -2387,7 +2396,7 @@ public class NetInterfaceManager {
.subscribe(getSnTimeControlObserver(null));
}
public Observer<BaseResponse<MachineControl>> getSnTimeControlObserver(onCompleteCallback callback) {
public Observer<BaseResponse<MachineControl>> getSnTimeControlObserver(CompleteCallback callback) {
return new Observer<BaseResponse<MachineControl>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -2425,7 +2434,7 @@ public class NetInterfaceManager {
};
}
public void sendCloseApp(String packageName, onCompleteCallback completeCallback) {
public void sendCloseApp(String packageName, CompleteCallback completeCallback) {
PackageManager pm = mContext.getPackageManager();
PackageInfo appInfo = null;
try {
@@ -2464,7 +2473,7 @@ public class NetInterfaceManager {
}
}
public void getOverallApp(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void getOverallApp(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
ConnectMode connectMode = ConnectMode.ONE_MINUTE;
if (refresh) {
connectMode = ConnectMode.DEFAULT;
@@ -2486,13 +2495,13 @@ public class NetInterfaceManager {
}
}
public void getOverallApp(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
public void getOverallApp(BehaviorSubject<ActivityEvent> lifecycle, CompleteCallback callback) {
getOverallAppObservable()
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(getOverallAppObserver(callback));
}
public void getOverallApp(onCompleteCallback callback) {
public void getOverallApp(CompleteCallback callback) {
getOverallAppObservable()
.subscribe(getOverallAppObserver(callback));
}
@@ -2502,7 +2511,7 @@ public class NetInterfaceManager {
.subscribe(getOverallAppObserver(null));
}
public Observer<BaseResponse<List<OverallAppBean>>> getOverallAppObserver(onCompleteCallback callback) {
public Observer<BaseResponse<List<OverallAppBean>>> getOverallAppObserver(CompleteCallback callback) {
return new Observer<BaseResponse<List<OverallAppBean>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -2580,7 +2589,7 @@ public class NetInterfaceManager {
}
}
interface MyAppListCallback {
public interface MyAppListCallback {
void setMyAppList(List<MyAppUsageBean> myAppList);
}
@@ -2611,4 +2620,49 @@ public class NetInterfaceManager {
}
});
}
public void getAppJump(CompleteCallback completeCallback) {
getAppJumpObservable()
.subscribe(new Observer<BaseResponse<List<AppJump>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getAppJump", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<List<AppJump>> listBaseResponse) {
Log.e("getAppJump", "onNext: " + listBaseResponse);
if (listBaseResponse.code == 200) {
List<AppJump> appJumpList = listBaseResponse.data;
if (appJumpList == null || appJumpList.size() == 0) {
boolean putString = Settings.System.putString(crv, CommonConfig.AOLE_APP_WEB_WHITE_LIST, "");
Log.e(TAG, "getAppJump: " + putString);
} else {
List<String> urls = appJumpList.stream().map(new java.util.function.Function<AppJump, String>() {
@Override
public String apply(AppJump appJump) {
return appJump.getAddress();
}
}).collect(Collectors.toList());
boolean putString = Settings.System.putString(crv, CommonConfig.AOLE_APP_WEB_WHITE_LIST, String.join(",", urls));
Log.e(TAG, "getAppJump: " + putString);
}
} else {
boolean putString = Settings.System.putString(crv, CommonConfig.AOLE_APP_WEB_WHITE_LIST, "");
Log.e(TAG, "getAppJump: " + putString);
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("getAppJump", "onError: " + e.getMessage());
onComplete();
}
@Override
public void onComplete() {
Log.e("getAppJump", "onComplete: ");
}
});
}
}

View File

@@ -10,6 +10,7 @@ import android.util.Log;
import com.google.gson.JsonObject;
import com.uiui.sn.BuildConfig;
import com.uiui.sn.IGetInfoInterface;
import com.uiui.sn.bean.MyAppUsageBean;
import com.uiui.sn.config.CommonConfig;
import com.uiui.sn.desktop.RunningAppManager;
import com.uiui.sn.network.NetInterfaceManager;

View File

@@ -19,9 +19,11 @@ public class MainSContact {
void setSystemSettings();
void setBrowserLabel();
void setBrowserWhiteList();
void setAppJump();
void setAppStart();
void setAppTimeControl();
void setSnTimeControl();
void setMyAppList();
void setScreenLock();
}
@@ -50,12 +52,16 @@ public class MainSContact {
void getBrowserLabel();
//获取浏览器黑白名单
void getBrowserWhiteList();
//获取内部网址管控
void getAppJump();
//应用自启
void getAppStart();
//获取时间管控
void getAppTimeControl();
//获取整机管控
void getSnTimeControl();
//获取所有应用使用时间
void getMyAppList();
//获取锁屏管控
void getScreenLock();

View File

@@ -10,17 +10,19 @@ import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiui.sn.bean.AppInfo;
import com.uiui.sn.bean.AppStart;
import com.uiui.sn.bean.BaseResponse;
import com.uiui.sn.bean.Label;
import com.uiui.sn.bean.SystemSettings;
import com.uiui.sn.bean.MyAppUsageBean;
import com.uiui.sn.bean.SystemSettingsSet;
import com.uiui.sn.bean.browser.BrowserApiData;
import com.uiui.sn.bean.browser.BrowserBean;
import com.uiui.sn.config.CommonConfig;
import com.uiui.sn.desktop.RunningAppManager;
import com.uiui.sn.disklrucache.CacheHelper;
import com.uiui.sn.manager.ControlManager;
import com.uiui.sn.network.NetInterfaceManager;
@@ -31,7 +33,6 @@ import com.uiui.sn.gson.GsonUtils;
import com.uiui.sn.utils.JGYUtils;
import com.uiui.sn.utils.SPUtils;
import com.uiui.sn.utils.ServiceAliveUtils;
import com.uiui.sn.utils.TimeUtils;
import com.uiui.sn.utils.URLUtils;
import com.uiui.sn.utils.Utils;
@@ -56,6 +57,7 @@ public class MainSPresenter implements MainSContact.Presenter {
private MainSContact.MainView mView;
private Context mContext;
private CacheHelper mCacheHelper;
private MMKV mMMKV = MMKV.defaultMMKV();
public MainSPresenter(Context context) {
this.mContext = context;
@@ -123,7 +125,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void checkUpdate() {
NetInterfaceManager.getInstance().checkAllAppUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().checkAllAppUpdate(true, getLifecycle(), new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
mView.checkUpdateFinish();
@@ -133,7 +135,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void checkFXYUpdate() {
NetInterfaceManager.getInstance().checkFXYAppUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().checkFXYAppUpdate(true, getLifecycle(), new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
mView.checkFXYUpdateFinish();
@@ -160,10 +162,10 @@ public class MainSPresenter implements MainSContact.Presenter {
if (code == 200) {
List<AppInfo> appInfoList = listBaseResponse.data;
if (appInfoList == null || appInfoList.size() == 0) {
mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, "");
mMMKV.encode(UrlAddress.GET_ALL_PACKAGE, "");
ApkUtils.writeAppPackageList(mContext, "");
} else {
mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, appInfoList.toString());
mMMKV.encode(UrlAddress.GET_ALL_PACKAGE, GsonUtils.toJSONString(appInfoList));
HashSet allPkgSet = new HashSet<String>();
for (AppInfo pkg : appInfoList) {
allPkgSet.add(pkg.getApp_package());
@@ -176,7 +178,7 @@ public class MainSPresenter implements MainSContact.Presenter {
}
JGYUtils.getInstance().deleteOtherApp();
} else {
mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, "");
mMMKV.encode(UrlAddress.GET_ALL_PACKAGE, "");
ApkUtils.writeAppPackageList(mContext, "");
}
}
@@ -197,7 +199,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getOverallApp() {
NetInterfaceManager.getInstance().getOverallApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().getOverallApp(true, getLifecycle(), new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
mView.setOverallApp();
@@ -248,7 +250,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getForceInstall() {
NetInterfaceManager.getInstance().getForceInstall(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().getForceInstall(true, getLifecycle(), new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
mView.setForceInstall();
@@ -429,6 +431,16 @@ public class MainSPresenter implements MainSContact.Presenter {
});
}
@Override
public void getAppJump() {
NetInterfaceManager.getInstance().getAppJump(new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
mView.setAppJump();
}
});
}
@Override
public void getAppStart() {
NetInterfaceManager.getInstance()
@@ -468,7 +480,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getAppTimeControl() {
NetInterfaceManager.getInstance().getAppTimeControl(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().getAppTimeControl(true, getLifecycle(), new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
mView.setAppTimeControl();
@@ -478,7 +490,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getSnTimeControl() {
NetInterfaceManager.getInstance().getSnTimeControl(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().getSnTimeControl(true, getLifecycle(), new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
mView.setSnTimeControl();
@@ -486,6 +498,16 @@ public class MainSPresenter implements MainSContact.Presenter {
});
}
@Override
public void getMyAppList() {
NetInterfaceManager.getInstance().getMyAppList(new NetInterfaceManager.MyAppListCallback() {
@Override
public void setMyAppList(List<MyAppUsageBean> myAppList) {
RunningAppManager.getInstance().syncAllAppUsageTime(myAppList);
}
});
}
@Override
public void getScreenLock() {
NetInterfaceManager.getInstance()

View File

@@ -15,6 +15,7 @@ import android.os.AsyncTask;
import android.os.Binder;
import android.os.IBinder;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
import com.blankj.utilcode.util.NetworkUtils;
@@ -205,6 +206,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
lifecycleSubject.onNext(ActivityEvent.DESTROY);
NetworkUtils.unregisterNetworkStatusChangedListener(this);
mPresenter.detachView();
unregisterReceivers();
}
public static MainSPresenter getPresenter() {
@@ -229,7 +231,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
am.setTime(aLong);
tPushInit();
NetInterfaceManager.getInstance().setPushTags(true, lifecycleSubject, new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().setPushTags(true, lifecycleSubject, new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
Log.e("TimeTask", "onComplete: ");
@@ -268,12 +270,23 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
});
}
private WifiReceiver mWifiReceiver;
private void registerReceivers() {
registerWiFiReceiver();
registerScreenReceiver();
}
private void unregisterReceivers() {
if (mWifiReceiver != null) {
unregisterReceiver(mWifiReceiver);
}
if (mScreenReceiver != null) {
unregisterReceiver(mScreenReceiver);
}
}
private WifiReceiver mWifiReceiver;
private void registerWiFiReceiver() {
if (mWifiReceiver == null) {
mWifiReceiver = new WifiReceiver();
@@ -342,6 +355,49 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
}
}
private ScreenReceiver mScreenReceiver;
private void registerScreenReceiver() {
if (mScreenReceiver == null) {
mScreenReceiver = new ScreenReceiver();
}
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(Intent.ACTION_USER_PRESENT);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_UNLOCKED);
registerReceiver(mScreenReceiver, filter);
}
private class ScreenReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e(TAG, "onReceive: " + action);
if (TextUtils.isEmpty(action)) {
Log.e(TAG, "onReceive: action is NULL");
return;
}
switch (action) {
case Intent.ACTION_USER_PRESENT:
mPresenter.getAppTimeControl();
break;
case Intent.ACTION_SCREEN_ON:
break;
case Intent.ACTION_SCREEN_OFF:
break;
case Intent.ACTION_USER_UNLOCKED:
break;
default:
break;
}
}
}
private interface Start {
void onstar(String key);
}
@@ -465,6 +521,11 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void setBrowserWhiteList() {
mPresenter.getAppJump();
}
@Override
public void setAppJump() {
mPresenter.getAppStart();
}
@@ -480,6 +541,11 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void setSnTimeControl() {
mPresenter.getMyAppList();
}
@Override
public void setMyAppList() {
mPresenter.getScreenLock();
}

View File

@@ -37,7 +37,6 @@ import com.uiui.sn.config.CommonConfig;
import com.uiui.sn.dialog.CustomDialog;
import com.uiui.sn.disklrucache.CacheHelper;
import com.uiui.sn.manager.ControlManager;
import com.uiui.sn.manager.ControlPanelManager;
import com.uiui.sn.manager.DeviceManager;
import com.uiui.sn.network.NetInterfaceManager;
import com.uiui.sn.receiver.BootReceiver;
@@ -466,7 +465,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
//显示所有的admin应用
private static final String JIGUANG_ADMIN_APP = "63";
/*投屏开关*/
private static final String SCRENN_SHARED = "74";
private static final String SCREEN_SHARED = "74";
/*移动热点开关*/
private static final String HOT_SPOT = "75";
/*桌面默认应用*/
@@ -583,7 +582,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
break;
case JIGUANG_APP_WEBSITE:
ToastUtil.debugShow("收到推送消息: app内部网址管控");
// NetInterfaceManager.getInstance().getAppJump(context);
setAppInsideNetwork(context, extras);
break;
case JIGUANG_REBOOT_DEVICES:
ToastUtil.debugShow("收到推送消息: 重启");
@@ -765,8 +764,9 @@ public class MessageReceiver extends XGPushBaseReceiver {
case JIGUANG_ADMIN_APP:
setAdminApp(context, extras);
break;
case SCRENN_SHARED:
case SCREEN_SHARED:
ToastUtil.debugShow("收到推送消息: 投屏开关");
setScreenShared(context, extras);
break;
case HOT_SPOT:
ToastUtil.debugShow("收到推送消息: 热点开关");
@@ -1229,6 +1229,22 @@ public class MessageReceiver extends XGPushBaseReceiver {
Log.e("setAppUpdate", Settings.System.getString(context.getContentResolver(), CommonConfig.AOLE_ACTION_APP_FORBID));
}
private void setAppInsideNetwork(Context context, String extras) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
int is_ground = jsonObject.get("is_ground").getAsInt();
if (is_ground == 0) {
boolean putString = Settings.System.putString(context.getContentResolver(), CommonConfig.AOLE_APP_WEB_WHITE_LIST, "");
Log.e(TAG, "setAppInsideNetwork: " + putString);
} else if (is_ground == 1) {
NetInterfaceManager.getInstance().getAppJump(new NetInterfaceManager.CompleteCallback() {
@Override
public void onComplete() {
}
});
}
}
private void setLock_screen(Context context, String jsonString) {
int type = 0;
JsonObject jSONObject = GsonUtils.getJsonObject(jsonString);
@@ -1477,6 +1493,11 @@ public class MessageReceiver extends XGPushBaseReceiver {
String app_url = jsonObject.get("app_url").getAsString();
}
private void setScreenShared(Context context, String extras) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
int projection_screen = jsonObject.get("projection_screen").getAsInt();
ControlManager.getInstance().setScreenShared(changeNum(projection_screen));
}
/**
* @param context
@@ -1553,4 +1574,6 @@ public class MessageReceiver extends XGPushBaseReceiver {
JGYUtils.getInstance().restorrNetwork();
}
}
}

View File

@@ -25,12 +25,14 @@ public class AppUsedTimeUtils {
@SuppressLint("StaticFieldLeak")
private static AppUsedTimeUtils sInstance;
private Context mContext;
private String app_package;
private long start_time;
private AppTimeinfo appTimeinfo;
// private AppTimeinfo appTimeinfo;
private AppUsedTimeUtils(Context context) {
this.mContext = context;
appTimeinfo = getAppTimeinfo();
// appTimeinfo = getAppTimeinfo();
}
public static void init(Context context) {
@@ -46,75 +48,91 @@ public class AppUsedTimeUtils {
return sInstance;
}
static class AppTimeinfo implements Serializable {
private static final long serialVersionUID = 5373751133823666192L;
AppTimeinfo() {
this.appPackageName = "";
this.endTime = 0;
this.startTime = 0;
}
private String appPackageName;
private long endTime;
private long startTime;
public String getAppPackageName() {
return appPackageName;
}
public void setAppPackageName(String appPackageName) {
this.appPackageName = appPackageName;
}
public long getEndTime() {
return endTime;
}
public void setEndTime(long endTime) {
this.endTime = endTime;
}
public long getStartTime() {
return startTime;
}
public void setStartTime(long startTime) {
this.startTime = startTime;
}
@NonNull
@Override
public String toString() {
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
}
public String getApp_package() {
return app_package;
}
synchronized public String getAppPackageName() {
appTimeinfo = getAppTimeinfo();
return appTimeinfo.getAppPackageName();
public void setApp_package(String app_package) {
this.app_package = app_package;
}
synchronized public long getStartTime() {
appTimeinfo = getAppTimeinfo();
return appTimeinfo.getStartTime();
public long getStart_time() {
return start_time;
}
synchronized public long getEndTime() {
appTimeinfo = getAppTimeinfo();
return appTimeinfo.getEndTime();
public void setStart_time(long start_time) {
this.start_time = start_time;
}
synchronized private AppTimeinfo getAppTimeinfo() {
String jsonString = Settings.System.getString(mContext.getContentResolver(), "runningAppInfo");
if (TextUtils.isEmpty(jsonString)) {
return new AppTimeinfo();
}
Log.e(TAG, "getAppTimeinfo: " + jsonString);
Type type = new TypeToken<AppTimeinfo>() {
}.getType();
Gson gson = new Gson();
AppTimeinfo appTimeinfo = gson.fromJson(jsonString, type);
return appTimeinfo;
}
// static class AppTimeinfo implements Serializable {
// private static final long serialVersionUID = 5373751133823666192L;
//
// AppTimeinfo() {
// this.appPackageName = "";
// this.endTime = 0;
// this.startTime = 0;
// }
//
// private String appPackageName;
// private long endTime;
// private long startTime;
//
// public String getAppPackageName() {
// return appPackageName;
// }
//
// public void setAppPackageName(String appPackageName) {
// this.appPackageName = appPackageName;
// }
//
// public long getEndTime() {
// return endTime;
// }
//
// public void setEndTime(long endTime) {
// this.endTime = endTime;
// }
//
// public long getStartTime() {
// return startTime;
// }
//
// public void setStartTime(long startTime) {
// this.startTime = startTime;
// }
//
// @NonNull
// @Override
// public String toString() {
// return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
// }
// }
// synchronized public String getAppPackageName() {
// appTimeinfo = getAppTimeinfo();
// return appTimeinfo.getAppPackageName();
// }
//
// synchronized public long getStartTime() {
// appTimeinfo = getAppTimeinfo();
// return appTimeinfo.getStartTime();
// }
//
// synchronized public long getEndTime() {
// appTimeinfo = getAppTimeinfo();
// return appTimeinfo.getEndTime();
// }
//
// synchronized private AppTimeinfo getAppTimeinfo() {
// String jsonString = Settings.System.getString(mContext.getContentResolver(), "runningAppInfo");
// if (TextUtils.isEmpty(jsonString)) {
// return new AppTimeinfo();
// }
// Log.e(TAG, "getAppTimeinfo: " + jsonString);
// Type type = new TypeToken<AppTimeinfo>() {
// }.getType();
// Gson gson = new Gson();
// AppTimeinfo appTimeinfo = gson.fromJson(jsonString, type);
// return appTimeinfo;
// }
}