android utils 常用工具类
2015-10-17 15:21
453 查看
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.annotation.SuppressLint; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.app.ActivityManager.RunningTaskInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.graphics.Bitmap; import android.graphics.Color; import android.location.LocationManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import android.os.Environment; import android.os.StatFs; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.DisplayMetrics; import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import com.zhuangxiaomi.cloudsupervisor.R; import com.zhuangxiaomi.cloudsupervisor.view.SystemBarTintManager; public class CommonUtil { public static boolean hasSdcard() { String status = Environment.getExternalStorageState(); if (status.equals(Environment.MEDIA_MOUNTED)) { return true; } else { return false; } } public static void showSoftPad(Context context, EditText edit) { ((InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput( edit, 0); } public static void hideSoftPad(Activity activity) { InputMethodManager inputMethodManager = (InputMethodManager) activity .getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus() .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } public static boolean isServiceRunning(Context context, String serviceName) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<RunningServiceInfo> serviceInfo = activityManager .getRunningServices(100); for (RunningServiceInfo info : serviceInfo) { String name = info.service.getClassName(); if (name.equals(serviceName)) { return true; } } return false; } public static String getPackageName(Context context) { PackageManager packageManager = context.getPackageManager(); PackageInfo packInfo; try { packInfo = packageManager.getPackageInfo(context.getPackageName(), 0); return packInfo.packageName; } catch (NameNotFoundException e) { return null; } } public static long getAvailableInternalMemorySize() { File path = Environment.getDataDirectory(); // 获取数据目录 StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return availableBlocks * blockSize; } public static boolean isGpsOpen(final Context context) { LocationManager locationManager = (LocationManager) context .getSystemService(Context.LOCATION_SERVICE); boolean gps = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); boolean network = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (gps || network) { return true; } return false; } public static String getCurrentActivity(Context context) { ActivityManager manager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> runningTasks = manager.getRunningTasks(1); RunningTaskInfo cinfo = runningTasks.get(0); ComponentName component = cinfo.topActivity; return component.getShortClassName(); } public static int getScreenWidth(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); return dm.widthPixels; } public static int getScreenHeight(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); return dm.heightPixels; } public static Object cloneObject(Object obj) { Object result = null; ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out; try { out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream( byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); result = in.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return result; } public static final long ONE_MINUTE = 60 * 1000; public static final long ONE_HOUR = 60 * ONE_MINUTE; public static final long ONE_DAY = 24 * ONE_HOUR; public static final long ONE_MONTH = 30 * ONE_DAY; public static final long ONE_YEAR = 12 * ONE_MONTH; /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } @SuppressLint("NewApi") public static String genDeviceId() { String raw = ""; try { raw += android.os.Build.BRAND; } catch (Exception e) { e.printStackTrace(); } try { raw += android.os.Build.MODEL; } catch (Exception e) { e.printStackTrace(); } try { raw += android.os.Build.BOOTLOADER; } catch (Exception e) { e.printStackTrace(); } try { raw += android.os.Build.DISPLAY; } catch (Exception e) { e.printStackTrace(); } try { raw += android.os.Build.HARDWARE; } catch (Exception e) { e.printStackTrace(); } try { raw += android.os.Build.ID; } catch (Exception e) { e.printStackTrace(); } try { raw += android.os.Build.SERIAL; } catch (Exception e) { e.printStackTrace(); } try { raw += android.os.Build.CPU_ABI; } catch (Exception e) { e.printStackTrace(); } try { raw += android.os.Build.PRODUCT; } catch (Exception e) { e.printStackTrace(); } return GetMD5Code(raw); } // 全局数组 private final static String[] strDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; // 返回形式为数字跟字符串 private static String byteToArrayString(byte bByte) { int iRet = bByte; if (iRet < 0) { iRet += 256; } int iD1 = iRet / 16; int iD2 = iRet % 16; return strDigits[iD1] + strDigits[iD2]; } // 转换字节数组为16进制字串 private static String byteToString(byte[] bByte) { StringBuffer sBuffer = new StringBuffer(); for (int i = 0; i < bByte.length; i++) { sBuffer.append(byteToArrayString(bByte[i])); } return sBuffer.toString(); } public static String GetMD5Code(String strObj) { String resultString = null; try { resultString = new String(strObj); MessageDigest md = MessageDigest.getInstance("MD5"); // md.digest() 该函数返回值为存放哈希值结果的byte数组 resultString = byteToString(md.digest(strObj.getBytes())); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } return resultString; } public static String getVersionName(Context context) { String name = "1.0.0"; PackageManager packageManager = context.getPackageManager(); PackageInfo packInfo; try { packInfo = packageManager.getPackageInfo(context.getPackageName(), 0); name = packInfo.versionName; return name; } catch (NameNotFoundException e) { e.printStackTrace(); } return name; } public static boolean isPhoneNumber(String phoneNumber) { if (TextUtils.isEmpty(phoneNumber)) return false; if (phoneNumber.length() == 11) { String pattern = "(^(13\\d|14[57]|15[^4,\\D]|17[678]|18\\d)\\d{8}|170[059]\\d{7})$"; Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(phoneNumber); return m.find();//是手机号 } else return false; } public static String getDeviceId(Context context) { String imei = ""; try { TelephonyManager mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); imei = mTelephonyMgr.getDeviceId(); if (TextUtils.isEmpty(imei)) imei = genDeviceId(); } catch (Exception e) { imei = genDeviceId(); } return imei; } /** *设置系统状态栏颜色 * @param activity * @param on * @param color getResources().getColor(R.color.cs_base_color) or Color.parse... */ public static void setSystemStatusBar(Activity activity,boolean on,int color) { //还需在每个布局文件设置 // android:clipToPadding="true" //android:fitsSystemWindows="true" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window win = activity.getWindow(); WindowManager.LayoutParams winParams = win.getAttributes(); final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; if (on) { winParams.flags |= bits; } else { winParams.flags &= ~bits; } win.setAttributes(winParams); //https://github.com/hexiaochun/SystemBarTint SystemBarTintManager tintManager = new SystemBarTintManager(activity); // enable status bar tint tintManager.setStatusBarTintEnabled(true); // enable navigation bar tint // tintManager.setNavigationBarTintEnabled(true); // set a custom tint color for all system bars tintManager.setTintColor(color); // set a custom navigation bar resource // tintManager.setNavigationBarTintResource(R.drawable.my_tint); // set a custom status bar drawable // tintManager.setStatusBarTintDrawable(MyDrawable); } } public static void hideSoft(Context context,EditText edit) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(edit.getWindowToken(), 0); } public static void showSoft(Context context) { ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)) .toggleSoftInput(0, 0); } public static boolean isNetWorkConnected(Context context) { ConnectivityManager conn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = conn.getActiveNetworkInfo(); return (info != null && info.isConnected()); } /** * 处理字符串,如果传入为null,"",返回"未知" * @param msg * @return */ public static String dealStr(Context context,String msg) { if (TextUtils.isEmpty(msg)) { msg = context.getString(R.string.cs_common_unknow); } return msg; } /** * 判断APP是否在运行 * @return */ public static boolean isAppRunning(Context context){ boolean flag = false; ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); String[] activePackages; if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { activePackages = getActivePackages(am); } else { activePackages = getActivePackagesCompat(am); } // Intent intent = new Intent(context, cls); // ComponentName cmpName = intent.resolveActivity(context.getPackageManager()); // if (cmpName != null) { // 说明系统中存在这个activity // List<RunningTaskInfo> taskInfoList = am.getRunningTasks(10); // for (RunningTaskInfo taskInfo : taskInfoList) { // if (taskInfo.baseActivity.equals(cmpName)) { // 说明它已经启动了 // flag = true; // break; //跳出循环,优化效率 // } // } // } if (activePackages != null) { String currentPkgName = context.getPackageName(); for (String activePackage : activePackages) { LogUtil.e("aa", "activePackage == " + activePackage + ",current="+currentPkgName); if (currentPkgName!=null && currentPkgName.equals(activePackage)){ flag = true; break; } } } return flag; } private static String[] getActivePackagesCompat(ActivityManager am) { final List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); final ComponentName componentName = taskInfo.get(0).topActivity; final String[] activePackages = new String[1]; activePackages[0] = componentName.getPackageName(); return activePackages; } private static String[] getActivePackages(ActivityManager am) { final Set<String> activePackages = new HashSet<String>(); final List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) { if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { activePackages.addAll(Arrays.asList(processInfo.pkgList)); } } return activePackages.toArray(new String[activePackages.size()]); } public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) { ByteArrayOutputStream output = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, output); if (needRecycle) { bmp.recycle(); } byte[] result = output.toByteArray(); try { output.close(); } catch (Exception e) { e.printStackTrace(); } return result; } }
相关文章推荐
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- android utils 存储异常工具
- android utils Toast工具
- android utils Log工具
- android utils 日期工具
- android:lineSpacingExtra,android:lineSpacingMultiplie
- android utils SharedPreferences存取数据
- Android学习笔记(十三)SharedPreference必须掌握的基础
- android 单例模式
- Android 实现变色状态栏
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- Android循序渐进 - 4.1.1 Android四大组件之-Activity(初学乍练)
- Android实现自定义倒计时view
- Android 开发中使用 SQLite 数据库
- Android程序框架设计
- Android Api Demos登顶之路(103)View-->Chronometer
- android 客户端 保持session 连接
- Android 学习笔记之Volley开源框架解析(一)
- Android中View的量算、布局及绘图机制
- android游戏开发之“找出红心A”