和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、获取手机基本信息(厂商、型号等参数)
二、设备信息获取实现图
三、获取手机设备 宽、高、IMEI 信息
四、获取手机厂商名、产品名、手机品牌、手机型号、主板名、设备名
五、获取手机硬件名、SDK版本、android版本 、语言支持、默认语言
六、获取 SD 卡存储信息
七、获取手机 RAM、ROM存储信息
八、DeviceInfoUtils 封装类
九、SDCardUtils 封装类
下面将讲解以上信息的获取方法。
一、 获取手机基本信息(厂商、型号等参数)
以小米手机为例,手机常用的基本信息可以在Settings
--> About Phone
中看到,
例如下图:
小米手机设备信息图
那么如何获取这些设备信息呢? Android
中 通常通过 android.os.Build
类方法可以获取更多手机设备信息。
二、 设备信息获取实现图
获取手机IMEI、宽、高、是否有SD卡,RAM、ROM、SD卡、是否联网、网络类型
默认语言,设备名,型号、厂商、Fingerprint、Android 版本、SDK版本、Google 安全patch、发布时间、版本类型、用户名
产品名、ID、产品名、主板名
三、 获取手机设备 宽、高、IMEI 信息方法
获取手机宽、高、IMEI
信息方法如下:
-
/**
-
* 获取设备宽度(px)
-
*
-
*/
-
public static
int getDeviceWidth(Context context) {
-
return context.getResources().getDisplayMetrics().widthPixels;
-
}
-
-
/**
-
* 获取设备高度(px)
-
*/
-
public static
int getDeviceHeight(Context context) {
-
return context.getResources().getDisplayMetrics().heightPixels;
-
}
-
-
/**
-
* 获取设备的唯一标识, 需要 “android.permission.READ_Phone_STATE”权限
-
*/
-
public static String getIMEI(Context context) {
-
TelephonyManager tm = (TelephonyManager) context
-
.getSystemService(Context.TELEPHONY_SERVICE);
-
String deviceId = tm.getDeviceId();
-
if (deviceId == null) {
-
return
"UnKnown";
-
}
else {
-
return deviceId;
-
}
-
}
注意:获取IMEI
需要获取手机状态权限
-
<!-- 读取手机IMEI的设备权限 -->
-
<uses-permission android:name=
"android.permission.READ_PHONE_STATE" />
如果是Android 6.0
之后的代码请使用动态申请权限的方法申请权限,否认会报安全异常的错误SecurityException
,进而导致运行报错。
如需了解更多 系统安全权限的内容,请看 之前写的文章 Android 系统权限使用详解
四、 获取手机厂商名、产品名、手机品牌、手机型号、主板名、设备名的方法
获取手机厂商名、产品名、手机品牌、手机型号、主板名、设备名的方法如下:
-
/**
-
* 获取厂商名
-
* **/
-
public static String getDeviceManufacturer() {
-
return android.os.Build.MANUFACTURER;
-
}
-
-
/**
-
* 获取产品名
-
* **/
-
public static String getDeviceProduct() {
-
return android.os.Build.PRODUCT;
-
}
-
-
/**
-
* 获取手机品牌
-
*/
-
public static String getDeviceBrand() {
-
return android.os.Build.BRAND;
-
}
-
-
/**
-
* 获取手机型号
-
*/
-
public static String getDeviceModel() {
-
return android.os.Build.MODEL;
-
}
-
-
/**
-
* 获取手机主板名
-
*/
-
public static String getDeviceBoard() {
-
return android.os.Build.BOARD;
-
}
-
-
/**
-
* 设备名
-
* **/
-
public static String getDeviceDevice() {
-
return android.os.Build.DEVICE;
-
}
-
-
/**
-
*
-
*
-
* fingerprit 信息
-
* **/
-
public static String getDeviceFubgerprint() {
-
return android.os.Build.FINGERPRINT;
-
}
五、 获取手机硬件名、SDK版本、android版本 、语言支持、默认语言等方法
获取手机硬件名、SDK版本
、android版本
、语言支持、默认语言等方法如下:
-
/**
-
* 硬件名
-
*
-
* **/
-
public static String getDeviceHardware() {
-
return android.os.Build.HARDWARE;
-
}
-
-
/**
-
* 主机
-
*
-
* **/
-
public static String getDeviceHost() {
-
return android.os.Build.HOST;
-
}
-
-
/**
-
*
-
* 显示ID
-
* **/
-
public static String getDeviceDisplay() {
-
return android.os.Build.DISPLAY;
-
}
-
-
/**
-
* ID
-
*
-
* **/
-
public static String getDeviceId() {
-
return android.os.Build.ID;
-
}
-
-
/**
-
* 获取手机用户名
-
*
-
* **/
-
public static String getDeviceUser() {
-
return android.os.Build.USER;
-
}
-
-
/**
-
* 获取手机 硬件序列号
-
* **/
-
public static String getDeviceSerial() {
-
return android.os.Build.SERIAL;
-
}
-
-
/**
-
* 获取手机Android 系统SDK
-
*
-
* @return
-
*/
-
public static
int getDeviceSDK() {
-
return android.os.Build.VERSION.SDK_INT;
-
}
-
-
/**
-
* 获取手机Android 版本
-
*
-
* @return
-
*/
-
public static String getDeviceAndroidVersion() {
-
return android.os.Build.VERSION.RELEASE;
-
}
-
-
/**
-
* 获取当前手机系统语言。
-
*/
-
public static String getDeviceDefaultLanguage() {
-
return Locale.getDefault().getLanguage();
-
}
-
-
/**
-
* 获取当前系统上的语言列表(Locale列表)
-
*/
-
public static String getDeviceSupportLanguage() {
-
Log.e(
"wangjie",
"Local:" + Locale.GERMAN);
-
Log.e(
"wangjie",
"Local:" + Locale.ENGLISH);
-
Log.e(
"wangjie",
"Local:" + Locale.US);
-
Log.e(
"wangjie",
"Local:" + Locale.CHINESE);
-
Log.e(
"wangjie",
"Local:" + Locale.TAIWAN);
-
Log.e(
"wangjie",
"Local:" + Locale.FRANCE);
-
Log.e(
"wangjie",
"Local:" + Locale.FRENCH);
-
Log.e(
"wangjie",
"Local:" + Locale.GERMANY);
-
Log.e(
"wangjie",
"Local:" + Locale.ITALIAN);
-
Log.e(
"wangjie",
"Local:" + Locale.JAPAN);
-
Log.e(
"wangjie",
"Local:" + Locale.JAPANESE);
-
return Locale.getAvailableLocales().toString();
-
}
-
六、 获取 SD 卡存储信息
SD卡信息
1.判断SD是否挂载方法
判断SD
是否挂载方法如下:
-
/**
-
* 判断SD是否挂载
-
*/
-
public static boolean isSDCardMount() {
-
return Environment.getExternalStorageState().equals(
-
Environment.MEDIA_MOUNTED);
-
}
2. 获取SD 存储信息的方法
获取SD
存储信息的方法如下:
-
/**
-
* 获取手机存储 ROM 信息
-
*
-
* type:用于区分内置存储于外置存储的方法
-
*
-
* 内置SD卡 :INTERNAL_STORAGE = 0;
-
*
-
* 外置SD卡:EXTERNAL_STORAGE = 1;
-
* **/
-
public static String getStorageInfo(Context context,
int
type) {
-
-
String path = getStoragePath(context,
type);
-
/**
-
* 无外置SD 卡判断
-
* **/
-
if (isSDCardMount() ==
false || TextUtils.isEmpty(path) || path == null) {
-
return
"无外置SD卡";
-
}
-
-
File file =
new File(path);
-
StatFs statFs =
new StatFs(file.getPath());
-
String stotageInfo;
-
-
long blockCount = statFs.getBlockCountLong();
-
long bloackSize = statFs.getBlockSizeLong();
-
long totalSpace = bloackSize * blockCount;
-
-
long availableBlocks = statFs.getAvailableBlocksLong();
-
long availableSpace = availableBlocks * bloackSize;
-
-
stotageInfo =
"可用/总共:"
-
+ Formatter.formatFileSize(context, availableSpace) +
"/"
-
+ Formatter.formatFileSize(context, totalSpace);
-
-
return stotageInfo;
-
-
}
3. 获取手机ROM (内置存储,外置存储)存储路径的方法
获取手机ROM
存储信息的方法如下:
-
/**
-
* 使用反射方法 获取手机存储路径
-
*
-
* **/
-
public static String getStoragePath(Context context,
int
type) {
-
-
StorageManager sm = (StorageManager) context
-
.getSystemService(Context.STORAGE_SERVICE);
-
try {
-
Method getPathsMethod = sm.getClass().getMethod(
"getVolumePaths",
-
null);
-
String[] path = (String[]) getPathsMethod.invoke(sm, null);
-
-
switch (
type) {
-
case INTERNAL_STORAGE:
-
return path[
type];
-
case EXTERNAL_STORAGE:
-
if (path.length >
1) {
-
return path[
type];
-
}
else {
-
return null;
-
}
-
-
default:
-
break;
-
}
-
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
return null;
-
}
-
-
/**
-
* 获取 手机 RAM 信息 方法 一
-
* */
-
public static String getTotalRAM(Context context) {
-
long size =
0;
-
ActivityManager activityManager = (ActivityManager) context
-
.getSystemService(context.ACTIVITY_SERVICE);
-
MemoryInfo outInfo =
new MemoryInfo();
-
activityManager.getMemoryInfo(outInfo);
-
size = outInfo.totalMem;
-
-
return Formatter.formatFileSize(context, size);
-
}
-
-
/**
-
* 手机 RAM 信息 方法 二
-
* */
-
public static String getTotalRAMOther(Context context) {
-
String path =
"/proc/meminfo";
-
String firstLine = null;
-
int totalRam =
0;
-
try {
-
FileReader fileReader =
new FileReader(path);
-
BufferedReader br =
new BufferedReader(fileReader,
8192);
-
firstLine = br.readLine().split(
"\\s+")[
1];
-
br.
close();
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
if (firstLine != null) {
-
-
totalRam = (
int) Math.ceil((
new Float(Float.valueOf(firstLine)
-
/ (
1024 *
1024)).doubleValue()));
-
-
long totalBytes =
0;
-
-
}
-
-
return Formatter.formatFileSize(context, totalRam);
-
}
-
-
/**
-
* 获取 手机 可用 RAM
-
* */
-
public static String getAvailableRAM(Context context) {
-
long size =
0;
-
ActivityManager activityManager = (ActivityManager) context
-
.getSystemService(context.ACTIVITY_SERVICE);
-
MemoryInfo outInfo =
new MemoryInfo();
-
activityManager.getMemoryInfo(outInfo);
-
size = outInfo.availMem;
-
-
return Formatter.formatFileSize(context, size);
-
}
七、获取手机 RAM、ROM存储信息
1.RAM:
运行时内存,此大小直接决定手机运行的流畅度,相当于电脑内存。
2.ROM :
手机存储(分内置SD卡
,外置SD卡
),此大小直接决定着手机可以存储资源的大小,相当于电脑硬盘。
以红米手机为例:RAM= 1904716KB= 1.82G
红米4 手机 RAM、ROM存储信息
红米4 memory 信息 meminfo
3.获取 RAM
存储信息的方法如下:
-
/**
-
* 获取 手机 RAM 信息
-
* */
-
public static String getRAMInfo(Context context) {
-
long totalSize =
0;
-
long availableSize =
0;
-
-
ActivityManager activityManager = (ActivityManager) context
-
.getSystemService(context.ACTIVITY_SERVICE);
-
-
MemoryInfo memoryInfo =
new MemoryInfo();
-
activityManager.getMemoryInfo(memoryInfo);
-
totalSize = memoryInfo.totalMem;
-
availableSize = memoryInfo.availMem;
-
-
return
"可用/总共:" + Formatter.formatFileSize(context, availableSize)
-
+
"/" + Formatter.formatFileSize(context, totalSize);
-
}
4. 获取手机ROM
存储信息的方法如下:
-
/**
-
* 获取手机存储 ROM 信息
-
*
-
* type:用于区分内置存储于外置存储的方法
-
*
-
* 内置SD卡 :INTERNAL_STORAGE = 0;
-
*
-
* 外置SD卡:EXTERNAL_STORAGE = 1;
-
* **/
-
public static String getStorageInfo(Context context,
int
type) {
-
-
String path = getStoragePath(context,
type);
-
/**
-
* 无外置SD 卡判断
-
* **/
-
if (isSDCardMount() ==
false || TextUtils.isEmpty(path) || path == null) {
-
return
"无外置SD卡";
-
}
-
-
File file =
new File(path);
-
StatFs statFs =
new StatFs(file.getPath());
-
String stotageInfo;
-
-
long blockCount = statFs.getBlockCountLong();
-
long bloackSize = statFs.getBlockSizeLong();
-
long totalSpace = bloackSize * blockCount;
-
-
long availableBlocks = statFs.getAvailableBlocksLong();
-
long availableSpace = availableBlocks * bloackSize;
-
-
stotageInfo =
"可用/总共:"
-
+ Formatter.formatFileSize(context, availableSpace) +
"/"
-
+ Formatter.formatFileSize(context, totalSpace);
-
-
return stotageInfo;
-
-
}
八、DeviceInfoUtils 封装类
为了方便查询使用设备信息,小编已经封装成一个Utils
类。代码如下:
-
package com.programandroid.Utils;
-
-
import java.util.Locale;
-
-
import android.R.
string;
-
import android.content.Context;
-
import android.telephony.TelephonyManager;
-
import android.util.Log;
-
-
/*
-
* DeviceInfoUtils.java
-
*
-
* Created on: 2017-11-16
-
* Author: wangjie
-
*
-
* Welcome attention to weixin public number get more info
-
*
-
* WeiXin Public Number : ProgramAndroid
-
* 微信公众号 :程序员Android
-
*
-
*/
-
public class DeviceInfoUtils {
-
-
/**
-
* 获取设备宽度(px)
-
*
-
*/
-
public static
int getDeviceWidth(Context context) {
-
return context.getResources().getDisplayMetrics().widthPixels;
-
}
-
-
/**
-
* 获取设备高度(px)
-
*/
-
public static
int getDeviceHeight(Context context) {
-
return context.getResources().getDisplayMetrics().heightPixels;
-
}
-
-
/**
-
* 获取设备的唯一标识, 需要 “android.permission.READ_Phone_STATE”权限
-
*/
-
public static String getIMEI(Context context) {
-
TelephonyManager tm = (TelephonyManager) context
-
.getSystemService(Context.TELEPHONY_SERVICE);
-
String deviceId = tm.getDeviceId();
-
if (deviceId == null) {
-
return
"UnKnown";
-
}
else {
-
return deviceId;
-
}
-
}
-
-
/**
-
* 获取厂商名
-
* **/
-
public static String getDeviceManufacturer() {
-
return android.os.Build.MANUFACTURER;
-
}
-
-
/**
-
* 获取产品名
-
* **/
-
public static String getDeviceProduct() {
-
return android.os.Build.PRODUCT;
-
}
-
-
/**
-
* 获取手机品牌
-
*/
-
public static String getDeviceBrand() {
-
return android.os.Build.BRAND;
-
}
-
-
/**
-
* 获取手机型号
-
*/
-
public static String getDeviceModel() {
-
return android.os.Build.MODEL;
-
}
-
-
/**
-
* 获取手机主板名
-
*/
-
public static String getDeviceBoard() {
-
return android.os.Build.BOARD;
-
}
-
-
/**
-
* 设备名
-
* **/
-
public static String getDeviceDevice() {
-
return android.os.Build.DEVICE;
-
}
-
-
/**
-
*
-
*
-
* fingerprit 信息
-
* **/
-
public static String getDeviceFubgerprint() {
-
return android.os.Build.FINGERPRINT;
-
}
-
-
/**
-
* 硬件名
-
*
-
* **/
-
public static String getDeviceHardware() {
-
return android.os.Build.HARDWARE;
-
}
-
-
/**
-
* 主机
-
*
-
* **/
-
public static String getDeviceHost() {
-
return android.os.Build.HOST;
-
}
-
-
/**
-
*
-
* 显示ID
-
* **/
-
public static String getDeviceDisplay() {
-
return android.os.Build.DISPLAY;
-
}
-
-
/**
-
* ID
-
*
-
* **/
-
public static String getDeviceId() {
-
return android.os.Build.ID;
-
}
-
-
/**
-
* 获取手机用户名
-
*
-
* **/
-
public static String getDeviceUser() {
-
return android.os.Build.USER;
-
}
-
-
/**
-
* 获取手机 硬件序列号
-
* **/
-
public static String getDeviceSerial() {
-
return android.os.Build.SERIAL;
-
}
-
-
/**
-
* 获取手机Android 系统SDK
-
*
-
* @return
-
*/
-
public static
int getDeviceSDK() {
-
return android.os.Build.VERSION.SDK_INT;
-
}
-
-
/**
-
* 获取手机Android 版本
-
*
-
* @return
-
*/
-
public static String getDeviceAndroidVersion() {
-
return android.os.Build.VERSION.RELEASE;
-
}
-
-
/**
-
* 获取当前手机系统语言。
-
*/
-
public static String getDeviceDefaultLanguage() {
-
return Locale.getDefault().getLanguage();
-
}
-
-
/**
-
* 获取当前系统上的语言列表(Locale列表)
-
*/
-
public static String getDeviceSupportLanguage() {
-
Log.e(
"wangjie",
"Local:" + Locale.GERMAN);
-
Log.e(
"wangjie",
"Local:" + Locale.ENGLISH);
-
Log.e(
"wangjie",
"Local:" + Locale.US);
-
Log.e(
"wangjie",
"Local:" + Locale.CHINESE);
-
Log.e(
"wangjie",
"Local:" + Locale.TAIWAN);
-
Log.e(
"wangjie",
"Local:" + Locale.FRANCE);
-
Log.e(
"wangjie",
"Local:" + Locale.FRENCH);
-
Log.e(
"wangjie",
"Local:" + Locale.GERMANY);
-
Log.e(
"wangjie",
"Local:" + Locale.ITALIAN);
-
Log.e(
"wangjie",
"Local:" + Locale.JAPAN);
-
Log.e(
"wangjie",
"Local:" + Locale.JAPANESE);
-
return Locale.getAvailableLocales().toString();
-
}
-
-
public static String getDeviceAllInfo(Context context) {
-
-
return
"\n\n1. IMEI:\n\t\t" + getIMEI(context)
-
-
+
"\n\n2. 设备宽度:\n\t\t" + getDeviceWidth(context)
-
-
+
"\n\n3. 设备高度:\n\t\t" + getDeviceHeight(context)
-
-
+
"\n\n4. 是否有内置SD卡:\n\t\t" + SDCardUtils.isSDCardMount()
-
-
+
"\n\n5. RAM 信息:\n\t\t" + SDCardUtils.getRAMInfo(context)
-
-
+
"\n\n6. 内部存储信息\n\t\t" + SDCardUtils.getStorageInfo(context,
0)
-
-
+
"\n\n7. SD卡 信息:\n\t\t" + SDCardUtils.getStorageInfo(context,
1)
-
-
+
"\n\n8. 是否联网:\n\t\t" + Utils.isNetworkConnected(context)
-
-
+
"\n\n9. 网络类型:\n\t\t" + Utils.GetNetworkType(context)
-
-
+
"\n\n10. 系统默认语言:\n\t\t" + getDeviceDefaultLanguage()
-
-
+
"\n\n11. 硬件序列号(设备名):\n\t\t" + android.os.Build.SERIAL
-
-
+
"\n\n12. 手机型号:\n\t\t" + android.os.Build.MODEL
-
-
+
"\n\n13. 生产厂商:\n\t\t" + android.os.Build.MANUFACTURER
-
-
+
"\n\n14. 手机Fingerprint标识:\n\t\t" + android.os.Build.FINGERPRINT
-
-
+
"\n\n15. Android 版本:\n\t\t" + android.os.Build.VERSION.RELEASE
-
-
+
"\n\n16. Android SDK版本:\n\t\t" + android.os.Build.VERSION.SDK_INT
-
-
+
"\n\n17. 安全patch 时间:\n\t\t" + android.os.Build.VERSION.SECURITY_PATCH
-
-
+
"\n\n18. 发布时间:\n\t\t" + Utils.Utc2Local(android.os.Build.TIME)
-
-
+
"\n\n19. 版本类型:\n\t\t" + android.os.Build.TYPE
-
-
+
"\n\n20. 用户名:\n\t\t" + android.os.Build.USER
-
-
+
"\n\n21. 产品名:\n\t\t" + android.os.Build.PRODUCT
-
-
+
"\n\n22. ID:\n\t\t" + android.os.Build.ID
-
-
+
"\n\n23. 显示ID:\n\t\t" + android.os.Build.DISPLAY
-
-
+
"\n\n24. 硬件名:\n\t\t" + android.os.Build.HARDWARE
-
-
+
"\n\n25. 产品名:\n\t\t" + android.os.Build.DEVICE
-
-
+
"\n\n26. Bootloader:\n\t\t" + android.os.Build.BOOTLOADER
-
-
+
"\n\n27. 主板名:\n\t\t" + android.os.Build.BOARD
-
-
+
"\n\n28. CodeName:\n\t\t" + android.os.Build.VERSION.CODENAME
-
+
"\n\n29. 语言支持:\n\t\t" + getDeviceSupportLanguage();
-
-
}
-
}
-
九、SDCardUtils 封装类
为了方便查询使用设备信息,小编已经封装成一个Utils
类。代码如下:
-
package com.programandroid.Utils;
-
-
import java.io.BufferedReader;
-
import java.io.File;
-
import java.io.FileReader;
-
import java.lang.reflect.Method;
-
-
import android.app.ActivityManager;
-
import android.app.ActivityManager.MemoryInfo;
-
import android.content.Context;
-
import android.os.Build;
-
import android.os.Environment;
-
import android.os.StatFs;
-
import android.os.storage.StorageManager;
-
import android.text.TextUtils;
-
import android.text.format.Formatter;
-
-
/*
-
* SDCardUtils.java
-
*
-
* Created on: 2017-11-22
-
* Author: wangjie
-
*
-
* Welcome attention to weixin public number get more info
-
*
-
* WeiXin Public Number : ProgramAndroid
-
* 微信公众号 :程序员Android
-
*
-
*/
-
public class SDCardUtils {
-
-
private static final
int INTERNAL_STORAGE =
0;
-
private static final
int EXTERNAL_STORAGE =
1;
-
-
/**
-
* 获取 手机 RAM 信息
-
* */
-
public static String getRAMInfo(Context context) {
-
long totalSize =
0;
-
long availableSize =
0;
-
-
ActivityManager activityManager = (ActivityManager) context
-
.getSystemService(context.ACTIVITY_SERVICE);
-
-
MemoryInfo memoryInfo =
new MemoryInfo();
-
activityManager.getMemoryInfo(memoryInfo);
-
totalSize = memoryInfo.totalMem;
-
availableSize = memoryInfo.availMem;
-
-
return
"可用/总共:" + Formatter.formatFileSize(context, availableSize)
-
+
"/" + Formatter.formatFileSize(context, totalSize);
-
}
-
-
/**
-
* 判断SD是否挂载
-
*/
-
public static boolean isSDCardMount() {
-
return Environment.getExternalStorageState().equals(
-
Environment.MEDIA_MOUNTED);
-
}
-
-
/**
-
* 获取手机存储 ROM 信息
-
*
-
* type:用于区分内置存储于外置存储的方法
-
*
-
* 内置SD卡 :INTERNAL_STORAGE = 0;
-
*
-
* 外置SD卡:EXTERNAL_STORAGE = 1;
-
* **/
-
public static String getStorageInfo(Context context,
int
type) {
-
-
String path = getStoragePath(context,
type);
-
/**
-
* 无外置SD 卡判断
-
* **/
-
if (isSDCardMount() ==
false || TextUtils.isEmpty(path) || path == null) {
-
return
"无外置SD卡";
-
}
-
-
File file =
new File(path);
-
StatFs statFs =
new StatFs(file.getPath());
-
String stotageInfo;
-
-
long blockCount = statFs.getBlockCountLong();
-
long bloackSize = statFs.getBlockSizeLong();
-
long totalSpace = bloackSize * blockCount;
-
-
long availableBlocks = statFs.getAvailableBlocksLong();
-
long availableSpace = availableBlocks * bloackSize;
-
-
stotageInfo =
"可用/总共:"
-
+ Formatter.formatFileSize(context, availableSpace) +
"/"
-
+ Formatter.formatFileSize(context, totalSpace);
-
-
return stotageInfo;
-
-
}
-
-
/**
-
* 使用反射方法 获取手机存储路径
-
*
-
* **/
-
public static String getStoragePath(Context context,
int
type) {
-
-
StorageManager sm = (StorageManager) context
-
.getSystemService(Context.STORAGE_SERVICE);
-
try {
-
Method getPathsMethod = sm.getClass().getMethod(
"getVolumePaths",
-
null);
-
String[] path = (String[]) getPathsMethod.invoke(sm, null);
-
-
switch (
type) {
-
case INTERNAL_STORAGE:
-
return path[
type];
-
case EXTERNAL_STORAGE:
-
if (path.length >
1) {
-
return path[
type];
-
}
else {
-
return null;
-
}
-
-
default:
-
break;
-
}
-
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
return null;
-
}
-
-
/**
-
* 获取 手机 RAM 信息 方法 一
-
* */
-
public static String getTotalRAM(Context context) {
-
long size =
0;
-
ActivityManager activityManager = (ActivityManager) context
-
.getSystemService(context.ACTIVITY_SERVICE);
-
MemoryInfo outInfo =
new MemoryInfo();
-
activityManager.getMemoryInfo(outInfo);
-
size = outInfo.totalMem;
-
-
return Formatter.formatFileSize(context, size);
-
}
-
-
/**
-
* 手机 RAM 信息 方法 二
-
* */
-
public static String getTotalRAMOther(Context context) {
-
String path =
"/proc/meminfo";
-
String firstLine = null;
-
int totalRam =
0;
-
try {
-
FileReader fileReader =
new FileReader(path);
-
BufferedReader br =
new BufferedReader(fileReader,
8192);
-
firstLine = br.readLine().split(
"\\s+")[
1];
-
br.
close();
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
if (firstLine != null) {
-
-
totalRam = (
int) Math.ceil((
new Float(Float.valueOf(firstLine)
-
/ (
1024 *
1024)).doubleValue()));
-
-
long totalBytes =
0;
-
-
}
-
-
return Formatter.formatFileSize(context, totalRam);
-
}
-
-
/**
-
* 获取 手机 可用 RAM
-
* */
-
public static String getAvailableRAM(Context context) {
-
long size =
0;
-
ActivityManager activityManager = (ActivityManager) context
-
.getSystemService(context.ACTIVITY_SERVICE);
-
MemoryInfo outInfo =
new MemoryInfo();
-
activityManager.getMemoryInfo(outInfo);
-
size = outInfo.availMem;
-
-
return Formatter.formatFileSize(context, size);
-
}
-
-
/**
-
* 获取手机内部存储空间
-
*
-
* @param context
-
* @return 以M,G为单位的容量
-
*/
-
public static String getTotalInternalMemorySize(Context context) {
-
File file = Environment.getDataDirectory();
-
StatFs statFs =
new StatFs(file.getPath());
-
long blockSizeLong = statFs.getBlockSizeLong();
-
long blockCountLong = statFs.getBlockCountLong();
-
long size = blockCountLong * blockSizeLong;
-
return Formatter.formatFileSize(context, size);
-
}
-
-
/**
-
* 获取手机内部可用存储空间
-
*
-
* @param context
-
* @return 以M,G为单位的容量
-
*/
-
public static String getAvailableInternalMemorySize(Context context) {
-
File file = Environment.getDataDirectory();
-
StatFs statFs =
new StatFs(file.getPath());
-
long availableBlocksLong = statFs.getAvailableBlocksLong();
-
long blockSizeLong = statFs.getBlockSizeLong();
-
return Formatter.formatFileSize(context, availableBlocksLong
-
* blockSizeLong);
-
}
-
-
/**
-
* 获取手机外部存储空间
-
*
-
* @param context
-
* @return 以M,G为单位的容量
-
*/
-
public static String getTotalExternalMemorySize(Context context) {
-
File file = Environment.getExternalStorageDirectory();
-
StatFs statFs =
new StatFs(file.getPath());
-
long blockSizeLong = statFs.getBlockSizeLong();
-
long blockCountLong = statFs.getBlockCountLong();
-
return Formatter
-
.formatFileSize(context, blockCountLong * blockSizeLong);
-
}
-
-
/**
-
* 获取手机外部可用存储空间
-
*
-
* @param context
-
* @return 以M,G为单位的容量
-
*/
-
public static String getAvailableExternalMemorySize(Context context) {
-
File file = Environment.getExternalStorageDirectory();
-
StatFs statFs =
new StatFs(file.getPath());
-
long availableBlocksLong = statFs.getAvailableBlocksLong();
-
long blockSizeLong = statFs.getBlockSizeLong();
-
return Formatter.formatFileSize(context, availableBlocksLong
-
* blockSizeLong);
-
}
-
-
/**
-
*
-
* SD 卡信息
-
* */
-
-
public static String getSDCardInfo() {
-
-
SDCardInfo sd =
new SDCardInfo();
-
if (!isSDCardMount())
-
return
"SD card 未挂载!";
-
-
sd.isExist =
true;
-
StatFs sf =
new StatFs(Environment.getExternalStorageDirectory()
-
.getPath());
-
-
sd.totalBlocks = sf.getBlockCountLong();
-
sd.blockByteSize = sf.getBlockSizeLong();
-
sd.availableBlocks = sf.getAvailableBlocksLong();
-
sd.availableBytes = sf.getAvailableBytes();
-
sd.freeBlocks = sf.getFreeBlocksLong();
-
sd.freeBytes = sf.getFreeBytes();
-
sd.totalBytes = sf.getTotalBytes();
-
return sd.toString();
-
}
-
-
public static class SDCardInfo {
-
boolean isExist;
-
long totalBlocks;
-
long freeBlocks;
-
long availableBlocks;
-
long blockByteSize;
-
long totalBytes;
-
long freeBytes;
-
long availableBytes;
-
-
@Override
-
public String toString() {
-
return
"isExist=" + isExist +
"\ntotalBlocks=" + totalBlocks
-
+
"\nfreeBlocks=" + freeBlocks +
"\navailableBlocks="
-
+ availableBlocks +
"\nblockByteSize=" + blockByteSize
-
+
"\ntotalBytes=" + totalBytes +
"\nfreeBytes=" + freeBytes
-
+
"\navailableBytes=" + availableBytes;
-
}
-
}
-
-
// add start by wangjie for SDCard TotalStorage
-
public static String getSDCardTotalStorage(long totalByte) {
-
-
double byte2GB = totalByte /
1024.00 /
1024.00 /
1024.00;
-
double totalStorage;
-
if (byte2GB >
1) {
-
totalStorage = Math.ceil(byte2GB);
-
if (totalStorage >
1 && totalStorage <
3) {
-
return
2.0 +
"GB";
-
}
else
if (totalStorage >
2 && totalStorage <
5) {
-
return
4.0 +
"GB";
-
}
else
if (totalStorage >=
5 && totalStorage <
10) {
-
return
8.0 +
"GB";
-
}
else
if (totalStorage >=
10 && totalStorage <
18) {
-
return
16.0 +
"GB";
-
}
else
if (totalStorage >=
18 && totalStorage <
34) {
-
return
32.0 +
"GB";
-
}
else
if (totalStorage >=
34 && totalStorage <
50) {
-
return
48.0 +
"GB";
-
}
else
if (totalStorage >=
50 && totalStorage <
66) {
-
return
64.0 +
"GB";
-
}
else
if (totalStorage >=
66 && totalStorage <
130) {
-
return
128.0 +
"GB";
-
}
-
}
else {
-
// below 1G return get values
-
totalStorage = totalByte /
1024.00 /
1024.00;
-
-
if (totalStorage >=
515 && totalStorage <
1024) {
-
return
1 +
"GB";
-
}
else
if (totalStorage >=
260 && totalStorage <
515) {
-
return
512 +
"MB";
-
}
else
if (totalStorage >=
130 && totalStorage <
260) {
-
return
256 +
"MB";
-
}
else
if (totalStorage >
70 && totalStorage <
130) {
-
return
128 +
"MB";
-
}
else
if (totalStorage >
50 && totalStorage <
70) {
-
return
64 +
"MB";
-
}
-
}
-
-
return totalStorage +
"GB";
-
}
-
// add end by wangjie for SDCard TotalStorage
-
-
}
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除。同时感谢您的阅读,期待您的关注。
转载:https://blog.csdn.net/wjky2014/article/details/109733589