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