Merge branch 'dev_arch_opt_3.0' into dev_robobus-m1-p-app-module_1.0.0_230112_1.0.0
# Conflicts: # app/productFlavors/fMultiDisplayOchBus.gradle # app/productFlavors/fMultiDisplayOchTaxi.gradle # app/productFlavors/fOchBus.gradle # app/productFlavors/fOchBusPassengerM1.gradle # app/productFlavors/fOchSweeper.gradle # app/productFlavors/fOchTaxi.gradle # app/productFlavors/fOchTaxiPassenger.gradle
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -24,3 +24,4 @@
|
||||
- mogo-core-res:程序中涉及到的图片及布局资源,同一管理,并通过设置不同的目录指定是那个模块的资源,这里只存放公共资源,图片,布局,动画等
|
||||
|
||||
- mogo-core-utils:基于成熟的工具类开源框架下沉的,这里可以增添针对我们业务上的一些工具类
|
||||
- MultiDisplayUtils :多屏幕管理工具
|
||||
|
||||
16
core/README_MULT_DISPLAY.md
Normal file
16
core/README_MULT_DISPLAY.md
Normal file
@@ -0,0 +1,16 @@
|
||||
## 多屏幕场景
|
||||
|
||||
```java
|
||||
// 在第二个屏幕启动页面
|
||||
MultiDisplayUtils.INSTANCE.startActWithSecond(
|
||||
context,
|
||||
VideoAdAtc.class);
|
||||
```
|
||||
|
||||
```java
|
||||
// 在指定屏幕启动页面
|
||||
MultiDisplayUtils.INSTANCE.startActWithProcess(
|
||||
1,
|
||||
context,
|
||||
VideoAdAtc.class);
|
||||
```
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 @@
|
||||
|
||||
<activity
|
||||
android:name="com.mogo.eagle.core.function.main.PassengerLauncherActivity"
|
||||
android:clearTaskOnLaunch="${ACTIVITY_ROOT}"
|
||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
@@ -99,7 +98,6 @@
|
||||
|
||||
<activity
|
||||
android:name="com.mogo.eagle.core.function.main.VideoAdAtc"
|
||||
android:clearTaskOnLaunch="${ACTIVITY_ROOT}"
|
||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
|
||||
@@ -45,7 +45,7 @@ import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
/**
|
||||
* 针对作为Launcher的情况,做个性化操作
|
||||
* 针对作为Launcher的情况,做个性化操作 TODO 测试用的,可删除
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.mogo.eagle.core.utilcode.util.BarUtils
|
||||
import com.mogo.eagle.core.widget.TextureVideoView
|
||||
|
||||
/**
|
||||
* 视频广告
|
||||
* 视频广告 TODO 测试用的,可删除
|
||||
*/
|
||||
class VideoAdAtc : AppCompatActivity() {
|
||||
|
||||
|
||||
@@ -17,11 +17,16 @@ import android.os.Build;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.annotation.RequiresPermission;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.SocketException;
|
||||
@@ -547,17 +552,85 @@ public final class DeviceUtils {
|
||||
|
||||
|
||||
/**
|
||||
* 中科创达 EB5获取SN好的方法:
|
||||
* getprop persist.device.sn
|
||||
* ZTS46S10009S
|
||||
* 获取设备SN的方法
|
||||
*
|
||||
* @return 当前EB5设备SN
|
||||
* @return 通过读取 getprop 的方式
|
||||
*/
|
||||
public static String getEB5DevicesSN() {
|
||||
ShellUtils.CommandResult result = UtilsBridge.execCmd("adb shell getprop persist.device.sn", false);
|
||||
if (result.result == 0) {
|
||||
LogUtils.d("", result.toString());
|
||||
public static String getSerialNumber() {
|
||||
String serial = "";
|
||||
try {
|
||||
Class<?> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,14 +27,14 @@ object MultiDisplayUtils {
|
||||
fun getMultiDisplay(context: Context): Array<out Display> {
|
||||
// 多次创建副屏 则副屏的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
|
||||
|
||||
Reference in New Issue
Block a user