Android开发获取Android设备信息的工具类

  • 2017-9-24 08:46
  • PHP二次开发
  • 阅读(129)
  • 评论(0)
  • 来源:互联网
  • 摘要: Android 设备工具DeviceUtilAndroid 设备工具DeviceUtil dp转换px px转换dp 设备宽度 设备高度 SD卡判断 网络判断 VersionName VersionCode DeviceId 手机品牌 手机型号 系统Android API等级 系统Android 版本 App进 ...
    Android 设备工具DeviceUtil
    Android 设备工具DeviceUtil dp转换px px转换dp 设备宽度 设备高度 SD卡判断 网络判断 VersionName VersionCode DeviceId 手机品牌 手机型号 系统Android API等级 系统Android 版本 App进程id App进程Name 创建App缓存文件夹 Uri转换File 获取AndroidManifestxml里meta data的值 DeviceUtil全部源码

    dp转换px
    在自定义View中必须用到这个方法。自定义View的时候,不能像在xml那样可以设置dp(密度),只能设置px(像素)。不同分辨率的设备,设置px,显示就不会一样了。为了结合设计图设置dp,需要将dp转换为px值,然后再设置。

    Java" hljs="" java="">    /**
         * dp 转化为 px
         * @param context
         * @param dpValue
         * @return
         */
        public static int dp2px(Context context, float dpValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (dpValue * scale + 0.5f);
        }
    px转换dp
        /**
         * px 转化为 dp
         * @param context
         * @param pxValue
         * @return
         */
        public static int px2dp(Context context, float pxValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (pxValue / scale + 0.5f);
        }
    设备宽度
        /**
         * 获取设备宽度(px)
         * @param context
         * @return
         */
        public static int deviceWidth(Context context) {
            return context.getResources().getDisplayMetrics().widthPixels;
        }
    设备高度
        /**
         * 获取设备高度(px)
         * @param context
         * @return
         */
        public static int deviceHeight(Context context) {
            return context.getResources().getDisplayMetrics().heightPixels;
        }
    SD卡判断
        /**
         * SD卡判断
         * @return
         */
        public static boolean isSDCardAvailable() {
            return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
        }
    网络判断
        /**
         * 是否有网
         * @param context
         * @return
         */
        public static boolean isNetworkConnected(Context context) {
            if (context != null) {
                ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                        .getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo mNetworkInfo = mConnectivityManager
                        .getActiveNetworkInfo();
                if (mNetworkInfo != null) {
                    return mNetworkInfo.isAvailable();
                }
            }
            return false;
        }
    VersionName
    对应build.gradle中的versionName

        /**
         * 返回版本名字
         * 对应build.gradle中的versionName
         *
         * @param context
         * @return
         */
        public static String getVersionName(Context context) {
            String versionName = ;
            try {
                PackageManager packageManager = context.getPackageManager();
                PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
                versionName = packInfo.versionName;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return versionName;
        }
    VersionCode
    对应build.gradle中的versionCode

        /**
         * 返回版本号
         * 对应build.gradle中的versionCode
         *
         * @param context
         * @return
         */
        public static String getVersionCode(Context context) {
            String versionCode = ;
            try {
                PackageManager packageManager = context.getPackageManager();
                PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
                versionCode = String.valueOf(packInfo.versionCode);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return versionCode;
        }
    DeviceId
    每台设备都有唯一的标识,这就是DeviceId

        /**
         * 获取设备的唯一标识,deviceId
         *
         * @param context
         * @return
         */
        public static String getDeviceId(Context context) {
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            String deviceId = tm.getDeviceId();
            if (deviceId == null) {
                return -;
            } else {
                return deviceId;
            }
        }
    手机品牌
        /**
         * 获取手机品牌
         *
         * @return
         */
        public static String getPhoneBrand() {
            return android.os.Build.BRAND;
        }
    手机型号
        /**
         * 获取手机型号
         *
         * @return
         */
        public static String getPhoneModel() {
            return android.os.Build.MODEL;
        }
    系统Android API等级
        /**
         * 获取手机Android API等级(22、23 ...)
         *
         * @return
         */
        public static int getBuildLevel() {
            return android.os.Build.VERSION.SDK_INT;
        }
    系统android-版本">系统Android 版本
       /**
         * 获取手机Android 版本(4.4、5.0、5.1 ...)
         *
         * @return
         */
        public static String getBuildVersion() {
            return android.os.Build.VERSION.RELEASE;
        }
    App进程id
        /**
         * 获取当前App进程的id
         *
         * @return
         */
        public static int getAppProcessId() {
            return android.os.Process.myPid();
        }
    App进程Name

        /**
         * 获取当前App进程的Name
         *
         * @param context
         * @param processId
         * @return
         */
        public static String getAppProcessName(Context context, int processId) {
            String processName = null;
            ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            // 获取所有运行App的进程集合
            List l = am.getRunningAppProcesses();
            Iterator i = l.iterator();
            PackageManager pm = context.getPackageManager();
            while (i.hasNext()) {
                ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
                try {
                    if (info.pid == processId) {
                        CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));

                        processName = info.processName;
                        return processName;
                    }
                } catch (Exception e) {
                    Log.e(DeviceUtil.class.getName(), e.getMessage(), e);
                }
            }
            return processName;
        }
    创建App缓存文件夹
        /**
         * 创建App文件夹
         *
         * @param appName
         * @param application
         * @return
         */
        public static String createAPPFolder(String appName, Application application) {
            return createAPPFolder(appName, application, null);
        }

        /**
         * 创建App文件夹
         *
         * @param appName
         * @param application
         * @param folderName
         * @return
         */
        public static String createAPPFolder(String appName, Application application, String folderName) {
            File root = Environment.getExternalStorageDirectory();
            File folder;
            /**
             * 如果存在SD卡
             */
            if (DeviceUtil.isSDCardAvailable() && root != null) {
                folder = new File(root, appName);
                if (!folder.exists()) {
                    folder.mkdirs();
                }
            } else {
                /**
                 * 不存在SD卡,就放到缓存文件夹内
                 */
                root = application.getCacheDir();
                folder = new File(root, appName);
                if (!folder.exists()) {
                    folder.mkdirs();
                }
            }
            if (folderName != null) {
                folder = new File(folder, folderName);
                if (!folder.exists()) {
                    folder.mkdirs();
                }
            }
            return folder.getAbsolutePath();
        }
    Uri转换File
        /**
         * 通过Uri找到File
         *
         * @param context
         * @param uri
         * @return
         */
        public static File uri2File(Activity context, Uri uri) {
            File file;
            String[] project = {MediaStore.Images.Media.DATA};
            Cursor actualImageCursor = context.getContentResolver().query(uri, project, null, null, null);
            if (actualImageCursor != null) {
                int actual_image_column_index = actualImageCursor
                        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                actualImageCursor.moveToFirst();
                String img_path = actualImageCursor
                        .getString(actual_image_column_index);
                file = new File(img_path);
            } else {
                file = new File(uri.getPath());
            }
            if (actualImageCursor != null) actualImageCursor.close();
            return file;
        }
    获取AndroidManifest.xml里meta data的值
    AndroidManifest.xml

    比如自定义了一个
    meta-data
    ,名为DEBUG。

    build.gradle

    然后在build.gradle里给这个DEBUG赋值了。

        //渠道Flavors
        productFlavors {
            APPTest {
                applicationId com.zyy.camnter.newlife
                manifestPlaceholders = [DEBUG         : debug]
            }
        }
    可以通过一下方法取得AndroidManifest.xml里DEBUG被赋上的值:

        /**
         * 获取AndroidManifest.xml里 的值
         *
         * @param context
         * @param name
         * @return
         */
        public static String getMetaData(Context context, String name) {
            String value = null;
            try {
                ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
                value = appInfo.metaData.getString(name);
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
            return value;
        }


    DeviceUtil全部源码
    public class DeviceUtil {

        /**
         * dp 转化为 px
         *
         * @param context
         * @param dpValue
         * @return
         */
        public static int dp2px(Context context, float dpValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (dpValue * scale + 0.5f);
        }

        /**
         * px 转化为 dp
         *
         * @param context
         * @param pxValue
         * @return
         */
        public static int px2dp(Context context, float pxValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (pxValue / scale + 0.5f);
        }

        /**
         * 获取设备宽度(px)
         *
         * @param context
         * @return
         */
        public static int deviceWidth(Context context) {
            return context.getResources().getDisplayMetrics().widthPixels;
        }

        /**
         * 获取设备高度(px)
         *
         * @param context
         * @return
         */
        public static int deviceHeight(Context context) {
            return context.getResources().getDisplayMetrics().heightPixels;
        }

        /**
         * SD卡判断
         *
         * @return
         */
        public static boolean isSDCardAvailable() {
            return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
        }

        /**
         * 是否有网
         *
         * @param context
         * @return
         */
        public static boolean isNetworkConnected(Context context) {
            if (context != null) {
                ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                        .getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo mNetworkInfo = mConnectivityManager
                        .getActiveNetworkInfo();
                if (mNetworkInfo != null) {
                    return mNetworkInfo.isAvailable();
                }
            }
            return false;
        }

        /**
         * 返回版本名字
         * 对应build.gradle中的versionName
         *
         * @param context
         * @return
         */
        public static String getVersionName(Context context) {
            String versionName = ;
            try {
                PackageManager packageManager = context.getPackageManager();
                PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
                versionName = packInfo.versionName;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return versionName;
        }

        /**
         * 返回版本号
         * 对应build.gradle中的versionCode
         *
         * @param context
         * @return
         */
        public static String getVersionCode(Context context) {
            String versionCode = ;
            try {
                PackageManager packageManager = context.getPackageManager();
                PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
                versionCode = String.valueOf(packInfo.versionCode);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return versionCode;
        }

        /**
         * 获取设备的唯一标识,deviceId
         *
         * @param context
         * @return
         */
        public static String getDeviceId(Context context) {
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            String deviceId = tm.getDeviceId();
            if (deviceId == null) {
                return -;
            } else {
                return deviceId;
            }
        }

        /**
         * 获取手机品牌
         *
         * @return
         */
        public static String getPhoneBrand() {
            return android.os.Build.BRAND;
        }

        /**
         * 获取手机型号
         *
         * @return
         */
        public static String getPhoneModel() {
            return android.os.Build.MODEL;
        }

        /**
         * 获取手机Android API等级(22、23 ...)
         *
         * @return
         */
        public static int getBuildLevel() {
            return android.os.Build.VERSION.SDK_INT;
        }

        /**
         * 获取手机Android 版本(4.4、5.0、5.1 ...)
         *
         * @return
         */
        public static String getBuildVersion() {
            return android.os.Build.VERSION.RELEASE;
        }

        /**
         * 获取当前App进程的id
         *
         * @return
         */
        public static int getAppProcessId() {
            return android.os.Process.myPid();
        }

        /**
         * 获取当前App进程的Name
         *
         * @param context
         * @param processId
         * @return
         */
        public static String getAppProcessName(Context context, int processId) {
            String processName = null;
            ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            // 获取所有运行App的进程集合
            List l = am.getRunningAppProcesses();
            Iterator i = l.iterator();
            PackageManager pm = context.getPackageManager();
            while (i.hasNext()) {
                ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
                try {
                    if (info.pid == processId) {
                        CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));

                        processName = info.processName;
                        return processName;
                    }
                } catch (Exception e) {
                    Log.e(DeviceUtil.class.getName(), e.getMessage(), e);
                }
            }
            return processName;
        }

        /**
         * 创建App文件夹
         *
         * @param appName
         * @param application
         * @return
         */
        public static String createAPPFolder(String appName, Application application) {
            return createAPPFolder(appName, application, null);
        }

        /**
         * 创建App文件夹
         *
         * @param appName
         * @param application
         * @param folderName
         * @return
         */
        public static String createAPPFolder(String appName, Application application, String folderName) {
            File root = Environment.getExternalStorageDirectory();
            File folder;
            /**
             * 如果存在SD卡
             */
            if (DeviceUtil.isSDCardAvailable() && root != null) {
                folder = new File(root, appName);
                if (!folder.exists()) {
                    folder.mkdirs();
                }
            } else {
                /**
                 * 不存在SD卡,就放到缓存文件夹内
                 */
                root = application.getCacheDir();
                folder = new File(root, appName);
                if (!folder.exists()) {
                    folder.mkdirs();
                }
            }
            if (folderName != null) {
                folder = new File(folder, folderName);
                if (!folder.exists()) {
                    folder.mkdirs();
                }
            }
            return folder.getAbsolutePath();
        }

        /**
         * 通过Uri找到File
         *
         * @param context
         * @param uri
         * @return
         */
        public static File uri2File(Activity context, Uri uri) {
            File file;
            String[] project = {MediaStore.Images.Media.DATA};
            Cursor actualImageCursor = context.getContentResolver().query(uri, project, null, null, null);
            if (actualImageCursor != null) {
                int actual_image_column_index = actualImageCursor
                        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                actualImageCursor.moveToFirst();
                String img_path = actualImageCursor
                        .getString(actual_image_column_index);
                file = new File(img_path);
            } else {
                file = new File(uri.getPath());
            }
            if (actualImageCursor != null) actualImageCursor.close();
            return file;
        }

        /**
         * 获取AndroidManifest.xml里 的值
         *
         * @param context
         * @param name
         * @return
         */
        public static String getMetaData(Context context, String name) {
            String value = null;
            try {
                ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
                value = appInfo.metaData.getString(name);
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
            return value;
        }

    }


    PHP技术交流QQ群:422137578

    除非注明,文章均为 PHP二次开发 原创,转载请注明本文地址:http://www.php2.cc/article-2653-1.html

    相关阅读

    最新评论

    用户名:  *

    邮 箱:  *

    网 址: 注意加上“http://”哦!