您的位置:首页 > 移动开发 > Android开发

Android 获取设备信息、获取手机信息

2015-06-17 22:30 459 查看
1、效果图分享





更多详细请移至文章末尾下载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查看

下载看看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: