diff --git a/app/release/app-release.apk b/app/release/app-release.apk new file mode 100644 index 0000000..1900378 Binary files /dev/null and b/app/release/app-release.apk differ diff --git a/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.30.apk b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.30.apk new file mode 100644 index 0000000..0792698 Binary files /dev/null and b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.30.apk differ diff --git a/app/src/main/java/qianmu/container/app/Constant.java b/app/src/main/java/qianmu/container/app/Constant.java index 387ff7e..d072e21 100644 --- a/app/src/main/java/qianmu/container/app/Constant.java +++ b/app/src/main/java/qianmu/container/app/Constant.java @@ -23,12 +23,12 @@ public class Constant { public static boolean newGuide = false; // 指路机类型,true:新版指路机 false:老板指路机(流花) public static String mqttState = ""; // 屏幕连接方式 // public static String androidBoardType = ""; //设备板子型号 无固定版 - public static String androidBoardType = "ys"; // 设备板子型号 ys(亿晟) 北京颐堤港定制touch + // public static String androidBoardType = "ys"; // 设备板子型号 ys(亿晟) 北京颐堤港定制touch // public static String androidBoardType = "xwst"; //设备板子型号 xwst(欣威视通3399) // public static String androidBoardType = "xwst2"; //设备板子型号 xwst2(欣威视通3588、T982、3576) // public static String androidBoardType = "zc"; //设备板子型号 zc(卓策主板——王府井喜悦、杨浦中心医院) // public static String androidBoardType = "sx"; //设备板子型号 sx(视想) - // public static String androidBoardType = "nova"; //设备板子型号 诺瓦盒子 华贸LED + public static String androidBoardType = "nova"; //设备板子型号 诺瓦盒子 华贸LED // public static String androidBoardType = "huidu"; //设备板子型号 huidu(灰度主板) 罗湖寻车机 // public static String androidBoardType = "bv"; //设备板子型号 Bv-3588M // public static String androidBoardType = "smt"; //设备板子型号 视美泰 diff --git a/app/src/main/java/qianmu/container/util/DeviceUtil.java b/app/src/main/java/qianmu/container/util/DeviceUtil.java index cd173a0..9c5ac22 100644 --- a/app/src/main/java/qianmu/container/util/DeviceUtil.java +++ b/app/src/main/java/qianmu/container/util/DeviceUtil.java @@ -10,6 +10,7 @@ import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.os.Build; import android.os.Environment; import android.os.StatFs; import android.util.DisplayMetrics; @@ -19,6 +20,7 @@ import java.io.File; import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; +import java.net.Socket; import java.net.SocketException; import java.util.Enumeration; import java.util.List; @@ -45,7 +47,11 @@ public class DeviceUtil { try { if(Constant.androidBoardType.equals("nova")){ //诺瓦 - return getEthIpAddress(); + String ip = getEthIpAddress(); + if(StringUtil.isEmpty(ip)){ + ip = getLocalIPByWIFI(); + } + return ip; }else { String allIP = ""; for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) { @@ -92,7 +98,7 @@ public class DeviceUtil { //获取有线网络ip public static String getEthIpAddress() { String infaceName = "eth0"; - String ip = "0.0.0.0"; + String ip = ""; try { Enumeration netInterface = NetworkInterface.getNetworkInterfaces(); while (netInterface.hasMoreElements()) { @@ -100,12 +106,10 @@ public class DeviceUtil { if (!inface.isUp()) { continue; } - // eth0 有线网络判断 if (!infaceName.equals(inface.getDisplayName())) { continue; } - Enumeration netAddressList = inface.getInetAddresses(); while (netAddressList.hasMoreElements()) { InetAddress inetAddress = netAddressList.nextElement(); @@ -136,27 +140,36 @@ public class DeviceUtil { * @return */ public static String getLocalIPByWIFI() { + String ip=""; try { - //获取wifi服务 - WifiManager wifiManager = (WifiManager) MyApplication.getInstance().getApplicationContext().getSystemService(Context.WIFI_SERVICE); - //判断wifi是否开启 - if (!wifiManager.isWifiEnabled()) wifiManager.setWifiEnabled(true); - WifiInfo wifiInfo = wifiManager.getConnectionInfo(); - int ipAddress = wifiInfo.getIpAddress(); - return intToIp(ipAddress); - } catch (Throwable t) { - LoggerUtil.e("getLocalIPByWIFI", StringUtil.getThrowableStr(t)); - return ""; + Socket socket = new Socket("www.baidu.com",80); + ip = socket.getLocalAddress().toString(); + LoggerUtil.e("GETIP: ", ip); + } catch (Exception e) { + Log.e(TAG, "网络接口遍历获取IP失败", e); + } + if("".equals(ip)){ + try { + //获取wifi服务 + WifiManager wifiManager = (WifiManager) MyApplication.getInstance().getApplicationContext().getSystemService(Context.WIFI_SERVICE); + //判断wifi是否开启 + if (!wifiManager.isWifiEnabled()) wifiManager.setWifiEnabled(true); + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + int ipAddress = wifiInfo.getIpAddress(); + ip = intToIp(ipAddress); + } catch (Throwable t) { + LoggerUtil.e("getLocalIPByWIFI", StringUtil.getThrowableStr(t)); + return ""; + } } + return ip; } private static String intToIp(int i) { - String first = String.valueOf((i & 0xFF)); String second = String.valueOf(((i >> 8) & 0xFF)); String third = String.valueOf(((i >> 16) & 0xFF)); String fourth = String.valueOf((i >> 24 & 0xFF)); - return StringUtil.strSplice(first, ".", second, ".", third, ".", fourth); } @@ -195,23 +208,38 @@ public class DeviceUtil { * @return */ public static String getLocalMacAddressFromIp() { - String strMacAddr = null; + String macAddress=""; + WifiManager wifiManager = (WifiManager) MyApplication.getInstance().getApplicationContext().getSystemService(Context.WIFI_SERVICE); + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + macAddress = wifiInfo.getBSSID(); + if(StringUtil.isEmpty(macAddress)){ + macAddress = getMacFromNetworkInterface(); + } + return macAddress; + } + /** + * 通过网络接口获取MAC地址(备选方案) + */ + private static String getMacFromNetworkInterface() { 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); + java.net.NetworkInterface networkInterface = java.net.NetworkInterface.getByName("wlan0"); + if (networkInterface == null) return ""; + + byte[] macBytes = networkInterface.getHardwareAddress(); + if (macBytes == null) return ""; + + StringBuilder mac = new StringBuilder(); + for (byte b : macBytes) { + mac.append(String.format("%02X:", b)); } - strMacAddr = buffer.toString().toUpperCase(); + if (mac.length() > 0) { + mac.deleteCharAt(mac.length() - 1); + } + return mac.toString(); } catch (Exception e) { + Log.e(TAG, "通过网络接口获取MAC失败", e); + return ""; } - return strMacAddr; } /** * 获取移动设备本地IP diff --git a/app/src/main/java/qianmu/container/util/SignWayUtil.java b/app/src/main/java/qianmu/container/util/SignWayUtil.java index 3583ede..7ee7b24 100644 --- a/app/src/main/java/qianmu/container/util/SignWayUtil.java +++ b/app/src/main/java/qianmu/container/util/SignWayUtil.java @@ -53,7 +53,6 @@ public class SignWayUtil { zcapi zcApi=new zcapi(); zcApi.getContext(MyApplication.getInstance()); zcApi.shutDown(); - }else if(Constant.androidBoardType.equals("nova")){ EventBus.getDefault().post(new MessageEvent(Constant.NOVA_SCREEN_POWER_CLOSE)); }else if(Constant.androidBoardType.equals("huidu")){ @@ -430,8 +429,11 @@ public class SignWayUtil { zcApi.getContext(MyApplication.getInstance()); return zcApi.getEthMacAddress("eth0"); }if(Constant.androidBoardType.equals("nova")){ - return DeviceUtil.getLanMac(); -// return DeviceUtil.getMacFromHardware(); + String mac = DeviceUtil.getLanMac(); + if(StringUtil.isEmpty(mac)){ + mac = DeviceUtil.getMacFromHardware(); + } + return mac; } else if(Constant.androidBoardType.equals("huidu")){