From 60d98b71669b9dbf22069a3025506332f4975832 Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Mon, 26 Sep 2022 21:01:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9usb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../com/uiui/sn/base/BaseApplication.java | 2 +- .../java/com/uiui/sn/bean/AppUsageTime.java | 11 ++++ .../uiui/sn/desktop/RunningAppManager.java | 35 ++++++++++-- .../com/uiui/sn/manager/ControlManager.java | 54 +++++++++++-------- .../uiui/sn/network/NetInterfaceManager.java | 3 ++ .../uiui/sn/receiver/APKinstallReceiver.java | 2 +- .../com/uiui/sn/service/ManagerService.java | 2 +- .../uiui/sn/service/main/MainSPresenter.java | 7 +++ .../com/uiui/sn/service/main/MainService.java | 4 +- .../com/uiui/sn/tpush/MessageReceiver.java | 25 ++------- 11 files changed, 95 insertions(+), 54 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 449aa44..672be34 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,8 +67,8 @@ android { productFlavors { beta { flavorDimensions "default" - versionCode 32 - versionName "4.1" + versionCode 33 + versionName "4.2" } official { diff --git a/app/src/main/java/com/uiui/sn/base/BaseApplication.java b/app/src/main/java/com/uiui/sn/base/BaseApplication.java index 05c5e78..3f8761e 100644 --- a/app/src/main/java/com/uiui/sn/base/BaseApplication.java +++ b/app/src/main/java/com/uiui/sn/base/BaseApplication.java @@ -74,7 +74,7 @@ public class BaseApplication extends Application { RunningAppManager.init(this); TimeControlManager.init(this); ControlManager.init(this); - ControlPanelManager.init(this); +// ControlPanelManager.init(this); DeviceManager.init(this); AmapManager.init(this); NetInterfaceManager.init(this); diff --git a/app/src/main/java/com/uiui/sn/bean/AppUsageTime.java b/app/src/main/java/com/uiui/sn/bean/AppUsageTime.java index 86655ca..be7cfb1 100644 --- a/app/src/main/java/com/uiui/sn/bean/AppUsageTime.java +++ b/app/src/main/java/com/uiui/sn/bean/AppUsageTime.java @@ -1,5 +1,10 @@ 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 AppUsageTime implements Serializable { @@ -36,4 +41,10 @@ public class AppUsageTime implements Serializable { public void setUsageTime(long usageTime) { this.usageTime = usageTime; } + + @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 d844bab..0188cae 100644 --- a/app/src/main/java/com/uiui/sn/desktop/RunningAppManager.java +++ b/app/src/main/java/com/uiui/sn/desktop/RunningAppManager.java @@ -12,6 +12,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.os.Build; import android.os.PowerManager; @@ -33,6 +34,7 @@ import com.uiui.sn.bean.AppUsageTime; 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.utils.JGYUtils; @@ -53,6 +55,8 @@ 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; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -68,6 +72,7 @@ public class RunningAppManager { @SuppressLint("StaticFieldLeak") private static RunningAppManager mRunningAppManager; private Context mContext; + private CacheHelper mCacheHelper; private MMKV mMMKV = MMKV.defaultMMKV(); public static final String RemainingTimeMap = "RemainingTimeMap_KEY"; @@ -101,8 +106,9 @@ 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); String remainsTimeJson = mMMKV.decodeString(RemainingTimeMap, ""); @@ -205,7 +211,7 @@ public class RunningAppManager { Log.i(TAG, "checkForegroundAppName: 没有切换应用"); if (RunningAppManager.getInstance().inControlTime(appPackageName)) { removeTask(topPackage); - JGYUtils.getInstance().killBackgroundProcesses(topPackage); + killApp(); gotoLauncher(); } else { Log.i(TAG, "checkForegroundAppName: 没有管控"); @@ -226,7 +232,7 @@ public class RunningAppManager { if (RunningAppManager.getInstance().inControlTime(appPackageName)) { Log.i(TAG, "checkForegroundAppName: 没有剩余时间2"); removeTask(topPackage); - JGYUtils.getInstance().killBackgroundProcesses(topPackage); + killApp(); gotoLauncher(); } else { RunningAppManager.getInstance().recordPackageOpenTime(topPackage); @@ -236,6 +242,23 @@ public class RunningAppManager { saveAppRemainingTime(); } + private void killApp() { + PackageManager pm = mContext.getPackageManager(); + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + List launcherApp = pm.queryIntentActivities(intent, 0); + List appList = launcherApp.stream().map(resolveInfo -> resolveInfo.activityInfo.packageName).collect(Collectors.toList()); + Log.e(TAG, "killApp: " + appList); + for (String pkg : appList) { + if (JGYUtils.fuxiaoying.equals(pkg) + || BuildConfig.APPLICATION_ID.equals(pkg) + ) { + continue; + } + JGYUtils.getInstance().killBackgroundProcesses(pkg); + } + } + private TimeChangedReceiver mTimeChangedReceiver; /** @@ -526,9 +549,12 @@ public class RunningAppManager { singleAppUsageTime.setUsageTime(1); } else { singleAppUsageTime = mAllAppUsageTime.get(pkg); - singleAppUsageTime.setUsageTime(singleAppUsageTime.getUsageTime() + 1); + long singleTime = singleAppUsageTime.getUsageTime(); + Log.e(TAG, "reduceAppRemainingTime: " + singleTime); + singleAppUsageTime.setUsageTime(singleTime + 1); } mAllAppUsageTime.put(pkg, singleAppUsageTime); + Log.e(TAG, "reduceAppRemainingTime: mAllAppUsageTime = " + mAllAppUsageTime.toString()); Log.i(TAG, "reduceAppRemainingTime: " + appTimeControl.getToday_time()); long remainingTime = appTimeControl.getToday_time() - time; if (remainingTime < 0) { @@ -555,6 +581,7 @@ public class RunningAppManager { private String getAppName(String pkg) { if (TextUtils.isEmpty(pkg)) return "未知"; + PackageManager pm = mContext.getPackageManager(); PackageInfo info = null; try { diff --git a/app/src/main/java/com/uiui/sn/manager/ControlManager.java b/app/src/main/java/com/uiui/sn/manager/ControlManager.java index 5a2b095..b0e254b 100644 --- a/app/src/main/java/com/uiui/sn/manager/ControlManager.java +++ b/app/src/main/java/com/uiui/sn/manager/ControlManager.java @@ -12,6 +12,7 @@ import android.util.Log; import com.google.gson.JsonObject; import com.tencent.mmkv.MMKV; +import com.uiui.sn.BuildConfig; import com.uiui.sn.bean.SystemSettings; import com.uiui.sn.config.CommonConfig; import com.uiui.sn.utils.ApkUtils; @@ -70,8 +71,8 @@ public class ControlManager { } SystemSettings systemSettings = GsonUtils.toJavaObject(jsonString, SystemSettings.class); if (null != systemSettings) { -// setUSBstate(systemSettings); - ControlPanelManager.getInstance().setUsbStatus(systemSettings.getSetting_usb()); + setUSBstate(systemSettings); +// ControlPanelManager.getInstance().setUsbStatus(systemSettings.getSetting_usb()); setPhoneList(systemSettings); setBluetooth(systemSettings); setHotspot(systemSettings); @@ -100,8 +101,8 @@ public class ControlManager { Log.e(TAG, "setSystemSetting: SystemSettings is NULL"); return; } -// setUSBstate(systemSettings); - ControlPanelManager.getInstance().setUsbStatus(systemSettings.getSetting_usb()); + setUSBstate(systemSettings); +// ControlPanelManager.getInstance().setUsbStatus(systemSettings.getSetting_usb()); setPhoneList(systemSettings); setBluetooth(systemSettings); setHotspot(systemSettings); @@ -179,6 +180,30 @@ public class ControlManager { } } + public void setUSBstate(String action) { + Log.e("setUSBstate", "setting_usb:" + action); + boolean qch_usb_choose = Settings.System.putString(mResolver, "qch_usb_choose", action); + Log.e("setUSBstate", "qch_usb_choose:" + qch_usb_choose); + String usbStatus = ""; + switch (action) { + case "usb_charge": + usbStatus = CommonConfig.AOLE_ACTION_USB_USB_CHARGE; + break; + case "usb_mtp": + usbStatus = CommonConfig.AOLE_ACTION_USB_USB_MTP; + break; +// case "usb_midi": +// usbStatus = CommonConfig.AOLE_ACTION_USB_USB_MIDI; +// break; + default: + usbStatus = CommonConfig.AOLE_ACTION_USB_USB_CHARGE; + break; + } + Intent usbIntent = new Intent(usbStatus).setPackage("com.android.settings"); +// if (!BuildConfig.DEBUG) + mContext.sendBroadcast(usbIntent); + } + /** * usb连接模式管控 * @@ -202,21 +227,6 @@ public class ControlManager { } } - /** - * usb连接模式管控 - */ - public void setUSBstate(String action) { - //USB数据功能管控 - //仅充电:usb_charge - //MTP模式:usb_mtp - //Midi模式:usb_midi - if (!DeviceManager.isDebugMode()) { - Log.e(TAG, "qch_usb_choose:" + action); - Intent usbIntent = new Intent(action).setPackage("com.android.settings"); - mContext.sendBroadcast(usbIntent); - } - } - private void setPhoneList(SystemSettings settings) { //设置电话功能,电话白名单 int setting_call = changeNum(settings.getSetting_call()); @@ -731,8 +741,8 @@ public class ControlManager { //仅充电:usb_charge //MTP模式:usb_mtp //Midi模式:usb_midi -// String setting_usb = Settings.System.getString(mResolver, "qch_usb_choose"); - String setting_usb = MMKV.defaultMMKV().decodeString(ControlPanelManager.KEY_USB_STATUS, "usb_charge"); + String setting_usb = Settings.System.getString(mResolver, "qch_usb_choose"); +// String setting_usb = MMKV.defaultMMKV().decodeString(ControlPanelManager.KEY_USB_STATUS, "usb_charge"); Log.e("SystemSetting", "setting_usb:" + setting_usb); String usbStatus = ""; if (TextUtils.isEmpty(setting_usb)) { @@ -856,7 +866,7 @@ public class ControlManager { if (state == 0) { // setBluetooth(0); // setHotspot(0); - setUSBstate(CommonConfig.AOLE_ACTION_USB_USB_MTP); +// setUSBstate(CommonConfig.AOLE_ACTION_USB_USB_MTP); } } 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 72022b3..1af7ad2 100644 --- a/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java @@ -1856,6 +1856,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()); HashSet allAppPkg = new HashSet<>(); for (AppInfo appInfo : appInfoList) { allAppPkg.add(appInfo.getApp_package()); @@ -1865,9 +1866,11 @@ public class NetInterfaceManager { ApkUtils.writeAppPackageList(mContext, allPkgSet); getAppStart(appInfoList); } else { + mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, ""); ApkUtils.writeAppPackageList(mContext, ""); } } else { + mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, ""); ApkUtils.writeAppPackageList(mContext, ""); } } diff --git a/app/src/main/java/com/uiui/sn/receiver/APKinstallReceiver.java b/app/src/main/java/com/uiui/sn/receiver/APKinstallReceiver.java index 9d712d4..a0a6c21 100644 --- a/app/src/main/java/com/uiui/sn/receiver/APKinstallReceiver.java +++ b/app/src/main/java/com/uiui/sn/receiver/APKinstallReceiver.java @@ -88,7 +88,7 @@ public class APKinstallReceiver extends BroadcastReceiver { private static void sendAppInfo() { Observable.create((ObservableEmitter emitter) -> newAppListener = emitter::onNext) - .throttleLast(5, TimeUnit.SECONDS) + .throttleLast(3, TimeUnit.MINUTES) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { diff --git a/app/src/main/java/com/uiui/sn/service/ManagerService.java b/app/src/main/java/com/uiui/sn/service/ManagerService.java index 2bb33ad..4bf3250 100644 --- a/app/src/main/java/com/uiui/sn/service/ManagerService.java +++ b/app/src/main/java/com/uiui/sn/service/ManagerService.java @@ -503,7 +503,7 @@ public class ManagerService extends Service implements NetworkUtils.OnNetworkSta if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { } else if (Intent.ACTION_POWER_CONNECTED.equals(action) || Intent.ACTION_POWER_DISCONNECTED.equals(action)) { - ControlManager.getInstance().setDefaultUSBstate(); +// ControlManager.getInstance().setDefaultUSBstate(); } else if (Intent.ACTION_BATTERY_LOW.equals(action) || Intent.ACTION_BATTERY_OKAY.equals(action)) { } 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 190ba00..4b22b17 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 @@ -21,8 +21,10 @@ 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.disklrucache.CacheHelper; import com.uiui.sn.manager.ControlManager; import com.uiui.sn.network.NetInterfaceManager; +import com.uiui.sn.network.UrlAddress; import com.uiui.sn.service.ManagerService; import com.uiui.sn.utils.ApkUtils; import com.uiui.sn.gson.GsonUtils; @@ -53,9 +55,11 @@ public class MainSPresenter implements MainSContact.Presenter { private MainSContact.MainView mView; private Context mContext; + private CacheHelper mCacheHelper; public MainSPresenter(Context context) { this.mContext = context; + this.mCacheHelper = new CacheHelper(context); } private BehaviorSubject lifecycle; @@ -156,8 +160,10 @@ public class MainSPresenter implements MainSContact.Presenter { if (code == 200) { List appInfoList = listBaseResponse.data; if (appInfoList == null || appInfoList.size() == 0) { + mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, ""); ApkUtils.writeAppPackageList(mContext, ""); } else { + mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, listBaseResponse.toString()); HashSet allPkgSet = new HashSet(); for (AppInfo pkg : appInfoList) { allPkgSet.add(pkg.getApp_package()); @@ -170,6 +176,7 @@ public class MainSPresenter implements MainSContact.Presenter { } JGYUtils.getInstance().deleteOtherApp(); } else { + mCacheHelper.put(UrlAddress.GET_ALL_PACKAGE, ""); ApkUtils.writeAppPackageList(mContext, ""); } } diff --git a/app/src/main/java/com/uiui/sn/service/main/MainService.java b/app/src/main/java/com/uiui/sn/service/main/MainService.java index 8a8e7e7..d01ca36 100644 --- a/app/src/main/java/com/uiui/sn/service/main/MainService.java +++ b/app/src/main/java/com/uiui/sn/service/main/MainService.java @@ -121,6 +121,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo mPresenter.getAllApp(); TimeTask task = new TimeTask(); task.execute("ntp.aliyun.com"); + NetInterfaceManager.getInstance().SendAppInstallInfo(); } @Override @@ -188,7 +189,8 @@ public class MainService extends Service implements MainSContact.MainView, Netwo SPUtils.put(this, CommonConfig.SN_VERSIONCODE, BuildConfig.VERSION_CODE); registerReceivers(); NetworkUtils.registerNetworkStatusChangedListener(this); - ControlManager.getInstance().setDefaultUSBstate(); +// ControlManager.getInstance().setDefaultUSBstate(); + NetInterfaceManager.getInstance().SendAppInstallInfo(); } @Override diff --git a/app/src/main/java/com/uiui/sn/tpush/MessageReceiver.java b/app/src/main/java/com/uiui/sn/tpush/MessageReceiver.java index f242dac..f76b074 100644 --- a/app/src/main/java/com/uiui/sn/tpush/MessageReceiver.java +++ b/app/src/main/java/com/uiui/sn/tpush/MessageReceiver.java @@ -885,26 +885,7 @@ public class MessageReceiver extends XGPushBaseReceiver { if (!TextUtils.isEmpty(jsonString)) { JsonObject jsonObject = GsonUtils.getJsonObject(jsonString); String setting_usb = jsonObject.get("setting_usb").getAsString(); - ControlPanelManager.getInstance().setUsbStatus(setting_usb); -// boolean qch_usb_choose = JGYUtils.putString(context.getContentResolver(), "qch_usb_choose", setting_usb); -// Log.e("setUsbState:", JGYUtils.get(context.getContentResolver(), "qch_usb_choose")); -// String usbStatus = ""; -// switch (setting_usb) { -// case "usb_charge": -// usbStatus = AOLE_ACTION_USB_USB_CHARGE; -// break; -// case "usb_mtp": -// usbStatus = AOLE_ACTION_USB_USB_MTP; -// break; -//// case "usb_midi": -//// usbStatus = CommonConfig.AOLE_ACTION_USB_USB_MIDI; -//// break; -// default: -// usbStatus = AOLE_ACTION_USB_USB_CHARGE; -// break; -// } -// Intent usbIntent = new Intent(usbStatus).setPackage("com.android.settings"); -// context.sendBroadcast(usbIntent); + ControlManager.getInstance().setUSBstate(setting_usb); } else { ToastUtil.debugShow("setUsbState jsonString is NULL"); } @@ -1566,9 +1547,9 @@ public class MessageReceiver extends XGPushBaseReceiver { private void oneKeyNetwork(Context context, String extras) { JsonObject jsonObject = GsonUtils.getJsonObject(extras); int is_network = jsonObject.get("is_network").getAsInt(); - if (is_network==1){ + if (is_network == 1) { JGYUtils.getInstance().oneKeyDisconnection(); - }else { + } else { JGYUtils.getInstance().restorrNetwork(); } }