diff --git a/app/release/app-release.apk b/app/release/app-release.apk index cf5d391..063b735 100644 Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ diff --git a/app/src/main/java/com/zcshou/service/GoGoGoService.java b/app/src/main/java/com/zcshou/service/GoGoGoService.java index ef94918..7022379 100644 --- a/app/src/main/java/com/zcshou/service/GoGoGoService.java +++ b/app/src/main/java/com/zcshou/service/GoGoGoService.java @@ -31,6 +31,7 @@ import com.baidu.mapapi.model.LatLng; import com.zcshou.joystick.JoyStick; import com.zcshou.log4j.LogUtil; import com.zcshou.gogogo.R; +import com.zcshou.utils.RomUtils; import org.apache.log4j.Logger; @@ -86,7 +87,7 @@ public class GoGoGoService extends Service { //remove gps provider rmGPSTestProvider(); //remove other provider - rmOtherTestProvider(); + //rmOtherTestProvider(); //add a new test network location provider setNetworkTestProvider(); @@ -240,7 +241,7 @@ public class GoGoGoService extends Service { //remove test provider rmNetworkTestProvider(); rmGPSTestProvider(); - rmOtherTestProvider(); + //rmOtherTestProvider(); stopForeground(true); @@ -369,17 +370,18 @@ public class GoGoGoService extends Service { } private void setGPSTestProvider() { - if (!locationManager.isProviderEnabled(LocationManager.PASSIVE_PROVIDER)) { - locationManager.setTestProviderEnabled(LocationManager.PASSIVE_PROVIDER, false); - Log.d("GoGoGoService", "Disable passive provider"); - log.debug("Disable passive provider"); - } - - if (!locationManager.isProviderEnabled("fused") && Build.VERSION.SDK_INT >= 29) { - locationManager.setTestProviderEnabled("fused", false); - Log.d("GoGoGoService", "Disable fused provider"); - log.debug("Disable fused provider"); - } +// if (!locationManager.isProviderEnabled(LocationManager.PASSIVE_PROVIDER)) { +// locationManager.setTestProviderEnabled(LocationManager.PASSIVE_PROVIDER, false); +// Log.d("GoGoGoService", "Disable passive provider"); +// log.debug("Disable passive provider"); +// } +// +// if (!locationManager.isProviderEnabled("fused") && Build.VERSION.SDK_INT >= 29 +// && !RomUtils.isVivo() && !RomUtils.isEmui()) { // 目前 ViVo 会崩溃 +// locationManager.setTestProviderEnabled("fused", false); +// Log.d("GoGoGoService", "Disable fused provider"); +// log.debug("Disable fused provider"); +// } try { locationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, true, true, @@ -421,7 +423,7 @@ public class GoGoGoService extends Service { } } - if (!locationManager.isProviderEnabled("fused") && Build.VERSION.SDK_INT >= 29) { + if (!locationManager.isProviderEnabled("fused") && Build.VERSION.SDK_INT >= 29 && !RomUtils.isVivo() && !RomUtils.isEmui()) { // 目前 ViVo 会崩溃 try { locationManager.setTestProviderEnabled("fused", false); Log.d("GoGoGoService", "Disable fused provider"); diff --git a/app/src/main/java/com/zcshou/utils/RomUtils.java b/app/src/main/java/com/zcshou/utils/RomUtils.java new file mode 100644 index 0000000..cc7995a --- /dev/null +++ b/app/src/main/java/com/zcshou/utils/RomUtils.java @@ -0,0 +1,128 @@ +package com.zcshou.utils; + +import android.os.Build; +import android.text.TextUtils; +import android.util.Log; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * Created by HaiyuKing + * Used 判断手机ROM,检测ROM是MIUI、EMUI还是Flyme + * 参考资料:https://www.jianshu.com/p/ba9347a5a05a + */ +public class RomUtils { + private static final String TAG = "Rom"; + + public static final String ROM_MIUI = "MIUI"; + public static final String ROM_EMUI = "EMUI"; + public static final String ROM_FLYME = "FLYME"; + public static final String ROM_OPPO = "OPPO"; + public static final String ROM_SMARTISAN = "SMARTISAN"; + public static final String ROM_VIVO = "VIVO"; + public static final String ROM_QIKU = "QIKU"; + + private static final String KEY_VERSION_MIUI = "ro.miui.ui.version.name"; + private static final String KEY_VERSION_EMUI = "ro.build.version.emui"; + private static final String KEY_VERSION_OPPO = "ro.build.version.opporom"; + private static final String KEY_VERSION_SMARTISAN = "ro.smartisan.version"; + private static final String KEY_VERSION_VIVO = "ro.vivo.os.version"; + + private static String sName; + private static String sVersion; + + //华为 + public static boolean isEmui() { + return check(ROM_EMUI); + } + //小米 + public static boolean isMiui() { + return check(ROM_MIUI); + } + //vivo + public static boolean isVivo() { + return check(ROM_VIVO); + } + //oppo + public static boolean isOppo() { + return check(ROM_OPPO); + } + //魅族 + public static boolean isFlyme() { + return check(ROM_FLYME); + } + //360手机 + public static boolean is360() { + return check(ROM_QIKU) || check("360"); + } + + public static boolean isSmartisan() { + return check(ROM_SMARTISAN); + } + + public static String getName() { + if (sName == null) { + check(""); + } + return sName; + } + + public static String getVersion() { + if (sVersion == null) { + check(""); + } + return sVersion; + } + + public static boolean check(String rom) { + if (sName != null) { + return sName.equals(rom); + } + + if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_MIUI))) { + sName = ROM_MIUI; + } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_EMUI))) { + sName = ROM_EMUI; + } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_OPPO))) { + sName = ROM_OPPO; + } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_VIVO))) { + sName = ROM_VIVO; + } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_SMARTISAN))) { + sName = ROM_SMARTISAN; + } else { + sVersion = Build.DISPLAY; + if (sVersion.toUpperCase().contains(ROM_FLYME)) { + sName = ROM_FLYME; + } else { + sVersion = Build.UNKNOWN; + sName = Build.MANUFACTURER.toUpperCase(); + } + } + return sName.equals(rom); + } + + public static String getProp(String name) { + String line = null; + BufferedReader input = null; + try { + Process p = Runtime.getRuntime().exec("getprop " + name); + input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024); + line = input.readLine(); + input.close(); + } catch (IOException ex) { + Log.e(TAG, "Unable to read prop " + name, ex); + return null; + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return line; + } +} \ No newline at end of file