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.GameAppProxy; 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 = GameAppProxy.app.getApplicationContext() .getPackageManager() .getPackageInfo(GameAppProxy.app.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 = GameAppProxy.app.getApplicationContext() .getPackageManager() .getPackageInfo(GameAppProxy.app.getPackageName(), 0); appVersionName = packageInfo.versionName; } catch (PackageManager.NameNotFoundException e) { LogUtil.e("getAppVersionName", e); } return appVersionName; } /** * 获取当前设备总运行内存 * 单位为 byte * * @return */ public static long getTotalRAMSize() { ActivityManager manager = (ActivityManager) GameAppProxy.app.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(GameAppProxy.app.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 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) GameAppProxy.app.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; } }