android-设备信息工具类
2016-06-24 14:34
549 查看
package com.z.deviceinfo; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import android.app.Activity; import android.content.Context; import android.content.pm.FeatureInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.os.Build; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.Display; import android.view.WindowManager; /** * 系统版本信息类 */ public class DeviceUtils { /** >=2.2 8 */ public static boolean hasFroyo() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO; } /** >=2.3 9 */ public static boolean hasGingerbread() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD; } /** >=3.0 LEVEL:11 */ public static boolean hasHoneycomb() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; } /** >=3.1 12 */ public static boolean hasHoneycombMR1() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1; } /** >=4.0 14 */ public static boolean hasICS() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH; } /** * >= 4.1 16 * @return */ public static boolean hasJellyBean() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; } /** >= 4.2 17 */ public static boolean hasJellyBeanMr1() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1; } /** >= 4.3 18 */ public static boolean hasJellyBeanMr2() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2; } /** >=4.4 19 */ public static boolean hasKitkat() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; } /** * 获取当前SDK版本<br> * 方 法 名:getSDKVersionInt <br> * 创 建 人: <br> * 创建时间:2016-6-24 上午10:01:33 <br> * 修 改 人: <br> * 修改日期: <br> * @return int */ public static int getSDKVersionInt() { return Build.VERSION.SDK_INT; } /** * 获取当前SDK版本<br> * 方 法 名:getSDKVersion <br> * 创 建 人: <br> * 创建时间:2016-6-24 上午10:01:50 <br> * 修 改 人: <br> * 修改日期: <br> * @return String */ @SuppressWarnings("deprecation") public static String getSDKVersion() { return Build.VERSION.SDK; } /** * 获得设备的固件版本号 */ public static String getReleaseVersion() { return StringUtils.makeSafe(Build.VERSION.RELEASE); } /** 检测是否是中兴机器 */ public static boolean isZte() { return getDeviceModel().toLowerCase().indexOf("zte") != -1; } /** 判断是否是三星的手机 */ public static boolean isSamsung() { return getManufacturer().toLowerCase().indexOf("samsung") != -1; } /** 检测是否HTC手机 */ public static boolean isHTC() { return getManufacturer().toLowerCase().indexOf("htc") != -1; } /** * 检测当前设备是否是特定的设备<br> * 方 法 名:isDevice <br> * 创 建 人: <br> * 创建时间:2016-6-24 上午10:03:42 <br> * 修 改 人: <br> * 修改日期: <br> * @param devices * @return boolean */ public static boolean isDevice(String... devices) { String model = DeviceUtils.getDeviceModel(); if (devices != null && model != null) { for (String device : devices) { if (model.indexOf(device) != -1) { return true; } } } return false; } /** * 获得设备型号 * @return */ public static String getDeviceModel() { return StringUtils.trim(Build.MODEL); } /** 获取厂商信息 */ public static String getManufacturer() { return StringUtils.trim(Build.MANUFACTURER); } /** * 精确获取屏幕尺寸(例如:3.5、4.0、5.0寸屏幕)<br> * 方 法 名:getScreenPhysicalSize <br> * 创 建 人: <br> * 创建时间:2016-6-24 上午10:07:37 <br> * 修 改 人: <br> * 修改日期: <br> * @param ctx * @return double */ public static double getScreenPhysicalSize(Activity ctx) { DisplayMetrics dm = new DisplayMetrics(); ctx.getWindowManager().getDefaultDisplay().getMetrics(dm); double diagonalPixels = Math.sqrt(Math.pow(dm.widthPixels, 2) + Math.pow(dm.heightPixels, 2)); return diagonalPixels / (160 * dm.density); } public static double getScreenIn(Context context) { WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(dm); // 得到屏幕的宽(像素) int screenX = dm.widthPixels; // 得到屏幕的高(像素) int screenY = dm.heightPixels; // 每英寸的像素点 int dpi = dm.densityDpi; // 得到屏幕的宽(英寸) float a = screenX / dpi; // 得到屏幕的高(英寸) float b = screenY / dpi; // 勾股定理 double screenIn = Math.sqrt((a * a) + (b * b)); return screenIn; } /** * 判断是否是平板电脑 * @param context * @return */ public static boolean isTablet(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; } /** * 检测是否是平板电脑 * @param context * @return */ public static boolean isHoneycombTablet(Context context) { return hasHoneycomb() && isTablet(context); } public static int dipToPX(final Context ctx, float dip) { return (int) TypedValue .applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, ctx.getResources().getDisplayMetrics()); } /** * 获取CPU的信息 * @return */ public static String getCpuInfo() { String cpuInfo = ""; try { if (new File("/proc/cpuinfo").exists()) { FileReader fr = new FileReader("/proc/cpuinfo"); BufferedReader localBufferedReader = new BufferedReader(fr, 8192); cpuInfo = localBufferedReader.readLine(); localBufferedReader.close(); if (cpuInfo != null) { cpuInfo = cpuInfo.split(":")[1].trim().split(" ")[0]; } } } catch (IOException e) { } catch (Exception e) { } return cpuInfo; } /** 判断是否支持闪光灯 */ public static boolean isSupportCameraLedFlash(PackageManager pm) { if (pm != null) { FeatureInfo[] features = pm.getSystemAvailableFeatures(); if (features != null) { for (FeatureInfo f : features) { if (f != null && PackageManager.FEATURE_CAMERA_FLASH.equals(f.name)) // 判断设备是否支持闪光灯 return true; } } } return false; } /** 检测设备是否支持相机 */ public static boolean isSupportCameraHardware(Context context) { if (context != null && context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) { return true; } else { return false; } } /** * 获取屏幕宽度<br> * 方 法 名:getScreenWidth <br> * 创 建 人: <br> * 创建时间:2016-6-24 上午10:08:49 <br> * 修 改 人: <br> * 修改日期: <br> * @param context * @return int */ @SuppressWarnings("deprecation") public static int getScreenWidth(Context context) { Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); return display.getWidth(); } /** * 获取屏幕高度<br> * 方 法 名:getScreenHeight <br> * 创 建 人:<br> * 创建时间:2016-6-24 上午10:08:59 <br> * 修 改 人: <br> * 修改日期: <br> * @param context * @return int */ @SuppressWarnings("deprecation") public static int getScreenHeight(Context context) { Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); return display.getHeight(); } }字符串工具类
package com.z.deviceinfo; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Iterator; import java.util.TimeZone; import android.text.TextPaint; import android.text.TextUtils; /** * 字符串工具类 */ public class StringUtils { public static final String EMPTY = ""; private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd"; private static final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd hh:mm:ss"; /** 用于生成文件 */ private static final String DEFAULT_FILE_PATTERN = "yyyy-MM-dd-HH-mm-ss"; private static final double KB = 1024.0; private static final double MB = 1048576.0; private static final double GB = 1073741824.0; public static final SimpleDateFormat DATE_FORMAT_PART = new SimpleDateFormat("HH:mm"); public static String currentTimeString() { return DATE_FORMAT_PART.format(Calendar.getInstance().getTime()); } public static char chatAt(String pinyin, int index) { if (pinyin != null && pinyin.length() > 0) return pinyin.charAt(index); return ' '; } /** 获取字符串宽度 */ public static float GetTextWidth(String Sentence, float Size) { if (isEmpty(Sentence)) return 0; TextPaint FontPaint = new TextPaint(); FontPaint.setTextSize(Size); return FontPaint.measureText(Sentence.trim()) + (int) (Size * 0.1); // 留点余地 } /** * 格式化日期字符串 * @param date * @param pattern * @return */ public static String formatDate(Date date, String pattern) { SimpleDateFormat format = new SimpleDateFormat(pattern); return format.format(date); } public static String formatDate(long date, String pattern) { SimpleDateFormat format = new SimpleDateFormat(pattern); return format.format(new Date(date)); } /** * 格式化日期字符串 * @param date * @return 例如2011-3-24 */ public static String formatDate(Date date) { return formatDate(date, DEFAULT_DATE_PATTERN); } public static String formatDate(long date) { return formatDate(new Date(date), DEFAULT_DATE_PATTERN); } /** * 获取当前时间 格式为yyyy-MM-dd 例如2011-07-08 * @return */ public static String getDate() { return formatDate(new Date(), DEFAULT_DATE_PATTERN); } /** 生成一个文件名,不含后缀 */ public static String createFileName() { Date date = new Date(System.currentTimeMillis()); SimpleDateFormat format = new SimpleDateFormat(DEFAULT_FILE_PATTERN); return format.format(date); } /** * 获取当前时间 * @return */ public static String getDateTime() { return formatDate(new Date(), DEFAULT_DATETIME_PATTERN); } /** * 格式化日期时间字符串 * @param date * @return 例如2011-11-30 16:06:54 */ public static String formatDateTime(Date date) { return formatDate(date, DEFAULT_DATETIME_PATTERN); } public static String formatDateTime(long date) { return formatDate(new Date(date), DEFAULT_DATETIME_PATTERN); } /** * 格林威时间转换 * @param gmt * @return */ public static String formatGMTDate(String gmt) { TimeZone timeZoneLondon = TimeZone.getTimeZone(gmt); return formatDate(Calendar.getInstance(timeZoneLondon).getTimeInMillis()); } /** * 拼接数组 * @param array * @param separator * @return */ public static String join(final ArrayList<String> array, final String separator) { StringBuffer result = new StringBuffer(); if (array != null && array.size() > 0) { for (String str : array) { result.append(str); result.append(separator); } result.delete(result.length() - 1, result.length()); } return result.toString(); } public static String join(final Iterator<String> iter, final String separator) { StringBuffer result = new StringBuffer(); if (iter != null) { while (iter.hasNext()) { String key = iter.next(); result.append(key); result.append(separator); } if (result.length() > 0) result.delete(result.length() - 1, result.length()); } return result.toString(); } /** * 判断字符串是否为空 * @param str * @return */ public static boolean isEmpty(String str) { return str == null || str.length() == 0 || str.equalsIgnoreCase("null"); } public static boolean isNotEmpty(String str) { return !isEmpty(str); } /** * @param str * @return */ public static String trim(String str) { return str == null ? EMPTY : str.trim(); } /** * 转换时间显示 * @param time 毫秒 * @return */ public static String generateTime(long time) { int totalSeconds = (int) (time / 1000); int seconds = totalSeconds % 60; int minutes = (totalSeconds / 60) % 60; int hours = totalSeconds / 3600; return hours > 0 ? String.format("%02d:%02d:%02d", hours, minutes, seconds) : String.format("%02d:%02d", minutes, seconds); } public static boolean isBlank(String s) { return TextUtils.isEmpty(s); } /** 根据秒速获取时间格式 */ public static String gennerTime(int totalSeconds) { int seconds = totalSeconds % 60; int minutes = (totalSeconds / 60) % 60; return String.format("%02d:%02d", minutes, seconds); } /** * 转换文件大小 * @param size * @return */ public static String generateFileSize(long size) { String fileSize; if (size < KB) fileSize = size + "B"; else if (size < MB) fileSize = String.format("%.1f", size / KB) + "KB"; else if (size < GB) fileSize = String.format("%.1f", size / MB) + "MB"; else fileSize = String.format("%.1f", size / GB) + "GB"; return fileSize; } /** 查找字符串,找到返回,没找到返回空 */ public static String findString(String search, String start, String end) { int start_len = start.length(); int start_pos = StringUtils.isEmpty(start) ? 0 : search.indexOf(start); if (start_pos > -1) { int end_pos = StringUtils.isEmpty(end) ? -1 : search.indexOf(end, start_pos + start_len); if (end_pos > -1) return search.substring(start_pos + start.length(), end_pos); } return ""; } /** * 截取字符串 * @param search 待搜索的字符串 * @param start 起始字符串 例如:<title> * @param end 结束字符串 例如:</title> * @param defaultValue * @return */ public static String substring(String search, String start, String end, String defaultValue) { int start_len = start.length(); int start_pos = StringUtils.isEmpty(start) ? 0 : search.indexOf(start); if (start_pos > -1) { int end_pos = StringUtils.isEmpty(end) ? -1 : search.indexOf(end, start_pos + start_len); if (end_pos > -1) return search.substring(start_pos + start.length(), end_pos); else return search.substring(start_pos + start.length()); } return defaultValue; } /** * 截取字符串 * @param search 待搜索的字符串 * @param start 起始字符串 例如:<title> * @param end 结束字符串 例如:</title> * @return */ public static String substring(String search, String start, String end) { return substring(search, start, end, ""); } /** * 拼接字符串 * @param strs * @return */ public static String concat(String... strs) { StringBuffer result = new StringBuffer(); if (strs != null) { for (String str : strs) { if (str != null) result.append(str); } } return result.toString(); } /** * Helper function for making null strings safe for comparisons, etc. * @return (s == null) ? "" : s; */ public static String makeSafe(String s) { return (s == null) ? "" : s; } }
相关文章推荐
- Android应用的闪退(crash)分析
- Android开发学习之路-Android N新特性-多窗口模式
- genymotion报错 Unable to start VirtualBox部分解决方法
- Android 布局技巧
- Android:一个TextView分段改变样式、添加监听事件的实现方式(类似朋友圈评论)
- Android5.0报错:java.lang.IllegalArgumentException: Service Intent must be explicit
- android:layout_gravity和android:gravity的区别
- Android 实现“调用手机已安装市场,进行软件评分的功能”
- android:windowSoftInputMode属性使用
- [Android]如何修改android模拟器的IMEI号
- [Android]MUC获取服务器HostedRoom产生异常
- Android XMPP实现IM 群聊功能
- Android ContentProvider使用注意事项
- [Android]应用中实现清除缓存的功能
- Android:获取系统当前日期时间
- Android:InflateException: Binary XML file line #139: Error inflating class null
- android 后台独立进程
- android:Dialog点击其他区域消失
- android:SharedPreference 读取失败的原因及解决办法
- Android:DownloadManager setDestinationInExternalPublicDir(subPath, fileName)使用说明