Save you from anything

20.Android 设备工具DeviceUtildp转换px

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

/*** dp 转化为 px* @param context* @param dpValue* @return*/(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*/(Context context, float pxValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (pxValue / scale + 0.5f);}设备宽度 /*** 获取设备宽度(px)* @param context* @return*/(Context context) {return context.getResources().getDisplayMetrics().widthPixels;}设备高度 /*** 获取设备高度(px)* @param context* @return*/(Context context) {return context.getResources().getDisplayMetrics().heightPixels;}SD卡判断 /*** SD卡判断* @return*/() {return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);}网络判断 /*** 是否有网* @param context* @return*/(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*/() {return android.os.Build.VERSION.SDK_INT;}系统Android 版本 /*** 获取手机Android 版本(4.4、5.0、5.1 …)** @return*/public static String getBuildVersion() {return android.os.Build.VERSION.RELEASE;}App进程id /*** 获取当前App进程的id** @return*/() {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。

<meta-dataandroid:name=”DEBUG”android:value=”${DEBUG}” />

build.gradle

一遍一遍的……你突然明白自己还活着,

Save you from anything

相关文章:

你感兴趣的文章:

标签云: