您的位置:首页 > 移动开发 > Android开发

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: