Android 获取设备信息、获取手机信息
2015-06-17 22:30
459 查看
1、效果图分享
更多详细请移至文章末尾下载Apk查看
2、代码分析
清单文件权限配置
1.获取手机内核版本、系统版本、手机型号、固件版本、品牌
2.获取手机IMEI
3.获取手机MAC
4.获取CPU型号、硬件、核心数、主频
5.获取前置摄像头和后置摄像头像素
摄像头信息工具类
获取方法
6.获取手机屏幕分辨率和像素密度
7.获取手机电池容量
8.获取传感器信息
3、更多效果图请下载Apk查看
下载看看
更多详细请移至文章末尾下载Apk查看
2、代码分析
清单文件权限配置
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
1.获取手机内核版本、系统版本、手机型号、固件版本、品牌
/*系统信息 * [0] 内核版本 * [1] 系统版本 * [2] 手机型号 * [3] 固件版本 * [4] 品牌 * */ public static String[] getVersion() throws Exception{ String[] version={"null","null","null","null","null"}; String str1 = "/proc/version"; String str2; String[] arrayOfString; try { FileReader localFileReader = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192); str2 = localBufferedReader.readLine(); arrayOfString = str2.split("\\s+"); version[0]=arrayOfString[2];//KernelVersion localBufferedReader.close(); } catch (IOException e) { } version[1] = Build.VERSION.RELEASE;// system version version[2] = Build.MODEL;//model version[3] = Build.DISPLAY;//firmware version version[4] = Build.BRAND;//ping pai return version; }
2.获取手机IMEI
String imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId();
3.获取手机MAC
WifiManager wifi = (WifiManager) getSystemService(this.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); String mac = "未打开Wifi"; if (info.getMacAddress() != null) mac =info.getMacAddress();
4.获取CPU型号、硬件、核心数、主频
/* CPU 信息 * [0] CPU型号 * [1] CPU硬件 * */ public static String[] getCpuInfo() { String str1 = "/proc/cpuinfo"; String str2 = ""; String[] cpuInfo = { "", "" }; try { FileReader fr = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader(fr, 8192); while ( 1==1 ) { str2 = localBufferedReader.readLine(); if (str2.indexOf("Processor\t:") >= 0) { /*手机型号*/ str2 = str2.substring(("Processor\t:").length() + 1); cpuInfo[0] = str2; } if (str2.indexOf("Hardware\t:") >= 0) { /*手机型号*/ str2 = str2.substring(("Hardware\t:").length() + 1); cpuInfo[1] = str2; localBufferedReader.close(); break; } /*str2 = localBufferedReader.readLine();*/ } } catch (IOException e) { e.printStackTrace(); } return cpuInfo; }
/** * 获取CPU核心数 * @return */ public static int getNumCores() { // Private Class to display only CPU devices in the directory listing class CpuFilter implements FileFilter { @Override public boolean accept(File pathname) { // Check if filename is "cpu", followed by a single digit number if (Pattern.matches("cpu[0-9]", pathname.getName())) { return true; } return false; } } try { // Get directory containing CPU info File dir = new File("/sys/devices/system/cpu/"); // Filter to only list the devices we care about File[] files = dir.listFiles(new CpuFilter()); // Return the number of cores (virtual CPU devices) return files.length; } catch (Exception e) { e.printStackTrace(); // Default to return 1 core return 1; } }
/*主频*/ public static String getMaxCpuFreq() { String result = ""; ProcessBuilder cmd; try { String[] args = { "/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" }; cmd = new ProcessBuilder(args); Process process = cmd.start(); InputStream in = process.getInputStream(); byte[] re = new byte[24]; while (in.read(re) != -1) { result = result + new String(re); } in.close(); } catch (IOException ex) { ex.printStackTrace(); result = "N/A"; } return result.trim(); } String macCpuZhuPin = Integer.parseInt(getMaxCpuFreq())/1000+ "MHZ";
5.获取前置摄像头和后置摄像头像素
摄像头信息工具类
/** * 摄像机信息 */ public class CameraUtil { public static final int CAMERA_FACING_BACK = 0; public static final int CAMERA_FACING_FRONT = 1; public static final int CAMERA_NONE = 2; /** * 后置摄像头 * @return */ public static int HasBackCamera() { int numberOfCameras = Camera.getNumberOfCameras(); Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); for (int i = 0; i < numberOfCameras; i++) { Camera.getCameraInfo(i, cameraInfo); if (cameraInfo.facing == CAMERA_FACING_BACK) { return i; } } return 2; } /** * 前置摄像头 * @return */ public static int HasFrontCamera() { int numberOfCameras = Camera.getNumberOfCameras(); Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); for (int i = 0; i < numberOfCameras; i++) { Camera.getCameraInfo(i, cameraInfo); if (cameraInfo.facing == CAMERA_FACING_FRONT) { return i; } } return 2; } public static String getCameraPixels(int paramInt) { if (paramInt == 2) return "无"; Camera localCamera = Camera.open(paramInt); Camera.Parameters localParameters = localCamera.getParameters(); localParameters.set("camera-id", 1); List<Camera.Size> localList = localParameters.getSupportedPictureSizes(); if (localList != null) { int heights[] = new int[localList.size()]; int widths[] = new int[localList.size()]; for (int i = 0; i < localList.size(); i++) { Camera.Size size = (Camera.Size) localList.get(i); int sizehieght = size.height; int sizewidth = size.width; heights[i] = sizehieght; widths[i] =sizewidth; } int pixels = getMaxNumber(heights) * getMaxNumber(widths); localCamera.release(); return String.valueOf(pixels / 10000) + " 万"; } else return "无"; } public static int getMaxNumber(int[] paramArray) { int temp = paramArray[0]; for(int i = 0;i<paramArray.length;i++) { if(temp < paramArray[i]) { temp = paramArray[i]; } } return temp; } }
获取方法
String backCamera = CameraUtil.getCameraPixels(CameraUtil.HasBackCamera()); String frontCamera = CameraUtil.getCameraPixels(CameraUtil.HasFrontCamera());
6.获取手机屏幕分辨率和像素密度
/* * 获取手机屏幕信息 * [0] 宽 * [1] 高 * [2] 密度 * [3] 像素密度 * */ public static String[] getDisplayMetrics(Context cx) { String str = ""; String[] res= new String[4]; DisplayMetrics dm = new DisplayMetrics(); dm = cx.getApplicationContext().getResources().getDisplayMetrics(); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; float density = dm.density; float xdpi = dm.xdpi; float ydpi = dm.ydpi; float dpi = dm.densityDpi; res[0] = String.valueOf(screenWidth); res[1] = String.valueOf(screenHeight); res[2] = String.valueOf(density); res[3] = String.valueOf(dpi); return res; }
7.获取手机电池容量
/** * 获取电池容量 * @param context * @return */ public static double getBatteryCapacity(Context context) { Object mPowerProfile_ = null; final String POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile"; try { mPowerProfile_ = Class.forName(POWER_PROFILE_CLASS) .getConstructor(Context.class).newInstance(context); double batteryCapacity = (Double) Class .forName(POWER_PROFILE_CLASS) .getMethod("getAveragePower", java.lang.String.class) .invoke(mPowerProfile_, "battery.capacity"); return batteryCapacity; } catch (Exception e) { e.printStackTrace(); } return 0d; }
8.获取传感器信息
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); /*陀螺仪*/ String tvTuoLuoYi="支持"; /*光线传感器*/ String tvGuangXian="支持"; /*加速传感器*/ String tvJiaSu="支持"; /*磁场传感器*/ String tvCiChang="支持"; /*压力传感器*/ String tvYaLi="支持"; /*距离传感器*/ String tvJuLi="支持"; /*温度传感器*/ String tvWenDu="支持"; /*线形加速传感器*/ String tvXianXing="支持"; /*旋转矢量传感器*/ String tvXuanZhuan="支持"; /*重力传感器*/ String tvZhongLi="支持"; Sensor tuoluoyi = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); if (tuoluoyi == null) tvTuoLuoYi = "不支持"; Sensor guangxian = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); if (guangxian == null) tvGuangXian = "不支持"; Sensor jiasu = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); if (jiasu == null) tvJiaSu = "不支持"; Sensor cichang = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); if (cichang == null) tvCiChang = "不支持"; Sensor yali = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE); if (yali == null) tvYaLi = "不支持"; Sensor juli = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); if (juli == null) tvJuLi = "不支持"; Sensor wendu = sensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE); if (wendu == null) tvWenDu = "不支持"; Sensor xianxing = sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); if (xianxing == null) tvXianXing = "不支持"; Sensor xuanzhuan = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR); if (xuanzhuan == null) tvXuanZhuan = "不支持"; Sensor zhongli = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); if (zhongli == null) tvZhongLi = "不支持";
3、更多效果图请下载Apk查看
下载看看
相关文章推荐
- 记录Android学习笔记和部分IOS收藏
- 菜鸟学Android笔记(三十七):cookies入门
- Android cpu 使用率控件(浮动窗口)附源码
- Android开机广播android.intent.action.BOOT_COMPLETED
- Android中的静态系统广播和动态系统广播
- android模拟器访问localhost或127.0.0.1报错
- android Intent打开各种类型文件((PDF、word、excel、ppt、chm)
- OpenCV4Android 提取特征点描述符(Feature Descriptor)
- Android总结篇系列:Android广播机制
- android ndk 入门之打印log信息
- 第三章:Android之NDK的使用
- android样式设计
- Android使用页面布局操作SQLite数据库
- 生成二维码(中间带logo) android
- Android中的广播Broadcast详解
- Android内核开发:学会分析系统的启动log
- android 电话号码的获取及拨打电话
- Android开发笔记——ScrollView中解决listview,gridview显示不全问题
- Android动画介绍汇总
- Android/Java线程同步