赞
踩
和你一起终身学习,这里是程序员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
信息方法如下:
- /**
- * 获取设备宽度(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版本
、语言支持、默认语言等方法如下:
- /**
- * 硬件名
- *
- * **/
- 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
是否挂载方法如下:
- /**
- * 判断SD是否挂载
- */
- public static boolean isSDCardMount() {
- return Environment.getExternalStorageState().equals(
- Environment.MEDIA_MOUNTED);
- }
获取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;
-
- }
获取手机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);
- }
运行时内存,此大小直接决定手机运行的流畅度,相当于电脑内存。
手机存储(分内置SD卡
,外置SD卡
),此大小直接决定着手机可以存储资源的大小,相当于电脑硬盘。
以红米手机为例:RAM= 1904716KB= 1.82G
红米4 手机 RAM、ROM存储信息
红米4 memory 信息 meminfo
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);
- }
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;
-
- }
为了方便查询使用设备信息,小编已经封装成一个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();
-
- }
- }
-
为了方便查询使用设备信息,小编已经封装成一个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
-
- }
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除。同时感谢您的阅读,期待您的关注。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。