package com.secondworld.sdk.utils;
|
|
import android.app.ActivityManager;
|
import android.content.Context;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiManager;
|
import android.os.Build;
|
import android.provider.Settings;
|
|
import com.secondworld.sdk.GameApp;
|
|
import java.net.NetworkInterface;
|
import java.util.Enumeration;
|
import java.util.Locale;
|
import java.util.UUID;
|
|
public class DeviceUtil {
|
|
public static final String FAKE_MAC = "02:00:00:00:00:00";
|
|
|
|
public static long getVersionCode() {
|
long appVersionCode = 0;
|
try {
|
PackageInfo packageInfo = GameApp.I.getApplicationContext()
|
.getPackageManager()
|
.getPackageInfo(GameApp.I.getPackageName(), 0);
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
appVersionCode = packageInfo.getLongVersionCode();
|
} else {
|
appVersionCode = packageInfo.versionCode;
|
}
|
} catch (PackageManager.NameNotFoundException e) {
|
LogUtil.e("getAppVersionCode", e);
|
}
|
return appVersionCode;
|
}
|
|
|
public static String getVersionName() {
|
String appVersionName = "";
|
try {
|
PackageInfo packageInfo = GameApp.I.getApplicationContext()
|
.getPackageManager()
|
.getPackageInfo(GameApp.I.getPackageName(), 0);
|
appVersionName = packageInfo.versionName;
|
} catch (PackageManager.NameNotFoundException e) {
|
LogUtil.e("getAppVersionName", e);
|
}
|
return appVersionName;
|
}
|
|
/**
|
* 获取当前设备总运行内存
|
* 单位为 byte
|
*
|
* @return
|
*/
|
public static long getTotalRAMSize() {
|
ActivityManager manager = (ActivityManager) GameApp.I.getSystemService(Context.ACTIVITY_SERVICE);
|
ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();
|
manager.getMemoryInfo(info);
|
return info.totalMem;
|
}
|
|
public static String getAndroidId() {
|
String ANDROID_ID = Settings.System.getString(GameApp.I.getContentResolver(), Settings.System.ANDROID_ID);
|
if (ANDROID_ID == null || ANDROID_ID.equals("9774d56d682e549c"))
|
return "";
|
return ANDROID_ID;
|
}
|
|
/**
|
* 唯一标识
|
*
|
* @return
|
*/
|
public static String getUniqueID() {
|
String uniqueID = SPUtils.get().getString(SPUtils.UNIQUE_ID, "");
|
if (!uniqueID.trim().isEmpty())
|
return uniqueID;
|
uniqueID = getAndroidId() + getLocalMac();
|
//自己生成的uid
|
if (uniqueID.trim().isEmpty())
|
uniqueID = UUID.randomUUID().toString();
|
|
uniqueID = Util.md5(uniqueID).toUpperCase();
|
|
SPUtils.get()
|
.edit()
|
.putString(SPUtils.UNIQUE_ID, uniqueID.trim())
|
.apply();
|
|
return uniqueID;
|
}
|
|
/**
|
* mac 地址
|
*
|
* @return
|
*/
|
public static String getLocalMac() {
|
String mac = SPUtils.get().getString(SPUtils.MAC, "");
|
if (!mac.trim().isEmpty())
|
return mac;
|
try {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
String interfaceName = "wlan0";
|
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
|
NetworkInterface intf = null;
|
while (interfaces.hasMoreElements()) {
|
intf = interfaces.nextElement();
|
if (!intf.getName().equalsIgnoreCase(interfaceName))
|
continue;
|
byte[] addresses = intf.getHardwareAddress();
|
if (mac != null) {
|
StringBuilder buf = new StringBuilder();
|
for (byte aMac : addresses) {
|
buf.append(String.format("%02X:", aMac));
|
}
|
if (buf.length() > 0) {
|
buf.deleteCharAt(buf.length() - 1);
|
}
|
mac = buf.toString();
|
}
|
break;
|
}
|
} else {
|
WifiManager wifi = (WifiManager) GameApp.I.getSystemService(Context.WIFI_SERVICE);
|
if (wifi != null) {
|
WifiInfo wifiInfo = wifi.getConnectionInfo();
|
if (wifiInfo != null) {
|
mac = wifiInfo.getMacAddress();
|
}
|
}
|
}
|
} catch (Throwable e) {
|
e.printStackTrace();
|
}
|
|
mac = mac.toUpperCase(Locale.ENGLISH);
|
|
if (mac.equals(FAKE_MAC))
|
mac = "";
|
|
SPUtils.get()
|
.edit()
|
.putString(SPUtils.MAC, mac.trim())
|
.apply();
|
|
return mac;
|
}
|
|
|
}
|