充电桩app代码

Util.java 23KB

    package com.electric.chargingpile.util; import android.app.Activity; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Color; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; import android.text.TextUtils; import android.util.Log; import android.view.WindowManager; import androidx.core.content.ContextCompat; import com.amap.api.maps.AMap; import com.amap.api.maps.model.CustomMapStyleOptions; import com.blankj.utilcode.util.StringUtils; import com.electric.chargingpile.R; import com.electric.chargingpile.activity.MainMapActivity; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.data.Zhan; import com.electric.chargingpile.data.Zhuang; import com.electric.chargingpile.manager.ProfileManager; import com.luck.picture.lib.style.PictureParameterStyle; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.WXAPIFactory; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.NetworkInterface; import java.net.SocketException; import java.net.URLEncoder; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import cn.jpush.android.api.JPushInterface; public class Util { private static final String PHONE_PATTERN = "[1]{1}[3,4,5,6,7,8,9]{1}[0-9]{9}"; public static String hao = "1号"; public static int fenzhong = 0; // public static boolean isValidPhone(String phone) { // if (TextUtils.isEmpty(phone)) // return false; // return phone.matches(PHONE_PATTERN); // } public static String handlePhone(String phone) { if (!TextUtils.isEmpty(phone) && phone.length() == 11) { return phone.substring(0, 3) + "****" + phone.substring(7); } return "请点击头像登录"; } public static String handlePhoneComment(String phone) { if (!TextUtils.isEmpty(phone) && phone.length() == 11) { return phone.substring(0, 3) + "****" + phone.substring(7); } return "app用户"; } public static String convertMap2Query(Map<String, String> map) { StringBuffer sb = new StringBuffer(); if (map.size() > 0) { for (String key : map.keySet()) { sb.append(key + "="); String value = map.get(key); if (StringUtils.isEmpty(value)) { sb.append("&"); } else { try { value = URLEncoder.encode(value, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } sb.append(value + "&"); } } } return sb.toString(); } public static String getRandom(int length) { String val = ""; Random random = new Random(); for (int i = 0; i < length; i++) { val += String.valueOf(random.nextInt(10)); } return val; } public static String getPhone(Context context) { return ProfileManager.getInstance().getUsername(context); } public static String formatString(String s, int size) { if (s.length() <= size) { return s; } else if (s.length() > size && s.length() <= 2 * size) { return s.substring(0, size) + "\n" + s.substring(size); } else { return s.substring(0, size) + "\n" + s.substring(size, 2 * size - 1) + "..."; } } public static String getCityName(String address) { String city = ""; if (address.length() > 3) { city = address; } if (city.contains("省")) { city = address.substring(address.indexOf("省") + 1); } if (city.contains("自治区")) { city = city.substring(city.indexOf("自治区") + 3); } return city.split("市")[0]; } public static String getDistance(double d) { int a = (int) d; if (a < 1000) { return a + "m"; } else { double b = a / 1000.0; DecimalFormat df = new DecimalFormat(); String style = "0.00"; df.applyPattern(style); return df.format(b) + "km"; } } public static String getStringFromMap(Map<String, String> map) { // StringBuffer sb = new StringBuffer(); // try { // sb.append(WSConfig.BASE_URL); // if (map != null && !map.isEmpty()) { // sb.append("?"); // // final ArrayList<String> keyList = new ArrayList<String>( // map.keySet()); // final int keyListLength = keyList.size(); // // for (int i = 0; i < keyListLength; i++) { // final String key = keyList.get(i); // sb.append(URLEncoder.encode(key, "UTF-8")); // sb.append("="); // sb.append(URLEncoder.encode(map.get(key), "UTF-8")); // sb.append("&"); // } // } // // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } return ""; } public static List<Map<String, String>> getMapList(List<Zhuang> list) { List<Map<String, String>> l = new ArrayList<Map<String, String>>(); Map<String, String> map; for (int i = 0; i < list.size(); i++) { if (list.get(i).getStatus() != null && list.get(i).getStatus().equals("1")) { map = new HashMap<String, String>(); map.put("name", i + 1 + "号"); int a = Integer.valueOf(list.get(i).getLeft_time()); map.put("bai", (int) (1.0 * (150 - a) / 150 * 100) + "%"); l.add(map); if (fenzhong == 0 || fenzhong > a) { hao = i + 1 + "号"; fenzhong = a; } } else { map = new HashMap<String, String>(); map.put("name", i + 1 + "号"); map.put("bai", "100%"); l.add(map); } } return l; } public static List<Zhan> getSortList(List<Zhan> list) { List<Zhan> list2 = new ArrayList<Zhan>(); if (list.size() > 0 && "0m".equals(list.get(0).getDistance())) { return list; } for (int i = 0; i < list.size(); i++) { // Log.e("i===",i+""); if (i == 0) { list2.add(list.get(i)); } else { for (int j = 0; j < list2.size(); j++) { int jd = 0, id = 0; String zj = list2.get(j).getDistance(); String zi = list.get(i).getDistance(); if (!zj.equals("")) { if (zj.endsWith("km")) { jd = (int) (1000 * Double.valueOf(zj.substring(0, zj.length() - 2))); } else { jd = Integer.valueOf(zj.substring(0, zj.length() - 1)); } } if (! zi.equals("")) { if (zi.endsWith("km")) { id = (int) (1000 * Double.valueOf(zi.substring(0, zi.length() - 2))); } else { id = Integer.valueOf(zi.substring(0, zi.length() - 1)); } } if (jd > id) { list2.add(j, list.get(i)); break; } if (j == list2.size() - 1) { list2.add(list.get(i)); break; } } } } return list2; } public static List<Zhan> getSortPFList(List<Zhan> list) { List<Zhan> list2 = new ArrayList<Zhan>(); for (int i = 0; i < list.size(); i++) { if (i == 0) { list2.add(list.get(i)); } else { for (int j = 0; j < list2.size(); j++) { float jd = 0, id = 0; String zj = list2.get(j).getStar_level(); String zi = list.get(i).getStar_level(); if (zj.equals("")) { jd = Float.valueOf("0"); } else { jd = Float.valueOf(zj); } Log.e("jd==", jd + ""); if (zi.equals("")) { id = Float.valueOf("0"); } else { id = Float.valueOf(zi); } Log.e("id==", id + ""); if (jd < id) { list2.add(j, list.get(i)); break; } if (j == list2.size() - 1) { list2.add(list.get(i)); break; } } } } MainMapActivity.list2.addAll(list2); return list2; } public static List<Zhan> getSortFTList(List<Zhan> list) { List<Zhan> list2 = new ArrayList<Zhan>(); for (int i = 0; i < list.size(); i++) { if (i == 0) { list2.add(list.get(i)); } else { for (int j = 0; j < list2.size(); j++) { int jd = 0, id = 0; String zj = list2.get(j).getAcableNum(); String zjj = list2.get(j).getDcableNum(); String zi = list.get(i).getAcableNum(); String zii = list.get(i).getDcableNum(); if (zj.equals("")) { zj = "0"; } if (zjj.equals("")) { zjj = "0"; } jd = Integer.valueOf(zjj) + Integer.valueOf(zj); Log.e("jd==", jd + ""); if (zi.equals("")) { zi = "0"; } if (zii.equals("")) { zii = "0"; } id = Integer.valueOf(zii) + Integer.valueOf(zi); Log.e("id==", id + ""); if (jd < id) { list2.add(j, list.get(i)); break; } if (j == list2.size() - 1) { list2.add(list.get(i)); break; } } } } MainMapActivity.list3.addAll(list2); return list2; } /** * 显示隐藏状态栏,全屏不变,只在有全屏时有效 * * @param enable */ public static void setStatusBarVisibility(Activity activity, boolean enable) { WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); if (enable) { lp.flags |= WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; } else { lp.flags &= (~WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); } activity.getWindow().setAttributes(lp); activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } /** * 设置是否全屏 * * @param enable */ public static void setFullScreen(Activity activity, boolean enable) { WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); if (enable) { lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; } else { lp.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN); } activity.getWindow().setAttributes(lp); activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } /** * 设定高德地图离线样式文件 * * @param aMap * @param context */ public static void setMapCustomStyleFile(AMap aMap, Context context) { // 取消地图自定义样式 // byte[] buffer1 = null; // byte[] buffer2 = null; // InputStream is1 = null; // InputStream is2 = null; // try { // is1 = context.getAssets().open("amap_custom_style_2019082001.data"); // int lenght1 = is1.available(); // buffer1 = new byte[lenght1]; // is1.read(buffer1); // is2 = context.getAssets().open("amap_custom_style_extra_2019082001.data"); // int lenght2 = is2.available(); // buffer2 = new byte[lenght2]; // is2.read(buffer2); // } catch (IOException e) { // e.printStackTrace(); // } finally { // try { // if (is1 != null) // is1.close(); // if (is2 != null) // is2.close(); // } catch (IOException e) { // e.printStackTrace(); // } // } // // CustomMapStyleOptions customMapStyleOptions = new CustomMapStyleOptions(); // customMapStyleOptions.setStyleData(buffer1); // customMapStyleOptions.setStyleExtraData(buffer2); // aMap.setCustomMapStyle(customMapStyleOptions); } public static String generateDmpUrl(String url) { url = url.replace("__OS__", "android"); String mac = getMac(MainApplication.context); if (mac != null) { mac = mac.replace(":", ""); mac = mac.toUpperCase(); url = url.replace("__MAC__", Base64.encode(mac.getBytes())); } String androidId = getUdid(); if (androidId != null) { url = url.replace("__ANDROIDID__", Base64.encode(androidId.getBytes())); } url = url.replace("__APP__", "com.electric.chargingpile"); url = url.replace("__DVCBRAND__", Build.BRAND); url = url.replace("__DVCMODEL__", Build.MODEL); return url; } public static String getUdid() { String udid = null; try { udid = JPushInterface.getUdid(MainApplication.context); // androidId = Settings.System.getString(MainApplication.context.getContentResolver(), Settings.Secure.ANDROID_ID); } catch (Exception e) { e.printStackTrace(); } return udid; } /** * 获取wifi的mac地址,适配到android Q * * @param paramContext * @return */ private static String getMac(Context paramContext) { try { if (Build.VERSION.SDK_INT >= 23) { String str = getMacMoreThanM(paramContext); if (!TextUtils.isEmpty(str)) return str; } // 6.0以下手机直接获取wifi的mac地址即可 WifiManager wifiManager = (WifiManager) paramContext.getSystemService("wifi"); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo != null) return wifiInfo.getMacAddress(); } catch (Throwable throwable) { throwable.printStackTrace(); } return null; } /** * android 6.0+获取wifi的mac地址 * * @param paramContext * @return */ private static String getMacMoreThanM(Context paramContext) { try { //获取本机器所有的网络接口 Enumeration enumeration = NetworkInterface.getNetworkInterfaces(); while (enumeration.hasMoreElements()) { NetworkInterface networkInterface = (NetworkInterface) enumeration.nextElement(); //获取硬件地址,一般是MAC byte[] arrayOfByte = networkInterface.getHardwareAddress(); if (arrayOfByte == null || arrayOfByte.length == 0) { continue; } StringBuilder stringBuilder = new StringBuilder(); for (byte b : arrayOfByte) { //格式化为:两位十六进制加冒号的格式,若是不足两位,补0 stringBuilder.append(String.format("%02X:", new Object[]{Byte.valueOf(b)})); } if (stringBuilder.length() > 0) { //删除后面多余的冒号 stringBuilder.deleteCharAt(stringBuilder.length() - 1); } String str = stringBuilder.toString(); // wlan0:无线网卡 eth0:以太网卡 if (networkInterface.getName().equals("wlan0")) { return str; } } } catch (SocketException socketException) { return null; } return null; } public static PictureParameterStyle getWhiteStyle(Context context) { // 相册主题 PictureParameterStyle style = new PictureParameterStyle(); // 是否改变状态栏字体颜色(黑白切换) style.isChangeStatusBarFontColor = true; // 是否开启右下角已完成(0/9)风格 style.isOpenCompletedNumStyle = false; // 是否开启类似QQ相册带数字选择风格 style.isOpenCheckNumStyle = false; // 相册状态栏背景色 style.pictureStatusBarColor = Color.parseColor("#FFFFFF"); // 相册列表标题栏背景色 style.pictureTitleBarBackgroundColor = Color.parseColor("#FFFFFF"); // 相册列表标题栏右侧上拉箭头 style.pictureTitleUpResId = R.drawable.ic_orange_arrow_up; // 相册列表标题栏右侧下拉箭头 style.pictureTitleDownResId = R.drawable.ic_orange_arrow_down; // 相册文件夹列表选中圆点 style.pictureFolderCheckedDotStyle = R.drawable.picture_orange_oval; // 相册返回箭头 style.pictureLeftBackIcon = R.drawable.ic_back_arrow; // 标题栏字体颜色 style.pictureTitleTextColor = ContextCompat.getColor(context, R.color.app_color_black); // 相册右侧取消按钮字体颜色 废弃 改用.pictureRightDefaultTextColor和.pictureRightDefaultTextColor style.pictureCancelTextColor = ContextCompat.getColor(context, R.color.app_color_black); // 选择相册目录背景样式 style.pictureAlbumStyle = R.drawable.picture_new_item_select_bg; // 相册列表勾选图片样式 style.pictureCheckedStyle = R.drawable.picture_checkbox_selector; // 相册列表底部背景色 style.pictureBottomBgColor = ContextCompat.getColor(context, R.color.picture_color_fa); // 已选数量圆点背景样式 style.pictureCheckNumBgStyle = R.drawable.picture_num_oval; // 相册列表底下预览文字色值(预览按钮可点击时的色值) style.picturePreviewTextColor = ContextCompat.getColor(context, R.color.picture_color_fa632d); // 相册列表底下不可预览文字色值(预览按钮不可点击时的色值) style.pictureUnPreviewTextColor = ContextCompat.getColor(context, R.color.picture_color_9b); // 相册列表已完成色值(已完成 可点击色值) style.pictureCompleteTextColor = ContextCompat.getColor(context, R.color.picture_color_fa632d); // 相册列表未完成色值(请选择 不可点击色值) style.pictureUnCompleteTextColor = ContextCompat.getColor(context, R.color.picture_color_9b); // 预览界面底部背景色 style.picturePreviewBottomBgColor = ContextCompat.getColor(context, R.color.picture_color_white); // 原图按钮勾选样式 需设置.isOriginalImageControl(true); 才有效 style.pictureOriginalControlStyle = R.drawable.picture_original_checkbox; // 原图文字颜色 需设置.isOriginalImageControl(true); 才有效 style.pictureOriginalFontColor = ContextCompat.getColor(context, R.color.app_color_53575e); // 外部预览界面删除按钮样式 style.pictureExternalPreviewDeleteStyle = R.drawable.picture_icon_black_delete; // 外部预览界面是否显示删除按钮 style.pictureExternalPreviewGonePreviewDelete = true; // // 自定义相册右侧文本内容设置 // mPictureParameterStyle.pictureRightDefaultText = ""; // // 自定义相册未完成文本内容 // mPictureParameterStyle.pictureUnCompleteText = ""; // // 自定义相册完成文本内容 // mPictureParameterStyle.pictureCompleteText = ""; // // 自定义相册列表不可预览文字 // mPictureParameterStyle.pictureUnPreviewText = ""; // // 自定义相册列表预览文字 // mPictureParameterStyle.picturePreviewText = ""; // // 自定义相册标题字体大小 // mPictureParameterStyle.pictureTitleTextSize = 18; // // 自定义相册右侧文字大小 // mPictureParameterStyle.pictureRightTextSize = 14; // // 自定义相册预览文字大小 // mPictureParameterStyle.picturePreviewTextSize = 14; // // 自定义相册完成文字大小 // mPictureParameterStyle.pictureCompleteTextSize = 14; // // 自定义原图文字大小 // mPictureParameterStyle.pictureOriginalTextSize = 14; return style; } /** * 判断手机是否安装微信 * * @param context 上下文 * @return */ public static boolean isWxAppInstalledAndSupported(Context context) { IWXAPI api = WXAPIFactory.createWXAPI(context, context.getResources().getString(R.string.wx_app_key)); if (api.isWXAppInstalled()) { return true; } else { final PackageManager packageManager = context.getPackageManager();// 获取packagemanager List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息 if (pinfo != null) { for (int i = 0; i < pinfo.size(); i++) { String pn = pinfo.get(i).packageName; if (pn.equals("com.tencent.mm")) { return true; } } } return false; } } }