diff --git a/app/productFlavors/fMultiDisplayOchBus.gradle b/app/productFlavors/fMultiDisplayOchBus.gradle index 2c3bea9a38..8d14fd8c08 100644 --- a/app/productFlavors/fMultiDisplayOchBus.gradle +++ b/app/productFlavors/fMultiDisplayOchBus.gradle @@ -20,7 +20,12 @@ project.android.productFlavors { // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' //高德地图鉴权信息 - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fOchBus",ACTIVITY_ROOT:true] + manifestPlaceholders = [ + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + CHANNEL_VALUE : "fOchBus", + ACTIVITY_ROOT : true, + SCREEN_ORIENTATION: "landscape" + ] // 是否需要实时上报坐标 buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' diff --git a/app/productFlavors/fMultiDisplayOchTaxi.gradle b/app/productFlavors/fMultiDisplayOchTaxi.gradle index f41cd23d68..87a05019bc 100644 --- a/app/productFlavors/fMultiDisplayOchTaxi.gradle +++ b/app/productFlavors/fMultiDisplayOchTaxi.gradle @@ -17,8 +17,17 @@ project.android.productFlavors { // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' - //高德地图鉴权信息 - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fOchTaxi",ACTIVITY_ROOT:true] + // 配置AndroidManifest.xml中用到的参数 + manifestPlaceholders = [ + // 高德地图鉴权信息 + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + // BUGLY_APP_CHANNEL + CHANNEL_VALUE : "fOchTaxi", + // 在启动的时候把Task给清空 + ACTIVITY_ROOT : true, + // Activity的朝向 + SCREEN_ORIENTATION: "landscape" + ] // 是否需要实时上报坐标 buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' diff --git a/app/productFlavors/fOchBus.gradle b/app/productFlavors/fOchBus.gradle index 85f23b72cf..74a517445a 100644 --- a/app/productFlavors/fOchBus.gradle +++ b/app/productFlavors/fOchBus.gradle @@ -18,8 +18,17 @@ project.android.productFlavors { // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' - //高德地图鉴权信息 - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fOchBus",ACTIVITY_ROOT:true] + // 配置AndroidManifest.xml中用到的参数 + manifestPlaceholders = [ + // 高德地图鉴权信息 + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + // BUGLY_APP_CHANNEL + CHANNEL_VALUE : "fOchBus", + // 在启动的时候把Task给清空 + ACTIVITY_ROOT : true, + // Activity的朝向 + SCREEN_ORIENTATION: "landscape" + ] // 是否需要实时上报坐标 buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' diff --git a/app/productFlavors/fOchBusPassengerM1.gradle b/app/productFlavors/fOchBusPassengerM1.gradle index 88aeb42ed9..037127ede3 100644 --- a/app/productFlavors/fOchBusPassengerM1.gradle +++ b/app/productFlavors/fOchBusPassengerM1.gradle @@ -17,8 +17,18 @@ project.android.productFlavors { // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' - //高德地图鉴权信息 - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fOchBusPassenger",ACTIVITY_ROOT:true] + + // 配置AndroidManifest.xml中用到的参数 + manifestPlaceholders = [ + // 高德地图鉴权信息 + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + // BUGLY_APP_CHANNEL + CHANNEL_VALUE : "fOchBusPassenger", + // 在启动的时候把Task给清空 + ACTIVITY_ROOT : true, + // Activity的朝向 + SCREEN_ORIENTATION: "landscape" + ] // 是否需要实时上报坐标 buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' diff --git a/app/productFlavors/fOchSweeper.gradle b/app/productFlavors/fOchSweeper.gradle index db75689c9d..3d5e372298 100644 --- a/app/productFlavors/fOchSweeper.gradle +++ b/app/productFlavors/fOchSweeper.gradle @@ -17,8 +17,18 @@ project.android.productFlavors { // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' - //高德地图鉴权信息 - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fOchSweeper",ACTIVITY_ROOT:true] + + // 配置AndroidManifest.xml中用到的参数 + manifestPlaceholders = [ + // 高德地图鉴权信息 + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + // BUGLY_APP_CHANNEL + CHANNEL_VALUE : "fOchSweeper", + // 在启动的时候把Task给清空 + ACTIVITY_ROOT : true, + // Activity的朝向 + SCREEN_ORIENTATION: "landscape" + ] // 是否需要实时上报坐标 buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' diff --git a/app/productFlavors/fOchTaxi.gradle b/app/productFlavors/fOchTaxi.gradle index 9be61d9e9c..86a5b3f427 100644 --- a/app/productFlavors/fOchTaxi.gradle +++ b/app/productFlavors/fOchTaxi.gradle @@ -18,8 +18,18 @@ project.android.productFlavors { // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' - //高德地图鉴权信息 - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fOchTaxi",ACTIVITY_ROOT:true] + + // 配置AndroidManifest.xml中用到的参数 + manifestPlaceholders = [ + // 高德地图鉴权信息 + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + // BUGLY_APP_CHANNEL + CHANNEL_VALUE : "fOchTaxi", + // 在启动的时候把Task给清空 + ACTIVITY_ROOT : true, + // Activity的朝向 + SCREEN_ORIENTATION: "landscape" + ] // 是否需要实时上报坐标 buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' diff --git a/app/productFlavors/fOchTaxiPassenger.gradle b/app/productFlavors/fOchTaxiPassenger.gradle index 28044afb38..83fa4cf756 100644 --- a/app/productFlavors/fOchTaxiPassenger.gradle +++ b/app/productFlavors/fOchTaxiPassenger.gradle @@ -17,8 +17,18 @@ project.android.productFlavors { // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' - //高德地图鉴权信息 - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fOchTaxiPassenger",ACTIVITY_ROOT:false] + + // 配置AndroidManifest.xml中用到的参数 + manifestPlaceholders = [ + // 高德地图鉴权信息 + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + // BUGLY_APP_CHANNEL + CHANNEL_VALUE : "fOchTaxiPassenger", + // 在启动的时候把Task给清空 + ACTIVITY_ROOT : false, + // Activity的朝向 + SCREEN_ORIENTATION: "landscape" + ] // 是否需要实时上报坐标 buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' diff --git a/app/productFlavors/fPadLenovo.gradle b/app/productFlavors/fPadLenovo.gradle index 56e73c9e43..39a9cbfc10 100644 --- a/app/productFlavors/fPadLenovo.gradle +++ b/app/productFlavors/fPadLenovo.gradle @@ -4,7 +4,7 @@ project.android.productFlavors { externalNativeBuild { ndk { // 设置支持的SO库架构 - abiFilters "armeabi-v7a", "arm64-v8a" + abiFilters "armeabi-v7a", "arm64-v8a" } } minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo @@ -15,8 +15,17 @@ project.android.productFlavors { // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' - // 高德地图鉴权信息 - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fPadLenovo",ACTIVITY_ROOT:true] + // 配置AndroidManifest.xml中用到的参数 + manifestPlaceholders = [ + // 高德地图鉴权信息 + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + // BUGLY_APP_CHANNEL + CHANNEL_VALUE : "fPadLenovo", + // 在启动的时候把Task给清空 + ACTIVITY_ROOT : true, + // Activity的朝向 + SCREEN_ORIENTATION: "landscape" + ] // 是否需要实时上报坐标 buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' diff --git a/core/README.md b/core/README.md index 180e9b16db..5b05f4cb24 100644 --- a/core/README.md +++ b/core/README.md @@ -24,3 +24,4 @@ - mogo-core-res:程序中涉及到的图片及布局资源,同一管理,并通过设置不同的目录指定是那个模块的资源,这里只存放公共资源,图片,布局,动画等 - mogo-core-utils:基于成熟的工具类开源框架下沉的,这里可以增添针对我们业务上的一些工具类 + - MultiDisplayUtils :多屏幕管理工具 diff --git a/core/README_MULT_DISPLAY.md b/core/README_MULT_DISPLAY.md new file mode 100644 index 0000000000..4ff2f4c49e --- /dev/null +++ b/core/README_MULT_DISPLAY.md @@ -0,0 +1,16 @@ +## 多屏幕场景 + +```java +// 在第二个屏幕启动页面 +MultiDisplayUtils.INSTANCE.startActWithSecond( + context, + VideoAdAtc.class); +``` + +```java +// 在指定屏幕启动页面 +MultiDisplayUtils.INSTANCE.startActWithProcess( + 1, + context, + VideoAdAtc.class); +``` diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt index 4b5444ccb2..1f8d1db634 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt @@ -16,10 +16,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.obu.CallerObuLocationWGS84ListenerManager import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.util.CoordinateTransform -import com.mogo.eagle.core.utilcode.util.FileUtils -import com.mogo.eagle.core.utilcode.util.TimeUtils -import com.mogo.eagle.core.utilcode.util.Utils +import com.mogo.eagle.core.utilcode.util.* import com.mogo.support.obu.model.MogoObuHvBasicsData import mogo.telematics.pad.MessagePad diff --git a/core/function-impl/mogo-core-function-hmi/src/main/AndroidManifest.xml b/core/function-impl/mogo-core-function-hmi/src/main/AndroidManifest.xml index 33c14875d8..adb96a5a4e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/AndroidManifest.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/AndroidManifest.xml @@ -42,7 +42,7 @@ android:launchMode="singleTop" android:resizeableActivity="false" android:resumeWhilePausing="true" - android:screenOrientation="landscape" + android:screenOrientation="${SCREEN_ORIENTATION}" android:stateNotNeeded="true" android:theme="@style/Main" android:windowSoftInputMode="adjustPan|stateHidden"> @@ -67,7 +67,6 @@ c = Class.forName("android.os.SystemProperties"); + Method get = c.getMethod("get", String.class); + // 获取序列号,大多数机器在不root情况下获取不到 + serial = (String) get.invoke(c, "ro.serialno"); + if (TextUtils.isEmpty(serial)) { + serial = (String) get.invoke(c, "ro.boot.serialno"); + } + if (TextUtils.isEmpty(serial)) { + // 分体机 SN + serial = (String) get.invoke(c, "gsm.serial"); + } + if (TextUtils.isEmpty(serial)) { + // 中科创达 EB5获取SN + serial = (String) get.invoke(c, "persist.device.sn"); + } + if (TextUtils.isEmpty(serial)) { + // 联想PAD 获取SN + serial = (String) get.invoke(c, "ro.odm.lenovo.gsn"); + } + } catch (Exception e) { + e.printStackTrace(); } - return "02:00:00:00:00:00"; + return serial; + } + + + /** + * 获取 机器型号 + * + * @return 机器型号 + */ + public static String getProductModel() { + String productModel = "null"; + try { + Class c = Class.forName("android.os.SystemProperties"); + Method get = c.getMethod("get", String.class); + // 获取序列号,大多数机器在不root情况下获取不到 + productModel = (String) get.invoke(c, "ro.product.model"); + if (TextUtils.isEmpty(productModel)) { + productModel = (String) get.invoke(c, "ro.product.odm.model"); + } + if (TextUtils.isEmpty(productModel)) { + productModel = (String) get.invoke(c, "ro.product.vendor.model"); + } + } catch (Exception e) { + e.printStackTrace(); + } + return productModel; + } + + private static String getSerialnoNumbers() { + final String serialnoStr = "[ro.boot.serialno]"; + try { + Process p = Runtime.getRuntime().exec("getprop"); + p.waitFor(); + BufferedReader stdInput = new BufferedReader(new InputStreamReader( + p.getInputStream())); + String temp = ""; + while ((temp = stdInput.readLine()) != null) { + Log.i("getSerialnoNumbers", temp); + if (temp.contains(serialnoStr)) { + temp.replaceAll(" ", ""); + int index = temp.indexOf(serialnoStr); + temp = temp.substring(index + 20); + temp = temp.substring(1, temp.length() - 1); + Log.d("getSerialnoNumbers", temp); + return temp; + } + } + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + return serialnoStr; } } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt index 1a5451dc10..c24acc4a62 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt @@ -27,14 +27,14 @@ object MultiDisplayUtils { fun getMultiDisplay(context: Context): Array { // 多次创建副屏 则副屏的id都是增加的,所以不一定是1,这里还是获取一下 val displayManager = - context.getSystemService(AppCompatActivity.DISPLAY_SERVICE) as DisplayManager + context.getSystemService(AppCompatActivity.DISPLAY_SERVICE) as DisplayManager return displayManager.displays } /** * 在指定ID的屏幕打开Activity,当前应用的,当前进程 * @param context - * @param launchDisplayId 指定屏幕ID + * @param activity 要在第二个屏幕启动的页面 */ fun startActWithSecond(context: Context, activity: Class<*>) { val launchDisplayId: Int @@ -60,6 +60,7 @@ object MultiDisplayUtils { * 在指定ID的屏幕打开Activity,当前应用的,当前进程 * @param context * @param launchDisplayId 指定屏幕ID + * @param activity 要在副屏幕启动的页面 */ fun startActWithProcess(context: Context, launchDisplayId: Int, activity: Class<*>) { // 要加上Intent.FLAG_ACTIVITY_NEW_TASK