android utils 常用工具类


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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值