From 98b66940e544fc152b3ef60550b6a711275810eb Mon Sep 17 00:00:00 2001 From: max Date: Mon, 4 Mar 2024 14:40:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=83=A8=E5=88=86=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/chwl/library/utils/ColorUtil.java | 24 -- .../com/chwl/library/utils/FileUtils.java | 147 ------- .../com/chwl/library/utils/ImageUtils.java | 246 ------------ .../chwl/library/utils/MacAddressUtils.java | 379 ------------------ .../chwl/library/utils/OperationTimer.java | 55 --- .../chwl/library/utils/RandomStringUtil.java | 42 -- .../chwl/library/utils/StringCutUtils.java | 103 ----- .../chwl/library/utils/TelephonyUtils.java | 225 ----------- .../com/chwl/library/utils/ViewUtils.java | 15 - .../java/com/chwl/library/utils/ZipUtils.java | 203 ---------- 10 files changed, 1439 deletions(-) delete mode 100644 library/src/main/java/com/chwl/library/utils/ColorUtil.java delete mode 100644 library/src/main/java/com/chwl/library/utils/FileUtils.java delete mode 100644 library/src/main/java/com/chwl/library/utils/ImageUtils.java delete mode 100644 library/src/main/java/com/chwl/library/utils/MacAddressUtils.java delete mode 100644 library/src/main/java/com/chwl/library/utils/OperationTimer.java delete mode 100644 library/src/main/java/com/chwl/library/utils/RandomStringUtil.java delete mode 100644 library/src/main/java/com/chwl/library/utils/StringCutUtils.java delete mode 100644 library/src/main/java/com/chwl/library/utils/TelephonyUtils.java delete mode 100644 library/src/main/java/com/chwl/library/utils/ViewUtils.java delete mode 100644 library/src/main/java/com/chwl/library/utils/ZipUtils.java diff --git a/library/src/main/java/com/chwl/library/utils/ColorUtil.java b/library/src/main/java/com/chwl/library/utils/ColorUtil.java deleted file mode 100644 index 051b3ccf3..000000000 --- a/library/src/main/java/com/chwl/library/utils/ColorUtil.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.chwl.library.utils; - - -/** - * Created by lijun on 2014/11/20. - */ -public class ColorUtil { - - public static String color2HexString(int intColor) { - String strColor = String.format("#%06X", 0xFFFFFF & intColor); - return strColor; - } - - public static float brightness(int color) { - int r = (color >> 16) & 0xFF; - int g = (color >> 8) & 0xFF; - int b = color & 0xFF; - - int V = Math.max(b, Math.max(r, g)); - - return (V / 255.f); - } - -} diff --git a/library/src/main/java/com/chwl/library/utils/FileUtils.java b/library/src/main/java/com/chwl/library/utils/FileUtils.java deleted file mode 100644 index 6531682b8..000000000 --- a/library/src/main/java/com/chwl/library/utils/FileUtils.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.chwl.library.utils; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import okio.Okio; - -/** - *

文件操作工具类

- * - * @author jiahui - * @date 2018/2/5 - */ -public final class FileUtils { - - /** - * 获取文件扩展名 - * - * @param filename 文件路径 - * @return 扩展名,如:zip,如果文件没有扩展名返回null - */ - public static String getExtensionName(String filename) { - if ((filename != null) && (filename.length() > 0)) { - int dot = filename.lastIndexOf('.'); - if ((dot > -1) && (dot < (filename.length() - 1))) { - return filename.substring(dot + 1); - } - } - return null; - } - - /** - * 获取不带扩展名的文件名 - * - * @param filename 目标文件路径 - * @return 文件名 - */ - public static String getFileNameNoEx(String filename) { - if ((filename != null) && (filename.length() > 0)) { - int dot = filename.lastIndexOf('.'); - if ((dot > -1) && (dot < (filename.length()))) { - return filename.substring(0, dot); - } - } - return filename; - } - - /** - * 获取文件路径的最后文件名(不带扩展名) - * - * @param filename 目标文件路径 - * @return 最后文件名(不带扩展名) - */ - public static String getLastFileNameNoEx(String filename) { - if ((filename != null) && (filename.length() > 0)) { - int separator = filename.lastIndexOf(File.separator); - if (separator > -1 && separator < filename.length()) { - String lastName = filename.substring(separator + 1); - int dot = lastName.lastIndexOf('.'); - if ((dot > -1) && (dot < (lastName.length()))) { - return lastName.substring(0, dot); - } else { - return lastName; - } - } - } - return filename; - } - - /** - * 获取zip报里面的文件或文件夹列表集合 - * - * @param zipFilePath zip路径 - * @param bContainFolder 是否包含文件夹 - * @param bContainFile 是否包含文件 - * @return zip里面的文件列表集合 - */ - public static List getZipFileList(String zipFilePath, boolean bContainFolder, boolean bContainFile) { - List fileList = new ArrayList<>(); - ZipInputStream inZip = null; - try { - inZip = new ZipInputStream(new FileInputStream(zipFilePath)); - ZipEntry zipEntry; - String szName; - while ((zipEntry = inZip.getNextEntry()) != null) { - szName = zipEntry.getName(); - if (zipEntry.isDirectory()) { - szName = szName.substring(0, szName.length() - 1); - if (bContainFolder) - fileList.add(new File(szName)); - } else { - if (bContainFile) - fileList.add(new File(szName)); - } - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - IOUtils.close(inZip); - } - return fileList; - } - - public static void copy(String srcFilePath, String destFilePath) { - try { - File destFile = new File(destFilePath); - Okio.buffer(Okio.sink(destFile)).writeAll(Okio.buffer(Okio.source(new File(srcFilePath)))); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void write(File destFile, String content) { - try { - Okio.buffer(Okio.appendingSink(destFile)) - .writeUtf8(content + "\n\n") - .flush(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void write(String destFile, String content) { - write(new File(destFile), content); - } - - /** - * 获取文件名 - * - * @param filepath - * @return - */ - public static String getFileNameFromPath(String filepath) { - if ((filepath != null) && (filepath.length() > 0)) { - int sep = filepath.lastIndexOf('/'); - if ((sep > -1) && (sep < filepath.length() - 1)) { - return filepath.substring(sep + 1); - } - } - return filepath; - } -} diff --git a/library/src/main/java/com/chwl/library/utils/ImageUtils.java b/library/src/main/java/com/chwl/library/utils/ImageUtils.java deleted file mode 100644 index 556bf89ac..000000000 --- a/library/src/main/java/com/chwl/library/utils/ImageUtils.java +++ /dev/null @@ -1,246 +0,0 @@ -package com.chwl.library.utils; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Matrix; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.media.ExifInterface; -import android.widget.ImageView; - -import java.io.IOException; -import java.io.InputStream; -import java.lang.ref.SoftReference; -import java.lang.ref.WeakReference; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; - -public class ImageUtils { - - public static Bitmap path2Bitmap(String path, int w, int h){ - BitmapFactory.Options opts = new BitmapFactory.Options(); - // 设置为ture只获取图片大小 - opts.inJustDecodeBounds = true; - opts.inPreferredConfig = Bitmap.Config.ARGB_8888; - // 返回为空 - BitmapFactory.decodeFile(path, opts); - int width = opts.outWidth; - int height = opts.outHeight; - float scaleWidth = 0.f, scaleHeight = 0.f; - if (width > w || height > h) { - // 缩放 - scaleWidth = ((float) width) / w; - scaleHeight = ((float) height) / h; - } - opts.inJustDecodeBounds = false; - float scale = Math.max(scaleWidth, scaleHeight); - opts.inSampleSize = (int)scale; - WeakReference weak = new WeakReference(BitmapFactory.decodeFile(path, opts)); - return Bitmap.createScaledBitmap(weak.get(), w, h, true); - } - - public static Bitmap ImageView2Bitmap(ImageView iv){ - if(null != iv && null != iv.getDrawable()){ - Bitmap image = ((BitmapDrawable)iv.getDrawable()).getBitmap(); - return image; - }else{ - return null; - } - } - - public static void recycle(ImageView iv) { - if(null != iv){ - Bitmap pBitmap = ImageView2Bitmap(iv); - if(null != pBitmap){ - SoftReference bitmap; - bitmap = new SoftReference(pBitmap); - if (bitmap != null) { - if (bitmap.get() != null && !bitmap.get().isRecycled()) { -// bitmap.get().recycle(); - bitmap = null; - } - } - } - } - } - - // 等比例缩放图片 - public static Bitmap zoomImg(String imgPath, int newWidth, int newHeight) { - - // 图片源 - Bitmap bm = BitmapFactory.decodeFile(imgPath); - if (null != bm) { - return zoomImg(bm, newWidth, newHeight); - } - - return null; - } - - public static Bitmap zoomImg(Context context, String img, int newWidth, int newHeight) { - // 图片源 - try { - Bitmap bm = BitmapFactory.decodeStream(context.getAssets().open(img)); - if (null != bm) { - return zoomImg(bm, newWidth, newHeight); - } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return null; - } - - // 缩放图片 - public static Bitmap zoomImg(Bitmap bm, int newWidth, int newHeight) { - // 获得图片的宽高 - int width = bm.getWidth(); - int height = bm.getHeight(); - // 计算缩放比例 - float scaleWidth = ((float) newWidth) / width; - float scaleHeight = ((float) newHeight) / height; - // 取得想要缩放的matrix参数 - Matrix matrix = new Matrix(); - matrix.postScale(scaleWidth, scaleHeight); - // 得到新的图片 - Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true); - bm = null; - return newbm; - } - - /** - * 根据图片的url路径获得Bitmap对象 - * - * @param url - * @return - */ - public static Bitmap urlToBitmap(String url) { - URL fileUrl = null; - Bitmap bitmap = null; - - try { - fileUrl = new URL(url); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - - try { - HttpURLConnection conn = (HttpURLConnection) fileUrl.openConnection(); - conn.setDoInput(true); - conn.connect(); - InputStream is = conn.getInputStream(); - bitmap = BitmapFactory.decodeStream(is); - is.close(); - } catch (IOException e) { - e.printStackTrace(); - } - return bitmap; - - } - - /** - * @param urlpath - * @return Bitmap 根据图片url获取图片对象 - */ - public static Bitmap getBitMBitmap(String urlpath) { - Bitmap map = null; - try { - URL url = new URL(urlpath); - URLConnection conn = url.openConnection(); - conn.connect(); - InputStream in; - in = conn.getInputStream(); - map = BitmapFactory.decodeStream(in); - // TODO Auto-generated catch block - } catch (IOException e) { - e.printStackTrace(); - } - return map; - } - - /** - * @param urlpath - * @return Bitmap 根据url获取布局背景的对�? - */ - public static Drawable getDrawable(String urlpath) { - Drawable d = null; - try { - URL url = new URL(urlpath); - URLConnection conn = url.openConnection(); - conn.connect(); - InputStream in; - in = conn.getInputStream(); - d = Drawable.createFromStream(in, "background.jpg"); - // TODO Auto-generated catch block - } catch (IOException e) { - e.printStackTrace(); - } - return d; - } - - - - /** - * 读取图片的旋转的角度 - * - * @param path - * 图片绝对路径 - * @return 图片的旋转角度 - */ - private int getBitmapDegree(String path) { - int degree = 0; - try { - // 从指定路径下读取图片,并获取其EXIF信息 - ExifInterface exifInterface = new ExifInterface(path); - // 获取图片的旋转信息 - int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, - ExifInterface.ORIENTATION_NORMAL); - switch (orientation) { - case ExifInterface.ORIENTATION_ROTATE_90: - degree = 90; - break; - case ExifInterface.ORIENTATION_ROTATE_180: - degree = 180; - break; - case ExifInterface.ORIENTATION_ROTATE_270: - degree = 270; - break; - } - } catch (IOException e) { - e.printStackTrace(); - } - return degree; - } - - /** - * 将图片按照某个角度进行旋转 - * - * @param bm - * 需要旋转的图片 - * @param degree - * 旋转角度 - * @return 旋转后的图片 - */ - public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) { - Bitmap returnBm = null; - - // 根据旋转角度,生成旋转矩阵 - Matrix matrix = new Matrix(); - matrix.postRotate(degree); - try { - // 将原始图片按照旋转矩阵进行旋转,并得到新的图片 - returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true); - } catch (OutOfMemoryError e) { - } - if (returnBm == null) { - returnBm = bm; - } - if (bm != returnBm) { - bm.recycle(); - } - return returnBm; - } - -} diff --git a/library/src/main/java/com/chwl/library/utils/MacAddressUtils.java b/library/src/main/java/com/chwl/library/utils/MacAddressUtils.java deleted file mode 100644 index 5e45ac1f9..000000000 --- a/library/src/main/java/com/chwl/library/utils/MacAddressUtils.java +++ /dev/null @@ -1,379 +0,0 @@ -package com.chwl.library.utils; - -import android.content.Context; -import android.content.pm.PackageManager; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiManager; -import android.os.Build; -import android.text.TextUtils; -import android.util.Log; - -import com.chwl.library.BuildConfig; -import com.chwl.library.R; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.InputStreamReader; -import java.io.LineNumberReader; -import java.io.Reader; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.util.Enumeration; - -/** - * Created by MadisonRong on 2019/7/5 - */ -public class MacAddressUtils { - - public static String getMac(Context context) { - - String strMac = null; - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - if (BuildConfig.DEBUG) { - Log.e("=====", ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_01)); -// Toast.makeText(context, ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_02), Toast.LENGTH_SHORT).show(); - SingleToastUtil.showToastShort(ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_03)); - } - strMac = getLocalMacAddressFromWifiInfo(context); - return strMac; - } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N - && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (BuildConfig.DEBUG) { - Log.e("=====", ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_04)); -// Toast.makeText(context, ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_05), Toast.LENGTH_SHORT).show(); - SingleToastUtil.showToastShort(ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_06)); - } - strMac = getMacAddress(context); - return strMac; - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - Log.e("=====", ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_07)); - if (!TextUtils.isEmpty(getMacAddress())) { - if (BuildConfig.DEBUG) { - Log.e("=====", ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_08)); -// Toast.makeText(context, ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_09), Toast.LENGTH_SHORT).show(); - SingleToastUtil.showToastShort(ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_010)); - } - strMac = getMacAddress(); - return strMac; - } else if (!TextUtils.isEmpty(getMachineHardwareAddress())) { - if (BuildConfig.DEBUG) { - Log.e("=====", ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_011)); -// Toast.makeText(context, ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_012), Toast.LENGTH_SHORT).show(); - SingleToastUtil.showToastShort(ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_013)); - } - strMac = getMachineHardwareAddress(); - return strMac; - } else { - if (BuildConfig.DEBUG) { - Log.e("=====", ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_014)); -// Toast.makeText(context, ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_015), Toast.LENGTH_SHORT).show(); - SingleToastUtil.showToastShort(ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_016)); - } - strMac = getLocalMacAddressFromBusybox(); - return strMac; - } - } - - return "02:00:00:00:00:00"; - } - - /** - * 根据wifi信息获取本地mac - * @param context - * @return - */ - public static String getLocalMacAddressFromWifiInfo(Context context) { - WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); - WifiInfo winfo = wifi.getConnectionInfo(); - String mac = winfo.getMacAddress(); - return mac; - } - - /** - * android 6.0及以上、7.0以下 获取mac地址 - * - * @param context - * @return - */ - public static String getMacAddress(Context context) { - - // 如果是6.0以下,直接通过wifimanager获取 - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - String macAddress0 = getMacAddress0(context); - if (!TextUtils.isEmpty(macAddress0)) { - return macAddress0; - } - } - String str = ""; - String macSerial = ""; - try { - Process pp = Runtime.getRuntime().exec( - "cat /sys/class/net/wlan0/address"); - InputStreamReader ir = new InputStreamReader(pp.getInputStream()); - LineNumberReader input = new LineNumberReader(ir); - for (; null != str; ) { - str = input.readLine(); - if (str != null) { - macSerial = str.trim();// 去空格 - break; - } - } - } catch (Exception ex) { - Log.e("----->" + "NetInfoManager", "getMacAddress:" + ex.toString()); - } - if (macSerial == null || "".equals(macSerial)) { - try { - return loadFileAsString("/sys/class/net/eth0/address") - .toUpperCase().substring(0, 17); - } catch (Exception e) { - e.printStackTrace(); - Log.e("----->" + "NetInfoManager", - "getMacAddress:" + e.toString()); - } - - } - return macSerial; - } - - private static String getMacAddress0(Context context) { - if (isAccessWifiStateAuthorized(context)) { - WifiManager wifiMgr = (WifiManager) context - .getSystemService(Context.WIFI_SERVICE); - WifiInfo wifiInfo = null; - try { - wifiInfo = wifiMgr.getConnectionInfo(); - return wifiInfo.getMacAddress(); - } catch (Exception e) { - Log.e("----->" + "NetInfoManager", - "getMacAddress0:" + e.toString()); - } - - } - return ""; - - } - - /** - * Check whether accessing wifi state is permitted - * - * @param context - * @return - */ - private static boolean isAccessWifiStateAuthorized(Context context) { - if (PackageManager.PERMISSION_GRANTED == context - .checkCallingOrSelfPermission("android.permission.ACCESS_WIFI_STATE")) { - Log.e("----->" + "NetInfoManager", "isAccessWifiStateAuthorized:" - + "access wifi state is enabled"); - return true; - } else - return false; - } - - private static String loadFileAsString(String fileName) throws Exception { - FileReader reader = new FileReader(fileName); - String text = loadReaderAsString(reader); - reader.close(); - return text; - } - - private static String loadReaderAsString(Reader reader) throws Exception { - StringBuilder builder = new StringBuilder(); - char[] buffer = new char[4096]; - int readLength = reader.read(buffer); - while (readLength >= 0) { - builder.append(buffer, 0, readLength); - readLength = reader.read(buffer); - } - return builder.toString(); - } - - /** - * 根据IP地址获取MAC地址 - * - * @return - */ - public static String getMacAddress() { - String strMacAddr = null; - try { - // 获得IpD地址 - InetAddress ip = getLocalInetAddress(); - byte[] b = NetworkInterface.getByInetAddress(ip) - .getHardwareAddress(); - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < b.length; i++) { - if (i != 0) { - buffer.append(':'); - } - String str = Integer.toHexString(b[i] & 0xFF); - buffer.append(str.length() == 1 ? 0 + str : str); - } - strMacAddr = buffer.toString().toUpperCase(); - } catch (Exception e) { - } - return strMacAddr; - } - /** - * 获取移动设备本地IP - * - * @return - */ - private static InetAddress getLocalInetAddress() { - InetAddress ip = null; - try { - // 列举 - Enumeration en_netInterface = NetworkInterface - .getNetworkInterfaces(); - while (en_netInterface.hasMoreElements()) {// 是否还有元素 - NetworkInterface ni = (NetworkInterface) en_netInterface - .nextElement();// 得到下一个元素 - Enumeration en_ip = ni.getInetAddresses();// 得到一个ip地址的列举 - while (en_ip.hasMoreElements()) { - ip = en_ip.nextElement(); - if (!ip.isLoopbackAddress() - && ip.getHostAddress().indexOf(":") == -1) - break; - else - ip = null; - } - - if (ip != null) { - break; - } - } - } catch (SocketException e) { - - e.printStackTrace(); - } - return ip; - } - - /** - * 获取本地IP - * - * @return - */ - private static String getLocalIpAddress() { - try { - for (Enumeration en = NetworkInterface - .getNetworkInterfaces(); en.hasMoreElements(); ) { - NetworkInterface intf = en.nextElement(); - for (Enumeration enumIpAddr = intf - .getInetAddresses(); enumIpAddr.hasMoreElements(); ) { - InetAddress inetAddress = enumIpAddr.nextElement(); - if (!inetAddress.isLoopbackAddress()) { - return inetAddress.getHostAddress().toString(); - } - } - } - } catch (SocketException ex) { - ex.printStackTrace(); - } - return null; - } - - - /** - * android 7.0及以上 (2)扫描各个网络接口获取mac地址 - * - */ - /** - * 获取设备HardwareAddress地址 - * - * @return - */ - public static String getMachineHardwareAddress() { - Enumeration interfaces = null; - try { - interfaces = NetworkInterface.getNetworkInterfaces(); - } catch (SocketException e) { - e.printStackTrace(); - } - String hardWareAddress = null; - NetworkInterface iF = null; - if (interfaces == null) { - return null; - } - while (interfaces.hasMoreElements()) { - iF = interfaces.nextElement(); - try { - hardWareAddress = bytesToString(iF.getHardwareAddress()); - if (hardWareAddress != null) - break; - } catch (SocketException e) { - e.printStackTrace(); - } - } - return hardWareAddress; - } - - /*** - * byte转为String - * - * @param bytes - * @return - */ - private static String bytesToString(byte[] bytes) { - if (bytes == null || bytes.length == 0) { - return null; - } - StringBuilder buf = new StringBuilder(); - for (byte b : bytes) { - buf.append(String.format("%02X:", b)); - } - if (buf.length() > 0) { - buf.deleteCharAt(buf.length() - 1); - } - return buf.toString(); - } - - - /** - * android 7.0及以上 (3)通过busybox获取本地存储的mac地址 - * - */ - - /** - * 根据busybox获取本地Mac - * - * @return - */ - public static String getLocalMacAddressFromBusybox() { - String result = ""; - String Mac = ""; - result = callCmd("busybox ifconfig", "HWaddr"); - // 如果返回的result == null,则说明网络不可取 - if (result == null) { - return ResUtil.getString(R.string.xchat_android_library_utils_macaddressutils_017); - } - // 对该行数据进行解析 - // 例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67 - if (result.length() > 0 && result.contains("HWaddr") == true) { - Mac = result.substring(result.indexOf("HWaddr") + 6, - result.length() - 1); - result = Mac; - } - return result; - } - - private static String callCmd(String cmd, String filter) { - String result = ""; - String line = ""; - try { - Process proc = Runtime.getRuntime().exec(cmd); - InputStreamReader is = new InputStreamReader(proc.getInputStream()); - BufferedReader br = new BufferedReader(is); - - while ((line = br.readLine()) != null - && line.contains(filter) == false) { - result += line; - } - - result = line; - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } -} diff --git a/library/src/main/java/com/chwl/library/utils/OperationTimer.java b/library/src/main/java/com/chwl/library/utils/OperationTimer.java deleted file mode 100644 index 9cca10880..000000000 --- a/library/src/main/java/com/chwl/library/utils/OperationTimer.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.chwl.library.utils; - -import android.os.Handler; -import android.os.Message; - -/** - * Created by lijun on 2015/1/29. - */ -public class OperationTimer extends Handler { - - private static final long SHORT_TIME = 600; - public static final int CLICK_MESSAGE = 100; - private Callback mCallback; - - private long mShortTime = SHORT_TIME; - - public OperationTimer(long mShortTime, Callback callback) { - this(callback); - this.mShortTime = mShortTime; - } - - public OperationTimer(Callback callback) { - this.mCallback = callback; - } - - public void setShortTime(long shortTime) { - this.mShortTime = shortTime; - } - - public void notifyClick() { - removeMessages(CLICK_MESSAGE); - sendEmptyMessageDelayed(CLICK_MESSAGE, mShortTime); - } - - public void stopNotifyClick() { - removeMessages(CLICK_MESSAGE); - } - - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case CLICK_MESSAGE: - if (null != mCallback) { - mCallback.onRealClick(); - } - break; - default: - break; - } - } - - public interface Callback { - public void onRealClick(); - } -} diff --git a/library/src/main/java/com/chwl/library/utils/RandomStringUtil.java b/library/src/main/java/com/chwl/library/utils/RandomStringUtil.java deleted file mode 100644 index 272071c34..000000000 --- a/library/src/main/java/com/chwl/library/utils/RandomStringUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.chwl.library.utils; - -import java.util.Random; - -/** - * Created by MadisonRong on 2019/7/10 - */ -public class RandomStringUtil { - - private static final char[] encodeTable = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', - 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', - '7', '8', '9'}; - - private RandomStringUtil() { - } - - public static RandomStringUtil getInstance() { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder { - private static final RandomStringUtil INSTANCE = new RandomStringUtil(); - } - - /** - * 获取随机String - * - * @param len - * @return - */ - public static String getRandomString(int len) { - String returnStr = ""; - char[] ch = new char[len]; - Random rd = new Random(); - for (int i = 0; i < len; i++) { - ch[i] = (char) (rd.nextInt(9) + 65); - ch[i] = encodeTable[rd.nextInt(36)]; - } - returnStr = new String(ch); - return returnStr; - } -} diff --git a/library/src/main/java/com/chwl/library/utils/StringCutUtils.java b/library/src/main/java/com/chwl/library/utils/StringCutUtils.java deleted file mode 100644 index c3ccfdeb1..000000000 --- a/library/src/main/java/com/chwl/library/utils/StringCutUtils.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.chwl.library.utils; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - *

- * - * @author jiahui - * date 2018/2/28 - */ -public class StringCutUtils { - - private static String regEx = "[\u4e00-\u9fa5]"; // 中文范围 - - /** - * 格式化字符串 - * @param string 原始输入字符串 - * @param maxCount 最大字符限制,中文算作2个字符,其他都算1个字符 - * @return - */ - private static String formatText(String string, int maxCount) { - if ( (string == null || string.length() == 0) - && getChCount(string) > maxCount) { - string = subStrByLen(string, maxCount - 1); - } - return string; - } - - /** - * - * 截取字符串,超出最大字数截断并显示"..." - * @param str 原始字符串 - * @param length 最大字数限制(以最大字数限制7个为例,当含中文时,length应设为2*7,不含中文时设为7) - * @return 处理后的字符串 - */ - public static String subStrByLen(String str, int length) { - if (str == null || str.length() == 0) { - return ""; - } - int chCnt = getStrLen(str); - // 超出进行截断处理 - if (chCnt > length) { - int cur = 0; - int cnt = 0; - StringBuilder sb = new StringBuilder(); - while (cnt <= length && cur < str.length()) { - char nextChar = str.charAt(cur); - if (isChCharacter(String.valueOf(nextChar))) { - cnt += 2; - } else { - cnt++; - } - if (cnt <= length) { - sb.append(nextChar); - } else { - return sb.toString() + "..."; - } - cur++; - } - return sb.toString() + "..."; - } - // 未超出直接返回 - return str; - } - - /** - * 获取字符串中的中文字数 - */ - private static int getChCount(String str) { - int cnt = 0; - Pattern pattern = Pattern.compile(regEx); - Matcher matcher = pattern.matcher(str);; - while(matcher.find()) { - cnt++; - } - return cnt; - } - - /** - * 判断字符是不是中文 - */ - private static boolean isChCharacter(String str) { - if (str == null || str.length() == 0) { - return false; - } - if (str.length() > 1) { - return false; - } - return Pattern.matches(regEx, str); - } - - /** - * 获取字符长度,中文算作2个字符,其他都算1个字符 - */ - public static int getStrLen(String str) { - if (str == null || str.length() == 0) { - return 0; - } - return str.length() + getChCount(str); - } - -} diff --git a/library/src/main/java/com/chwl/library/utils/TelephonyUtils.java b/library/src/main/java/com/chwl/library/utils/TelephonyUtils.java deleted file mode 100644 index e04b9c9ac..000000000 --- a/library/src/main/java/com/chwl/library/utils/TelephonyUtils.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.chwl.library.utils; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Build; -import android.telephony.TelephonyManager; -import android.util.Log; - -import com.chwl.library.R; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -public class TelephonyUtils { - - private static final String TAG = TelephonyUtils.class.toString(); - - public static class ChinaOperator { - public static final String CMCC = "CMCC"; - public static final String CTL = "CTL"; - public static final String UNICOM = "UNICOM"; - public static final String UNKNOWN = "Unknown"; - - public static final String NAME_CMCC = ResUtil.getString(R.string.xchat_android_library_utils_telephonyutils_01); - public static final String NAME_CTL = ResUtil.getString(R.string.xchat_android_library_utils_telephonyutils_02); - public static final String NAME_UNICOM = ResUtil.getString(R.string.xchat_android_library_utils_telephonyutils_03); - public static final String NAME_UNKNOWN = ResUtil.getString(R.string.xchat_android_library_utils_telephonyutils_04); - } - - public static String getSimOperator(Context c) { - TelephonyManager tm = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); - return tm.getSimOperator(); - } - - public static String getOperator(Context c) { - String sim = getSimOperator(c); - if (BlankUtil.isBlank(sim)) { - Log.i(TAG, "No sim operator."); - return ChinaOperator.UNKNOWN; - } - if (sim.startsWith("46003") || sim.startsWith("46005")) { - return ChinaOperator.CTL; - } else if (sim.startsWith("46001") || sim.startsWith("46006")) { - return ChinaOperator.UNICOM; - } else if (sim.startsWith("46000") || sim.startsWith("46002") - || sim.startsWith("46007") || sim.startsWith("46020")) { - return ChinaOperator.CMCC; - } else { - return ChinaOperator.UNKNOWN; - } - } - - public static String getOperatorName(Context c) { - String sim = getSimOperator(c); - if (BlankUtil.isBlank(sim)) { - Log.i(TAG, "No sim operator."); - return ChinaOperator.NAME_UNKNOWN; - } - - if (sim.startsWith("46003") || sim.startsWith("46005")) { - return ChinaOperator.NAME_CTL; - } else if (sim.startsWith("46001") || sim.startsWith("46006")) { - return ChinaOperator.NAME_UNICOM; - } else if (sim.startsWith("46000") || sim.startsWith("46002") - || sim.startsWith("46007") || sim.startsWith("46020")) { - return ChinaOperator.NAME_CMCC; - } else { - return ChinaOperator.NAME_UNKNOWN; - } - } - - public static String getPhoneNumber(Context c) { - TelephonyManager tMgr = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); - String phoneNumber = tMgr.getLine1Number(); - return phoneNumber; - } - - public static boolean hasSimCard(Context c) { - return isSIMCardOK(c); - } - - private static boolean isSIMCardOK(Context c) { - TelephonyManager telMgr = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); - int s = telMgr.getSimState(); - Log.i(TelephonyUtils.class.toString(), "SIM state = " + s); - - if (s == TelephonyManager.SIM_STATE_READY) { - return true; - } - - boolean isDual = isDualSIM(c); - - if (isDual && s != TelephonyManager.SIM_STATE_ABSENT) { - return true; - } - - return false; - } - - public static boolean isDualSIM(Context c) { - try { - Class smsManagerClass = android.telephony.SmsManager.class; - Method[] methods = smsManagerClass.getDeclaredMethods(); - - int num = 0; - int publicNum = 0; - for (Method e : methods) { - if (e.getName().equals("sendTextMessage")) { - ++num; - if (Modifier.isPublic(e.getModifiers())) { - ++publicNum; - } - } - - } - Log.i(TelephonyUtils.class.toString(), "There are " + num + " sendTextMessage methods."); - return publicNum >= 2; - } catch (Throwable e) { - Log.e(TelephonyUtils.class.toString(), "Exeption when printSmsAPI " + e.toString()); - } - return false; - } - - public static boolean isMtkDualSIM(Context c) { - boolean dual = false; - Method method = null; - Object result0 = null; - Object result1 = null; - TelephonyManager tm = (TelephonyManager) c - .getSystemService(Context.TELEPHONY_SERVICE); - try { - // only works for MTK chip. - method = TelephonyManager.class.getMethod("getSimStateGemini", - new Class[]{int.class}); - result0 = method.invoke(tm, new Object[]{Integer.valueOf(0)}); - result1 = method.invoke(tm, new Object[]{Integer.valueOf(1)}); - Log.i(NetworkUtils.class.toString(), "isDualSIM check " + result0 + ", " + result1); - dual = true; - } catch (Exception e) { - Log.e(NetworkUtils.class.toString(), "call MTK API getSimStateGemini e = " + e); - } - return dual; - } - - /** - * Get dual SIM card states for MTK chip. - * - * @param c - * @param twoOuts Input, two length array, for output. The meaning is dignified - * by TelephonyManager.SIM_STATE_XXX. - * @return True for it is MTK and dual SIM, false otherwise. - */ - public static boolean getDualSIMStatesForMtk(Context c, int twoOuts[]) { - Method method = null; - Object result0 = null; - Object result1 = null; - TelephonyManager tm = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); - try { - // only works for MTK chip. - method = TelephonyManager.class.getMethod("getSimStateGemini", - new Class[]{int.class}); - result0 = method.invoke(tm, new Object[]{Integer.valueOf(0)}); - result1 = method.invoke(tm, new Object[]{Integer.valueOf(1)}); - Log.i(NetworkUtils.class.toString(), "isDualSIM check " + result0 + ", " + result1); - - if (result0 instanceof Integer) { - twoOuts[0] = ((Integer) result0); - } - if (result1 instanceof Integer) { - twoOuts[1] = ((Integer) result1); - } - return result0 instanceof Integer && result1 instanceof Integer; - } catch (Exception e) { - Log.i(NetworkUtils.class.toString(), "call MTK API getSimStateGemini e = " + e); - return false; - } - } - - - /** - * 获得imsi - * - * @param context context - * @return imsi - */ - @SuppressLint("MissingPermission") - public static String getIMSI(Context context) { - String imsi = ""; - TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - if (telephonyManager != null) { - imsi = telephonyManager.getSubscriberId(); - } - return imsi == null ? "" : imsi; - } - - /** - * 获得imei - * - * @param c context - * @return imei - */ - public static String getImei(Context c) { - try { - TelephonyManager manager = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); - @SuppressLint("MissingPermission") String imei = manager.getDeviceId(); - if (!BlankUtil.isBlank(imei) && !imei.matches("0+") && !imei.equals("004999010640000")) - return imei; - } catch (Exception e) { - Log.e("getImei", "getImei e occurs : " + e); - } - return ""; - } - - public static String getDeviceModel() { - return Build.MODEL; - } - - public static String getOSVersion() { - return Build.VERSION.RELEASE; - } - - public static String getOSName() { - return "android"; - } -} diff --git a/library/src/main/java/com/chwl/library/utils/ViewUtils.java b/library/src/main/java/com/chwl/library/utils/ViewUtils.java deleted file mode 100644 index d7192130b..000000000 --- a/library/src/main/java/com/chwl/library/utils/ViewUtils.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.chwl.library.utils; - -import android.text.InputFilter; -import android.widget.EditText; - -/** - * create by lvzebiao on 2018/9/12 - */ -public class ViewUtils { - - public static void setEtMaxLength(EditText editText, int maxLength) { - editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)}); - } - -} diff --git a/library/src/main/java/com/chwl/library/utils/ZipUtils.java b/library/src/main/java/com/chwl/library/utils/ZipUtils.java deleted file mode 100644 index 5a05a6358..000000000 --- a/library/src/main/java/com/chwl/library/utils/ZipUtils.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.chwl.library.utils; - -import android.text.TextUtils; - -import com.orhanobut.logger.Logger; -import com.chwl.library.R; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Enumeration; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import java.util.zip.ZipInputStream; -import java.util.zip.ZipOutputStream; - -/** - *

解压工具类

- * - * @author jiahui - * @date 2018/2/5 - */ -public final class ZipUtils { - - private static final String ZIP = "zip"; - private static final int MAX_BUFFER = 1024 * 8; - - private ZipUtils() { - } - - /** - * 解压zip到指定的路径 - *

- * 1,当文件不在磁盘上,比如从网络接收的数据,想边接收边解压,因ZipInputStream是顺序按流的方式读取文件,这种场景实现起来毫无压力。 - *

- * 2,如果顺序解压ZIP前面的一小部分文件, ZipFile也不是最佳选择,因为ZipFile读CentralDirectory会带来额外的耗时。 - *

- * 3,如果ZIP中CentralDirectory遭到损坏,只能通过ZipInputStream来按顺序解压。

- * - * @param srcFile ZIP的名称 - * @param destFile 要解压缩路径 - * @return true:成功,false:失败 - */ - public static boolean unZipFolderByZipInputStream(String srcFile, String destFile) { - ZipInputStream inZip = null; - BufferedOutputStream bos = null; - try { - inZip = new ZipInputStream(new BufferedInputStream(new FileInputStream(srcFile))); - ZipEntry zipEntry; - String szName; - while ((zipEntry = inZip.getNextEntry()) != null) { - szName = zipEntry.getName(); - if (zipEntry.isDirectory()) { - szName = szName.substring(0, szName.length() - 1); - File folder = new File(destFile + File.separator + szName); - folder.mkdirs(); - } else { - String destFileName = destFile + File.separator + szName; - Logger.i(destFileName); - File file = new File(destFileName); - if (!file.exists()) { - Logger.i("create file: " + destFileName); - file.getParentFile().mkdirs(); - file.createNewFile(); - } - bos = new BufferedOutputStream(new FileOutputStream(file)); - int len; - byte[] buffer = new byte[MAX_BUFFER]; - while ((len = inZip.read(buffer)) != -1) { - bos.write(buffer, 0, len); - bos.flush(); - } - } - } - return true; - } catch (IOException e) { - e.printStackTrace(); - } finally { - IOUtils.close(inZip, bos); - } - return false; - } - - /** - * 压缩文件夹 - * - * @param srcFile 源文件路径 - * @param destFile 输出文件路径,如果是.zip结尾,则使用输出的路径,否则在后面加源文件最后文件名, ../xxx.zip - * @return 成功返回最终输出文件,否则返回null - */ - public static String zipFolder(String srcFile, String destFile) { - ZipOutputStream outZip = null; - try { - String extensionName = FileUtils.getExtensionName(destFile); - if (TextUtils.isEmpty(extensionName) || !ZIP.equals(extensionName.toLowerCase())) { - String lastFileNameNoEx = FileUtils.getLastFileNameNoEx(srcFile); - if (!TextUtils.isEmpty(lastFileNameNoEx)) { - destFile = destFile + File.separator + lastFileNameNoEx + "." + ZIP; - Logger.i(ResUtil.getString(R.string.xchat_android_library_utils_ziputils_01), destFile); - } - } - outZip = new ZipOutputStream(new FileOutputStream(destFile)); - File file = new File(srcFile); - zipFiles(file.getParent() + File.separator, file.getName(), outZip); - outZip.finish(); - return destFile; - } catch (IOException e) { - e.printStackTrace(); - } finally { - IOUtils.close(outZip); - } - return null; - } - - /** - * 压缩文件 - * - * @param folderName 文件夹 - * @param fileName 文件名 - * @param outZip 输出流 - * @throws IOException 异常 - */ - private static void zipFiles(String folderName, String fileName, ZipOutputStream outZip) throws IOException { - if (outZip == null) return; - File file = new File(folderName + fileName); - if (file.isFile()) { - ZipEntry zipEntry = new ZipEntry(fileName); - FileInputStream fis = new FileInputStream(file); - outZip.putNextEntry(zipEntry); - int len; - byte[] buffer = new byte[MAX_BUFFER]; - while ((len = fis.read(buffer)) != -1) { - outZip.write(buffer, 0, len); - } - outZip.closeEntry(); - } else { - String[] fileList = file.list(); - if (fileList.length <= 0) { - ZipEntry zipEntry = new ZipEntry(fileName + File.separator); - outZip.putNextEntry(zipEntry); - outZip.closeEntry(); - } - for (String name : fileList) { - zipFiles(folderName, fileName + File.separator + name, outZip); - } - } - } - - /** - * 解压zip到指定的路径, - *

注意:文件已经在磁盘中存在,且需全部解压出ZIP中的文件,ZipFile效果比ZipInputStream效果好

- * - * @param srcFile ZIP的名称 - * @param destFile 要解压缩路径 - * @return true:成功,false:失败 - */ - public static boolean unZipFolderByZipFile(String srcFile, String destFile) { - InputStream is = null; - OutputStream os = null; - try { - ZipFile zipFile = new ZipFile(srcFile); - Enumeration entries = zipFile.entries(); - ZipEntry zipEntry; - while (entries.hasMoreElements()) { - zipEntry = entries.nextElement(); - if (zipEntry.isDirectory()) { - File folder = new File(destFile + File.separator + zipEntry.getName()); - folder.mkdirs(); - } else { - String destFileName = destFile + File.separator + zipEntry.getName(); - Logger.i(destFileName); - File file = new File(destFileName); - if (!file.exists()) { - Logger.i("create file: " + destFileName); - file.getParentFile().mkdirs(); - file.createNewFile(); - } - is = new BufferedInputStream(zipFile.getInputStream(zipEntry)); - os = new BufferedOutputStream(new FileOutputStream(file)); - int len; - byte[] buffer = new byte[MAX_BUFFER]; - while ((len = is.read(buffer, 0, buffer.length)) != -1) { - os.write(buffer, 0, len); - os.flush(); - } - } - } - return true; - } catch (IOException e) { - e.printStackTrace(); - } finally { - IOUtils.close(is, os); - } - return false; - } - -} -