version:2.3

fix:增加上传日志功能,优化一键加速功能
update:
This commit is contained in:
2022-02-11 09:53:30 +08:00
parent edf23945b5
commit 61ef0d7bfa
57 changed files with 4290 additions and 925 deletions

View File

@@ -6,7 +6,7 @@ import android.content.Intent;
import android.os.IBinder;
// 下载管理服务
public class MyDownloadService extends Service {
public class DownloadService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
flags = START_STICKY;

View File

@@ -22,8 +22,11 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.amap.api.location.AMapLocationClient;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.PackageNames;
import com.aoleyun.sn.network.api.newapi.SendScreenStatusApi;
import com.aoleyun.sn.rlog.LogDBManager;
import com.aoleyun.sn.service.main.MainService;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
@@ -417,11 +420,25 @@ public class GuardService extends Service {
if (elec == 50) {
start.onstar(SystemClock.elapsedRealtime());
}
} else if (Intent.ACTION_POWER_CONNECTED.equals(action)
|| Intent.ACTION_POWER_DISCONNECTED.equals(action)
|| Intent.ACTION_BATTERY_LOW.equals(action)
|| Intent.ACTION_BATTERY_OKAY.equals(action)
) {
} else {
if (Intent.ACTION_POWER_CONNECTED.equals(action)) {
LogDBManager.getInstance().creatOtherLog(LogDBManager.LOG_EVENT_BATTERY,
"开始充电", "rlectricity: " + JGYUtils.getInstance().getBatteryLevel() + "%");
}
if (Intent.ACTION_POWER_DISCONNECTED.equals(action)) {
LogDBManager.getInstance().creatOtherLog(LogDBManager.LOG_EVENT_BATTERY,
"停止充电", "rlectricity: " + JGYUtils.getInstance().getBatteryLevel() + "%");
}
if (Intent.ACTION_BATTERY_LOW.equals(action)) {
LogDBManager.getInstance().creatOtherLog(LogDBManager.LOG_EVENT_BATTERY,
"电量偏低", "rlectricity: " + JGYUtils.getInstance().getBatteryLevel() + "%");
}
if (Intent.ACTION_BATTERY_OKAY.equals(action)) {
LogDBManager.getInstance().creatOtherLog(LogDBManager.LOG_EVENT_BATTERY,
"电量充足", "rlectricity: " + JGYUtils.getInstance().getBatteryLevel() + "%");
}
setDefaultUSBStatus();
Log.e(TAG, action);
start.onstar(SystemClock.elapsedRealtime());
@@ -515,7 +532,7 @@ public class GuardService extends Service {
Log.e("SEND_DOWNLOAD_TIMES", "onComplete: ");
}
});
int userId = (int) SPUtils.get(GuardService.this, "admin_id", 0);
int userId = (int) SPUtils.get(GuardService.this, CommonConfig.ADMIN_ID, 0);
long appSize = task.getFileSize();
NetInterfaceManager.getInstance()
.getSendInfoApi()

View File

