Merge branch 'dev_arch_opt_3.0' into 'dev_robobus-m1-p-app-module_1.0.0_230112_1.0.0'

Dev arch opt 3.0

See merge request zhjt/AndroidApp/MoGoEagleEye!523
This commit is contained in:
wangmingjun
2023-02-15 09:18:47 +00:00
30 changed files with 193 additions and 326 deletions

View File

@@ -2,6 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.eagle.core.utilcode.util">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

View File

@@ -5,9 +5,11 @@ import static android.Manifest.permission.CHANGE_WIFI_STATE;
import static android.Manifest.permission.INTERNET;
import static android.content.Context.WIFI_SERVICE;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
@@ -15,7 +17,10 @@ import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.provider.Settings;
import android.telephony.CellLocation;
import android.telephony.TelephonyManager;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;
import android.text.TextUtils;
import android.util.Log;
@@ -528,6 +533,41 @@ public final class DeviceUtils {
return prefix + UUID.nameUUIDFromBytes(id.getBytes()).toString().replace("-", "");
}
public static String getCellId() {
TelephonyManager tm = (TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
if (tm == null) {
return "";
}
PackageManager pm = Utils.getApp().getPackageManager();
boolean accessCoarseLocationPermission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, Utils.getApp().getPackageName()));
boolean accessFineLocationPermission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, Utils.getApp().getPackageName()));
if (!accessCoarseLocationPermission || !accessFineLocationPermission)
return "noPermission";
CellLocation location = null;
try {
location = tm.getCellLocation();
} catch (Exception e) {
e.printStackTrace();
}
if (location != null) {
// Gsm网络 , 联通移动的网络属于这一套
if (location instanceof GsmCellLocation) {
GsmCellLocation gsmLoc = (GsmCellLocation) location;
int cellid = gsmLoc.getCid();
return String.valueOf(cellid);
// Cdma网络 , 电信网络属于这一种
} else if (location instanceof CdmaCellLocation) {
CdmaCellLocation cdmaLoc = (CdmaCellLocation) location;
return String.valueOf(cdmaLoc.getBaseStationId());
}
}
return "";
}
/**
* 判断用户是否打开系统定位服务
*
@@ -574,10 +614,10 @@ public final class DeviceUtils {
// 中科创达 EB5获取SN
serial = (String) get.invoke(c, "persist.device.sn");
}
if (TextUtils.isEmpty(serial)) {
// 联想PAD 获取SN
serial = (String) get.invoke(c, "ro.odm.lenovo.gsn");
}
// if (TextUtils.isEmpty(serial)) {
// // 联想PAD 获取SN,2022-2023款PAD无法获取暂时不启用
// serial = (String) get.invoke(c, "ro.odm.lenovo.gsn");
// }
} catch (Exception e) {
e.printStackTrace();
}
@@ -609,6 +649,26 @@ public final class DeviceUtils {
return productModel;
}
/**
* @return 获取Fota系统版本
*/
public static String getFotaVersion() {
String fotaVersion = "";
try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
fotaVersion = (String) get.invoke(c, "ro.fota.version");
if (!TextUtils.isEmpty(fotaVersion)) {
fotaVersion = fotaVersion.trim();
}
} catch (Exception e) {
e.printStackTrace();
}
return fotaVersion;
}
private static String getSerialnoNumbers() {
final String serialnoStr = "[ro.boot.serialno]";
try {
@@ -633,4 +693,29 @@ public final class DeviceUtils {
}
return serialnoStr;
}
public static final String KEY_DEVICE_ID = "deviceId";
/**
* 获取设备SN信息首次获取后会存储SP后续获取都从SP获取
*
* @return 当前的设备SN信息优先使用设备固定的sn
*/
public static String getDeviceSN() {
String devicesSN = SPUtils.getInstance().getString(KEY_DEVICE_ID);
if (TextUtils.isEmpty(devicesSN)) {
// 获取设备唯一SN
devicesSN = getSerialNumber();
// 获取 android id of device
if (TextUtils.isEmpty(devicesSN)) {
devicesSN = getAndroidID();
// 获取随机的设备ID
if (TextUtils.isEmpty(devicesSN)) {
devicesSN = getUniqueDeviceId();
}
}
SPUtils.getInstance().put(KEY_DEVICE_ID, devicesSN);
}
return devicesSN;
}
}