/** * @description: * @author chenshiqiang E-mail:csqwyyx@163.com * @date 2014年4月22日 下午8:58:21 * @version 1.0 */ package com.csq.thesceneryalong.utils; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.UUID; import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo; import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.format.Formatter; import android.util.DisplayMetrics; import android.util.Log; import com.csq.thesceneryalong.app.App; public class DeviceUtil { /** * @description: 获得轨迹的唯一标识,时间+DeviceId/UUID * @author: chenshiqiang E-mail:csqwyyx@163.com * @return */ public static String getTrackUniqueMark(){ String u = getDeviceId(); if(TextUtils.isEmpty(u)){ u = getUUID(); } return DateUtils.getFormatedDateYMDHMSFile(System.currentTimeMillis()) + "_" + u; } /** * @description: 获取Android设备的唯一识别码 * @author: chenshiqiang E-mail:csqwyyx@163.com */ public static String getUUID(){ final TelephonyManager tm = (TelephonyManager) App.app.getSystemService(Context.TELEPHONY_SERVICE); final String tmDevice, tmSerial, androidId; tmDevice = "" + tm.getDeviceId(); tmSerial = "" + tm.getSimSerialNumber(); androidId = "" + android.provider.Settings.Secure.getString(App.app.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode()); return deviceUuid.toString(); } /** * @description: Android系统为开发者提供的用于标识手机设备的串号,也是各种方法中普适性较高的, * 可以说几乎所有的设备都可以返回这个串号,并且唯一性良好 * 它会根据不同的手机设备返回IMEI,MEID或者ESN码 * 获取DEVICE_ID需要READ_PHONE_STATE权限 * @author: chenshiqiang E-mail:csqwyyx@163.com * @return */ public static String getDeviceId(){ TelephonyManager tm = (TelephonyManager) App.app.getSystemService(Context.TELEPHONY_SERVICE); return tm.getDeviceId(); } public static String getMacAddress() { String result = ""; WifiManager wifiManager = (WifiManager) App.app.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); result = wifiInfo.getMacAddress(); return result; } public static class ScreenInfo{ public final int width; public final int height; public final float density; public final int dpi; public ScreenInfo(int width, int height, float density, int dpi) { super(); this.width = width; this.height = height; this.density = density; this.dpi = dpi; } } public static ScreenInfo getScreenInfo() { DisplayMetrics dm = App.getResources().getDisplayMetrics(); int width = dm.widthPixels; // 宽 int height = dm.heightPixels; // 高 float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) int densityDpi = dm.densityDpi; return new ScreenInfo(width, height, density, densityDpi); } public static String getAvailMemory() { ActivityManager am = (ActivityManager) App.app.getSystemService(Context.ACTIVITY_SERVICE); MemoryInfo mi = new MemoryInfo(); am.getMemoryInfo(mi); return Formatter.formatFileSize(App.app, mi.availMem);// 将获取的内存大小规格化 } public static String getTotalMemory() { String str1 = "/proc/meminfo";// 系统内存信息文件 String str2; String[] arrayOfString; long initial_memory = 0; try { FileReader localFileReader = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192); str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小 arrayOfString = str2.split("\\s+"); for (String num : arrayOfString) { Log.i(str2, num + "\t"); } initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte localBufferedReader.close(); } catch (IOException e) { } return Formatter.formatFileSize(App.app, initial_memory);// Byte转换为KB或者MB,内存大小规格化 } }