@@ -0,0 +1,189 @@
package com.aoleyun.sn.service.main;
import android.graphics.Bitmap;
import android.view.View;
import com.aoleyun.sn.base.BasePresenter;
import com.aoleyun.sn.base.BaseView;
import com.google.gson.JsonObject;
public class MainSContact {
public interface Presenter extends BasePresenter<MainView> {
//设置二维码
void getQRImage(String mac);
//获取学生信息
void getStudesInfo();
//获取设备锁定状态
void getLockedState();
//是否第一次联网
void getFirstConnect();
//关闭所有功能
void setDisableSetting();
//发送mac地址
void sendMACAddress();
//更新设备信息
void updateDeviceInfo();
//获取时间管控
void getSnTimeControl();
//获取电子书包激活码
void getEBagCode();
//设置击关推送别名
void setJpushAlias();
//设置极光推送平台标签
void setJpushPlatformTags(int platform);
//获取应用市场更新
void checkStoreUpdate();
//获取设备信息更新
void checkInfoUpdate();
//获取桌面升级
void checkDesktopUpdate();
//获取通知升级
void checkNotifyUpdate();
//获取浏览器升级
void checkBrowserUpdate();
//手动获取设备信息更新
void buttonCheckUpdate(View view);
//获取测试应用更新
void checkTestUpdate();
//开始
//设置极光推送标签
void setPushTags();
//获取开发者选项
void getDeveloper();
//获取设备后台设置
void getSystemSettingbegin();
//获取可被写入的安装包名
void getAppLimit();
//获取设备批次
void getDeviceBatch(String packageList);
//获取强制下载apk
void getForceDownload();
//获取浏览器上网管控设置
void getBrowserList();
//获取浏览器书签设置管控
void getBrowserBookmarks(String whitelist);
//设置白名单的url
void getBrowserWhiteList();
//获取应用图标桌面可见性管控
void getDesktopIcon();
//获取应用自启升级和网络权限管理
void getAppAutoStartUpdateAndNet();
//获取第三方应用子页面ID连网限制
void getAppIDControl();
//获取第三方应用内部网页跳转屏蔽
void setAppinsideWeb();
//获取系统其他管控设置
void setSystemSetting();
//获取系统默认程序设置
void getDefaultApp();
//获取自定义版本内置app
void getROMApp();
//设置开机动画
void setLogoImg();
//应用霸屏
void setTopApp();
//获取桌面
void getDefaultDesktop();
//获取关机时间
void getPoweroffTime();
//获取wifi密码
void getWiFiPasswd();
/*
* MainService
* */
//获取屏幕锁状态
void getScreenLockState();
}
public interface MainView extends BaseView {
//获取二维码
void setQRImage(Bitmap qrImage);
//设置批次信息
void setBatchText(String text, int visibility);
//设置班级信息
void setClassText(String text, int visibility);
//设置学号信息
void setNumberText(String text, int visibility);
//设置姓名信息
void setNameText(String text, int visibility);
//设置头像
void setHead(String url);
//获取设备锁定状态
void setLockedState(boolean loocked);
//是否第一次联网
void setFirstConnect(boolean state);
//发送mac地址
void sendMACFinish();
//更新设备信息
void updateDeviceInfoFinish();
//获取时间管控
void getSnTimeControlFinish();
//获取电子书包激活码
void getEBagCodeFinish();
//设置击关推送别名
void setAliasFinish();
//设置极光推送平台标签
void setJpushPlatformTagsFinish();
//获取应用市场更新
void checkStoreUpdateFinish();
//获取设备信息更新
void checkInfoUpdateFinish();
//获取桌面升级
void checkDesktopUpdateFinish();
//获取通知升级
void checkNotifyUpdateFinish();
//获取浏览器升级
void checkBrowserUpdateFinish();
//手动获取设备信息更新
void buttonCheckUpdateFinish(boolean update, JsonObject jsonObject);
//获取测试应用更新
void checkTestUpdateFinish();
//开始
//设置极光推送标签
void setTagsFinish(boolean noTag);
//获取开发者选项结束
void getDeveloperFinish();
//设置设备后台设置
void getSystemSettingbegin();
//获取可被写入的安装包名结束
void getAppLimitFinish(String packageList);
//获取设备批次结束
void getDeviceBatchFinish();
//获取强制下载apk结束
void getForceDownloadFinish();
//获取浏览器上网管控设置结束
void getBrowserListFinish(String whitelist);
//获取浏览器书签设置管控结束
void getBrowserBookmarksFinish();
//获取应用图标桌面可见性管控结束
void getDesktopIconFinish();
//获取应用自启升级和网络权限管理结束
void getAppAutoStartUpdateAndNetFinish();
//获取第三方应用子页面ID连网限制结束
void getAppIDControlFinish();
//获取第三方应用内部网页跳转屏蔽结束
void setAppinsideWebFinish();
//获取系统其他管控设置结束
void setSystemSettingFinish();
//获取系统默认程序设置
void setDefaultAppFinish();
//获取自定义版本内置app
void getROMAppFinish();
//设置开机动画
void setLogoImgFinish();
//获取应用霸屏结束
void setTopAppFinish();
//获取桌面结束
void getDefaultDesktopFinish();
//获取关机时间
void setPoweroffTime();
//获取wifi密码结束
void setWiFiPasswd();
/*
* MainService
* */
//设置屏幕锁状态结束
void setScreenLockStateFinish(boolean locked, String tips);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
package com.aoleyun.sn.service;
package com.aoleyun.sn.service.main;
import android.annotation.SuppressLint;
import android.app.NotificationChannel;
@@ -12,6 +12,10 @@ import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.IBinder;
import android.os.SystemClock;
@@ -30,14 +34,19 @@ import androidx.core.app.NotificationManagerCompat;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.action.JGYActions;
import com.aoleyun.sn.activity.main.MainActivity;
import com.aoleyun.sn.activity.main.MainContact;
import com.aoleyun.sn.activity.main.MainPresenter;
import com.aoleyun.sn.activity.main.MainAContact;
import com.aoleyun.sn.activity.main.MainAPresenter;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.PoweroffBean;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.comm.PackageNames;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.receiver.BootReceiver;
import com.aoleyun.sn.rlog.LogDBManager;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.ForegroundAppUtil;
import com.aoleyun.sn.utils.JGYUtils;
@@ -59,7 +68,9 @@ import com.trello.rxlifecycle2.android.ActivityEvent;
import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -71,11 +82,12 @@ import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.subjects.BehaviorSubject;
public class MainService extends Service implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider<ActivityEvent> {
public class MainService extends Service implements MainSContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider<ActivityEvent> {
@SuppressLint("StaticFieldLeak")
public static MainPresenter mPresenter;
public static MainSPresenter mPresenter;
private static final String TAG = MainService.class.getSimpleName();
public static boolean netWorkIsRunning = false;
private MMKV mMMKV = MMKV.defaultMMKV();
@Override
public void onDisconnected() {
@@ -85,13 +97,79 @@ public class MainService extends Service implements MainContact.MainView, Networ
@Override
public void onConnected(NetworkUtils.NetworkType networkType) {
Log.e("OnNetworkStatusChanged", "onConnected: ");
runningTime = SystemClock.elapsedRealtime();
//直接获取数据
ToastUtil.betaShow("网络已连接");
Utils.getPublicIP(this);
mPresenter.getLockedState();
Log.e("OnNetworkStatusChanged", "onConnected: " + Utils.getWifiAlias(this));
start.onstar(SystemClock.elapsedRealtime());
Utils.getPublicIP(this);
}
private WifiReceiver mWifiReceiver;
private void registerWiFiReceiver() {
if (mWifiReceiver == null) {
mWifiReceiver = new WifiReceiver();
}
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
filter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
filter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
filter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION);
filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mWifiReceiver, filter);
}
public class WifiReceiver extends BroadcastReceiver {
private static final String TAG = "wifiReceiver";
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case WifiManager.RSSI_CHANGED_ACTION:
Log.e(TAG, "wifi信号强度变化");
break;
//wifi连接上与否
case WifiManager.NETWORK_STATE_CHANGED_ACTION:
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
Log.e(TAG, "wifi断开");
LogDBManager.getInstance().creatNetChangeLog("wifi断开", Utils.transferLongToDate(System.currentTimeMillis()));
} else if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
//获取当前wifi名称
String oldSSID = mMMKV.decodeString("WiFiSSID", "");
Log.e(TAG, "oldSSID " + oldSSID);
String newSSID = wifiInfo.getSSID();
Log.e(TAG, "连接到网络 " + newSSID);
if (!oldSSID.equals(newSSID)) {
LogDBManager.getInstance().creatNetChangeLog("", oldSSID + " change to: " + newSSID);
runningTime = SystemClock.elapsedRealtime();
//直接获取数据
mPresenter.getLockedState();
} else {
LogDBManager.getInstance().creatNetChangeLog("接入WiFi",
"connect to: " + newSSID + " time: "
+ Utils.transferLongToDate(System.currentTimeMillis()));
}
mMMKV.encode("WiFiSSID", Utils.getWifiAlias(context));
}
break;
//wifi打开与否
case WifiManager.WIFI_STATE_CHANGED_ACTION:
int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);
if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
Log.e(TAG, "系统关闭wifi");
} else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
Log.e(TAG, "系统开启wifi");
}
break;
default:
}
}
}
private final BehaviorSubject<ActivityEvent> lifecycleSubject = BehaviorSubject.create();
@@ -162,14 +240,22 @@ public class MainService extends Service implements MainContact.MainView, Networ
public void onCreate() {
super.onCreate();
lifecycleSubject.onNext(ActivityEvent.CREATE);
mPresenter = new MainPresenter(this);
mPresenter = new MainSPresenter(this);
mPresenter.attachView(this);
mPresenter.setProvider(this);
if ((int) SPUtils.get(this, "first_connect", 0) == 0) {
if ((int) SPUtils.get(this, CommonConfig.JGY_FIRST_CONNECT, 0) == 0) {
// TODO: 2021/5/26 待底层修改临时解决办法
Log.e(TAG, "onCreate: " + "Disable All Settings");
mPresenter.setDisableSetting();
}
int oldVersionCode = (int) SPUtils.get(this, CommonConfig.SN_VERSIONCODE, 0);
if (oldVersionCode < BuildConfig.VERSION_CODE) {
Log.e(TAG, "onCreate: " + "upgrade successful");
} else {
mPresenter.getFirstConnect();
mPresenter.getLockedState();
}
SPUtils.put(this, CommonConfig.SN_VERSIONCODE, BuildConfig.VERSION_CODE);
registerReceivers();
NetworkUtils.registerNetworkStatusChangedListener(this);
addShortcut();
@@ -209,23 +295,10 @@ public class MainService extends Service implements MainContact.MainView, Networ
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
bootIntent.setComponent(new ComponentName(PackageNames.APPSTORE, PackageNames.APP_STORE_BOOTRECEIVER));
sendBroadcast(bootIntent);
// JPushInterface.init(this);
if (MainActivity.isForeground) {
Log.e(TAG, "onStartCommand: MainService: isForeground: " + MainActivity.isForeground);
} else {
// if (((SystemClock.elapsedRealtime() - startCommandTime) < 60000) && startCommandTime != 0) {
// Log.e(TAG, "onStartCommand: " + "启动时间过短");
// //一分钟内防止多次调用
// } else {
// mPresenter.getFirstConnect();
// mPresenter.getLockedState();
// startCommandTime = runningTime = SystemClock.elapsedRealtime();
// Log.e(TAG, "onStartCommand: isForeground: " + MainActivity.isForeground);
// Log.e(TAG, "onStartCommand: " + (SystemClock.elapsedRealtime() - startCommandTime));
// }
start.onstar(SystemClock.elapsedRealtime());
Log.e(TAG, "onStartCommand: " + (SystemClock.elapsedRealtime() - startCommandTime) + "ms");
}
// mPresenter.getFirstConnect();
// mPresenter.getLockedState();
start.onstar(SystemClock.elapsedRealtime());
Log.e(TAG, "onStartCommand: " + (SystemClock.elapsedRealtime() - startCommandTime) + "ms");
return START_STICKY;
}
@@ -269,7 +342,7 @@ public class MainService extends Service implements MainContact.MainView, Networ
}
private void setStatusbar() {
String status = (String) SPUtils.get(this, JGYActions.ACTION_STATUS_BAR_STATUS, "");
String status = (String) SPUtils.get(this, JGYActions.ACTION_STATUSBAR_STATUS, "");
Log.e(TAG, "setStatusbar: String: " + status);
if (TextUtils.isEmpty(status)) {
Log.e(TAG, "setStatusbar: " + "status is NULL");
@@ -280,6 +353,7 @@ public class MainService extends Service implements MainContact.MainView, Networ
}
private void registerReceivers() {
registerWiFiReceiver();
registerLockScreenReceiver();
registerTimeReceiver();
registerInstallReceiver();
@@ -295,6 +369,9 @@ public class MainService extends Service implements MainContact.MainView, Networ
if (null != mInstallReceiver) {
unregisterReceiver(mInstallReceiver);
}
if (null != mWifiReceiver) {
unregisterReceiver(mWifiReceiver);
}
}
private static WindowManager windowManager;
@@ -483,6 +560,7 @@ public class MainService extends Service implements MainContact.MainView, Networ
} else if (Intent.ACTION_TIME_TICK.equals(intent.getAction())) {
Log.e("TimeChangedReceiver", "onReceive:" + "time tick");
checkShutdownTime();
checkUploadLogTime();
setFloatingWindow(MainService.this);
} else if (ACTION_UPDATE.equals(intent.getAction())) {
setFloatingWindow(MainService.this);
@@ -517,6 +595,23 @@ public class MainService extends Service implements MainContact.MainView, Networ
}
}
private static final String UPLOAD_LOG_TIME = "23:00:00";
private void checkUploadLogTime() {
int is_log_type = (int) SPUtils.get(MainService.this, CommonConfig.UPLOAD_LOG_TYPE, 0);
if (is_log_type == 0) {
Log.e(TAG, "checkUploadLogTime: " + "is_log_type = " + is_log_type);
} else {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String nowTime = sdf.format(date);
Log.e(TAG, "checkUploadLogTime: " + nowTime);
if (UPLOAD_LOG_TIME.equals(nowTime)) {
NetInterfaceManager.getInstance().uploadLogFile();
}
}
}
synchronized private void setFloatingWindow(Context context) {
ForegroundAppUtil.openTopApp(context);
long nowTime = System.currentTimeMillis();
@@ -652,7 +747,28 @@ public class MainService extends Service implements MainContact.MainView, Networ
if (loocked) {
ToastUtil.betaShow("设备已上锁");
//上传APP信息
ApkUtils.getAppInfo(this);
NetInterfaceManager.getInstance().sendRunningAppInfo(new NetInterfaceManager.ObserverCallback() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseResponse response) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
SaveListUtils.getList();
if (netWorkIsRunning) {
//如果正在执行不执行
@@ -851,7 +967,7 @@ public class MainService extends Service implements MainContact.MainView, Networ
@Override
public void setWiFiPasswd() {
MMKV.defaultMMKV().encode(MainPresenter.GET_SETTING_FINISH_TIME, System.currentTimeMillis());
MMKV.defaultMMKV().encode(MainAPresenter.GET_SETTING_FINISH_TIME, System.currentTimeMillis());
netWorkIsRunning = false;
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - runningTime) + " ms");
}