diff --git a/app_ipc_monitoring/.gitignore b/app_ipc_monitoring/.gitignore deleted file mode 100644 index 796b96d1c4..0000000000 --- a/app_ipc_monitoring/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/app_ipc_monitoring/README.md b/app_ipc_monitoring/README.md deleted file mode 100644 index 922a02ab55..0000000000 --- a/app_ipc_monitoring/README.md +++ /dev/null @@ -1 +0,0 @@ -# 工控机测试程序 \ No newline at end of file diff --git a/app_ipc_monitoring/build.gradle b/app_ipc_monitoring/build.gradle deleted file mode 100644 index 3790b2cfd8..0000000000 --- a/app_ipc_monitoring/build.gradle +++ /dev/null @@ -1,245 +0,0 @@ -import java.text.SimpleDateFormat - -apply plugin: 'com.android.application' - -// 定义当前gradle文件的全局变量 -ext { - //主版本号 - MAJOR_VERSION = 1 - //次版本号 - MINOR_VERSION = 0 - createFile() - buildTimes = getBuildTime() - isRelease = checkRelease() - gitBranchName = getWorkingBranchName() -} - -android { - compileSdkVersion rootProject.ext.android.compileSdkVersion - defaultConfig { - applicationId "com.zhidao.adas.client" - minSdkVersion rootProject.ext.android.minSdkVersion - targetSdkVersion 25 - multiDexEnabled true - versionCode increasedVersionCode() - versionName increasedVersionName() - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - flavorDimensions "multi_device" - - packagingOptions { - //解决编译时com.android.builder.merge.DuplicateRelativeFileException: More than one file was found with OS independent path 'META-INF/rxjava.properties'这个错误 - exclude 'META-INF/rxjava.properties' - } - externalNativeBuild { - ndk { - abiFilters 'armeabi-v7a', 'arm64-v8a' - } - } - } - signingConfigs { - release { - keyAlias 'CarLauncher' - keyPassword 'ZDauto123456' - storeFile file(getProjectDir().getParent() + '/keystore/car_launcher.jks') - storePassword 'ZDauto123456' - } - } - buildTypes { - debug { - signingConfig signingConfigs.release - } - release { - minifyEnabled false - signingConfig signingConfigs.release - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } -//配置自定义打包名称 - applicationVariants.all { variant -> - def buildTypeName = variant.buildType.name - //println("buildTypeName-------->" + buildTypeName) - variant.outputs.all { - StringBuffer buffer = new StringBuffer() - buffer.append(getProject().name) - buffer.append("_") - buffer.append(defaultConfig.versionName) - buffer.append(".") - buffer.append(buildTimes) - buffer.append("_") - buffer.append(gitBranchName) - buffer.append("_") - //获取渠道编号 - String flavor = variant.flavorName - if (flavor != null && flavor != "") { - buffer.append(flavor) - buffer.append("_") - } - //获取打包时间 - def fileName = "${buffer.toString()}${buildTypeName}.apk" - //测试文件名称 - buildConfigField 'String', 'APK_NAME', "\"${fileName}\"" - //println("fileName-------->" + fileName) - //这里修改apk文件名 - outputFileName = fileName - } - } - - //插入构建时间 - buildTypes.each { - it.buildConfigField 'String', 'BUILD_TIME', "\"${buildTimes}\"" - it.buildConfigField 'String', 'GIT_BRANCH_NAME', "\"${gitBranchName}\"" - it.buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI', 'new java.util.HashSet(){{add(chassis.Chassis.GearPosition.GEAR_P);add(chassis.Chassis.GearPosition.GEAR_R);}}' - it.buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR_BUS', 'new java.util.HashSet(){{add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_R);}}' - it.buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR_M1', 'null' - it.buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR_M2', 'new java.util.HashSet(){{add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_P);add(chassis.Chassis.GearPosition.GEAR_R);}}' - it.buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR_SWEEPER', 'null' - it.buildConfigField 'java.util.Set', 'UNABLE_LAUNCH_AUTOPILOT_GEAR_VAN', 'null' - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - productFlavors { - passenger { - dimension "multi_device" - buildConfigField 'boolean', 'IS_CLIENT', 'true' - } - driver { - dimension "multi_device" - buildConfigField 'boolean', 'IS_CLIENT', 'false' - - } - - } - lintOptions { - checkReleaseBuilds false - // Or, if you prefer, you can continue to check for errors in release builds, - // but continue the build even when errors are found: - abortOnError false - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation rootProject.ext.dependencies.material - implementation rootProject.ext.dependencies.androidxconstraintlayout - implementation rootProject.ext.dependencies.androidxappcompat - implementation "androidx.recyclerview:recyclerview:1.2.0" - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - implementation rootProject.ext.dependencies.gson - implementation 'com.github.bumptech.glide:glide:4.11.0' - implementation project(':libraries:mogo-adas') - implementation project(':libraries:mogo-adas-data') - implementation project(':libraries:mogo-obu') -// implementation 'com.zhidao.support.adas:high:2.8.0.0' -// implementation 'com.zhjt.mogo.adas.data:adas-data:2.6.6.0' -// compileOnly project(':core:mogo-core-data') -// implementation project(':core:mogo-core-utils') - implementation 'org.greenrobot:eventbus:3.2.0' - implementation 'com.android.support:multidex:1.0.3' -// implementation 'com.mogo.cloud:telematic:1.3.59'//注释掉司机端 乘客端 - implementation 'com.jcraft:jsch:0.1.55' -} - -// 删除老的APK -def checkRelease() { - def runTasks = gradle.startParameter.taskNames - for (String task : runTasks) { - // 我这里认为执行“assembleRelease”和非“debug”的任务就是执行“release”的任务 - if (task.contains("assembleRelease") || task.contains("Release")) { - deleteOldAPK("release") - return true - } else if (task.contains("Debug")) { - deleteOldAPK("debug") - return false - } - } - return false -} -//在Moudle 根目录中创建gradle.properties文件存储VersionCode -def createFile() { - def propFile = file('./gradle.properties') - Properties props = new Properties() - if (!propFile.exists()) { - propFile.createNewFile() - props.load(new FileInputStream(propFile)) - props['VERSION_CODE'] = '1' - props.store(propFile.newWriter(), null) - } else { - props.load(new FileInputStream(propFile)) - def code = props['VERSION_CODE'] - if (code == null || code == "0") { - props['VERSION_CODE'] = '1' - props.store(propFile.newWriter(), null) - } - } -} -//读取VersionCode -def readVersionCode() { - def propFile = file('./gradle.properties') - Properties props = new Properties() - props.load(new FileInputStream(propFile)) - // 读取gradle.properties文件中定义的VERSION_CODE属性 - def code = props['VERSION_CODE'].toInteger() - //def code = props.getProperty('VERSION_CODE').toInteger() - return code -} -//当打包的是Release版本时自动更新VersionCode -def increasedVersionCode() { - def code = readVersionCode() - //println("isRelease====" + isRelease) - if (isRelease) { - code++ - def propFile = file('./gradle.properties') - Properties props = new Properties() - props.load(new FileInputStream(propFile)) - props['VERSION_CODE'] = code.toString() - // 将最新的versionCode写入gradle.properties文件中 - props.store(propFile.newWriter(), null) - } - return code -} - -//删除无用apk -def deleteOldAPK(String buildTypeName) { - - // 使用map创建一个树 - def tree = fileTree(dir: './build/outputs/apk', include: "${buildTypeName}/*.apk") - //println("文件个数:" + tree.size()) - // 遍历文件树 - tree.each { File file -> - //println("删除文件名称:" + file) - file.delete() - } -} - -def increasedVersionName() { - def versionName = "${MAJOR_VERSION}.${MINOR_VERSION}.${readVersionCode()}" - return versionName -} - -def getBuildTime() { - //设置时间格式 - SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd.HHmmss", Locale.getDefault()) - //获取当前时间 - Date curDate = new Date(System.currentTimeMillis()) - return formatter.format(curDate) -} - - -/** - * @return 获取当前分支名称 - */ -def getWorkingBranchName() { - def workingBranchName = "" - def proc = "git rev-parse --abbrev-ref HEAD".execute() - proc.in.eachLine { line -> workingBranchName = line } - proc.err.eachLine { line -> println line } - proc.waitFor() - workingBranchName = "${workingBranchName}" - println "Working branch name: " + workingBranchName - return workingBranchName -} \ No newline at end of file diff --git a/app_ipc_monitoring/gradle.properties b/app_ipc_monitoring/gradle.properties deleted file mode 100644 index 32484a1fa7..0000000000 --- a/app_ipc_monitoring/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Fri Mar 31 13:39:14 CST 2023 -VERSION_CODE=4 diff --git a/app_ipc_monitoring/libs/arm64-v8a/libsshtool.so b/app_ipc_monitoring/libs/arm64-v8a/libsshtool.so deleted file mode 100644 index 88a15bcb52..0000000000 Binary files a/app_ipc_monitoring/libs/arm64-v8a/libsshtool.so and /dev/null differ diff --git a/app_ipc_monitoring/libs/armeabi-v7a/libsshtool.so b/app_ipc_monitoring/libs/armeabi-v7a/libsshtool.so deleted file mode 100644 index 92e91fdffb..0000000000 Binary files a/app_ipc_monitoring/libs/armeabi-v7a/libsshtool.so and /dev/null differ diff --git a/app_ipc_monitoring/other.zip b/app_ipc_monitoring/other.zip deleted file mode 100644 index 9bfec749b2..0000000000 Binary files a/app_ipc_monitoring/other.zip and /dev/null differ diff --git a/app_ipc_monitoring/proguard-rules.pro b/app_ipc_monitoring/proguard-rules.pro deleted file mode 100644 index f10712073b..0000000000 --- a/app_ipc_monitoring/proguard-rules.pro +++ /dev/null @@ -1,26 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile - -#-----MogoMap----- --keep class com.mogo.map.MogoNavi{ - private (); -} diff --git a/app_ipc_monitoring/src/androidTest/java/com/zhidao/adas/client/ExampleInstrumentedTest.java b/app_ipc_monitoring/src/androidTest/java/com/zhidao/adas/client/ExampleInstrumentedTest.java deleted file mode 100644 index a69d6cb30b..0000000000 --- a/app_ipc_monitoring/src/androidTest/java/com/zhidao/adas/client/ExampleInstrumentedTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.zhidao.adas.client; - -import android.content.Context; - -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); - - assertEquals("com.zhidao.adas.client", appContext.getPackageName()); - } -} diff --git a/app_ipc_monitoring/src/main/AndroidManifest.xml b/app_ipc_monitoring/src/main/AndroidManifest.xml deleted file mode 100644 index ef2a239c85..0000000000 --- a/app_ipc_monitoring/src/main/AndroidManifest.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/App.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/App.java deleted file mode 100644 index f0bd8f52ca..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/App.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zhidao.adas.client; - -import android.app.Application; - -import com.zhidao.adas.client.utils.CrashHandler; - -import chassis.Chassis; - -public class App extends Application { - public static App INSTANCE; - - public Chassis.GearPosition gear; - - @Override - public void onCreate() { - super.onCreate(); - INSTANCE = this; - CrashHandler.getInstance().init(this); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/BootCompletedReceive.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/BootCompletedReceive.java deleted file mode 100644 index 84d033637b..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/BootCompletedReceive.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.zhidao.adas.client; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.util.Log; - -public class BootCompletedReceive extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - Log.i("开机", "启动"); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java deleted file mode 100644 index 3f72477436..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java +++ /dev/null @@ -1,705 +0,0 @@ -package com.zhidao.adas.client; - -import android.util.Pair; - -import com.zhidao.adas.client.bean.BaseInfo; -import com.zhidao.adas.client.bean.DataShow; -import com.zhidao.adas.client.bean.ErrorData; -import com.zhidao.adas.client.bean.ObuMap; -import com.zhidao.adas.client.bean.ObuRsi; -import com.zhidao.adas.client.bean.ObuRsm; -import com.zhidao.adas.client.bean.ObuSpat; -import com.zhidao.adas.client.bean.PerceptionTrafficLight; -import com.zhidao.adas.client.bean.PlanningDecisionState; -import com.zhidao.adas.client.bean.PlanningObjects; -import com.zhidao.adas.client.bean.PredictionObstacleTrajectory; -import com.zhidao.adas.client.bean.RecordDataConfig; -import com.zhidao.adas.client.bean.RecordPanel; -import com.zhidao.adas.client.bean.RoboSweeperTaskIndex; -import com.zhidao.adas.client.bean.StatusInfo; -import com.zhidao.adas.client.bean.TrackedObjects; -import com.zhidao.adas.client.bean.Trajectory; -import com.zhidao.adas.client.bean.Warn; -import com.zhidao.adas.client.log.LogSave; -import com.zhidao.adas.client.utils.Constants; -import com.zhidao.support.adas.high.common.ThreadPoolManager; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Locale; -import java.util.concurrent.Future; -import java.util.concurrent.LinkedBlockingQueue; - -import mogo.telematics.pad.MessagePad; - -/** - * 数据分发 - */ -public class DataDistribution { - private static final String TAG = DataDistribution.class.getSimpleName(); - private volatile static DataDistribution INSTANCE; - private final LinkedBlockingQueue queue; - private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS ", Locale.getDefault()); - private Future future; - private Pair listener; - private volatile boolean isCutDown = true;//是否缩短日志显示 - private int resId = R.id.rb_analysis; - - private DataDistribution() { - queue = new LinkedBlockingQueue<>(); - start(); - } - - public static DataDistribution getInstance() { - if (INSTANCE == null) { - synchronized (DataDistribution.class) { - if (INSTANCE == null) { - INSTANCE = new DataDistribution(); - } - } - } - return INSTANCE; - } - - public void setResId(int resId) { - this.resId = resId; - } - - public void registerAdasClientListener(Pair listener) { - this.listener = listener; - } - - public void unregisterAdasClientListener(Pair listener) { - if (this.listener != null && listener != null) - if (listener.second.hashCode() == this.listener.second.hashCode()) { - this.listener = null; - } - } - - - public void addData(BaseInfo info) { - queue.add(info); - } - - - public void start() { - if (future == null) { - future = ThreadPoolManager.getsInstance().submit(new WriteThread()); - } - } - - public void stop() { - queue.clear(); - if (future != null && !future.isCancelled()) { - future.cancel(true); - } - future = null; - } - - public void setCutDown(boolean cutDown) { - this.isCutDown = cutDown; - } - - private static final int LIST_SIZE = 30;//默认list最大数据量 - public final List listTrajectory = new ArrayList<>(); - public final List listTrackedObjects = new ArrayList<>(); - public final List listGnssInfo = new ArrayList<>(); - public final List listVehicleState = new ArrayList<>(); - public final List listAutopilotState = new ArrayList<>(); - public final List listMogoReportMessage = new ArrayList<>(); - public final List listPerceptionTrafficLight = new ArrayList<>(); - public final List listPredictionObstacleTrajectory = new ArrayList<>(); - public final List listRecordPanel = new ArrayList<>(); - public final List listGlobalPathResp = new ArrayList<>(); - public final List listWarn = new ArrayList<>(); - public final List listArrivalNotification = new ArrayList<>(); - public final List listStatusInfo = new ArrayList<>(); - public final List listRecordDataConfig = new ArrayList<>(); - public final List listErrorData = new ArrayList<>(); - public final List listOriginalPointCloud = new ArrayList<>(); - public final List listPlanningObjects = new ArrayList<>(); - public final List listPlanningDecisionState = new ArrayList<>(); - public final List listChassisStates = new ArrayList<>(); - public final List listFSMFunctionStates = new ArrayList<>(); - public final List listBackCameraVideo = new ArrayList<>(); - public final List listRoboSweeperTaskIndex = new ArrayList<>(); - public final List listBagManagerCmd = new ArrayList<>(); - public final List listObuSpat = new ArrayList<>(); - public final List listObuRsi = new ArrayList<>(); - public final List listObuRsm = new ArrayList<>(); - public final List listObuMap = new ArrayList<>(); - public final List listV2nCongestionEvent = new ArrayList<>(); - public final List listV2nGlobalPathEvents = new ArrayList<>(); - public final List listGetParamResp = new ArrayList<>(); - - private long listTrajectorySize = 0; - private long listTrackedObjectsSize = 0; - private long listGnssInfoSize = 0; - private long listVehicleStateSize = 0; - private long listAutopilotStateSize = 0; - private long listMogoReportMessageSize = 0; - private long listPerceptionTrafficLightSize = 0; - private long listPredictionObstacleTrajectorySize = 0; - private long listRecordPanelSize = 0; - private long listGlobalPathRespSize = 0; - private long listWarnSize = 0; - private long listArrivalNotificationSize = 0; - private long listStatusInfoSize = 0; - private long listRecordDataConfigSize = 0; - private long listErrorDataSize = 0; - private long listOriginalPointCloudSize = 0; - private long listPlanningObjectsSize = 0; - private long listPlanningDecisionStateSize = 0; - private long listChassisStatesSize = 0; - private long listFSMFunctionStatesSize = 0; - private long listBackCameraVideoSize = 0; - private long listRoboSweeperTaskIndexSize = 0; - private long listBagManagerCmdSize = 0; - private long listObuSpatSize = 0; - private long listObuRsiSize = 0; - private long listObuRsmSize = 0; - private long listObuMapSize = 0; - private long listV2nCongestionEventSize = 0; - private long listV2nGlobalPathEventsSize = 0; - private long listGetParamRespSize = 0; - - public void clearCount() { - listTrajectorySize = 1; - listTrackedObjectsSize = 1; - listGnssInfoSize = 1; - listVehicleStateSize = 1; - listAutopilotStateSize = 1; - listMogoReportMessageSize = 1; - listPerceptionTrafficLightSize = 1; - listPredictionObstacleTrajectorySize = 1; - listRecordPanelSize = 1; - listGlobalPathRespSize = 1; - listWarnSize = 1; - listArrivalNotificationSize = 1; - listStatusInfoSize = 1; - listRecordDataConfigSize = 1; - listErrorDataSize = 1; - listOriginalPointCloudSize = 1; - listPlanningObjectsSize = 1; - listPlanningDecisionStateSize = 1; - listChassisStatesSize = 1; - listFSMFunctionStatesSize = 1; - listBackCameraVideoSize = 1; - listRoboSweeperTaskIndexSize = 1; - listBagManagerCmdSize = 1; - listObuSpatSize = 1; - listObuRsiSize = 1; - listObuRsmSize = 1; - listObuMapSize = 1; - listV2nCongestionEventSize = 1; - listV2nGlobalPathEventsSize = 1; - listGetParamRespSize = 1; - } - - public String cutDown(String str) { - if (isCutDown && str.length() > 850) { - str = str.substring(0, 850) + "\n(已缩短。如需查看完整数据,请勾选日志缩短复选框)"; - } - return str; - } - - private String onTransmit(String time, BaseInfo data) { - String temp = data.toString(resId); - String str = cutDown(temp); - if (data instanceof Trajectory) { - listTrajectory.add(0, new DataShow(listTrajectorySize++, time + str)); - if (listTrajectory.size() > LIST_SIZE) { - listTrajectory.remove(listTrajectory.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_TRAJECTORY.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof TrackedObjects) { - listTrackedObjects.add(0, new DataShow(listTrackedObjectsSize++, time + str)); - if (listTrackedObjects.size() > LIST_SIZE) { - listTrackedObjects.remove(listTrackedObjects.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_TRACKED_OBJECTS.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof OriginalPointCloudData) { - listOriginalPointCloud.add(0, new DataShow(listOriginalPointCloudSize++, time + str)); - if (listOriginalPointCloud.size() > LIST_SIZE) { - listOriginalPointCloud.remove(listOriginalPointCloud.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_POINT_CLOUD_ORIGINAL.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof PlanningObjects) { - listPlanningObjects.add(0, new DataShow(listPlanningObjectsSize++, time + str)); - if (listPlanningObjects.size() > LIST_SIZE) { - listPlanningObjects.remove(listPlanningObjects.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_PLANNING_OBJECTS.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof PlanningDecisionState) { - listPlanningDecisionState.add(0, new DataShow(listPlanningDecisionStateSize++, time + str)); - if (listPlanningDecisionState.size() > LIST_SIZE) { - listPlanningDecisionState.remove(listPlanningDecisionState.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ObuSpat) { - listObuSpat.add(0, new DataShow(listObuSpatSize++, time + str)); - if (listObuSpat.size() > LIST_SIZE) { - listObuSpat.remove(listObuSpat.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_OBU_SPAT.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ObuRsi) { - listObuRsi.add(0, new DataShow(listObuRsiSize++, time + str)); - if (listObuRsi.size() > LIST_SIZE) { - listObuRsi.remove(listObuRsi.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_OBU_RSI.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ObuRsm) { - listObuRsm.add(0, new DataShow(listObuRsmSize++, time + str)); - if (listObuRsm.size() > LIST_SIZE) { - listObuRsm.remove(listObuRsm.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_OBU_RSM.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ObuMap) { - listObuMap.add(0, new DataShow(listObuMapSize++, time + str)); - if (listObuMap.size() > LIST_SIZE) { - listObuMap.remove(listObuMap.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_OBU_MAP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof GnssInfo) { - listGnssInfo.add(0, new DataShow(listGnssInfoSize++, time + str)); - if (listGnssInfo.size() > LIST_SIZE) { - listGnssInfo.remove(listGnssInfo.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_GNSS_INFO.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof VehicleState) { - listVehicleState.add(0, new DataShow(listVehicleStateSize++, time + str)); - if (listVehicleState.size() > LIST_SIZE) { - listVehicleState.remove(listVehicleState.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_VEHICLE_STATE.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ChassisStates) { - listChassisStates.add(0, new DataShow(listChassisStatesSize++, time + str)); - if (listChassisStates.size() > LIST_SIZE) { - listChassisStates.remove(listChassisStates.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_CHASSIS_STATES.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof AutopilotState) { - listAutopilotState.add(0, new DataShow(listAutopilotStateSize++, time + str)); - if (listAutopilotState.size() > LIST_SIZE) { - listAutopilotState.remove(listAutopilotState.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_AUTOPILOT_STATE.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof MogoReportMessage) { - listMogoReportMessage.add(0, new DataShow(listMogoReportMessageSize++, time + str)); - if (listMogoReportMessage.size() > LIST_SIZE) { - listMogoReportMessage.remove(listMogoReportMessage.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_REPORT_MESSAGE.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof PerceptionTrafficLight) { - listPerceptionTrafficLight.add(0, new DataShow(listPerceptionTrafficLightSize++, time + str)); - if (listPerceptionTrafficLight.size() > LIST_SIZE) { - listPerceptionTrafficLight.remove(listPerceptionTrafficLight.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_PERCEPTION_TRAFFIC_LIGHT.equals(listener.first)) { - listener.second.onPerceptionTrafficLight((PerceptionTrafficLight) data); - } - } else if (data instanceof PredictionObstacleTrajectory) { - listPredictionObstacleTrajectory.add(0, new DataShow(listPredictionObstacleTrajectorySize++, time + str)); - if (listPredictionObstacleTrajectory.size() > LIST_SIZE) { - listPredictionObstacleTrajectory.remove(listPredictionObstacleTrajectory.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof BasicInfoReq) { - - } else if (data instanceof CarConfigResp) { - if (listener != null && Constants.TITLE.TITLE_CAR_CONFIG_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof RecordPanel) { - listRecordPanel.add(0, new DataShow(listRecordPanelSize++, time + str)); - if (listRecordPanel.size() > LIST_SIZE) { - listRecordPanel.remove(listRecordPanel.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_RECORD_RESULT.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof BagManagerCmd) { - listBagManagerCmd.add(0, new DataShow(listBagManagerCmdSize++, time + str)); - if (listBagManagerCmd.size() > LIST_SIZE) { - listBagManagerCmd.remove(listBagManagerCmd.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_BAG_MANAGER_CMD.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof GlobalPathResp) { - listGlobalPathResp.add(0, new DataShow(listGlobalPathRespSize++, time + str)); - if (listGlobalPathResp.size() > LIST_SIZE) { - listGlobalPathResp.remove(listGlobalPathResp.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof Warn) { - listWarn.add(0, new DataShow(listWarnSize++, time + str)); - if (listWarn.size() > LIST_SIZE) { - listWarn.remove(listWarn.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_WARN.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ArrivalNotification) { - listArrivalNotification.add(0, new DataShow(listArrivalNotificationSize++, time + str)); - if (listArrivalNotification.size() > LIST_SIZE) { - listArrivalNotification.remove(listArrivalNotification.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_ARRIVAL_NOTIFICATION.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof StatusInfo) { - listStatusInfo.add(0, new DataShow(listStatusInfoSize++, time + str)); - if (listStatusInfo.size() > LIST_SIZE) { - listStatusInfo.remove(listStatusInfo.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_STATUS_QUERY_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof RecordDataConfig) { - listRecordDataConfig.add(0, new DataShow(listRecordDataConfigSize++, time + str)); - if (listRecordDataConfig.size() > LIST_SIZE) { - listRecordDataConfig.remove(listRecordDataConfig.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof RoboSweeperTaskIndex) { - listRoboSweeperTaskIndex.add(0, time + str); - if (listRoboSweeperTaskIndex.size() > LIST_SIZE) { - listRoboSweeperTaskIndex.remove(listRoboSweeperTaskIndex.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof RoboSweeperTaskIndex) { - listRoboSweeperTaskIndex.add(0, new DataShow(listRoboSweeperTaskIndexSize++, time + str)); - if (listRoboSweeperTaskIndex.size() > LIST_SIZE) { - listRoboSweeperTaskIndex.remove(listRoboSweeperTaskIndex.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof FSMFunctionStates) { - listFSMFunctionStates.add(0, new DataShow(listFSMFunctionStatesSize++, time + str)); - if (listFSMFunctionStates.size() > LIST_SIZE) { - listFSMFunctionStates.remove(listFSMFunctionStates.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_FUNCTION_STATES.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ErrorData) { - listErrorData.add(0, new DataShow(listErrorDataSize++, time + str)); - if (listErrorData.size() > 100) { - listErrorData.remove(listErrorData.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_ERROR.equals(listener.first)) { - listener.second.onRefresh(); - if (data.header == null) { - if (data instanceof ErrorData) { - listErrorData.add(0, new DataShow(listErrorDataSize++, time + str)); - if (listErrorData.size() > 100) { - listErrorData.remove(listErrorData.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_ERROR.equals(listener.first)) { - listener.second.onRefresh(); - } - } - } else { - MessagePad.MessageType messageType = data.header.getMsgType(); - if (messageType == MessagePad.MessageType.MsgTypeTrajectory) { - listTrajectory.add(0, new DataShow(listTrajectorySize++, time + str)); - if (listTrajectory.size() > LIST_SIZE) { - listTrajectory.remove(listTrajectory.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_TRAJECTORY.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeTrackedObjects) { - listTrackedObjects.add(0, new DataShow(listTrackedObjectsSize++, time + str)); - if (listTrackedObjects.size() > LIST_SIZE) { - listTrackedObjects.remove(listTrackedObjects.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_TRACKED_OBJECTS.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypePlanningObjects) { - listPlanningObjects.add(0, new DataShow(listPlanningObjectsSize++, time + str)); - if (listPlanningObjects.size() > LIST_SIZE) { - listPlanningObjects.remove(listPlanningObjects.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_PLANNING_OBJECTS.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypePlanningDecisionState) { - listPlanningDecisionState.add(0, new DataShow(listPlanningDecisionStateSize++, time + str)); - if (listPlanningDecisionState.size() > LIST_SIZE) { - listPlanningDecisionState.remove(listPlanningDecisionState.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeGnssInfo) { - listGnssInfo.add(0, new DataShow(listGnssInfoSize++, time + str)); - if (listGnssInfo.size() > LIST_SIZE) { - listGnssInfo.remove(listGnssInfo.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_GNSS_INFO.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeVehicleState) { - listVehicleState.add(0, new DataShow(listVehicleStateSize++, time + str)); - if (listVehicleState.size() > LIST_SIZE) { - listVehicleState.remove(listVehicleState.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_VEHICLE_STATE.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeChassisStates) { - listChassisStates.add(0, new DataShow(listChassisStatesSize++, time + str)); - if (listChassisStates.size() > LIST_SIZE) { - listChassisStates.remove(listChassisStates.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_CHASSIS_STATES.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeAutopilotState) { - listAutopilotState.add(0, new DataShow(listAutopilotStateSize++, time + str)); - if (listAutopilotState.size() > LIST_SIZE) { - listAutopilotState.remove(listAutopilotState.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_AUTOPILOT_STATE.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeReportMessage) { - listMogoReportMessage.add(0, new DataShow(listMogoReportMessageSize++, time + str)); - if (listMogoReportMessage.size() > LIST_SIZE) { - listMogoReportMessage.remove(listMogoReportMessage.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_REPORT_MESSAGE.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypePredictionObstacleTrajectory) { - listPredictionObstacleTrajectory.add(0, new DataShow(listPredictionObstacleTrajectorySize++, time + str)); - if (listPredictionObstacleTrajectory.size() > LIST_SIZE) { - listPredictionObstacleTrajectory.remove(listPredictionObstacleTrajectory.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeCarConfigResp) { - if (listener != null && Constants.TITLE.TITLE_CAR_CONFIG_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeRecordResult) { - listRecordPanel.add(0, new DataShow(listRecordPanelSize++, time + str)); - if (listRecordPanel.size() > LIST_SIZE) { - listRecordPanel.remove(listRecordPanel.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_RECORD_RESULT.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeBagManagerCmd) { - listBagManagerCmd.add(0, new DataShow(listBagManagerCmdSize++, time + str)); - if (listBagManagerCmd.size() > LIST_SIZE) { - listBagManagerCmd.remove(listBagManagerCmd.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_BAG_MANAGER_CMD.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeGlobalPathResp) { - listGlobalPathResp.add(0, new DataShow(listGlobalPathRespSize++, time + str)); - if (listGlobalPathResp.size() > LIST_SIZE) { - listGlobalPathResp.remove(listGlobalPathResp.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeWarn) { - listWarn.add(0, new DataShow(listWarnSize++, time + str)); - if (listWarn.size() > LIST_SIZE) { - listWarn.remove(listWarn.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_WARN.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeArrivalNotification) { - listArrivalNotification.add(0, new DataShow(listArrivalNotificationSize++, time + str)); - if (listArrivalNotification.size() > LIST_SIZE) { - listArrivalNotification.remove(listArrivalNotification.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_ARRIVAL_NOTIFICATION.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeStatusQueryResp) { - listStatusInfo.add(0, new DataShow(listStatusInfoSize++, time + str)); - if (listStatusInfo.size() > LIST_SIZE) { - listStatusInfo.remove(listStatusInfo.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_STATUS_QUERY_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeRecordDataConfigResp) { - listRecordDataConfig.add(0, new DataShow(listRecordDataConfigSize++, time + str)); - if (listRecordDataConfig.size() > LIST_SIZE) { - listRecordDataConfig.remove(listRecordDataConfig.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeSweeperTaskIndexData) { - listRoboSweeperTaskIndex.add(0, new DataShow(listRoboSweeperTaskIndexSize++, time + str)); - if (listRoboSweeperTaskIndex.size() > LIST_SIZE) { - listRoboSweeperTaskIndex.remove(listRoboSweeperTaskIndex.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeFunctionStates) { - listFSMFunctionStates.add(0, new DataShow(listFSMFunctionStatesSize++, time + str)); - if (listFSMFunctionStates.size() > LIST_SIZE) { - listFSMFunctionStates.remove(listFSMFunctionStates.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_FUNCTION_STATES.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypePointCloud) { - listOriginalPointCloud.add(0, new DataShow(listOriginalPointCloudSize++, time + str)); - if (listOriginalPointCloud.size() > LIST_SIZE) { - listOriginalPointCloud.remove(listOriginalPointCloud.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_POINT_CLOUD_ORIGINAL.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeBackCameraVideo) { - listBackCameraVideo.add(0, new DataShow(listBackCameraVideoSize++, time + str)); - if (listBackCameraVideo.size() > LIST_SIZE) { - listBackCameraVideo.remove(listBackCameraVideo.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_BACK_CAMERA_VIDEO.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeV2nCongestionEvent) { - listV2nCongestionEvent.add(0, new DataShow(listV2nCongestionEventSize++, time + str)); - if (listV2nCongestionEvent.size() > LIST_SIZE) { - listV2nCongestionEvent.remove(listV2nCongestionEvent.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_V2N_CONGESTION_EVENT.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeV2nGlobalPathEvents) { - listV2nGlobalPathEvents.add(0, new DataShow(listV2nGlobalPathEventsSize++, time + str)); - if (listV2nGlobalPathEvents.size() > LIST_SIZE) { - listV2nGlobalPathEvents.remove(listV2nGlobalPathEvents.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_V2N_GLOBAL_PATH_EVENTS.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (messageType == MessagePad.MessageType.MsgTypeGetParamResp) { - listGetParamResp.add(0, new DataShow(listGetParamRespSize++, time + str)); - if (listGetParamResp.size() > LIST_SIZE) { - listGetParamResp.remove(listGetParamResp.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_GET_PARAM_RESP.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof PerceptionTrafficLight) { - listPerceptionTrafficLight.add(0, new DataShow(listPerceptionTrafficLightSize++, time + str)); - if (listPerceptionTrafficLight.size() > LIST_SIZE) { - listPerceptionTrafficLight.remove(listPerceptionTrafficLight.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_PERCEPTION_TRAFFIC_LIGHT.equals(listener.first)) { - listener.second.onPerceptionTrafficLight((PerceptionTrafficLight) data); - } - } else if (data instanceof ObuSpat) { - listObuSpat.add(0, new DataShow(listObuSpatSize++, time + str)); - if (listObuSpat.size() > LIST_SIZE) { - listObuSpat.remove(listObuSpat.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_OBU_SPAT.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ObuRsi) { - listObuRsi.add(0, new DataShow(listObuRsiSize++, time + str)); - if (listObuRsi.size() > LIST_SIZE) { - listObuRsi.remove(listObuRsi.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_OBU_RSI.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ObuRsm) { - listObuRsm.add(0, new DataShow(listObuRsmSize++, time + str)); - if (listObuRsm.size() > LIST_SIZE) { - listObuRsm.remove(listObuRsm.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_OBU_RSM.equals(listener.first)) { - listener.second.onRefresh(); - } - } else if (data instanceof ObuMap) { - listObuMap.add(0, new DataShow(listObuMapSize++, time + str)); - if (listObuMap.size() > LIST_SIZE) { - listObuMap.remove(listObuMap.size() - 1); - } - if (listener != null && Constants.TITLE.RECEIVE_OBU_MAP.equals(listener.first)) { - listener.second.onRefresh(); - } - } - } - return temp; - } - - private class WriteThread implements Runnable { - - @Override - public void run() { - synchronized (this) { - while (!Thread.currentThread().isInterrupted()) { - try { - BaseInfo data = queue.take(); - String time = sdf.format(new Date(data.nowTime)); - String temp = onTransmit(time, data); - String builder = time + "[action]:" + data.action + " [data]:" + temp; - LogSave.getInstance().saveLog(builder); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - } - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ObuTest.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ObuTest.java deleted file mode 100644 index 028ad45b24..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ObuTest.java +++ /dev/null @@ -1,338 +0,0 @@ -package com.zhidao.adas.client; - -import android.util.Log; - -import com.google.protobuf.TextFormat; -import com.mogo.support.obu.MogoObuManager; -import com.mogo.support.obu.ObuScene; -import com.mogo.support.obu.constants.MogoObuConstants; -import com.mogo.support.obu.constants.MogoObuTopicId; -import com.mogo.support.obu.model.MogoObuHvBasicsData; -import com.mogo.support.obu.model.MogoObuMapMathData; -import com.mogo.support.obu.model.MogoObuRsiWarningData; -import com.mogo.support.obu.model.MogoObuRsmWarningData; -import com.mogo.support.obu.model.MogoObuRvWarningData; -import com.mogo.support.obu.model.MogoObuSpatWarningData; -import com.mogo.support.obu.model.MogoObuSystemStatusData; -import com.mogo.support.obu.model.advance.AccFourAxes; -import com.mogo.support.obu.model.advance.DateTime; -import com.mogo.support.obu.model.advance.NodeId; -import com.mogo.support.obu.model.advance.Participant; -import com.mogo.support.obu.model.advance.PositionLLV; -import com.mogo.support.obu.model.advance.RsiWarning; -import com.mogo.support.obu.model.advance.SpatLight; -import com.mogo.support.obu.model.advance.V2xWarning; -import com.mogo.support.obu.model.advance.VehBasics; -import com.mogo.support.obu.model.advance.VehControl; -import com.mogo.support.obu.model.advance.VehSize; -import com.mogo.support.obu.model.advance.VerticalLLV; -import com.mogo.support.obu.model.advance.WarningData; -import com.mogo.support.obu.model.result.BaseResult; -import com.zhidao.support.adas.high.common.ThreadPoolManager; -import com.zhidao.support.obu.ObuManager; -import com.zhidao.support.obu.OnObuListener; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -import mogo.telematics.pad.MessagePad; - -/** - * OBU SDK Java对象转PB对象测试 - */ -public class ObuTest { - - - public static void start() { - Runnable runnable = new Runnable() { - @Override - public void run() { - ObuManager.getInstance().registerObuListener(listener); - Class clazz = MogoObuManager.class; - MogoObuManager mogoObuManager = MogoObuManager.getInstance(); - Method[] methods = clazz.getDeclaredMethods(); - for (Method m : methods) { - String name = m.getName(); - if ("onObuCallback".equals(name)) { - m.setAccessible(true); - try { - m.invoke(mogoObuManager, MogoObuTopicId.HV_BASIC.id, buildMogoObuHvBasicsData()); - m.invoke(mogoObuManager, MogoObuTopicId.RV_WARNING.id, buildMogoObuRvWarningData()); - m.invoke(mogoObuManager, MogoObuTopicId.SPAT_WARNING.id, buildMogoObuSpatWarningData()); - m.invoke(mogoObuManager, MogoObuTopicId.RSI_WARNING.id, buildMogoObuRsiWarningData()); - m.invoke(mogoObuManager, MogoObuTopicId.RSM_WARNING.id, buildMogoObuRsmWarningData()); - m.invoke(mogoObuManager, MogoObuTopicId.MAP_MATCH.id, buildMogoObuMapMathData()); - } catch (IllegalAccessException | InvocationTargetException e) { - e.printStackTrace(); - } - break; - } - } - } - }; - ThreadPoolManager.getsInstance().execute(runnable); - } - - private static int have(int unitMask, int mask) { - unitMask += mask; - return unitMask; - } - - private static MogoObuHvBasicsData buildMogoObuHvBasicsData() { - int vehBasicsUnitMask = 0; - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ID); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.SEC_MARK); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.LATITUDE); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.LONGITUDE); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ELEVATION); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.SPEED); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.HEADING); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ACC_FOUR_AXES); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_SIZE); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_CLASS); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_CONTROL_MSG); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.TARGET_POSITION); - VehBasics vehBasics = new VehBasics(vehBasicsUnitMask); - vehBasics.setId("aaa"); - vehBasics.setLatitude(10000000); - vehBasics.setLongitude(20000000); - vehBasics.setElevation(2000); - vehBasics.setSpeed(3000); - vehBasics.setHeading(4000); - vehBasics.setAccFourAxes(new AccFourAxes(200, 201, 202, 203)); - vehBasics.setVehSize(new VehSize(300, 301, 302)); - vehBasics.setVehClass(303); - - int vehControlUnitMask = 0; - vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.BRAKE_PEDAL_STATUS); - vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.TRANSMISSION_STATUS); - vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.EXTERIOR_LIGHTS); - VehControl vehControl = new VehControl(vehControlUnitMask); - vehControl.setBrakePedalStatus(401); - vehControl.setTransmissionStatus(402); - vehControl.setExteriorLights(403); - vehBasics.setVehControlMsg(vehControl); - vehBasics.setTargetPosition(8); - MogoObuHvBasicsData data = new MogoObuHvBasicsData(1, vehBasics); - return data; - } - - private static MogoObuRvWarningData buildMogoObuRvWarningData() { - int vehBasicsUnitMask = 0; - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ID); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.SEC_MARK); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.LATITUDE); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.LONGITUDE); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ELEVATION); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.SPEED); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.HEADING); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.ACC_FOUR_AXES); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_SIZE); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_CLASS); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.VEH_CONTROL_MSG); - vehBasicsUnitMask = have(vehBasicsUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_BASICS.TARGET_POSITION); - VehBasics vehBasics = new VehBasics(vehBasicsUnitMask); - vehBasics.setId("aaa"); - vehBasics.setLatitude(20000000); - vehBasics.setLongitude(30000000); - vehBasics.setElevation(4000); - vehBasics.setSpeed(5000); - vehBasics.setHeading(6000); - vehBasics.setAccFourAxes(new AccFourAxes(700, 801, 902, 1003)); - vehBasics.setVehSize(new VehSize(1100, 1201, 1302)); - vehBasics.setVehClass(1403); - - int vehControlUnitMask = 0; - vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.BRAKE_PEDAL_STATUS); - vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.TRANSMISSION_STATUS); - vehControlUnitMask = have(vehControlUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_VEH_CONTROL.EXTERIOR_LIGHTS); - VehControl vehControl = new VehControl(vehControlUnitMask); - vehControl.setBrakePedalStatus(1501); - vehControl.setTransmissionStatus(1602); - vehControl.setExteriorLights(1703); - vehBasics.setVehControlMsg(vehControl); - vehBasics.setTargetPosition(18); - - int v2xWarningUnitMask = 0; - v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_NUM); - v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_DATA); - v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_TIME); - v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.DISTANCE); - V2xWarning v2xWarning = new V2xWarning(v2xWarningUnitMask); - - DateTime dateTime = new DateTime(19, 20, 21, 22, 23, 24, 25); - List warningDatas = new ArrayList<>(); - int warningDataMask = 0; - warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.STATUS); - warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_TYPE); - warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_LEVEL); - warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_PRIORITY); - WarningData warningData1 = new WarningData(warningDataMask, 3); - warningData1.setWarningType(26); - warningData1.setWarningLevel(27); - warningData1.setWarningPriority(28); - warningDatas.add(warningData1); - WarningData warningData2 = new WarningData(warningDataMask, 4); - warningData2.setWarningType(29); - warningData2.setWarningLevel(30); - warningData2.setWarningPriority(31); - warningDatas.add(warningData2); - v2xWarning.setWarningNum(2); - v2xWarning.setWarningData(warningDatas); - v2xWarning.setWarningTime(dateTime); - v2xWarning.setDistance(32); - MogoObuRvWarningData data = new MogoObuRvWarningData(2, vehBasics, v2xWarning); - return data; - } - - - private static MogoObuSpatWarningData buildMogoObuSpatWarningData() { - List lights = new ArrayList<>(); - lights.add(new SpatLight(35, 36, 37, 38, 39, 40)); - lights.add(new SpatLight(41, 42, 43, 44, 45, 46)); - lights.add(new SpatLight(47, 48, 49, 50, 51, 52)); - MogoObuSpatWarningData data = new MogoObuSpatWarningData(33, 34, 3, lights); - return data; - } - - private static MogoObuRsiWarningData buildMogoObuRsiWarningData() { - List list = new ArrayList<>(); - int rsiWarningUnitMask = 0; - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.SCENE_TYPE); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.POSITION); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.SIGN_SERIAL_NUM); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.EVENT_SERIAL_NUM); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.SPEED_MAX_LIMIT); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.SPEED_MIN_LIMIT); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.EVENT_RADIUS); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.WARNING_LEVEL); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.TARGET_POSITION); - rsiWarningUnitMask = have(rsiWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_RSI_WARNING.DISTANCE); - RsiWarning rsiWarning1 = new RsiWarning(rsiWarningUnitMask); - rsiWarning1.setSceneType(53); - rsiWarning1.setPosition(new PositionLLV(7, 54, 55, new VerticalLLV(7, 56))); - rsiWarning1.setSignSerialNum(57); - rsiWarning1.setEventSerialNum(58); - rsiWarning1.setSpeedMinLimit(59); - rsiWarning1.setSpeedMaxLimit(60); - rsiWarning1.setEventRadius(61); - rsiWarning1.setWarningLevel(62); - rsiWarning1.setTargetPosition(63); - rsiWarning1.setDistance(64); - list.add(rsiWarning1); - - RsiWarning rsiWarning2 = new RsiWarning(rsiWarningUnitMask); - rsiWarning2.setSceneType(65); - rsiWarning2.setPosition(new PositionLLV(7, 66, 67, new VerticalLLV(7, 68))); - rsiWarning2.setSignSerialNum(69); - rsiWarning2.setEventSerialNum(70); - rsiWarning2.setSpeedMinLimit(71); - rsiWarning2.setSpeedMaxLimit(72); - rsiWarning2.setEventRadius(73); - rsiWarning2.setWarningLevel(74); - rsiWarning2.setTargetPosition(75); - rsiWarning2.setDistance(76); - list.add(rsiWarning2); - MogoObuRsiWarningData data = new MogoObuRsiWarningData(53, 2, list); - return data; - } - - private static MogoObuRsmWarningData buildMogoObuRsmWarningData() { - Participant participant = new Participant(78, 79, 80, 81, 82, 83, 84, 85, 86, new AccFourAxes(87, 88, 89, 90), new VehSize(91, 92, 93), 94, 95); - int v2xWarningUnitMask = 0; - v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_NUM); - v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_DATA); - v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.WARNING_TIME); - v2xWarningUnitMask = have(v2xWarningUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING.DISTANCE); - V2xWarning v2xWarning = new V2xWarning(v2xWarningUnitMask); - - DateTime dateTime = new DateTime(96, 97, 98, 99, 100, 101, 102); - List warningDatas = new ArrayList<>(); - int warningDataMask = 0; - warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.STATUS); - warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_TYPE); - warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_LEVEL); - warningDataMask = have(warningDataMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_V2X_WARNING_DATA.WARNING_PRIORITY); - WarningData warningData1 = new WarningData(warningDataMask, 3); - warningData1.setWarningType(103); - warningData1.setWarningLevel(104); - warningData1.setWarningPriority(105); - warningDatas.add(warningData1); - WarningData warningData2 = new WarningData(warningDataMask, 4); - warningData2.setWarningType(106); - warningData2.setWarningLevel(107); - warningData2.setWarningPriority(108); - warningDatas.add(warningData2); - v2xWarning.setWarningNum(2); - v2xWarning.setWarningData(warningDatas); - v2xWarning.setWarningTime(dateTime); - v2xWarning.setDistance(109); - MogoObuRsmWarningData data = new MogoObuRsmWarningData(77, participant, v2xWarning); - return data; - } - - private static MogoObuMapMathData buildMogoObuMapMathData() { - int mogoObuMapMathDataUnitMask = 0; - mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.CURRENT_NODE_ID); - mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.UPSTREAM_NODE_ID); - mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.MATCHING_LANE_ID); - mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.SPEED_MAX_LIMIT); - mogoObuMapMathDataUnitMask = have(mogoObuMapMathDataUnitMask, MogoObuConstants.UNIT_MASK.MOGO_OBU_MAP_MATH.SPEED_MIN_LIMIT); - MogoObuMapMathData data = new MogoObuMapMathData(mogoObuMapMathDataUnitMask, 110); - data.setCurrentNodeId(new NodeId(111,112)); - data.setUpstreamNodeId(new NodeId(113,114)); - data.setMatchingLaneId(115); - data.setSpeedMaxLimit(116); - data.setSpeedMinLimit(117); - return data; - } - - private static OnObuListener listener = new OnObuListener() { - @Override - public void onConnectStatus(int connectStatus) { - - } - - @Override - public void onObuCallResult(BaseResult result) { - - } - - @Override - public void onObuSystemStatus(MogoObuSystemStatusData data) { - - } - - @Override - public void onGnssInfo(MessagePad.GnssInfo gnssInfo) { - Log.i("ddddd", "onGnssInfo=\n" + TextFormat.printer().escapingNonAscii(false).printToString(gnssInfo)); - } - - @Override - public void onObuRvWarning(ObuScene.RvWarningData rvWarningData) { - Log.i("ddddd", "onObuRvWarning=\n" + TextFormat.printer().escapingNonAscii(false).printToString(rvWarningData)); - } - - @Override - public void onObuSpatWarning(ObuScene.SpatWarningData spatWarningData) { - Log.i("ddddd", "onObuSpatWarning=\n" + TextFormat.printer().escapingNonAscii(false).printToString(spatWarningData)); - } - - @Override - public void onObuRsiWarning(ObuScene.RsiWarningData rsiWarningData) { - Log.i("ddddd", "onObuRsiWarning=\n" + TextFormat.printer().escapingNonAscii(false).printToString(rsiWarningData)); - } - - @Override - public void onObuRsmWarning(ObuScene.RsmWarningData rsmWarningData) { - Log.i("ddddd", "onObuRsmWarning=\n" + TextFormat.printer().escapingNonAscii(false).printToString(rsmWarningData)); - } - - @Override - public void onObuMapMath(ObuScene.MapMatchData mapMatchData) { - Log.i("ddddd", "onObuMapMath=\n" + TextFormat.printer().escapingNonAscii(false).printToString(mapMatchData)); - } - }; -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/OnAdasClientListener.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/OnAdasClientListener.java deleted file mode 100644 index 0992ee566c..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/OnAdasClientListener.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.zhidao.adas.client; - -import com.zhidao.adas.client.bean.PerceptionTrafficLight; - -public abstract class OnAdasClientListener { - - public abstract void onRefresh(); - -// /** -// * 自动驾驶局部轨迹 车前引导线 -// * -// * @param isAdd 是否是添加数据回调 -// */ -// public void onTrajectory() { -// } -// -// /** -// * 障碍物 他车数据 -// * -// * @param trackedObjects 数据 -// */ -// public void onTrackedObjects(TrackedObjects trackedObjects) { -// } -// -// /** -// * 惯导信息 -// * -// * @param isAdd 是否是添加数据回调 -// */ -// public void onGnssInfo() { -// } -// -// /** -// * 底盘信息, 透传底盘状态,pb参考底盘 -// * -// * @param vehicleState 数据 -// */ -// public void onVehicleState(VehicleState vehicleState) { -// } -// -// /** -// * 自动驾驶状态 -// * -// * @param autopilotState 数据 -// */ -// public void onAutopilotState(AutopilotState autopilotState) { -// } -// -// /** -// * 监控事件报告 -// * -// * @param mogoReportMessage 数据 -// */ -// public void onReportMessage(MogoReportMessage mogoReportMessage) { -// } -// - /** - * 感知红绿灯 - * - * @param trafficLights 感知红绿灯 - */ - public void onPerceptionTrafficLight(PerceptionTrafficLight trafficLights) { - } -// -// /** -// * 自动驾驶设备基础信息请求 -// * -// * @param basicInfoReq 数据 目前没有任何参数 -// */ -// public void onBasicInfoReq(BasicInfoReq basicInfoReq) { -// } -// -// /** -// * 车机基础信息应答 -// * -// * @param carConfigResp 数据 -// */ -// public void onCarConfigResp(CarConfigResp carConfigResp) { -// } -// -// /** -// * 数据采集结果 -// * -// * @param recordPanel 数据 -// */ -// public void onRecordResult(RecordPanel recordPanel) { -// } -// -// /** -// * 自动驾驶路径应答 -// * -// * @param globalPathResp 数据 -// */ -// public void onGlobalPathResp(GlobalPathResp globalPathResp) { -// } -// -// -// /** -// * 报警信息 -// * 暂时保留,目前没有使用 -// * -// * @param warn 数据 -// */ -// @Deprecated -// public void onWarn(Warn warn) { -// } -// -// /** -// * 到站提醒 自动驾驶站点 -// * -// * @param arrivalNotification 数据 -// */ -// public void onArrivalNotification(ArrivalNotification arrivalNotification) { -// } -// -// /** -// * 升级状态 -// * -// * @param info -// */ -// @Deprecated -// public void onUpgradeStateInfo(IPCUpgradeStateInfo info) { -// } -// -// /** -// * 向IPC发送命令返回结果 -// * -// * @param info -// */ -// public void onSSHResult(SSHResult info) { -// } -// -// /** -// * 数据错误 -// * -// * @param status 错误原因 -// * @param bytes 原始数据 -// */ -// public void onError(ProtocolStatus status, byte[] bytes) { -// -// } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/AutopilotConfigAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/AutopilotConfigAdapter.java deleted file mode 100644 index 268ee6da53..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/AutopilotConfigAdapter.java +++ /dev/null @@ -1,480 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.content.Context; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.RadioButton; -import android.widget.RadioGroup; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.bean.AutoPilotMode; - -import java.util.ArrayList; -import java.util.List; - -public class AutopilotConfigAdapter extends RecyclerView.Adapter { - - private List datas; - private Context mContext; - private OnHaveDataListener onHaveDataListener; - private boolean isShowDel = false; - - public AutopilotConfigAdapter(List datas) { - this.datas = datas; - if (datas == null) { - this.datas = new ArrayList<>(); - } - } - - public void setShowDel(boolean showDel) { - isShowDel = showDel; - notifyDataSetChanged(); - } - - public List getDatas() { - return datas; - } - - public interface OnHaveDataListener { - void onHaveData(boolean isHave); - } - - public void setOnItemClickListener(OnHaveDataListener l) { - this.onHaveDataListener = l; - } - - public void add() { - datas.add(new AutoPilotMode()); - notifyItemInserted(datas.size() - 1); - if (onHaveDataListener != null && datas.size() == 1) - onHaveDataListener.onHaveData(true); - } - - public void minus(int position) { - AutoPilotMode bean = datas.get(position); - bean.wayLatLons = null; - bean = null; - datas.remove(position); - notifyItemRemoved(position); - notifyItemRangeChanged(position, getItemCount()); - if (onHaveDataListener != null && datas.size() == 0) - onHaveDataListener.onHaveData(false); - } - - @Override - public int getItemViewType(int position) { - return position; - } - - //创建ViewHolder - @NonNull - @Override - public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - //实例化得到Item布局文件的View对象 - mContext = parent.getContext(); - View v = LayoutInflater.from(mContext).inflate(R.layout.item_autopilot_config, parent, false); - //返回MyViewHolder的对象 - return new MyViewHolder(v); - } - - //绑定数据 - @Override - public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { - AutoPilotMode mode = datas.get(position); - if (!TextUtils.isEmpty(mode.name)) - holder.path_name.setText(mode.name); - if (mode.speedLimit != 0.0) - holder.speed.setText(String.valueOf(mode.speedLimit)); - if (!TextUtils.isEmpty(mode.startName)) - holder.start_name.setText(mode.startName); - if (!TextUtils.isEmpty(mode.endName)) - holder.end_name.setText(mode.endName); - if (mode.startLatLon != null) { - if (mode.startLatLon.longitude != 0.0) - holder.start_lon.setText(String.valueOf(mode.startLatLon.longitude)); - if (mode.startLatLon.latitude != 0.0) - holder.start_lat.setText(String.valueOf(mode.startLatLon.latitude)); - } - if (mode.endLatLon != null) { - if (mode.endLatLon.longitude != 0.0) - holder.end_lon.setText(String.valueOf(mode.endLatLon.longitude)); - if (mode.endLatLon.latitude != 0.0) - holder.end_lat.setText(String.valueOf(mode.endLatLon.latitude)); - } - holder.setViaData(); - holder.del.setVisibility(isShowDel ? View.VISIBLE : View.GONE); - if (mode.isBus) { - holder.bus.setChecked(true); - } else { - holder.taxi.setChecked(true); - } - if (!TextUtils.isEmpty(mode.routeName)) { - holder.route_name.setText(mode.routeName); - } - if (mode.routeID != -1) - holder.route_id.setText(String.valueOf(mode.routeID)); - } - - //返回Item的数量 - @Override - public int getItemCount() { - return datas == null ? 0 : datas.size(); - } - - //继承RecyclerView.ViewHolder抽象类的自定义ViewHolder - class MyViewHolder extends RecyclerView.ViewHolder { - RecyclerView recyclerView; - EditText path_name; - EditText speed; - EditText start_name; - EditText end_name; - EditText start_lon; - EditText start_lat; - EditText end_lon; - EditText end_lat; - EditText route_id; - EditText route_name; - TextView num; - TextView del; - ImageView add; - ImageView minus; - ViaPositionAdapter adapter; - RadioGroup car_type; - RadioButton taxi; - RadioButton bus; - - MyViewHolder(View itemView) { - super(itemView); - route_id = itemView.findViewById(R.id.route_id); - route_name = itemView.findViewById(R.id.route_name); - car_type = itemView.findViewById(R.id.car_type); - taxi = itemView.findViewById(R.id.taxi); - bus = itemView.findViewById(R.id.bus); - recyclerView = itemView.findViewById(R.id.RecyclerView); - path_name = itemView.findViewById(R.id.path_name); - speed = itemView.findViewById(R.id.speed); - start_name = itemView.findViewById(R.id.start_name); - end_name = itemView.findViewById(R.id.end_name); - start_lon = itemView.findViewById(R.id.start_lon); - start_lat = itemView.findViewById(R.id.start_lat); - end_lon = itemView.findViewById(R.id.end_lon); - end_lat = itemView.findViewById(R.id.end_lat); - num = itemView.findViewById(R.id.num); - del = itemView.findViewById(R.id.del); - add = itemView.findViewById(R.id.add); - minus = itemView.findViewById(R.id.minus); - initRecyclerView(); - car_type.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(RadioGroup group, int checkedId) { - datas.get(getBindingAdapterPosition()).isBus = checkedId == R.id.bus; - } - }); - minus.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - minus(); - } - }); - add.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - add(); - } - }); - del.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - AutopilotConfigAdapter.this.minus(getBindingAdapterPosition()); - } - }); - path_name.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - datas.get(getBindingAdapterPosition()).name = s.toString().trim(); - } - }); - speed.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s)) { - try { - datas.get(getBindingAdapterPosition()).speedLimit = Double.parseDouble(s.toString().trim()); - } catch (Exception e) { - e.printStackTrace(); - speed.setText(""); - Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show(); - } - } else { - datas.get(getBindingAdapterPosition()).speedLimit = 0.0; - } - - } - }); - start_name.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - datas.get(getBindingAdapterPosition()).startName = s.toString().trim(); - } - }); - end_name.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - datas.get(getBindingAdapterPosition()).endName = s.toString().trim(); - } - }); - start_lon.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s)) { - try { - if (datas.get(getBindingAdapterPosition()).startLatLon == null) - datas.get(getBindingAdapterPosition()).startLatLon = new AutoPilotMode.Location(); - datas.get(getBindingAdapterPosition()).startLatLon.longitude = Double.parseDouble(s.toString().trim()); - } catch (Exception e) { - e.printStackTrace(); - start_lon.setText(""); - Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show(); - } - } else { - if (datas.get(getBindingAdapterPosition()).startLatLon != null) { - datas.get(getBindingAdapterPosition()).startLatLon.longitude = 0.0; - } - } - } - }); - start_lat.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s)) { - try { - if (datas.get(getBindingAdapterPosition()).startLatLon == null) - datas.get(getBindingAdapterPosition()).startLatLon = new AutoPilotMode.Location(); - datas.get(getBindingAdapterPosition()).startLatLon.latitude = Double.parseDouble(s.toString().trim()); - } catch (Exception e) { - e.printStackTrace(); - start_lat.setText(""); - Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show(); - } - } else { - if (datas.get(getBindingAdapterPosition()).startLatLon != null) - datas.get(getBindingAdapterPosition()).startLatLon.latitude = 0.0; - } - } - }); - end_lon.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s)) { - try { - if (datas.get(getBindingAdapterPosition()).endLatLon == null) - datas.get(getBindingAdapterPosition()).endLatLon = new AutoPilotMode.Location(); - datas.get(getBindingAdapterPosition()).endLatLon.longitude = Double.parseDouble(s.toString().trim()); - } catch (Exception e) { - e.printStackTrace(); - end_lon.setText(""); - Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show(); - } - } else { - if (datas.get(getBindingAdapterPosition()).endLatLon != null) - datas.get(getBindingAdapterPosition()).endLatLon.longitude = 0.0; - } - - } - }); - end_lat.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s)) { - try { - if (datas.get(getBindingAdapterPosition()).endLatLon == null) - datas.get(getBindingAdapterPosition()).endLatLon = new AutoPilotMode.Location(); - datas.get(getBindingAdapterPosition()).endLatLon.latitude = Double.parseDouble(s.toString().trim()); - } catch (Exception e) { - e.printStackTrace(); - end_lat.setText(""); - Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show(); - } - } else { - if (datas.get(getBindingAdapterPosition()).endLatLon != null) - datas.get(getBindingAdapterPosition()).endLatLon.latitude = 0.0; - } - - } - }); - - - route_name.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - datas.get(getBindingAdapterPosition()).routeName = s.toString().trim(); - - } - }); - - route_id.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s)) { - try { - datas.get(getBindingAdapterPosition()).routeID = Integer.parseInt(s.toString().trim()); - } catch (Exception e) { - e.printStackTrace(); - speed.setText(""); - Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show(); - } - } else { - datas.get(getBindingAdapterPosition()).routeID = -1; - } - - } - }); - } - - private void initRecyclerView() { - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext); - linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); - recyclerView.setLayoutManager(linearLayoutManager); - adapter = new ViaPositionAdapter(); - recyclerView.setAdapter(adapter); - - } - - private void minus() { - if (adapter.getItemCount() > 0) { - adapter.minus(); - num.setText(String.valueOf(adapter.getItemCount())); - } - } - - public void add() { - adapter.addHint(); - recyclerView.scrollToPosition(adapter.getItemCount() - 1); - num.setText(String.valueOf(adapter.getItemCount())); - } - - public void setViaData() { - if (adapter.getDatas() == null) { - List list = datas.get(getBindingAdapterPosition()).wayLatLons; - if (list == null) { - list = new ArrayList<>(); - datas.get(getBindingAdapterPosition()).wayLatLons = list; - } - adapter.setDatas(list); - } - } - } -} - diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ConfigAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ConfigAdapter.java deleted file mode 100644 index fa494393dc..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ConfigAdapter.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.base.BaseViewHolder; -import com.zhidao.adas.client.bean.Config; - -import java.util.List; - -/** - * @author song kenan - * @des - * @date 2021/8/13 - */ -public class ConfigAdapter extends BaseAdapter { - - - public ConfigAdapter() { - - } - - @Override - public void setData(List mDatas) { - super.setData(mDatas); - } - - @Override - protected void onBindDataToItem(ViewHolder viewHolder, Config data, int position) { - if (data == null) { - return; - } - viewHolder.name.setText(data.name); - viewHolder.value.setText(data.value); - if (data.color == -1) { - data.color = R.color.colorSlateGray; - } - viewHolder.value.setTextColor(mContext.getResources().getColor(data.color)); - } - - @Override - protected View getItemViewResource(ViewGroup viewGroup) { - return LayoutInflater.from(mContext).inflate(R.layout.item_config, viewGroup, false); - } - - @Override - protected ViewHolder getViewHolder(View view) { - return new ViewHolder(view, this); - } - - class ViewHolder extends BaseViewHolder { - TextView name; - TextView value; - - public ViewHolder(View itemView, ConfigAdapter adapter) { - super(itemView, adapter); - name = itemView.findViewById(R.id.name); - value = itemView.findViewById(R.id.value); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ConnectStatusAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ConnectStatusAdapter.java deleted file mode 100644 index 95a4bffe09..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ConnectStatusAdapter.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.annotation.SuppressLint; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.EditText; -import android.widget.TextView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.base.BaseViewHolder; -import com.zhidao.adas.client.bean.IPCConnectState; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - - -/** - * 连接状态 - */ -public class ConnectStatusAdapter extends BaseAdapter { - private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS ", Locale.getDefault()); - private static final String POS = "%03d. "; - - public void refreshView() { -// notifyItemChanged(mDatas.size()-1,0); - notifyItemRangeChanged(0, getItemCount()); - } - - @Override - public long getItemId(int position) { - return position; - } - - @SuppressLint("SetTextI18n") - @Override - protected void onBindDataToItem(ViewHolder viewHolder, IPCConnectState data, int position) { - viewHolder.id.setText(String.format(Locale.getDefault(), POS, getItemCount() - position)); - String str = "" + sdf.format(new Date(data.time)) + "\n
" + data.status; - viewHolder.editText.setText(Html.fromHtml(str)); - viewHolder.editText.setTextColor(mContext.getResources().getColor(data.color)); - } - - @Override - protected View getItemViewResource(ViewGroup viewGroup) { - return LayoutInflater.from(mContext).inflate(R.layout.item_status, viewGroup, false); - } - - - @Override - protected ViewHolder getViewHolder(View view) { - return new ViewHolder(view, this); - } - - - class ViewHolder extends BaseViewHolder { - EditText editText; - TextView id; - - public ViewHolder(View itemView, ConnectStatusAdapter adapter) { - super(itemView, adapter); - editText = itemView.findViewById(R.id.log); - id = itemView.findViewById(R.id.id); - } - } -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/DataShowAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/DataShowAdapter.java deleted file mode 100644 index c233f55b31..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/DataShowAdapter.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.annotation.SuppressLint; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.EditText; -import android.widget.TextView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.base.BaseViewHolder; -import com.zhidao.adas.client.bean.DataShow; - - -//log所用 -public class DataShowAdapter extends BaseAdapter { - - - public void refreshView() { -// notifyItemChanged(mDatas.size()-1,0); - notifyItemRangeChanged(0, getItemCount()); - } - - @Override - public long getItemId(int position) { - return position; - } - - @SuppressLint("SetTextI18n") - @Override - protected void onBindDataToItem(ViewHolder viewHolder, DataShow data, int position) { - viewHolder.id.setText(data.position + ". "); - viewHolder.editText.setText(data.data); - - } - - @Override - protected View getItemViewResource(ViewGroup viewGroup) { - return LayoutInflater.from(mContext).inflate(R.layout.item_log_info, viewGroup, false); - } - - - @Override - protected ViewHolder getViewHolder(View view) { - return new ViewHolder(view, this); - } - - - class ViewHolder extends BaseViewHolder { - EditText editText; - TextView id; - - public ViewHolder(View itemView, DataShowAdapter adapter) { - super(itemView, adapter); - editText = itemView.findViewById(R.id.log); - id = itemView.findViewById(R.id.id); - } - } -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/InfoTitleAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/InfoTitleAdapter.java deleted file mode 100644 index d620f99132..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/InfoTitleAdapter.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.base.BaseViewHolder; - -import java.util.List; - -/** - * @author song kenan - * @des - * @date 2021/8/13 - */ -public class InfoTitleAdapter extends BaseAdapter { - private int selectedPosition = 0;//当前选中的下标 - private boolean isFragment = false; - - public void setSelectedPosition(int position) { - if (position != selectedPosition) { - notifyItemChanged(position); - notifyItemChanged(selectedPosition); - selectedPosition = position; - } - } - - public InfoTitleAdapter(List data, boolean isFragment) { - super(data); - this.isFragment = isFragment; - } - - @Override - protected void onBindDataToItem(ViewHolder viewHolder, String data, int position) { - if (data == null) { - return; - } - if (isFragment) { - viewHolder.itemView.setSelected(selectedPosition == position); - } - viewHolder.title.setText(data); - - } - - @Override - protected View getItemViewResource(ViewGroup viewGroup) { - View view; - if (isFragment) { - view = LayoutInflater.from(mContext).inflate(R.layout.item_info, viewGroup, false); - } else { - view = LayoutInflater.from(mContext).inflate(R.layout.item_info1, viewGroup, false); - } -// if (!isFragment) { -// int h = viewGroup.getHeight() - DensityUtil.dip2px(mContext, 16); -// ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); -// if (layoutParams != null) { -// layoutParams.width = DensityUtil.dip2px(mContext, 150); -//// layoutParams.height = DensityUtil.dip2px(mContext, 50); -// layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; -//// layoutParams.height = h / 2; -// } -// } - - return view; - } - - @Override - protected ViewHolder getViewHolder(View view) { - return new ViewHolder(view, this); - } - - class ViewHolder extends BaseViewHolder { - TextView title; - - public ViewHolder(View itemView, InfoTitleAdapter adapter) { - super(itemView, adapter); - title = itemView.findViewById(R.id.tv_info_title); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/InterfaceAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/InterfaceAdapter.java deleted file mode 100644 index 7e4fa74544..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/InterfaceAdapter.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.bean.InterfaceModel; -import com.zhidao.support.adas.high.common.MessageType; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - - -public class InterfaceAdapter extends RecyclerView.Adapter { - - private List mDatas; - private boolean isEnabled = true;//是否可操作 - private boolean oldIsEnabled = isEnabled; - private int isCheckAll = 2;//0:全选 1:全不选 2:任意选 - private int checkNum; - private boolean oldIsCheckAll = false; - - private OnInterfaceAdapterListener listener; - - public void setListener(OnInterfaceAdapterListener listener) { - this.listener = listener; - } - - public interface OnInterfaceAdapterListener { - void onCheckAll(boolean isCheckAll); - - void onCheckNum(int checkNum); - } - - public int getCheckNum() { - return checkNum; - } - - //获取已选中的 - public Set getCheckedModel() { - Set messageTypes = new HashSet<>(); - if (mDatas != null) { - for (InterfaceModel model : mDatas) { - if (model.isSelected()) { - messageTypes.add(model.getMessageType()); - } - } - } - return messageTypes; - } - - private void init() { - isEnabled = true; - oldIsEnabled = true; - isCheckAll = 2; - checkNum = 0; - } - - public void setData(List mDatas, int checkNum) { - init(); - this.mDatas = mDatas; - if (mDatas != null && !mDatas.isEmpty()) { - this.checkNum = checkNum; - updateCheckAllStatus(true); - } - } - - //全选 全不选 - public void setCheckAll(boolean checkAll) { - isCheckAll = checkAll ? 0 : 1; - checkNum = checkAll ? getItemCount() : 0; - notifyDataSetChanged(); - updateCheckNumStatusCall(); - updateCheckAllStatus(false); - } - - public void setEnabled(boolean isEnabled) { - if (oldIsEnabled != isEnabled) { - oldIsEnabled = isEnabled; - this.isEnabled = isEnabled; - notifyDataSetChanged(); - } - - } - - //创建ViewHolder - @NonNull - @Override - public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - //实例化得到Item布局文件的View对象 - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_interface, parent, false); - //返回MyViewHolder的对象 - return new MyViewHolder(v); - } - - //绑定数据 - @Override - public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { - holder.index.setEnabled(isEnabled); - holder.name.setEnabled(isEnabled); - holder.itemView.setEnabled(isEnabled); - holder.itemCheck.setEnabled(isEnabled); - InterfaceModel model = mDatas.get(position); - holder.name.setText(model.getMessageType().desc); - holder.index.setText((position + 1) + "."); - if (isCheckAll == 0) { - model.setSelected(true); - } else if (isCheckAll == 1) { - model.setSelected(false); - } - holder.itemCheck.setChecked(model.isSelected()); - - } - - //返回Item的数量 - @Override - public int getItemCount() { - return mDatas == null ? 0 : mDatas.size(); - } - - /*** - * 获取制定 位置的Data - * @param position 下标 - * @return Data - */ - public InterfaceModel getItem(int position) { - return mDatas == null ? null : mDatas.get(position); - } - - //继承RecyclerView.ViewHolder抽象类的自定义ViewHolder - class MyViewHolder extends RecyclerView.ViewHolder { - TextView name; - TextView index; - CheckBox itemCheck; - - MyViewHolder(View itemView) { - super(itemView); - index = itemView.findViewById(R.id.index); - name = itemView.findViewById(R.id.name); - name.setSelected(true); - itemCheck = itemView.findViewById(R.id.item_check); - init(); - - } - - private void init() { - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - InterfaceModel model = getItem(getBindingAdapterPosition()); - model.setSelected(!model.isSelected()); - updateCheckNum(model.isSelected()); - itemCheck.setChecked(model.isSelected()); - } - }); - itemCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (buttonView.isPressed()) { - updateCheckNum(isChecked); - InterfaceModel model = getItem(getBindingAdapterPosition()); - model.setSelected(isChecked); - } - } - }); - } - } - - //更新选中个数 - private void updateCheckNum(boolean isChecked) { - if (isChecked) { - checkNum++; - } else { - checkNum--; - } - updateCheckNumStatusCall(); - updateCheckAllStatus(true); - } - - private void updateCheckNumStatusCall() { - if (listener != null) - listener.onCheckNum(checkNum); - } - - //更新全选状态 - private void updateCheckAllStatus(boolean isNotice) { - if (getItemCount() == checkNum) { - isCheckAll = 0; - updateCheckAllStatusCall(isNotice, true); - } else if (0 == checkNum) { - isCheckAll = 1; - updateCheckAllStatusCall(isNotice, false); - } else { - isCheckAll = 2; - updateCheckAllStatusCall(isNotice, false); - } - - } - - private void updateCheckAllStatusCall(boolean isNotice, boolean isCheckAll) { - if (isNotice) - if (oldIsCheckAll != isCheckAll) { - oldIsCheckAll = isCheckAll; - if (listener != null) - listener.onCheckAll(isCheckAll); - } - - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/LineAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/LineAdapter.java deleted file mode 100644 index 7fc43b96d4..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/LineAdapter.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.base.BaseViewHolder; -import com.zhidao.adas.client.bean.AutoPilotMode; - -import java.util.List; - -/** - * @author song kenan - * @des 线路 - * @date 2021/8/13 - */ -public class LineAdapter extends BaseAdapter { - - - public LineAdapter(List data) { - super(data); - } - - @Override - public void setData(List mDatas) { - super.setData(mDatas); - } - - @Override - protected void onBindDataToItem(ViewHolder viewHolder, AutoPilotMode data, int position) { - viewHolder.title.setText("(" + (data.isBus ? "Bus" : "Taxi") + ")" + data.name + " " + data.startName + "->" + data.endName); - } - - @Override - protected View getItemViewResource(ViewGroup viewGroup) { - return LayoutInflater.from(mContext).inflate(R.layout.item_info, viewGroup, false); - } - - @Override - protected ViewHolder getViewHolder(View view) { - return new ViewHolder(view, this); - } - - class ViewHolder extends BaseViewHolder { - TextView title; - - public ViewHolder(View itemView, LineAdapter adapter) { - super(itemView, adapter); -// ViewGroup.LayoutParams layoutParams = itemView.getLayoutParams(); -// if (layoutParams != null) { -// layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; -// -// } - title = itemView.findViewById(R.id.tv_info_title); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/SendCmdAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/SendCmdAdapter.java deleted file mode 100644 index 2454e6f754..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/SendCmdAdapter.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.bean.SendCmdOption; - -import java.util.List; - -/** - * @author song kenan - * @des - * @date 2021/8/13 - */ -public class SendCmdAdapter extends RecyclerView.Adapter { - private final List> data; - private final OnItemClickListener listener; - - public interface OnItemClickListener { - void onItemClick(SendCmdOption data); - } - - public SendCmdAdapter(List> data, OnItemClickListener listener) { - this.data = data; - this.listener = listener; - } - - @NonNull - @Override - public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_info, parent, false); - return new ViewHolder(view); - } - - @Override - public void onBindViewHolder(@NonNull ViewHolder holder, int position) { - SendCmdOption option = data.get(position); - holder.title.setText(option.name); - } - - @Override - public int getItemCount() { - return data == null ? 0 : data.size(); - } - - - class ViewHolder extends RecyclerView.ViewHolder { - TextView title; - - public ViewHolder(View itemView) { - super(itemView); - title = itemView.findViewById(R.id.tv_info_title); - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - listener.onItemClick(data.get(getBindingAdapterPosition())); - } - }); - - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/SpecialVehicleAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/SpecialVehicleAdapter.java deleted file mode 100644 index a7eedf2245..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/SpecialVehicleAdapter.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.base.BaseViewHolder; -import com.zhidao.adas.client.bean.SpecialVehicleBean; - -import java.util.List; - -/** - * @author song kenan - * @des 线路 - * @date 2021/8/13 - */ -public class SpecialVehicleAdapter extends BaseAdapter { - - - public SpecialVehicleAdapter(List data) { - super(data); - } - - @Override - public void setData(List mDatas) { - super.setData(mDatas); - } - - @Override - protected void onBindDataToItem(ViewHolder viewHolder, SpecialVehicleBean data, int position) { - viewHolder.title.setText(data.name); - } - - @Override - protected View getItemViewResource(ViewGroup viewGroup) { - return LayoutInflater.from(mContext).inflate(R.layout.item_info, viewGroup, false); - } - - @Override - protected ViewHolder getViewHolder(View view) { - return new ViewHolder(view, this); - } - - class ViewHolder extends BaseViewHolder { - TextView title; - - public ViewHolder(View itemView, SpecialVehicleAdapter adapter) { - super(itemView, adapter); -// ViewGroup.LayoutParams layoutParams = itemView.getLayoutParams(); -// if (layoutParams != null) { -// layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; -// -// } - title = itemView.findViewById(R.id.tv_info_title); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ViaPositionAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ViaPositionAdapter.java deleted file mode 100644 index 10fea989e6..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/adapter/ViaPositionAdapter.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.zhidao.adas.client.adapter; - -import android.content.Context; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.EditText; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.bean.AutoPilotMode; - -import java.util.List; - - -public class ViaPositionAdapter extends RecyclerView.Adapter { - - private List datas; - private Context mContext; - - public void setDatas(List datas) { - this.datas = datas; - if (!this.datas.isEmpty()) { - for (int i = 0; i < this.datas.size(); i++) { - this.datas.get(i).name = "点" + (i + 1); - } - } - } - - public List getDatas() { - return datas; - } - - public void addHint() { - datas.add(new AutoPilotMode.Location("点" + (datas.size() + 1))); - notifyItemInserted(datas.size() - 1); - } - - public void minus() { - datas.remove(datas.size() - 1); - notifyItemRemoved(datas.size() - 1); - notifyItemRangeChanged(datas.size() - 1, getItemCount()); - } - - @Override - public int getItemViewType(int position) { - return position; - } - - //创建ViewHolder - @NonNull - @Override - public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - //实例化得到Item布局文件的View对象 - mContext = parent.getContext(); - View v = LayoutInflater.from(mContext).inflate(R.layout.item_via, parent, false); - //返回MyViewHolder的对象 - return new MyViewHolder(v); - } - - //绑定数据 - @Override - public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { - AutoPilotMode.Location location = datas.get(position); - holder.title.setText(location.name); - if (location.longitude != 0.0) - holder.lon.setText(String.valueOf(location.longitude)); - if (location.latitude != 0.0) - holder.lat.setText(String.valueOf(location.latitude)); -// holder.input.setFocusable(true); -// holder.input.setFocusableInTouchMode(true); -// holder.input.requestFocus(); - - } - - //返回Item的数量 - @Override - public int getItemCount() { - return datas == null ? 0 : datas.size(); - } - - - //继承RecyclerView.ViewHolder抽象类的自定义ViewHolder - class MyViewHolder extends RecyclerView.ViewHolder { - TextView title; - EditText lon; - EditText lat; - - MyViewHolder(View itemView) { - super(itemView); - title = itemView.findViewById(R.id.title); - lon = itemView.findViewById(R.id.lon); - lat = itemView.findViewById(R.id.lat); - lon.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s)) { - try { - datas.get(getBindingAdapterPosition()).longitude = Double.parseDouble(s.toString().trim()); - } catch (Exception e) { - e.printStackTrace(); - lon.setText(""); - Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show(); - } - } else { - datas.get(getBindingAdapterPosition()).longitude = 0.0; - } - } - }); - lat.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s)) { - try { - datas.get(getBindingAdapterPosition()).latitude = Double.parseDouble(s.toString().trim()); - } catch (Exception e) { - e.printStackTrace(); - lat.setText(""); - Toast.makeText(mContext, "输入不合法", Toast.LENGTH_SHORT).show(); - } - } else { - datas.get(getBindingAdapterPosition()).latitude = 0.0; - } - } - }); - } - } - -} - diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseActivity.java deleted file mode 100644 index b89e5feca2..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseActivity.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.zhidao.adas.client.base; - -import android.os.Handler; -import android.os.Message; -import android.view.Gravity; -import android.widget.Toast; - -import androidx.appcompat.app.AppCompatActivity; - -import com.zhidao.adas.client.ui.MainActivity; - -import java.lang.ref.WeakReference; - -public abstract class BaseActivity extends AppCompatActivity { - private BaseHandler mBaseHandler; - private Toast toast; - - protected void showToastCenter(String msg) { - showToastCenter(msg, Toast.LENGTH_SHORT); - } - - protected void showToastCenter(String msg, int duration) { - runOnUiThread(new Runnable() { - @Override - public void run() { - if (toast != null) { - toast.cancel(); - toast = null; - } - toast = Toast.makeText(BaseActivity.this, "", duration); //如果有居中显示需求 - toast.setGravity(Gravity.CENTER, 0, 0); - toast.setText(msg); - toast.show(); - } - }); - } - @Override - protected void onDestroy() { - super.onDestroy(); - if (getHandler() != null) - getHandler().removeCallbacksAndMessages(null); - } - - /** - * 初始化一个Handler,如果需要使用Handler,先调用此方法, - * 然后可以使用postRunnable(Runnable runnable), - * sendMessage在handleMessage(Message msg)中接收msg - */ - public void initHandler() { - mBaseHandler = new BaseHandler(this); - } - - /** - * 返回Handler,在此之前确定已经调用initHandler() - * - * @return Handler - */ - public Handler getHandler() { - return mBaseHandler; - } - - - /** - * 同Handler 的 handleMessage, - * getHandler.sendMessage,发送的Message在此接收 - * 在此之前确定已经调用initHandler() - * - * @param msg - */ - protected void handleMessage(Message msg) { - - } - - /** - * 同Handler的postRunnable - * 在此之前确定已经调用initHandler() - */ - protected void postRunnable(Runnable runnable) { - postRunnableDelayed(runnable, 0); - } - - /** - * 同Handler的postRunnableDelayed - * 在此之前确定已经调用initHandler() - */ - protected void postRunnableDelayed(Runnable runnable, long delayMillis) { - if (mBaseHandler == null) initHandler(); - mBaseHandler.postDelayed(runnable, delayMillis); - } - - - protected static class BaseHandler extends Handler { - private final WeakReference mObjects; - - public BaseHandler(BaseActivity mPresenter) { - mObjects = new WeakReference(mPresenter); - } - - @Override - public void handleMessage(Message msg) { - BaseActivity mPresenter = mObjects.get(); - if (mPresenter != null) - mPresenter.handleMessage(msg); - } - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseAdapter.java deleted file mode 100644 index ca5e419fc4..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseAdapter.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.zhidao.adas.client.base; - - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.List; - - -/** - * RecycleView Adapter - * Created by renfeicui on 2018/10/12. - */ -public abstract class BaseAdapter extends RecyclerView.Adapter { - protected String TAG = this.getClass().getSimpleName(); - protected List mDatas; - protected Context mContext; - private OnItemClickListener mItemClick; - - public interface OnItemClickListener { - void onItemClick(int position, D data); - } - - - public BaseAdapter() { - } - - public BaseAdapter(List mDatas) { - this.mDatas = mDatas; - } - - public BaseAdapter(OnItemClickListener listener) { - mItemClick = listener; - } - - public BaseAdapter(List mDatas, OnItemClickListener listener) { - this.mDatas = mDatas; - mItemClick = listener; - } - - public void setData(List mDatas) { - this.mDatas = mDatas; - if (!mDatas.isEmpty()) - notifyDataSetChanged(); - } - - public List getData() { - return mDatas; - } - - public void setOnItemClickListener(OnItemClickListener listener) { - mItemClick = listener; - } - - /*** - * 获取制定 位置的Data - * @param position 下标 - * @return Data - */ - public D getItem(int position) { - return mDatas == null ? null : mDatas.get(position); - } - - @Override - public int getItemCount() { - return mDatas == null ? 0 : mDatas.size(); - } - - @Override - public void onBindViewHolder(@NonNull VH viewHolder, int position) { - D bean = getItem(position); - onBindDataToItem(viewHolder, bean, position); - } - - - @NonNull - @Override - public VH onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { - mContext = viewGroup.getContext(); - return getViewHolder(getItemViewResource(viewGroup)); - } - - /*** - * 同onBindViewHolder() - * @param viewHolder viewHolder - * @param data 数据 - * @param position 下标 - */ - protected abstract void onBindDataToItem(VH viewHolder, D data, int position); - - /*** - * 获取Item布局 - * @return id - */ - protected abstract View getItemViewResource(ViewGroup viewGroup); - - /** - * 获取ViewHolder - * - * @param view - * @return - */ - protected abstract VH getViewHolder(View view); - - public void onClick(BaseViewHolder viewHolder) { - if (mItemClick != null) { - mItemClick.onItemClick(viewHolder.getAdapterPosition(), getItem(viewHolder.getAdapterPosition())); - } - } - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseFragment.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseFragment.java deleted file mode 100644 index 9dcf870c14..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseFragment.java +++ /dev/null @@ -1,253 +0,0 @@ -package com.zhidao.adas.client.base; - -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.util.Pair; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import com.zhidao.adas.client.DataDistribution; -import com.zhidao.adas.client.OnAdasClientListener; -import com.zhidao.adas.client.bean.PerceptionTrafficLight; -import com.zhidao.adas.client.utils.Constants; - -import java.lang.ref.WeakReference; - -import perception.TrafficLightOuterClass; - -/** - * @author song kenan - * @des - * @date 2021/8/16 - */ -public abstract class BaseFragment extends Fragment { - protected final String TAG = this.getClass().getSimpleName(); - private static final int WHAT_REFRESH = 0x01; - private static final int WHAT_UPDATE_CONNECT_STATUS = 0x02; - protected static final int WHAT_REFRESH_TRAFFIC_LIGHTS = 0x02; - protected String title; - - public BaseFragment() { - } - - public BaseFragment(String title) { - this.title = title; - } - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - initHandler(); - } - - @Override - public void onResume() { - super.onResume(); - if (!isHidden()) - DataDistribution.getInstance().registerAdasClientListener(new Pair<>(title, adasClientListener)); - } - - @Override - public void onPause() { - super.onPause(); - DataDistribution.getInstance().unregisterAdasClientListener(new Pair<>(title, adasClientListener)); - } - - @Override - public void onHiddenChanged(boolean hidden) { - super.onHiddenChanged(hidden); - if (!hidden) { - DataDistribution.getInstance().registerAdasClientListener(new Pair<>(title, adasClientListener)); - } - } - - public void updateConnectStatus(int ipcConnectionStatus) { - if (getHandler() != null) { - Message msg = Message.obtain(); - msg.what = WHAT_UPDATE_CONNECT_STATUS; - msg.arg1 = ipcConnectionStatus; - getHandler().sendMessage(msg); - } - } - - protected void onConnectionIPCStatus(int ipcConnectionStatus) { - - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (getHandler() != null) - getHandler().removeCallbacksAndMessages(null); - } - - protected abstract void onRefreshView(); - - - private final OnAdasClientListener adasClientListener = new OnAdasClientListener() { - @Override - public void onRefresh() { - getHandler().sendEmptyMessage(WHAT_REFRESH); - } - - @Override - public void onPerceptionTrafficLight(PerceptionTrafficLight trafficLights) { - super.onPerceptionTrafficLight(trafficLights); - if (Constants.TITLE.RECEIVE_PERCEPTION_TRAFFIC_LIGHT.equals(title)) { - TrafficLightOuterClass.TrafficLights bean = trafficLights.bean; - TrafficLightOuterClass.TrafficLight light = null; - StringBuilder builder = new StringBuilder(); - if (bean.hasStraight()) { - light = bean.getStraight(); - builder.append("当前:").append("直行灯"); - } else if (bean.hasLeft()) { - light = bean.getLeft(); - builder.append("当前:").append("左转灯"); - } else if (bean.hasRight()) { - light = bean.getRight(); - builder.append("当前:").append("右转灯"); - } else if (bean.hasUTurn()) { - light = bean.getUTurn(); - builder.append("当前:").append("掉头灯"); - } - Message msg = Message.obtain(); - msg.what = WHAT_REFRESH_TRAFFIC_LIGHTS; - if (light != null) { - builder.append(" 灯态:").append(getLightState(light.getState())); - builder.append(" 车道类型:").append(getLightType(light.getType())); - float d = light.getDuration(); - builder.append(" 读秒:").append(d < 0 ? "未知" : d); - msg.obj = builder.toString(); - } - getHandler().sendMessage(msg); - } - } - }; - - /** - * 获取车道 - * - * @param type - * @return - */ - protected String getLightType(TrafficLightOuterClass.LightType type) { - String str = null; - if (type == TrafficLightOuterClass.LightType.TYPE_VEHICLE) { - str = "机动车道"; - } else if (type == TrafficLightOuterClass.LightType.TYPE_BICYLE) { - str = "自行车道"; - } else if (type == TrafficLightOuterClass.LightType.TYPE_PEDSTRIAN) { - str = "行人道"; - } else if (type == TrafficLightOuterClass.LightType.TYPE_LANE) { - str = "车道"; - } else {//TrafficLightOuterClass.LightState.TYPE_DEFAULT - str = "未知"; - } - - return str; - } - - /** - * 获取灯态 - * - * @param state - * @return - */ - protected String getLightState(TrafficLightOuterClass.LightState state) { - String light = null; - if (state == TrafficLightOuterClass.LightState.STATE_RED) { - light = "红"; - } else if (state == TrafficLightOuterClass.LightState.STATE_YELLOW) { - light = "黄"; - } else if (state == TrafficLightOuterClass.LightState.STATE_GREEN) { - light = "绿"; - } else if (state == TrafficLightOuterClass.LightState.STATE_FLASH) { - light = "闪"; - } else {//TrafficLightOuterClass.LightState.STATE_OFF - light = "没"; - } - - return light; - } - - - private BaseHandler mBaseHandler; - - - /** - * 初始化一个Handler,如果需要使用Handler,先调用此方法, - * 然后可以使用postRunnable(Runnable runnable), - * sendMessage在handleMessage(Message msg)中接收msg - */ - public void initHandler() { - mBaseHandler = new BaseHandler(this); - } - - /** - * 返回Handler,在此之前确定已经调用initHandler() - * - * @return Handler - */ - public Handler getHandler() { - return mBaseHandler; - } - - - /** - * 同Handler 的 handleMessage, - * getHandler.sendMessage,发送的Message在此接收 - * 在此之前确定已经调用initHandler() - * - * @param msg - */ - protected void handleMessage(Message msg) { - switch (msg.what) { - case WHAT_REFRESH: - if (isVisible()) - onRefreshView(); - break; - - case WHAT_UPDATE_CONNECT_STATUS: - if (isVisible()) - onConnectionIPCStatus(msg.arg1); - break; - } - } - - /** - * 同Handler的postRunnable - * 在此之前确定已经调用initHandler() - */ - protected void postRunnable(Runnable runnable) { - postRunnableDelayed(runnable, 0); - } - - /** - * 同Handler的postRunnableDelayed - * 在此之前确定已经调用initHandler() - */ - protected void postRunnableDelayed(Runnable runnable, long delayMillis) { - if (mBaseHandler == null) initHandler(); - mBaseHandler.postDelayed(runnable, delayMillis); - } - - - protected static class BaseHandler extends Handler { - private final WeakReference mObjects; - - public BaseHandler(BaseFragment mPresenter) { - mObjects = new WeakReference(mPresenter); - } - - @Override - public void handleMessage(Message msg) { - BaseFragment mPresenter = mObjects.get(); - if (mPresenter != null) - mPresenter.handleMessage(msg); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseViewHolder.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseViewHolder.java deleted file mode 100644 index 3c62985326..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/base/BaseViewHolder.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.zhidao.adas.client.base; - -import android.view.View; - -import androidx.recyclerview.widget.RecyclerView; - - -public abstract class BaseViewHolder extends RecyclerView.ViewHolder { - private T adapter; - public View itemView; - - public BaseViewHolder(View itemView, final T adapter) { - super(itemView); - this.itemView = itemView; - this.adapter = adapter; - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - adapter.onClick(BaseViewHolder.this); - } - }); - - } - - - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AdasParamReceiveData.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AdasParamReceiveData.java deleted file mode 100644 index 6dd27670ae..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AdasParamReceiveData.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.GeneratedMessageV3; -import com.google.protobuf.TextFormat; -import com.zhidao.adas.client.R; -import com.zhidao.support.adas.high.bean.AdasParam; -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; - -public class AdasParamReceiveData extends BaseInfo { - public final GeneratedMessageV3 bean; - private final AdasParam adasParam; - - public AdasParamReceiveData(MessagePad.Header header, GeneratedMessageV3 bean, AdasParam adasParam, SimpleDateFormat sdf) { - super("接收", bean.getSerializedSize(), header, sdf); - this.bean = bean; - this.adasParam = adasParam; - } - - public String toString(int resId) { - String srt = ""; - if (resId == R.id.rb_analysis) { - srt = TextFormat.printer().shortDebugString(bean); - } else if (resId == R.id.rb_original) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()); - } else if (resId == R.id.rb_all) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()) + '\n' + TextFormat.printer().shortDebugString(bean); - } - return super.toString(resId) + srt + "\n原始数据翻译:\n" + adasParam.toString(); - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AutoPilotMode.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AutoPilotMode.java deleted file mode 100644 index 6fd27578bc..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AutoPilotMode.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.zhidao.adas.client.bean; - -import android.text.TextUtils; - -import java.util.ArrayList; -import java.util.List; - -import mogo.telematics.pad.MessagePad; - -public class AutoPilotMode { - public String name; - public String startName; - public Location startLatLon; - public String endName; - public Location endLatLon; - public double speedLimit; - public List wayLatLons; - public int routeID = -1;//道路ID - public String routeName;//道路名称 - public boolean isBus = false;//true:bus false:taxi - - public List getWayLatLons() { - if (wayLatLons == null || wayLatLons.isEmpty()) return null; - List list = new ArrayList<>(); - for (int i = 0; i < wayLatLons.size(); i++) { - MessagePad.Location.Builder builder = MessagePad.Location.newBuilder(); - builder.setLatitude(wayLatLons.get(i).latitude).setLongitude(wayLatLons.get(i).longitude); - list.add(builder.build()); - } - return list; - } - - public static class Location { - public String name; - public double longitude; - public double latitude; - - public Location() { - } - - public Location(String name) { - this.name = name; - } - - public boolean isNull() { - return longitude == 0.0 || latitude == 0.0; - } - } - - public boolean isNull() { - if (wayLatLons != null && !wayLatLons.isEmpty()) { - for (int i = 0; i < wayLatLons.size(); i++) { - if (wayLatLons.get(i).isNull()) { - return true; - } - } - } - if (isBus) { - return TextUtils.isEmpty(name) || TextUtils.isEmpty(startName) || TextUtils.isEmpty(endName) || - startLatLon == null || startLatLon.isNull() || endLatLon == null || endLatLon.isNull() || - speedLimit == 0.0 || routeID == -1 || TextUtils.isEmpty(routeName); - } else - return TextUtils.isEmpty(name) || TextUtils.isEmpty(startName) || TextUtils.isEmpty(endName) || - startLatLon == null || startLatLon.isNull() || endLatLon == null || endLatLon.isNull() || - speedLimit == 0.0; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/BaseInfo.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/BaseInfo.java deleted file mode 100644 index cc7d25f0cc..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/BaseInfo.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.zhidao.adas.client.bean; - - -import java.text.SimpleDateFormat; -import java.util.Date; - -import mogo.telematics.pad.MessagePad; - -public abstract class BaseInfo { - public final String action; - public final long nowTime; - public final MessagePad.Header header; - public final int len; - public final int payloadLen; - private SimpleDateFormat sdf; - - public BaseInfo(String action, int len, MessagePad.Header header, SimpleDateFormat sdf) { - this.action = action; - this.payloadLen = len; - nowTime = System.currentTimeMillis(); - int headerSize = 0; - if (header != null) { - headerSize = header.getSerializedSize(); - } - this.len = 8 + headerSize + len; - this.header = header; - this.sdf = sdf; - } - - public BaseInfo(String action, int len) { - this.action = action; - nowTime = System.currentTimeMillis(); - this.len = len; - this.payloadLen = len; - this.header = null; - } - - public String toString(int resId) { - String str = "原始数据长度:" + len + "\tPayload数据长度:" + payloadLen + '\n'; - if (header != null) { - str += "Header:[" + "MessageID:" + header.getMsgID() + - " MessageType:" + header.getMsgType() + " 发送时间:" + sdf.format(new Date((long) (header.getTimestamp() * 1000))) - + " 数据源时间:" + sdf.format(new Date((long) (header.getSourceTimestamp() * 1000))) + "]\n"; - } - return str; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/Config.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/Config.java deleted file mode 100644 index 960c40a65c..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/Config.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.zhidao.adas.client.bean; - -import java.util.Objects; - -public class Config { - public final String name; - public String value; - public int color = -1; - - public Config(String name, String value) { - this.name = name; - this.value = value; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Config config = (Config) o; - return Objects.equals(name, config.name); - } - - public void cover(Config config) { - this.value = config.value; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/DataShow.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/DataShow.java deleted file mode 100644 index 02558e1ac4..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/DataShow.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.zhidao.adas.client.bean; - -public class DataShow { - public final long position; - public final String data; - - public DataShow(long position, String data) { - this.position = position; - this.data = data; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ErrorData.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ErrorData.java deleted file mode 100644 index 65b6dfd81c..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ErrorData.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.zhidao.support.adas.high.common.ByteUtil; -import com.zhidao.support.adas.high.common.ProtocolStatus; - -public class ErrorData extends BaseInfo { - private final ProtocolStatus status; - private final byte[] bytes; - - public ErrorData(ProtocolStatus status, byte[] bytes) { - super("接收", bytes.length); - this.status = status; - this.bytes = bytes; - } - - @Override - public String toString(int resId) { - return super.toString(resId) + status + "\n原始数据:" + ByteUtil.byteArrToHex(bytes); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/IPCConnectState.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/IPCConnectState.java deleted file mode 100644 index cc1ca7c09b..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/IPCConnectState.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zhidao.adas.client.bean; - -import androidx.annotation.ColorRes; - -public class IPCConnectState { - public final long time; - public final String status; - @ColorRes - public final int color; - - public IPCConnectState(String status, @ColorRes int color) { - this.status = status; - this.color = color; - time = System.currentTimeMillis(); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/InterfaceModel.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/InterfaceModel.java deleted file mode 100644 index e63d64b336..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/InterfaceModel.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.zhidao.support.adas.high.common.MessageType; - - -public class InterfaceModel { - private boolean isSelected = false;//是否选择 - private final MessageType messageType; - - public InterfaceModel(MessageType messageType) { - this.messageType = messageType; - } - - public boolean isSelected() { - return isSelected; - } - - public void setSelected(boolean selected) { - isSelected = selected; - } - - public MessageType getMessageType() { - return messageType; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - InterfaceModel that = (InterfaceModel) o; - return messageType == that.messageType; - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/MySSHResult.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/MySSHResult.java deleted file mode 100644 index 0273e1713d..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/MySSHResult.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.zhidao.adas.client.bean; - -public class MySSHResult extends BaseInfo { - public final String info; - - public MySSHResult(String info, int len) { - super("接收", len); - this.info = info; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuMap.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuMap.java deleted file mode 100644 index 3ffef3e648..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuMap.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.TextFormat; -import com.mogo.support.obu.ObuScene; -import com.zhidao.adas.client.R; -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; - -public class ObuMap extends BaseInfo { - public final ObuScene.MapMatchData bean; - - - public ObuMap(MessagePad.Header header, ObuScene.MapMatchData bean, SimpleDateFormat sdf) { - super("接收", bean.getSerializedSize(), header, sdf); - this.bean = bean; - } - - @Override - public String toString(int resId) { - String srt = ""; - if (resId == R.id.rb_analysis) { - srt = TextFormat.printer().escapingNonAscii(false).printToString(bean); - } else if (resId == R.id.rb_original) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()); - } else if (resId == R.id.rb_all) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()) + '\n' + TextFormat.printer().escapingNonAscii(false).printToString(bean); - } - return super.toString(resId) + srt; - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsi.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsi.java deleted file mode 100644 index 5cd598119d..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsi.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.TextFormat; -import com.mogo.support.obu.ObuScene; -import com.zhidao.adas.client.R; -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; - -public class ObuRsi extends BaseInfo { - public final ObuScene.RsiWarningData bean; - - - public ObuRsi(MessagePad.Header header, ObuScene.RsiWarningData bean, SimpleDateFormat sdf) { - super("接收", bean.getSerializedSize(), header, sdf); - this.bean = bean; - } - - @Override - public String toString(int resId) { - String srt = ""; - if (resId == R.id.rb_analysis) { - srt = TextFormat.printer().escapingNonAscii(false).printToString(bean); - } else if (resId == R.id.rb_original) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()); - } else if (resId == R.id.rb_all) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()) + '\n' + TextFormat.printer().escapingNonAscii(false).printToString(bean); - } - return super.toString(resId) + srt; - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsm.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsm.java deleted file mode 100644 index c319657ff5..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsm.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.TextFormat; -import com.mogo.support.obu.ObuScene; -import com.zhidao.adas.client.R; -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; - -public class ObuRsm extends BaseInfo { - public final ObuScene.RsmWarningData bean; - - - public ObuRsm(MessagePad.Header header, ObuScene.RsmWarningData bean, SimpleDateFormat sdf) { - super("接收", bean.getSerializedSize(), header, sdf); - this.bean = bean; - } - - @Override - public String toString(int resId) { - String srt = ""; - if (resId == R.id.rb_analysis) { - srt = TextFormat.printer().escapingNonAscii(false).printToString(bean); - } else if (resId == R.id.rb_original) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()); - } else if (resId == R.id.rb_all) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()) + '\n' + TextFormat.printer().escapingNonAscii(false).printToString(bean); - } - return super.toString(resId) + srt; - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuSpat.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuSpat.java deleted file mode 100644 index fc98ae2edc..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuSpat.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.TextFormat; -import com.mogo.support.obu.ObuScene; -import com.zhidao.adas.client.R; -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; - -public class ObuSpat extends BaseInfo { - public final ObuScene.SpatWarningData bean; - - - public ObuSpat(MessagePad.Header header, ObuScene.SpatWarningData bean, SimpleDateFormat sdf) { - super("接收", bean.getSerializedSize(), header, sdf); - this.bean = bean; - } - - @Override - public String toString(int resId) { - String srt = ""; - if (resId == R.id.rb_analysis) { - srt = TextFormat.printer().escapingNonAscii(false).printToString(bean); - } else if (resId == R.id.rb_original) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()); - } else if (resId == R.id.rb_all) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()) + '\n' + TextFormat.printer().escapingNonAscii(false).printToString(bean); - } - return super.toString(resId) + srt; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuWarningData.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuWarningData.java deleted file mode 100644 index 7ea1bca9af..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuWarningData.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.TextFormat; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; -import mogo.v2x.ObuWarningEvent; - -public class ObuWarningData extends BaseInfo { - public final ObuWarningEvent.ObuWarningData bean; - - public ObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData bean, SimpleDateFormat sdf) { - super("接收", bean.getSerializedSize(), header, sdf); - this.bean = bean; - } - - - @Override - public String toString() { - return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean); - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PerceptionTrafficLight.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PerceptionTrafficLight.java deleted file mode 100644 index a1eee4a875..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PerceptionTrafficLight.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.TextFormat; -import com.zhidao.adas.client.R; -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; -import perception.TrafficLightOuterClass; - -public class PerceptionTrafficLight extends BaseInfo { - public final TrafficLightOuterClass.TrafficLights bean; - - public PerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights bean, SimpleDateFormat sdf) { - super("接收", bean.getSerializedSize(), header, sdf); - this.bean = bean; - } - - - @Override - public String toString(int resId) { - String srt = ""; - if (resId == R.id.rb_analysis) { - srt = TextFormat.printer().escapingNonAscii(false).printToString(bean); - } else if (resId == R.id.rb_original) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()); - } else if (resId == R.id.rb_all) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()) + '\n' + TextFormat.printer().escapingNonAscii(false).printToString(bean); - } - return super.toString(resId) + srt; - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ReceiveBytesData.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ReceiveBytesData.java deleted file mode 100644 index e4eef87a36..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ReceiveBytesData.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; - -public class ReceiveBytesData extends BaseInfo { - public final byte[] data; - - public ReceiveBytesData(MessagePad.Header header, byte[] data, SimpleDateFormat sdf) { - super("接收", data.length, header, sdf); - this.data = data; - } - - - @Override - public String toString(int resId) { - return super.toString(resId) + "Payload原始数据:" + ByteUtil.byteArrToHex(data); - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ReceiveData.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ReceiveData.java deleted file mode 100644 index a0dd4b4a64..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ReceiveData.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.GeneratedMessageV3; -import com.google.protobuf.TextFormat; -import com.zhidao.adas.client.R; -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; - -public class ReceiveData extends BaseInfo { - public final GeneratedMessageV3 bean; - - public ReceiveData(MessagePad.Header header, GeneratedMessageV3 bean, SimpleDateFormat sdf) { - super("接收", bean.getSerializedSize(), header, sdf); - this.bean = bean; - } - - - public String toString(int resId) { - String srt = ""; - if (resId == R.id.rb_analysis) { - srt = TextFormat.printer().escapingNonAscii(false).printToString(bean); - } else if (resId == R.id.rb_original) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()); - } else if (resId == R.id.rb_all) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()) + '\n' + TextFormat.printer().escapingNonAscii(false).printToString(bean); - } - return super.toString(resId) + srt; - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SendCmd.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SendCmd.java deleted file mode 100644 index c428773481..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SendCmd.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.zhidao.adas.client.utils.Constants; - -import java.util.ArrayList; -import java.util.List; - -public class SendCmd { - - public final String name; - public final List> value; - - public SendCmd(String name, List> value) { - this.name = name; - this.value = value; - } - - //Planning命令 - public static SendCmd getSendToPlanning() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("靠边停车", SendCmdOption.TAG.PULL_OVER, 1)); - cmds.add(new SendCmdOption("重新起步", SendCmdOption.TAG.PULL_OVER, 2)); - cmds.add(new SendCmdOption("紧急停车", SendCmdOption.TAG.PULL_OVER, 3)); - cmds.add(new SendCmdOption("左变道", SendCmdOption.TAG.LANE_CHANGE, 1)); - cmds.add(new SendCmdOption("右变道", SendCmdOption.TAG.LANE_CHANGE, 2)); - cmds.add(new SendCmdOption("超车", SendCmdOption.TAG.LANE_CHANGE, 3)); - cmds.add(new SendCmdOption("恢复自动决策", SendCmdOption.TAG.LANE_CHANGE, 4)); - return new SendCmd(Constants.TITLE.SEND_PLANNING_CMD, cmds); - } - - //演示模式开关 - public static SendCmd getSendDemoMode() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("打开", SendCmdOption.TAG.DEMO_MODE, 1)); - cmds.add(new SendCmdOption("关闭", SendCmdOption.TAG.DEMO_MODE, 0)); - return new SendCmd(Constants.TITLE.SEND_SET_DEMO_MODE_REQ, cmds); - } - - //盲区开关 - public static SendCmd getSendBlindArea() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("开启", SendCmdOption.TAG.BLIND_AREA, true)); - cmds.add(new SendCmdOption("关闭", SendCmdOption.TAG.BLIND_AREA, false)); - return new SendCmd(Constants.TITLE.SEND_BLIND_AREA, cmds); - } - - //V2N数据到PnC - public static SendCmd getSendV2nToPnc() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("发送", SendCmdOption.TAG.V2N_TO_PNC, true)); - cmds.add(new SendCmdOption("关闭", SendCmdOption.TAG.V2N_TO_PNC, false)); - return new SendCmd(Constants.TITLE.SEND_V2N_TO_PNC, cmds); - } - - //雨天模式开关 - public static SendCmd getSendRainMode() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("打开", SendCmdOption.TAG.RAIN_MODE, 1)); - cmds.add(new SendCmdOption("关闭", SendCmdOption.TAG.RAIN_MODE, 0)); - return new SendCmd(Constants.TITLE.SEND_SET_RAIN_MODE_REQ, cmds); - } - - //绕障类功能开关 - public static SendCmd getSendDetouring() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("开", SendCmdOption.TAG.DETOURING, 1)); - cmds.add(new SendCmdOption("关", SendCmdOption.TAG.DETOURING, 0)); - return new SendCmd(Constants.TITLE.SEND_DETOURING, cmds); - } - - //AEB - public static SendCmd getSendAeb() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("开", SendCmdOption.TAG.AEB, 1)); - cmds.add(new SendCmdOption("关", SendCmdOption.TAG.AEB, 0)); - return new SendCmd(Constants.TITLE.SEND_AEB, cmds); - } - - //限制绕障开关 - public static SendCmd getSendLaneChangeRestrainVaild() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("限制绕障", SendCmdOption.TAG.LANE_CHANGE_RESTRAIN_VALID, 1)); - cmds.add(new SendCmdOption("正常绕障", SendCmdOption.TAG.LANE_CHANGE_RESTRAIN_VALID, 0)); - return new SendCmd(Constants.TITLE.SEND_LANE_CHANGE_RESTRAIN_VALID, cmds); - } - - //停车让行线前避让等待开关 - public static SendCmd getSendStopYieldVaild() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("停车让行线前需要避让等待", SendCmdOption.TAG.STOP_YIELD_VALID, 1)); - cmds.add(new SendCmdOption("停车让行线前无需避让等待", SendCmdOption.TAG.STOP_YIELD_VALID, 0)); - return new SendCmd(Constants.TITLE.SEND_STOP_YIELD_VALID, cmds); - } - - //地图限速功能开关 - public static SendCmd getSendHadmapSpeedLimitVaild() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("使用地图限速功能", SendCmdOption.TAG.HADMAP_SPEED_LIMIT_VALID, 1)); - cmds.add(new SendCmdOption("不使用地图限速功能", SendCmdOption.TAG.HADMAP_SPEED_LIMIT_VALID, 0)); - return new SendCmd(Constants.TITLE.SEND_HADMAP_SPEED_LIMIT_VALID, cmds); - } - - //环岛模式开关 - public static SendCmd getSendRampThetaValid() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("环岛模式", SendCmdOption.TAG.RAMP_THETA_VALID, 1)); - cmds.add(new SendCmdOption("普通模式", SendCmdOption.TAG.RAMP_THETA_VALID, 0)); - return new SendCmd(Constants.TITLE.SEND_RAMP_THETA_VALID, cmds); - } - - //参数获取请求 - public static SendCmd getSendGetParamReq() { - List> cmds = new ArrayList<>(); - cmds.add(new SendCmdOption("获取全部", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.UNKNOWN, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.UNKNOWN)); - cmds.add(new SendCmdOption("绕障类功能开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.DETOURING, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.DETOURING)); - cmds.add(new SendCmdOption("变道绕障的目标障碍物速度阈值", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.DETOURING_SPEED, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.DETOURING_SPEED)); - cmds.add(new SendCmdOption("AEB开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.AEB, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.AEB)); - cmds.add(new SendCmdOption("限制绕障开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.LANE_CHANGE_RESTRAIN_VALID, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.LANE_CHANGE_RESTRAIN_VALID)); - cmds.add(new SendCmdOption("停车让行线前避让等待开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.STOP_YIELD_VALID, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.STOP_YIELD_VALID)); - cmds.add(new SendCmdOption("地图限速功能开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.HADMAP_SPEED_LIMIT_VALID, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.HADMAP_SPEED_LIMIT_VALID)); - cmds.add(new SendCmdOption("环岛模式开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.RAMP_THETA_VALID, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.RAMP_THETA_VALID)); - cmds.add(new SendCmdOption("弱网减速停车策略开关", com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.WEAK_NET_SLOW_DOWN, com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.WEAK_NET_SLOW_DOWN)); - return new SendCmd(Constants.TITLE.SEND_GET_PARAM_REQ, cmds); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SendCmdOption.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SendCmdOption.java deleted file mode 100644 index 7237785ef5..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SendCmdOption.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.zhidao.adas.client.bean; - -public class SendCmdOption { - public interface TAG { - int PULL_OVER = 0;//Planning指令 靠边停车 - int LANE_CHANGE = 1;//Planning指令 变道 - int DEMO_MODE = 2;//演示模式 - int BLIND_AREA = 3;//盲区数据开关 - int RAIN_MODE = 4;//雨天模式 - int DETOURING = 5;//绕障类功能 - int V2N_TO_PNC = 6;//V2N数据到PnC - int AEB = 7;//AEB开关 - int LANE_CHANGE_RESTRAIN_VALID = 8;//限制绕障开关 - int STOP_YIELD_VALID = 9;//停车让行线前避让等待开关 - int HADMAP_SPEED_LIMIT_VALID = 10;//地图限速功能开关 - int RAMP_THETA_VALID = 11;//环岛模式开关 - } - - public final String name; - public final int tag; - public final T value; - - public SendCmdOption(String name, int tag, T value) { - this.name = name; - this.tag = tag; - this.value = value; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleBean.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleBean.java deleted file mode 100644 index 6a9cf64512..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleBean.java +++ /dev/null @@ -1,347 +0,0 @@ -package com.zhidao.adas.client.bean; - -import android.content.Context; -import android.text.TextUtils; - -import androidx.annotation.NonNull; - -import com.google.protobuf.TextFormat; -import com.zhidao.adas.client.ui.special.SpecialVehicleFloatWindowManager; -import com.zhidao.adas.client.utils.PreferencesUtils; -import com.zhidao.support.adas.high.AdasManager; - -import java.util.ArrayList; -import java.util.List; - -import chassis.SpecialVehicleTaskCmdOuterClass; - -public class SpecialVehicleBean { - public interface TAG { - String FTQSC = "ftqsc";//福田清扫车 - String KWXB = "kwxb";//开沃小巴 - String JLM1 = "jlm1";//金旅M1 - } - - public interface SEND_TYPE { - int ONE = 0;//单次发送 - int MORE = 1;//多次发送 - int ALL = 2;//两种方式都支持 - } - - public final String name; - public final String simpleName;//简单名字 两个字 - public final List options; - public final String tag;//用于存储 - public int sendType = SEND_TYPE.ONE;//发送类型 - private SpecialVehicleFloatWindowManager manager; - - public static final int SCREEN_MARGIN = 20; - - private final String FLOAT_WINDOW_LOCATION_MIN_X; - private final String FLOAT_WINDOW_LOCATION_MIN_Y; - private final String FLOAT_WINDOW_LOCATION_MAX_X; - private final String FLOAT_WINDOW_LOCATION_MAX_Y; - - private SpecialVehicleBean(@NonNull String name, @NonNull String simpleName, String tag, List options) { - this.name = name; - this.simpleName = simpleName; - this.tag = tag; - this.options = options; - FLOAT_WINDOW_LOCATION_MIN_X = tag + "_float_window_location_min_x"; - FLOAT_WINDOW_LOCATION_MIN_Y = tag + "_float_window_location_min_y"; - FLOAT_WINDOW_LOCATION_MAX_X = tag + "_float_window_location_max_X"; - FLOAT_WINDOW_LOCATION_MAX_Y = tag + "_float_window_location_max_y"; - - } - - public void showFloat(Context context) { - if (manager == null) - manager = new SpecialVehicleFloatWindowManager(context, this); - manager.show(); - } - - public void dismissFloat() { - if (manager != null) { - manager.onBack(); - manager = null; - } - } - - /************************悬浮窗位置******************/ - - - public void setFloatWindowLocationMinX(Context context, int x) { - PreferencesUtils.putInt(context, FLOAT_WINDOW_LOCATION_MIN_X, x); - } - - public int getFloatWindowLocationMinX(Context context) { - return PreferencesUtils.getInt(context, FLOAT_WINDOW_LOCATION_MIN_X, SCREEN_MARGIN); - } - - public void setFloatWindowLocationMinY(Context context, int y) { - PreferencesUtils.putInt(context, FLOAT_WINDOW_LOCATION_MIN_Y, y); - } - - public int getFloatWindowLocationMinY(Context context) { - return PreferencesUtils.getInt(context, FLOAT_WINDOW_LOCATION_MIN_Y, SCREEN_MARGIN); - } - - - /************************悬浮窗位置******************/ - - public void setFloatWindowLocationMaxX(Context context, int x) { - PreferencesUtils.putInt(context, FLOAT_WINDOW_LOCATION_MAX_X, x); - } - - public int getFloatWindowLocationMaxX(Context context) { - return PreferencesUtils.getInt(context, FLOAT_WINDOW_LOCATION_MAX_X, SCREEN_MARGIN); - } - - public void setFloatWindowLocationMaxY(Context context, int y) { - PreferencesUtils.putInt(context, FLOAT_WINDOW_LOCATION_MAX_Y, y); - } - - public int getFloatWindowLocationMaxY(Context context) { - return PreferencesUtils.getInt(context, FLOAT_WINDOW_LOCATION_MAX_Y, SCREEN_MARGIN); - } - - /** - * 命令下发 - * - * @param index -1一次性发送所有命令 其他 单个命令发送 - * @return - */ - public String sendCmd(int index) { - String str = ""; - if (TextUtils.equals(this.tag, TAG.FTQSC)) { //福田清扫车 - SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.newBuilder(); - if (index < 0) { - for (index = 0; index < options.size(); index++) { - SpecialVehicleOption option = options.get(index); - if (option.moreCheckPos != -1) { - option.checkPos = option.moreCheckPos; - option.moreCheckPos = -1; - } - setFuTianCleanValue(builder, index, option.checkPos); - } - } else { - int checkPos = options.get(index).checkPos; - setFuTianCleanValue(builder, index, checkPos); - } - SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd fuTianCleanCmd = builder.build(); - SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd fuTianTaskCmd = SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd.newBuilder() - .setRoboSweeperFutianCleanCmd(fuTianCleanCmd).build(); - AdasManager.getInstance().sendRoboSweeperFuTianTaskCmd(fuTianTaskCmd); - str = TextFormat.printer().escapingNonAscii(false).shortDebugString(fuTianTaskCmd); - } else if (TextUtils.equals(this.tag, TAG.KWXB)) { //开沃小巴 - SpecialVehicleTaskCmdOuterClass.RoboVanSkywellTaskCmd vanSkywellTaskCmd = SpecialVehicleTaskCmdOuterClass.RoboVanSkywellTaskCmd.newBuilder() - .build(); - AdasManager.getInstance().sendRoboVanSkywellTaskCmd(vanSkywellTaskCmd); - } else if (TextUtils.equals(this.tag, TAG.JLM1)) { //金旅M1 - SpecialVehicleTaskCmdOuterClass.RoboBusJinlvM1Cmd.Builder builder = SpecialVehicleTaskCmdOuterClass.RoboBusJinlvM1Cmd.newBuilder(); - if (index < 0) { - for (index = 0; index < options.size(); index++) { - SpecialVehicleOption option = options.get(index); - if (option.moreCheckPos != -1) { - option.checkPos = option.moreCheckPos; - option.moreCheckPos = -1; - } - setJinlvM1Value(builder, index, option.checkPos); - } - } else { - int checkPos = options.get(index).checkPos; - setJinlvM1Value(builder, index, checkPos); - } - SpecialVehicleTaskCmdOuterClass.RoboBusJinlvM1Cmd roboBusJinlvM1Cmd = builder.build(); - AdasManager.getInstance().sendRoboBusJinlvM1TaskCmd(roboBusJinlvM1Cmd); - str = TextFormat.printer().escapingNonAscii(false).shortDebugString(roboBusJinlvM1Cmd); - } - return str; - } - - private void setJinlvM1Value(SpecialVehicleTaskCmdOuterClass.RoboBusJinlvM1Cmd.Builder builder, int index, int checkPos) { - switch (index) { - case 0: - builder.setAirConditionerCmd(checkPos); - break; - case 1: - builder.setAirConditionerModeCmd(checkPos); - break; - case 2: - builder.setAirConditionerWindSpeedCmd(checkPos); - break; - case 3: - if (checkPos == 1) { - checkPos = 16; - } else if (checkPos == 2) { - checkPos = 20; - } else if (checkPos == 3) { - checkPos = 26; - } - builder.setAirConditionerTemperatureCmd(checkPos); - break; - case 4: - builder.setHeaderCmd(checkPos); - break; - case 5: - builder.setHeaderWindSpeedCmd(checkPos); - break; - case 6: - builder.setMainLamp1Cmd(checkPos); - break; - case 7: - builder.setMainLamp2Cmd(checkPos); - break; - case 8: - builder.setSmallLampCmd(checkPos); - break; - case 9: - builder.setFrontDoorCmd(checkPos); - break; - } - } - - private void setFuTianCleanValue(SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianCleanCmd.Builder builder, int index, int checkPos) { - switch (index) { - case 0: - builder.setCleanOpenRequirement(checkPos); - break; - case 1: - builder.setCleanModeRequirement(checkPos); - break; - case 2: - builder.setCleanDirectionRequirement(checkPos); - break; - case 3: - builder.setCleanIntensityRequirement(checkPos); - break; - case 4: - builder.setDuskCloseRequirement(checkPos); - break; - case 5: - builder.setSuctionNozzlefleOpenRequirement(checkPos); - break; - case 6: - builder.setSprayGunOpenRequirement(checkPos); - break; - case 7: - builder.setSweepdiskSpeedRequirement(checkPos); - break; - } - } - - - public static List init() { - List list = new ArrayList<>(); - List optionsF = new ArrayList<>(); - int tag = 0; - String[] value = new String[3]; - value[0] = "0-No Req"; - value[1] = "1-Start"; - value[2] = "2-Stop"; - optionsF.add(new SpecialVehicleOption("清扫作业", tag++, value, 0)); - value = new String[6]; - value[0] = "0-No Req"; - value[1] = "1-Sweeping"; - value[2] = "2-Wash Sweeper"; - value[3] = "3-Pure Wash"; - value[4] = "4-Pure Draw"; - value[5] = "5-Close Clean"; - optionsF.add(new SpecialVehicleOption("清扫模式", tag++, value, 0)); - value = new String[5]; - value[0] = "0-No Req"; - value[1] = "1-Both"; - value[2] = "2-Left"; - value[3] = "3-Right"; - value[4] = "4-Close Side"; - optionsF.add(new SpecialVehicleOption("清扫方向", tag++, value, 0)); - value = new String[3]; - value[0] = "0-No Req"; - value[1] = "1-Stand"; - value[2] = "2-Strong"; - optionsF.add(new SpecialVehicleOption("作业强度", tag++, value, 0)); - value = new String[3]; - value[0] = "0-No Req"; - value[1] = "1-Close"; - value[2] = "2-Open"; - optionsF.add(new SpecialVehicleOption("降尘", tag++, value, 0)); - value = new String[3]; - value[0] = "0-No Req"; - value[1] = "1-Open"; - value[2] = "2-Close"; - optionsF.add(new SpecialVehicleOption("吸嘴挡板", tag++, value, 0)); - value = new String[3]; - value[0] = "0-No Req"; - value[1] = "1-Open"; - value[2] = "2-Close"; - optionsF.add(new SpecialVehicleOption("喷雾枪", tag++, value, 0)); - value = new String[3]; - value[0] = "0-No Req"; - value[1] = "1-Decelerate"; - value[2] = "2-Accelerate"; - optionsF.add(new SpecialVehicleOption("扫盘加速", tag, value, 0)); - SpecialVehicleBean beanF = new SpecialVehicleBean("福田清扫车", "福清", TAG.FTQSC, optionsF); - SpecialVehicleBean beanK = new SpecialVehicleBean("开沃小巴", "开巴", TAG.KWXB, null); - List optionsM1 = new ArrayList<>(); - tag = 0; - value = new String[3]; - value[0] = "0-DEFAULT"; - value[1] = "1-开启空调"; - value[2] = "2-关闭空调"; - optionsM1.add(new SpecialVehicleOption("空调", tag++, value, 0)); - value = new String[4]; - value[0] = "0-DEFAULT"; - value[1] = "1-自动模式"; - value[2] = "2-制冷模式"; - value[3] = "3-通风模式"; - optionsM1.add(new SpecialVehicleOption("空调模式", tag++, value, 0)); - value = new String[4]; - value[0] = "0-DEFAULT"; - value[1] = "1-1档"; - value[2] = "2-2档"; - value[3] = "3-3档"; - optionsM1.add(new SpecialVehicleOption("空调档位", tag++, value, 0)); - value = new String[4]; - value[0] = "0-DEFAULT"; - value[1] = "16-16度"; - value[2] = "20-20度"; - value[3] = "26-26度"; - optionsM1.add(new SpecialVehicleOption("空调温度", tag++, value, 0)); - value = new String[3]; - value[0] = "0-DEFAULT"; - value[1] = "1-开启暖风"; - value[2] = "2-关闭暖风"; - optionsM1.add(new SpecialVehicleOption("暖风机", tag++, value, 0)); - value = new String[3]; - value[0] = "0-DEFAULT"; - value[1] = "1-1档"; - value[2] = "2-2档"; - optionsM1.add(new SpecialVehicleOption("暖风机档位", tag++, value, 0)); - value = new String[3]; - value[0] = "0-DEFAULT"; - value[1] = "1-开启"; - value[2] = "2-关闭"; - optionsM1.add(new SpecialVehicleOption("顶灯1", tag++, value, 0)); - value = new String[3]; - value[0] = "0-DEFAULT"; - value[1] = "1-开启"; - value[2] = "2-关闭"; - optionsM1.add(new SpecialVehicleOption("顶灯2", tag++, value, 0)); - value = new String[3]; - value[0] = "0-DEFAULT"; - value[1] = "1-开启"; - value[2] = "2-关闭"; - optionsM1.add(new SpecialVehicleOption("氛围灯", tag++, value, 0)); - value = new String[3]; - value[0] = "0-DEFAULT"; - value[1] = "1-打开"; - value[2] = "2-关闭"; - optionsM1.add(new SpecialVehicleOption("车门", tag++, value, 0)); - SpecialVehicleBean beanM1 = new SpecialVehicleBean("金旅M1", "M1", TAG.JLM1, optionsM1); - list.add(beanF); - list.add(beanK); - list.add(beanM1); - return list; - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleOption.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleOption.java deleted file mode 100644 index 26f2ec883a..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleOption.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zhidao.adas.client.bean; - -public class SpecialVehicleOption { - public final String name; - public final int tag; - public final String[] value; - public int checkPos = 0;//选中的下标 - public int moreCheckPos = -1;//发送模式下多条模式时选中的下标 - - public SpecialVehicleOption(String name, int tag, String[] value, int checkPos) { - this.name = name; - this.tag = tag; - this.value = value; - this.checkPos = checkPos; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/UpdateDataEvent.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/UpdateDataEvent.java deleted file mode 100644 index 9bc49dac5f..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/UpdateDataEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.zhidao.adas.client.bean; - -public class UpdateDataEvent { -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/V2nGlobalPathEventsReceiveData.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/V2nGlobalPathEventsReceiveData.java deleted file mode 100644 index 115b4f7409..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/V2nGlobalPathEventsReceiveData.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.zhidao.adas.client.bean; - -import com.google.protobuf.TextFormat; -import com.zhidao.adas.client.R; -import com.zhidao.support.adas.high.common.ByteUtil; - -import java.text.SimpleDateFormat; - -import mogo.telematics.pad.MessagePad; -import mogo.v2x.MogoV2X; -import mogo.v2x.RoadOverviewEvents; - -public class V2nGlobalPathEventsReceiveData extends BaseInfo { - public final RoadOverviewEvents.RoadOverviewData roadOverview; - public final MogoV2X.RSI_PB construct; - public final MogoV2X.RSI_PB triangle; - public final MogoV2X.RSI_PB congestion; - public final MogoV2X.RSM_PB parkingViolation; - - public V2nGlobalPathEventsReceiveData(MessagePad.Header header, RoadOverviewEvents.RoadOverviewData roadOverview, MogoV2X.RSI_PB construct, MogoV2X.RSI_PB triangle, MogoV2X.RSI_PB congestion, MogoV2X.RSM_PB parkingViolation, SimpleDateFormat sdf) { - super("接收", roadOverview.getSerializedSize(), header, sdf); - this.roadOverview = roadOverview; - this.construct = construct; - this.triangle = triangle; - this.congestion = congestion; - this.parkingViolation = parkingViolation; - } - - - @Override - public String toString(int resId) { - StringBuilder builder = new StringBuilder(); - builder.append('\n').append("施工:"); - if (construct != null) { - builder.append(TextFormat.printer().escapingNonAscii(false).printToString(construct)); - } else { - builder.append("null"); - } - builder.append('\n').append("三角牌:"); - if (triangle != null) { - builder.append(TextFormat.printer().escapingNonAscii(false).printToString(triangle)); - } else { - builder.append("null"); - } - builder.append('\n').append("拥堵:"); - if (congestion != null) { - builder.append(TextFormat.printer().escapingNonAscii(false).printToString(congestion)); - } else { - builder.append("null"); - } - builder.append('\n').append("违停:"); - if (parkingViolation != null) { - builder.append(TextFormat.printer().escapingNonAscii(false).printToString(parkingViolation)); - } else { - builder.append("null"); - } - String srt = ""; - if (resId == R.id.rb_analysis) { - srt = builder.toString(); - } else if (resId == R.id.rb_original) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(roadOverview.toByteArray()); - } else if (resId == R.id.rb_all) { - srt = "Payload原始数据:" + ByteUtil.byteArrToHex(roadOverview.toByteArray()) + builder.toString(); - } - return super.toString(resId) + srt; - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/log/ConnectStatusSave.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/log/ConnectStatusSave.java deleted file mode 100644 index 03c4632db9..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/log/ConnectStatusSave.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.zhidao.adas.client.log; - -import android.os.Environment; -import android.text.TextUtils; - -import com.zhidao.adas.client.utils.Constants; -import com.zhidao.support.adas.high.common.ThreadPoolManager; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.concurrent.Future; -import java.util.concurrent.LinkedBlockingQueue; - -/** - * 与服务器交互日志管理任务 - */ -public class ConnectStatusSave { - private static final String TAG = ConnectStatusSave.class.getSimpleName(); - private static final String LOG_FILE_NAME = "ConnectStatus-%s.log";//文件名称 - private volatile static ConnectStatusSave INSTANCE; - private static final long MAX_CAPACITY = 20 * 1024 * 1024L;//单文件最大存储容量 kb - private final LinkedBlockingQueue queue; - private BufferedWriter buff = null; - private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS", Locale.getDefault()); - private File file; - private volatile long capacity = MAX_CAPACITY; - private Future future; - - private ConnectStatusSave() { - queue = new LinkedBlockingQueue<>(); - } - - public static ConnectStatusSave getInstance() { - if (INSTANCE == null) { - synchronized (ConnectStatusSave.class) { - if (INSTANCE == null) { - INSTANCE = new ConnectStatusSave(); - } - } - } - return INSTANCE; - } - - - public boolean isSdcardUse() { - boolean bl = false; - if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { - bl = true; - } - return bl; - } - - private synchronized void getFile() throws IOException { - if (isSdcardUse()) { - String time = sdf.format(new Date()); - String childPath = time.split("_")[0] + File.separator; - file = new File(Constants.ROOT_PATH + childPath + String.format(LOG_FILE_NAME, time)); - if (!file.exists()) { - if (!file.getParentFile().exists()) { - file.getParentFile().mkdirs(); - } - file.createNewFile(); - } - FileWriter fw = new FileWriter(file, true); - buff = new BufferedWriter(fw); - } - } - - - public void saveLog(String info) { - if (isStart()) { - queue.add(info); - } - } - - public boolean isStart() { - return future != null; - } - - public void start() { - if (future == null) { - future = ThreadPoolManager.getsInstance().submit(new WriteThread()); - } - } - - public void stop() { - if (future != null) { - Runnable runnable = new Runnable() { - @Override - public void run() { - queue.clear(); - if (!future.isCancelled()) { - future.cancel(true); - } - future = null; - closeBufferedWriter(); - } - }; - ThreadPoolManager.getsInstance().execute(runnable); - } - } - - private void closeBufferedWriter() { - if (buff != null) { - try { - buff.flush(); - buff.close(); - } catch (IOException e) { - e.printStackTrace(); - } - buff = null; - } - - } - - private class WriteThread implements Runnable { - - @Override - public void run() { - synchronized (this) { - while (!Thread.currentThread().isInterrupted()) { - try { - long size = 0; - if (file != null) { - size = file.length(); - } - if (size > capacity || file == null || !file.exists() || buff == null) { - closeBufferedWriter(); - getFile(); - } - String data = queue.take(); - if (buff != null && !TextUtils.isEmpty(data)) { - buff.write(data); - buff.newLine(); - buff.flush(); - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } - } - } - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/log/LogSave.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/log/LogSave.java deleted file mode 100644 index 0e9fd80b99..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/log/LogSave.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.zhidao.adas.client.log; - -import android.os.Environment; -import android.text.TextUtils; - -import com.zhidao.adas.client.utils.Constants; -import com.zhidao.support.adas.high.common.ThreadPoolManager; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.concurrent.Future; -import java.util.concurrent.LinkedBlockingQueue; - -/** - * 与服务器交互日志管理任务 - */ -public class LogSave { - private static final String TAG = LogSave.class.getSimpleName(); - private static final String LOG_FILE_NAME = "%s.log";//文件名称 - private volatile static LogSave INSTANCE; - private static final long MAX_CAPACITY = 20 * 1024 * 1024L;//单文件最大存储容量 kb - private final LinkedBlockingQueue queue; - private BufferedWriter buff = null; - private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS", Locale.getDefault()); - private File file; - private volatile long capacity = MAX_CAPACITY; - private Future future; - - private LogSave() { - queue = new LinkedBlockingQueue<>(); - } - - public static LogSave getInstance() { - if (INSTANCE == null) { - synchronized (LogSave.class) { - if (INSTANCE == null) { - INSTANCE = new LogSave(); - } - } - } - return INSTANCE; - } - - - public boolean isSdcardUse() { - boolean bl = false; - if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { - bl = true; - } - return bl; - } - - private synchronized void getFile() throws IOException { - if (isSdcardUse()) { - String time = sdf.format(new Date()); - String childPath = time.split("_")[0] + File.separator; - file = new File(Constants.ROOT_PATH + childPath + String.format(LOG_FILE_NAME, time)); - if (!file.exists()) { - if (!file.getParentFile().exists()) { - file.getParentFile().mkdirs(); - } - file.createNewFile(); - } - FileWriter fw = new FileWriter(file, true); - buff = new BufferedWriter(fw); - } - } - - - public void saveLog(String info) { - if (isStart()) { - queue.add(info); - } - } - - public boolean isStart() { - return future != null; - } - - public void start() { - if (future == null) { - future = ThreadPoolManager.getsInstance().submit(new WriteThread()); - } - } - - public void stop() { - if (future != null) { - Runnable runnable = new Runnable() { - @Override - public void run() { - queue.clear(); - if (!future.isCancelled()) { - future.cancel(true); - } - future = null; - closeBufferedWriter(); - } - }; - ThreadPoolManager.getsInstance().execute(runnable); - } - } - - private void closeBufferedWriter() { - if (buff != null) { - try { - buff.flush(); - buff.close(); - } catch (IOException e) { - e.printStackTrace(); - } - buff = null; - } - - } - - private class WriteThread implements Runnable { - - @Override - public void run() { - synchronized (this) { - while (!Thread.currentThread().isInterrupted()) { - try { - long size = 0; - if (file != null) { - size = file.length(); - } - if (size > capacity || file == null || !file.exists() || buff == null) { - closeBufferedWriter(); - getFile(); - } - String data = queue.take(); - if (buff != null && !TextUtils.isEmpty(data)) { - buff.write(data); - buff.newLine(); - buff.flush(); - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } - } - } - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/BackgrounderPermission.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/BackgrounderPermission.java deleted file mode 100644 index 274a017cea..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/BackgrounderPermission.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.zhidao.adas.client.other.permission; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.Uri; -import android.os.Build; -import android.os.PowerManager; -import android.provider.Settings; -import android.util.Log; - -import androidx.annotation.RequiresApi; - - - -/** - * 长时间后台运行权限检查 - */ -@RequiresApi(api = Build.VERSION_CODES.N) -public class BackgrounderPermission { - private static volatile BackgrounderPermission INSTANCE; - private OnAdasPermissionListener listener; - - private BackgrounderPermission() { - } - - public static BackgrounderPermission getInstance() { - if (INSTANCE == null) { - synchronized (BackgrounderPermission.class) { - if (INSTANCE == null) { - INSTANCE = new BackgrounderPermission(); - } - } - } - return INSTANCE; - } - - public void setListener(OnAdasPermissionListener listener) { - this.listener = listener; - } - - public void showPermissionLongBackgroundRunningDialog(Context context) { - Intent intent = new Intent(context, PermissionLongBackgroundRunningDialog.class); - context.startActivity(intent); - - } - - void onBackgrounderPermission(boolean isBackgrounderPermission) { - if (listener != null) { - listener.onBackgrounderPermission(isBackgrounderPermission); - } - } - - - /** - * 获取当前是否开启电池优化 - * - * @param context 上下文 - * @return 否在设备的电源白名单上 true 表示未优化 - */ - boolean isIgnoringBatteryOptimizations(Context context) { - boolean isIgnoring = false; - PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); - if (powerManager != null) { - isIgnoring = powerManager.isIgnoringBatteryOptimizations(context.getPackageName()); - } - return isIgnoring; - } - - /** - * 申请 关闭电池优化权限 - * - * @param context - */ - - void requestIgnoreBatteryOptimizations(Activity context) { - Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); - intent.setData(Uri.parse("package:" + context.getPackageName())); - context.startActivityForResult(intent, PermissionLongBackgroundRunningDialog.REQUEST_CODE_BATTERY_OPTIMIZATIONS); - } - - /** - * 是否忽略计费网络限制 - * 后台运行时网络限制 - * - * @param context - * @return - */ - - private boolean isIgnoringMeteredNetworkRestrictions(Context context) { - ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - // 检查设备是否在计费网络 -// if (connMgr.isActiveNetworkMetered()) { - // Checks user’s Data Saver settings. - switch (connMgr.getRestrictBackgroundStatus()) { - case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED: - // 用户已为此应用启用流量节省程序。应用应努力限制前台流量消耗,并妥善处理后台流量消耗限制。 - Log.i("Permission", "用户已为此应用启用流量节省程序。应用应努力限制前台流量消耗,并妥善处理后台流量消耗限制。"); - return false; - case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED: - // 用户已启用流量节省程序,但应用在白名单中。应用应努力限制前台和后台流量消耗。 - Log.i("Permission", "用户已启用流量节省程序,但应用在白名单中。应用应努力限制前台和后台流量消耗。"); - return false; - case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED: - // 流量节省程序已停用。 - Log.i("Permission", "流量节省程序已停用。"); - return true; - } -// } else { -// // 设备不在计费网络,为所欲为 -// Log.i("Permission","设备不在计费网络,为所欲为"); -// return true; -// } - Log.i("dddd", "其他"); - return false; - } - - /** - * 除非应用的核心功能受到不利影响,否则 Google Play 政策禁止应用请求直接豁免 Android 6.0+ 中的电源管理功能(低电耗模式和应用待机模式) - */ - private static void requestAddDataSaverWhite(Context context) { -// ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); -// if (connMgr != null && connMgr.getRestrictBackgroundStatus() == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED) { - Intent intent = new Intent(Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS); - intent.setData(Uri.parse("package:" + context.getPackageName())); - context.startActivity(intent); -// } - } - - /** - * 是否允许长时间后台运行 - * 目前测试得出:电池优化会影响后台运行 - * - * @param context 上下文 - * @return - */ - public boolean isPermissionLongBackgroundRunning(Context context) { -// return isIgnoringBatteryOptimizations(context) && isIgnoringMeteredNetworkRestrictions(context); - return isIgnoringBatteryOptimizations(context); - } - - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/OnAdasPermissionListener.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/OnAdasPermissionListener.java deleted file mode 100644 index 7063b848b1..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/OnAdasPermissionListener.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.zhidao.adas.client.other.permission; - -public interface OnAdasPermissionListener { - /** - * 是否允许后台运行 - * 目前只检查了是否关闭电池优化 - * @param isAllow 是否允许后台运行 - */ - void onBackgrounderPermission(boolean isAllow); -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/PermissionLongBackgroundRunningDialog.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/PermissionLongBackgroundRunningDialog.java deleted file mode 100644 index 0feeb3f54e..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/permission/PermissionLongBackgroundRunningDialog.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.zhidao.adas.client.other.permission; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.text.Html; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; -import androidx.appcompat.app.AppCompatActivity; - -import com.zhidao.adas.client.R; - - -/** - * 数据用量及电池优化 权限申请 - * 高版本Android系统会针对熄屏、休眠或后台 对电池WiFi等进行优化,长时间网络可能会断开连接 - */ -@RequiresApi(api = Build.VERSION_CODES.N) -public class PermissionLongBackgroundRunningDialog extends AppCompatActivity { - public static final int REQUEST_CODE_BATTERY_OPTIMIZATIONS = 0x01; - private TextView hint_battery; - private Button btn_close_battery_optimizations; - private BackgrounderPermission listener; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_adas_permission_long_background_running); - initView(); - setBatteryHint(); -// //设置弹出窗口与屏幕对齐 -// Window win = this.getWindow(); -// int density = (int) (getResources().getDisplayMetrics().density + 0.5f); -////设置内边距,这里设置为10dp -// win.getDecorView().setPadding(10 * density, 10 * density, 10 * density, 10 * density); -// WindowManager.LayoutParams lp = win.getAttributes(); -////设置窗口宽度 -// lp.width = WindowManager.LayoutParams.MATCH_PARENT; -////设置窗口高度 -// lp.height = WindowManager.LayoutParams.WRAP_CONTENT; -////设置Dialog位置 -// lp.gravity = Gravity.TOP; -// win.setAttributes(lp); - } - - private void initView() { - hint_battery = findViewById(R.id.hint_battery); - btn_close_battery_optimizations = findViewById(R.id.btn_close_battery_optimizations); - btn_close_battery_optimizations.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - BackgrounderPermission.getInstance().requestIgnoreBatteryOptimizations(PermissionLongBackgroundRunningDialog.this); - } - }); - } - - - private boolean setBatteryHint() { - boolean isIgnoringBatteryOptimizations = BackgrounderPermission.getInstance().isIgnoringBatteryOptimizations(this); - btn_close_battery_optimizations.setVisibility(isIgnoringBatteryOptimizations ? View.INVISIBLE : View.VISIBLE); - String str = "电池优化:" + (isIgnoringBatteryOptimizations ? "不优化" : "优化"); - hint_battery.setText(Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY)); - return isIgnoringBatteryOptimizations; - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == REQUEST_CODE_BATTERY_OPTIMIZATIONS) { - BackgrounderPermission.getInstance().onBackgrounderPermission(setBatteryHint()); - } - } - } - - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/PlaceholderFragment.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/PlaceholderFragment.java deleted file mode 100644 index c5e428a442..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/PlaceholderFragment.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.zhidao.adas.client.other.router; - -import android.content.Context; -import android.content.SharedPreferences; -import android.graphics.Bitmap; -import android.os.Bundle; -import android.text.TextUtils; -import android.util.Log; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.CookieManager; -import android.webkit.JsResult; -import android.webkit.WebChromeClient; -import android.webkit.WebSettings; -import android.webkit.WebView; -import android.webkit.WebViewClient; -import android.widget.ProgressBar; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.Fragment; - -import com.zhidao.adas.client.R; - - -/** - * A placeholder fragment containing a simple view. - */ -public class PlaceholderFragment extends Fragment { - private static final String TAG = PlaceholderFragment.class.getSimpleName(); - private static final String ROUTER_URL = "router_url"; - private static final String ROUTER_COOKIE = "router_cookie"; - private String url; - private ProgressBar progressBar; - private WebView webView; - private CookieManager cookieManager; - - private SharedPreferences sharedPreferences; - - public static PlaceholderFragment newInstance(String url) { - PlaceholderFragment fragment = new PlaceholderFragment(); - Bundle bundle = new Bundle(); - bundle.putString(ROUTER_URL, url); - fragment.setArguments(bundle); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - url = getArguments().getString(ROUTER_URL); - } - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_router, container, false); - webView = view.findViewById(R.id.web_view); - progressBar = view.findViewById(R.id.progressbar);//进度条 - if (getActivity() != null) - sharedPreferences = getActivity().getSharedPreferences("adas_config", Context.MODE_PRIVATE); - cookieManager = CookieManager.getInstance(); - cookieManager.setAcceptCookie(true); - initWebView(); - return view; - } - - public void onRefresh() { - webView.reload(); - } - - private void initWebView() { - String cokkie = null; - if (sharedPreferences != null) - cokkie = sharedPreferences.getString(ROUTER_COOKIE, null); - if (cokkie != null && cokkie.length() > 0 && cokkie.contains(url)) { - int index = cokkie.indexOf("##"); - cookieManager.setCookie(this.url, cokkie.substring(index)); - } - webView.loadUrl(url);//加载url - webView.addJavascriptInterface(this, "android");//添加js监听 这样html就能调用客户端 - webView.setWebChromeClient(webChromeClient); - webView.setWebViewClient(webViewClient); - WebSettings webSettings = webView.getSettings(); - webSettings.setJavaScriptEnabled(true);//允许使用js - - /** - * LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据 - * LOAD_DEFAULT: (默认)根据cache-control决定是否从网络上取数据。 - * LOAD_NO_CACHE: 不使用缓存,只从网络获取数据. - * LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。 - */ - webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存,只从网络获取数据. - //支持屏幕缩放 - webSettings.setSupportZoom(true); - webSettings.setBuiltInZoomControls(true); - //不显示webview缩放按钮 - webSettings.setDisplayZoomControls(false); -// webSettings.setUseWideViewPort(true);//自适应屏幕 - webSettings.setLoadWithOverviewMode(true); - webSettings.setAllowFileAccess(true); - webSettings.setAppCacheEnabled(true); - webSettings.setDomStorageEnabled(true); - webSettings.setDatabaseEnabled(true); - - } - - //WebViewClient主要帮助WebView处理各种通知、请求事件 - private final WebViewClient webViewClient = new WebViewClient() { - @Override - public void onPageFinished(WebView view, String url) {//页面加载完成 - progressBar.setVisibility(View.GONE); - String oldCookie = cookieManager.getCookie(url); - if (!TextUtils.isEmpty(oldCookie)) { - String cokkie = null; - if (sharedPreferences != null) - cokkie = sharedPreferences.getString(ROUTER_COOKIE, null); - if (!TextUtils.equals(cokkie, oldCookie)) { - sharedPreferences.edit().putString(url + "##" + ROUTER_COOKIE, oldCookie).apply(); - } - } - } - - @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) {//页面开始加载 - progressBar.setVisibility(View.VISIBLE); - } - - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { - //返回true 拦截 - return super.shouldOverrideUrlLoading(view, url); - } - - }; - - //WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等 - private final WebChromeClient webChromeClient = new WebChromeClient() { - //不支持js的alert弹窗,需要自己监听然后通过dialog弹窗 - @Override - public boolean onJsAlert(WebView webView, String url, String message, JsResult result) { - AlertDialog.Builder localBuilder = new AlertDialog.Builder(webView.getContext()); - localBuilder.setMessage(message).setPositiveButton("确定", null); - localBuilder.setCancelable(false); - localBuilder.create().show(); - - //注意: - //必须要这一句代码:result.confirm()表示: - //处理结果为确定状态同时唤醒WebCore线程 - //否则不能继续点击按钮 - result.confirm(); - return true; - } - - //获取网页标题 - @Override - public void onReceivedTitle(WebView view, String title) { - super.onReceivedTitle(view, title); - Log.i(TAG, "网页标题:" + title); - } - - //加载进度回调 - @Override - public void onProgressChanged(WebView view, int newProgress) { - progressBar.setProgress(newProgress); - } - }; - - public boolean onKeyDownChild(int keyCode) { - Log.i(TAG, "是否有上一个页面:" + webView.canGoBack()); - if (webView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK) {//点击返回按钮的时候判断有没有上一页 - webView.goBack(); // goBack()表示返回webView的上一页面 - return true; - } - return false; - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - //释放资源 - webView.destroy(); - webView = null; - } - - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/RouterActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/RouterActivity.java deleted file mode 100644 index bbe64a6435..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/RouterActivity.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.zhidao.adas.client.other.router; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.Fragment; -import androidx.viewpager2.widget.ViewPager2; - -import com.google.android.material.tabs.TabLayout; -import com.google.android.material.tabs.TabLayoutMediator; -import com.zhidao.adas.client.R; - - -public class RouterActivity extends AppCompatActivity { - private static final String[] TAB_TITLES = new String[]{"Bus", "Taxi"}; - private boolean isBus; - private int currentPosition = 0;//默认选中bus - - public static void newInstance(Context context, boolean isBus) { - Intent intent = new Intent(context, RouterActivity.class); - intent.putExtra("is_bus", isBus); - context.startActivity(intent); - - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_router); - SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, TAB_TITLES); - ViewPager2 viewPager = findViewById(R.id.view_pager); - - viewPager.setAdapter(sectionsPagerAdapter); - TabLayout tabs = findViewById(R.id.tabs); - viewPager.setOffscreenPageLimit(1); - TabLayoutMediator mediator = new TabLayoutMediator(tabs, viewPager, new TabLayoutMediator.TabConfigurationStrategy() { - @Override - public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) { - tab.setText(TAB_TITLES[position]); - } - }); - mediator.attach(); - viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - super.onPageScrolled(position, positionOffset, positionOffsetPixels); - } - - @Override - public void onPageSelected(int position) { - super.onPageSelected(position); - currentPosition = position; - Log.i("dddd", "当前 Pos=" + currentPosition); - } - }); - findViewById(R.id.close).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!isClose(KeyEvent.KEYCODE_BACK)) - finish(); - } - }); - findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - PlaceholderFragment fragment = (PlaceholderFragment) getViewPagerFragment(currentPosition); - if (fragment != null) { - fragment.onRefresh(); - } - } - }); - - Intent intent = getIntent(); - if (intent != null) { - isBus = intent.getBooleanExtra("is_bus", true); - } - currentPosition = isBus ? 0 : 1; - viewPager.setCurrentItem(currentPosition, false); - } - - /** - * @param position fragment 的位置 - * @return - */ - private Fragment getViewPagerFragment(int position) { - return getSupportFragmentManager().findFragmentByTag("f" + position); - } - - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - return isClose(keyCode) || super.onKeyDown(keyCode, event); - } - - private boolean isClose(int keyCode) { - PlaceholderFragment fragment = (PlaceholderFragment) getViewPagerFragment(currentPosition); - if (fragment != null) { - return fragment.onKeyDownChild(keyCode); - } - return false; - } -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/SectionsPagerAdapter.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/SectionsPagerAdapter.java deleted file mode 100644 index aa69731fb3..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/other/router/SectionsPagerAdapter.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zhidao.adas.client.other.router; - -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; -import androidx.viewpager2.adapter.FragmentStateAdapter; - - -import java.util.HashMap; -import java.util.Map; - - -public class SectionsPagerAdapter extends FragmentStateAdapter { - - private final String[] TAB_TITLES; - public final Map fragments = new HashMap<>(); - private final FragmentActivity fragmentActivity; - - public SectionsPagerAdapter(@NonNull FragmentActivity fragmentActivity, String[] TAB_TITLES) { - super(fragmentActivity); - this.fragmentActivity = fragmentActivity; - this.TAB_TITLES = TAB_TITLES; - } - - - @NonNull - @Override - public Fragment createFragment(int position) { - String url = "192.168.1.1"; - if ("Bus".equals(TAB_TITLES[position])) { - url = "192.168.8.1"; - } - return PlaceholderFragment.newInstance(url); - } - - - @Override - public int getItemCount() { - return TAB_TITLES.length; - } - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/Base64.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/Base64.java deleted file mode 100644 index 383491b9d4..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/Base64.java +++ /dev/null @@ -1,1033 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zhidao.adas.client.ssh; - - -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; - - -/** - * Provides Base64 encoding and decoding as defined by RFC 2045. - * - *

- * This class implements section 6.8. Base64 Content-Transfer-Encoding from RFC 2045 Multipurpose - * Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies by Freed and Borenstein. - *

- *

- * The class can be parameterized in the following manner with various constructors: - *

    - *
  • URL-safe mode: Default off.
  • - *
  • Line length: Default 76. Line length that aren't multiples of 4 will still essentially end up being multiples of - * 4 in the encoded data. - *
  • Line separator: Default is CRLF ("\r\n")
  • - *
- *

- * Since this class operates directly on byte streams, and not character streams, it is hard-coded to only encode/decode - * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc). - *

- * - * @see RFC 2045 - * @since 2.2 - */ -public class Base64 { - private static final int DEFAULT_BUFFER_RESIZE_FACTOR = 2; - - private static final int DEFAULT_BUFFER_SIZE = 8192; - /** - * An empty immutable {@code byte} array. - */ - private static final byte[] EMPTY_BTYE_ARRAY = new byte[0]; - /** - * Chunk size per RFC 2045 section 6.8. - * - *

- * The {@value} character limit does not count the trailing CRLF, but counts all other characters, including any - * equal signs. - *

- * - * @see RFC 2045 section 6.8 - */ - static final int CHUNK_SIZE = 76; - - /** - * Chunk separator per RFC 2045 section 2.1. - * - * @see RFC 2045 section 2.1 - */ - private static final byte[] CHUNK_SEPARATOR = {'\r', '\n'}; - - /** - * This array is a lookup table that translates 6-bit positive integer index values into their "Base64 Alphabet" - * equivalents as specified in Table 1 of RFC 2045. - * - * Thanks to "commons" project in ws.apache.org for this code. - * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ - */ - private static final byte[] STANDARD_ENCODE_TABLE = { - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', - 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', - 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' - }; - - /** - * This is a copy of the STANDARD_ENCODE_TABLE above, but with + and / - * changed to - and _ to make the encoded Base64 results more URL-SAFE. - * This table is only used when the Base64's mode is set to URL-SAFE. - */ - private static final byte[] URL_SAFE_ENCODE_TABLE = { - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', - 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', - 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_' - }; - - /** - * Byte used to pad output. - */ - private static final byte PAD = '='; - - /** - * This array is a lookup table that translates Unicode characters drawn from the "Base64 Alphabet" (as specified in - * Table 1 of RFC 2045) into their 6-bit positive integer equivalents. Characters that are not in the Base64 - * alphabet but fall within the bounds of the array are translated to -1. - * - * Note: '+' and '-' both decode to 62. '/' and '_' both decode to 63. This means decoder seamlessly handles both - * URL_SAFE and STANDARD base64. (The encoder, on the other hand, needs to know ahead of time what to emit). - * - * Thanks to "commons" project in ws.apache.org for this code. - * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ - */ - private static final byte[] DECODE_TABLE = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, -1, -1, -1, -1, 63, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 - }; - - /** Mask used to extract 6 bits, used when encoding */ - private static final int MASK_6BITS = 0x3f; - - /** Mask used to extract 8 bits, used in decoding base64 bytes */ - private static final int MASK_8BITS = 0xff; - - // The static final fields above are used for the original static byte[] methods on Base64. - // The private member fields below are used with the new streaming approach, which requires - // some state be preserved between calls of encode() and decode(). - - /** - * Encode table to use: either STANDARD or URL_SAFE. Note: the DECODE_TABLE above remains static because it is able - * to decode both STANDARD and URL_SAFE streams, but the encodeTable must be a member variable so we can switch - * between the two modes. - */ - private final byte[] encodeTable; - - /** - * Line length for encoding. Not used when decoding. A value of zero or less implies no chunking of the base64 - * encoded data. - */ - private final int lineLength; - - /** - * Line separator for encoding. Not used when decoding. Only used if lineLength > 0. - */ - private final byte[] lineSeparator; - - /** - * Convenience variable to help us determine when our buffer is going to run out of room and needs resizing. - * decodeSize = 3 + lineSeparator.length; - */ - private final int decodeSize; - - /** - * Convenience variable to help us determine when our buffer is going to run out of room and needs resizing. - * encodeSize = 4 + lineSeparator.length; - */ - private final int encodeSize; - - /** - * Buffer for streaming. - */ - private byte[] buffer; - - /** - * Position where next character should be written in the buffer. - */ - private int pos; - - /** - * Position where next character should be read from the buffer. - */ - private int readPos; - - /** - * Variable tracks how many characters have been written to the current line. Only used when encoding. We use it to - * make sure each encoded line never goes beyond lineLength (if lineLength > 0). - */ - private int currentLinePos; - - /** - * Writes to the buffer only occur after every 3 reads when encoding, an every 4 reads when decoding. This variable - * helps track that. - */ - private int modulus; - - /** - * Boolean flag to indicate the EOF has been reached. Once EOF has been reached, this Base64 object becomes useless, - * and must be thrown away. - */ - private boolean eof; - - /** - * Place holder for the 3 bytes we're dealing with for our base64 logic. Bitwise operations store and extract the - * base64 encoding or decoding from this variable. - */ - private int x; - - /** - * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode. - *

- * When encoding the line length is 76, the line separator is CRLF, and the encoding table is STANDARD_ENCODE_TABLE. - *

- * - *

- * When decoding all variants are supported. - *

- */ - public Base64() { - this(false); - } - - /** - * Creates a Base64 codec used for decoding (all modes) and encoding in the given URL-safe mode. - *

- * When encoding the line length is 76, the line separator is CRLF, and the encoding table is STANDARD_ENCODE_TABLE. - *

- * - *

- * When decoding all variants are supported. - *

- * - * @param urlSafe - * if true, URL-safe encoding is used. In most cases this should be set to - * false. - * @since 1.4 - */ - public Base64(final boolean urlSafe) { - this(CHUNK_SIZE, CHUNK_SEPARATOR, urlSafe); - } - - /** - * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode. - *

- * When encoding the line length is given in the constructor, the line separator is CRLF, and the encoding table is - * STANDARD_ENCODE_TABLE. - *

- *

- * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data. - *

- *

- * When decoding all variants are supported. - *

- * - * @param lineLength - * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4). - * If {@code lineLength <= 0}, then the output will not be divided into lines (chunks). Ignored when decoding. - * @since 1.4 - */ - public Base64(final int lineLength) { - this(lineLength, CHUNK_SEPARATOR); - } - - /** - * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode. - *

- * When encoding the line length and line separator are given in the constructor, and the encoding table is - * STANDARD_ENCODE_TABLE. - *

- *

- * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data. - *

- *

- * When decoding all variants are supported. - *

- * - * @param lineLength - * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4). - * If {@code lineLength <= 0}, then the output will not be divided into lines (chunks). Ignored when decoding. - * @param lineSeparator - * Each line of encoded data will end with this sequence of bytes. - * @throws IllegalArgumentException - * Thrown when the provided lineSeparator included some base64 characters. - * @since 1.4 - */ - public Base64(final int lineLength, final byte[] lineSeparator) { - this(lineLength, lineSeparator, false); - } - - /** - * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode. - *

- * When encoding the line length and line separator are given in the constructor, and the encoding table is - * STANDARD_ENCODE_TABLE. - *

- *

- * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data. - *

- *

- * When decoding all variants are supported. - *

- * - * @param lineLength - * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4). - * If {@code lineLength <= 0}, then the output will not be divided into lines (chunks). Ignored when decoding. - * @param lineSeparator - * Each line of encoded data will end with this sequence of bytes. - * @param urlSafe - * Instead of emitting '+' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode - * operations. Decoding seamlessly handles both modes. - * @throws IllegalArgumentException - * The provided lineSeparator included some base64 characters. That's not going to work! - * @since 1.4 - */ - public Base64(int lineLength, byte[] lineSeparator, final boolean urlSafe) { - if (lineSeparator == null) { - lineLength = 0; // disable chunk-separating - lineSeparator = EMPTY_BTYE_ARRAY; // this just gets ignored - } - this.lineLength = lineLength > 0 ? (lineLength / 4) * 4 : 0; - this.lineSeparator = new byte[lineSeparator.length]; - System.arraycopy(lineSeparator, 0, this.lineSeparator, 0, lineSeparator.length); - if (lineLength > 0) { - this.encodeSize = 4 + lineSeparator.length; - } else { - this.encodeSize = 4; - } - this.decodeSize = this.encodeSize - 1; - if (containsBase64Byte(lineSeparator)) { - final String sep = newStringUtf8(lineSeparator); - throw new IllegalArgumentException("lineSeperator must not contain base64 characters: [" + sep + "]"); - } - this.encodeTable = urlSafe ? URL_SAFE_ENCODE_TABLE : STANDARD_ENCODE_TABLE; - } - - /** - * Returns our current encode mode. True if we're URL-SAFE, false otherwise. - * - * @return true if we're in URL-SAFE mode, false otherwise. - * @since 1.4 - */ - public boolean isUrlSafe() { - return this.encodeTable == URL_SAFE_ENCODE_TABLE; - } - - /** - * Returns true if this Base64 object has buffered data for reading. - * - * @return true if there is Base64 object still available for reading. - */ - boolean hasData() { - return this.buffer != null; - } - - /** - * Returns the amount of buffered data available for reading. - * - * @return The amount of buffered data available for reading. - */ - int avail() { - return buffer != null ? pos - readPos : 0; - } - - /** Doubles our buffer. */ - private void resizeBuffer() { - if (buffer == null) { - buffer = new byte[DEFAULT_BUFFER_SIZE]; - pos = 0; - readPos = 0; - } else { - final byte[] b = new byte[buffer.length * DEFAULT_BUFFER_RESIZE_FACTOR]; - System.arraycopy(buffer, 0, b, 0, buffer.length); - buffer = b; - } - } - - /** - * Extracts buffered data into the provided byte[] array, starting at position bPos, up to a maximum of bAvail - * bytes. Returns how many bytes were actually extracted. - * - * @param b - * byte[] array to extract the buffered data into. - * @param bPos - * position in byte[] array to start extraction at. - * @param bAvail - * amount of bytes we're allowed to extract. We may extract fewer (if fewer are available). - * @return The number of bytes successfully extracted into the provided byte[] array. - */ - int readResults(final byte[] b, final int bPos, final int bAvail) { - if (buffer != null) { - final int len = Math.min(avail(), bAvail); - if (buffer != b) { - System.arraycopy(buffer, readPos, b, bPos, len); - readPos += len; - if (readPos >= pos) { - buffer = null; - } - } else { - // Re-using the original consumer's output array is only - // allowed for one round. - buffer = null; - } - return len; - } - return eof ? -1 : 0; - } - - /** - * Sets the streaming buffer. This is a small optimization where we try to buffer directly to the consumer's output - * array for one round (if the consumer calls this method first) instead of starting our own buffer. - * - * @param out - * byte[] array to buffer directly to. - * @param outPos - * Position to start buffering into. - * @param outAvail - * Amount of bytes available for direct buffering. - */ - void setInitialBuffer(final byte[] out, final int outPos, final int outAvail) { - // We can re-use consumer's original output array under - // special circumstances, saving on some System.arraycopy(). - if (out != null && out.length == outAvail) { - buffer = out; - pos = outPos; - readPos = outPos; - } - } - - /** - *

- * Encodes all of the provided data, starting at inPos, for inAvail bytes. Must be called at least twice: once with - * the data to encode, and once with inAvail set to "-1" to alert encoder that EOF has been reached, so flush last - * remaining bytes (if not multiple of 3). - *

- *

- * Thanks to "commons" project in ws.apache.org for the bitwise operations, and general approach. - * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ - *

- * - * @param in - * byte[] array of binary data to base64 encode. - * @param inPos - * Position to start reading data from. - * @param inAvail - * Amount of bytes available from input for encoding. - */ - void encode(final byte[] in, int inPos, final int inAvail) { - if (eof) { - return; - } - // inAvail < 0 is how we're informed of EOF in the underlying data we're - // encoding. - if (inAvail < 0) { - eof = true; - if (buffer == null || buffer.length - pos < encodeSize) { - resizeBuffer(); - } - switch (modulus) { - case 1 : - buffer[pos++] = encodeTable[(x >> 2) & MASK_6BITS]; - buffer[pos++] = encodeTable[(x << 4) & MASK_6BITS]; - // URL-SAFE skips the padding to further reduce size. - if (encodeTable == STANDARD_ENCODE_TABLE) { - buffer[pos++] = PAD; - buffer[pos++] = PAD; - } - break; - - case 2 : - buffer[pos++] = encodeTable[(x >> 10) & MASK_6BITS]; - buffer[pos++] = encodeTable[(x >> 4) & MASK_6BITS]; - buffer[pos++] = encodeTable[(x << 2) & MASK_6BITS]; - // URL-SAFE skips the padding to further reduce size. - if (encodeTable == STANDARD_ENCODE_TABLE) { - buffer[pos++] = PAD; - } - break; - default: - break; // other values ignored - } - if (lineLength > 0 && pos > 0) { - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length); - pos += lineSeparator.length; - } - } else { - for (int i = 0; i < inAvail; i++) { - if (buffer == null || buffer.length - pos < encodeSize) { - resizeBuffer(); - } - modulus = (++modulus) % 3; - int b = in[inPos++]; - if (b < 0) { - b += 256; - } - x = (x << 8) + b; - if (0 == modulus) { - buffer[pos++] = encodeTable[(x >> 18) & MASK_6BITS]; - buffer[pos++] = encodeTable[(x >> 12) & MASK_6BITS]; - buffer[pos++] = encodeTable[(x >> 6) & MASK_6BITS]; - buffer[pos++] = encodeTable[x & MASK_6BITS]; - currentLinePos += 4; - if (lineLength > 0 && lineLength <= currentLinePos) { - System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length); - pos += lineSeparator.length; - currentLinePos = 0; - } - } - } - } - } - - /** - *

- * Decodes all of the provided data, starting at inPos, for inAvail bytes. Should be called at least twice: once - * with the data to decode, and once with inAvail set to "-1" to alert decoder that EOF has been reached. The "-1" - * call is not necessary when decoding, but it doesn't hurt, either. - *

- *

- * Ignores all non-base64 characters. This is how chunked (e.g. 76 character) data is handled, since CR and LF are - * silently ignored, but has implications for other bytes, too. This method subscribes to the garbage-in, - * garbage-out philosophy: it will not check the provided data for validity. - *

- *

- * Thanks to "commons" project in ws.apache.org for the bitwise operations, and general approach. - * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ - *

- * - * @param in - * byte[] array of ascii data to base64 decode. - * @param inPos - * Position to start reading data from. - * @param inAvail - * Amount of bytes available from input for encoding. - */ - void decode(final byte[] in, int inPos, final int inAvail) { - if (eof) { - return; - } - if (inAvail < 0) { - eof = true; - } - for (int i = 0; i < inAvail; i++) { - if (buffer == null || buffer.length - pos < decodeSize) { - resizeBuffer(); - } - final byte b = in[inPos++]; - if (b == PAD) { - // We're done. - eof = true; - break; - } - if (b >= 0 && b < DECODE_TABLE.length) { - final int result = DECODE_TABLE[b]; - if (result >= 0) { - modulus = (++modulus) % 4; - x = (x << 6) + result; - if (modulus == 0) { - buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS); - buffer[pos++] = (byte) ((x >> 8) & MASK_8BITS); - buffer[pos++] = (byte) (x & MASK_8BITS); - } - } - } - } - - // Two forms of EOF as far as base64 decoder is concerned: actual - // EOF (-1) and first time '=' character is encountered in stream. - // This approach makes the '=' padding characters completely optional. - if (eof && modulus != 0) { - x = x << 6; - switch (modulus) { - case 2 : - x = x << 6; - buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS); - break; - case 3 : - buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS); - buffer[pos++] = (byte) ((x >> 8) & MASK_8BITS); - break; - default: - break; // other values ignored - } - } - } - - /** - * Returns whether or not the octet is in the base 64 alphabet. - * - * @param octet - * The value to test - * @return true if the value is defined in the the base 64 alphabet, false otherwise. - * @since 1.4 - */ - public static boolean isBase64(final byte octet) { - return octet == PAD || (octet >= 0 && octet < DECODE_TABLE.length && DECODE_TABLE[octet] != -1); - } - - /** - * Tests a given byte array to see if it contains only valid characters within the Base64 alphabet. Currently the - * method treats whitespace as valid. - * - * @param arrayOctet - * byte array to test - * @return true if all bytes are valid characters in the Base64 alphabet or if the byte array is empty; - * false, otherwise - */ - public static boolean isArrayByteBase64(final byte[] arrayOctet) { - for (final byte element : arrayOctet) { - if (!isBase64(element) && !isWhiteSpace(element)) { - return false; - } - } - return true; - } - - /** - * Tests a given byte array to see if it contains only valid characters within the Base64 alphabet. - * - * @param arrayOctet - * byte array to test - * @return true if any byte is a valid character in the Base64 alphabet; false herwise - */ - private static boolean containsBase64Byte(final byte[] arrayOctet) { - for (final byte element : arrayOctet) - { - if (isBase64(element)) { - return true; - } - } - return false; - } - - /** - * Encodes binary data using the base64 algorithm but does not chunk the output. - * - * @param binaryData - * binary data to encode - * @return byte[] containing Base64 characters in their UTF-8 representation. - */ - public static byte[] encodeBase64(final byte[] binaryData) { - return encodeBase64(binaryData, false); - } - - /** - * Encodes binary data using the base64 algorithm into 76 character blocks separated by CRLF. - *

- * For a non-chunking version, see {@link #encodeBase64StringUnChunked(byte[])}. - * - * @param binaryData - * binary data to encode - * @return String containing Base64 characters. - * @since 1.4 - */ - public static String encodeBase64String(final byte[] binaryData) { - return newStringUtf8(encodeBase64(binaryData, true)); - } - - /** - * Encodes binary data using the base64 algorithm, without using chunking. - *

- * For a chunking version, see {@link #encodeBase64String(byte[])}. - * - * @param binaryData - * binary data to encode - * @return String containing Base64 characters. - * @since 3.2 - */ - public static String encodeBase64StringUnChunked(final byte[] binaryData) { - return newStringUtf8(encodeBase64(binaryData, false)); - } - - /** - * Encodes binary data using the base64 algorithm. - * - * @param binaryData - * binary data to encode - * @param useChunking whether to split the output into chunks - * @return String containing Base64 characters. - * @since 3.2 - */ - public static String encodeBase64String(final byte[] binaryData, final boolean useChunking) { - return newStringUtf8(encodeBase64(binaryData, useChunking)); - } - - /** - * Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output. The - * url-safe variation emits - and _ instead of + and / characters. - * - * @param binaryData - * binary data to encode - * @return byte[] containing Base64 characters in their UTF-8 representation. - * @since 1.4 - */ - public static byte[] encodeBase64URLSafe(final byte[] binaryData) { - return encodeBase64(binaryData, false, true); - } - - /** - * Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output. The - * url-safe variation emits - and _ instead of + and / characters. - * - * @param binaryData - * binary data to encode - * @return String containing Base64 characters - * @since 1.4 - */ - public static String encodeBase64URLSafeString(final byte[] binaryData) { - return newStringUtf8(encodeBase64(binaryData, false, true)); - } - - /** - * Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks - * - * @param binaryData - * binary data to encode - * @return Base64 characters chunked in 76 character blocks - */ - public static byte[] encodeBase64Chunked(final byte[] binaryData) { - return encodeBase64(binaryData, true); - } - - /** - * Decodes a String containing containing characters in the Base64 alphabet. - * - * @param pArray - * A String containing Base64 character data - * @return a byte array containing binary data - * @since 1.4 - */ - public byte[] decode(final String pArray) { - return decode(getBytesUtf8(pArray)); - } - - private byte[] getBytesUtf8(final String pArray) { - return pArray.getBytes(StandardCharsets.UTF_8); - } - - /** - * Decodes a byte[] containing containing characters in the Base64 alphabet. - * - * @param pArray - * A byte array containing Base64 character data - * @return a byte array containing binary data - */ - public byte[] decode(final byte[] pArray) { - reset(); - if (pArray == null || pArray.length == 0) { - return pArray; - } - final long len = (pArray.length * 3) / 4; - final byte[] buf = new byte[(int) len]; - setInitialBuffer(buf, 0, buf.length); - decode(pArray, 0, pArray.length); - decode(pArray, 0, -1); // Notify decoder of EOF. - - // Would be nice to just return buf (like we sometimes do in the encode - // logic), but we have no idea what the line-length was (could even be - // variable). So we cannot determine ahead of time exactly how big an - // array is necessary. Hence the need to construct a 2nd byte array to - // hold the final result: - - final byte[] result = new byte[pos]; - readResults(result, 0, result.length); - return result; - } - - /** - * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks. - * - * @param binaryData - * Array containing binary data to encode. - * @param isChunked - * if true this encoder will chunk the base64 output into 76 character blocks - * @return Base64-encoded data. - * @throws IllegalArgumentException - * Thrown when the input array needs an output array bigger than {@link Integer#MAX_VALUE} - */ - public static byte[] encodeBase64(final byte[] binaryData, final boolean isChunked) { - return encodeBase64(binaryData, isChunked, false); - } - - /** - * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks. - * - * @param binaryData - * Array containing binary data to encode. - * @param isChunked - * if true this encoder will chunk the base64 output into 76 character blocks - * @param urlSafe - * if true this encoder will emit - and _ instead of the usual + and / characters. - * @return Base64-encoded data. - * @throws IllegalArgumentException - * Thrown when the input array needs an output array bigger than {@link Integer#MAX_VALUE} - * @since 1.4 - */ - public static byte[] encodeBase64(final byte[] binaryData, final boolean isChunked, final boolean urlSafe) { - return encodeBase64(binaryData, isChunked, urlSafe, Integer.MAX_VALUE); - } - - /** - * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks. - * - * @param binaryData - * Array containing binary data to encode. - * @param isChunked - * if true this encoder will chunk the base64 output into 76 character blocks - * @param urlSafe - * if true this encoder will emit - and _ instead of the usual + and / characters. - * @param maxResultSize - * The maximum result size to accept. - * @return Base64-encoded data. - * @throws IllegalArgumentException - * Thrown when the input array needs an output array bigger than maxResultSize - * @since 1.4 - */ - public static byte[] encodeBase64(final byte[] binaryData, final boolean isChunked, final boolean urlSafe, - final int maxResultSize) { - if (binaryData == null || binaryData.length == 0) { - return binaryData; - } - - final long len = getEncodeLength(binaryData, isChunked ? CHUNK_SIZE : 0, - isChunked ? CHUNK_SEPARATOR : EMPTY_BTYE_ARRAY); - if (len > maxResultSize) { - throw new IllegalArgumentException("Input array too big, the output array would be bigger (" + len - + ") than the specified maxium size of " + maxResultSize); - } - - final Base64 b64 = isChunked ? new Base64(urlSafe) : new Base64(0, CHUNK_SEPARATOR, urlSafe); - return b64.encode(binaryData); - } - - /** - * Decodes a Base64 String into octets. - * - * @param base64String - * String containing Base64 data - * @return Array containing decoded data. - * @since 1.4 - */ - public static byte[] decodeBase64(final String base64String) { - return new Base64().decode(base64String); - } - - /** - * Decodes Base64 data into octets. - * - * @param base64Data - * Byte array containing Base64 data - * @return Array containing decoded data. - */ - public static byte[] decodeBase64(final byte[] base64Data) { - return new Base64().decode(base64Data); - } - - /** - * Checks if a byte value is whitespace or not. - * - * @param byteToCheck - * the byte to check - * @return true if byte is whitespace, false otherwise - */ - private static boolean isWhiteSpace(final byte byteToCheck) { - switch (byteToCheck) { - case ' ' : - case '\n' : - case '\r' : - case '\t' : - return true; - default : - return false; - } - } - - /** - * Encodes a byte[] containing binary data, into a String containing characters in the Base64 alphabet. - * - * @param pArray - * a byte array containing binary data - * @return A String containing only Base64 character data - * @since 1.4 - */ - public String encodeToString(final byte[] pArray) { - return newStringUtf8(encode(pArray)); - } - - private static String newStringUtf8(final byte[] encode) { - return new String(encode, StandardCharsets.UTF_8); - } - - /** - * Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 alphabet. - * - * @param pArray - * a byte array containing binary data - * @return A byte array containing only Base64 character data - */ - public byte[] encode(final byte[] pArray) { - reset(); - if (pArray == null || pArray.length == 0) { - return pArray; - } - final long len = getEncodeLength(pArray, lineLength, lineSeparator); - byte[] buf = new byte[(int) len]; - setInitialBuffer(buf, 0, buf.length); - encode(pArray, 0, pArray.length); - encode(pArray, 0, -1); // Notify encoder of EOF. - // Encoder might have resized, even though it was unnecessary. - if (buffer != buf) { - readResults(buf, 0, buf.length); - } - // In URL-SAFE mode we skip the padding characters, so sometimes our - // final length is a bit smaller. - if (isUrlSafe() && pos < buf.length) { - final byte[] smallerBuf = new byte[pos]; - System.arraycopy(buf, 0, smallerBuf, 0, pos); - buf = smallerBuf; - } - return buf; - } - - /** - * Pre-calculates the amount of space needed to base64-encode the supplied array. - * - * @param pArray byte[] array which will later be encoded - * @param chunkSize line-length of the output (<= 0 means no chunking) between each - * chunkSeparator (e.g. CRLF). - * @param chunkSeparator the sequence of bytes used to separate chunks of output (e.g. CRLF). - * - * @return amount of space needed to encoded the supplied array. Returns - * a long since a max-len array will require Integer.MAX_VALUE + 33%. - */ - private static long getEncodeLength(final byte[] pArray, int chunkSize, final byte[] chunkSeparator) { - // base64 always encodes to multiples of 4. - chunkSize = (chunkSize / 4) * 4; - - long len = (pArray.length * 4) / 3; - final long mod = len % 4; - if (mod != 0) { - len += 4 - mod; - } - if (chunkSize > 0) { - final boolean lenChunksPerfectly = len % chunkSize == 0; - len += (len / chunkSize) * chunkSeparator.length; - if (!lenChunksPerfectly) { - len += chunkSeparator.length; - } - } - return len; - } - - // Implementation of integer encoding used for crypto - /** - * Decodes a byte64-encoded integer according to crypto standards such as W3C's XML-Signature - * - * @param pArray - * a byte array containing base64 character data - * @return A BigInteger - * @since 1.4 - */ - public static BigInteger decodeInteger(final byte[] pArray) { - return new BigInteger(1, decodeBase64(pArray)); - } - - /** - * Encodes to a byte64-encoded integer according to crypto standards such as W3C's XML-Signature - * - * @param bigInt - * a BigInteger - * @return A byte array containing base64 character data - * @throws NullPointerException - * if null is passed in - * @since 1.4 - */ - public static byte[] encodeInteger(final BigInteger bigInt) { - if (bigInt == null) { - throw new NullPointerException("encodeInteger called with null parameter"); - } - return encodeBase64(toIntegerBytes(bigInt), false); - } - - /** - * Returns a byte-array representation of a BigInteger without sign bit. - * - * @param bigInt - * BigInteger to be converted - * @return a byte array representation of the BigInteger parameter - */ - static byte[] toIntegerBytes(final BigInteger bigInt) { - int bitlen = bigInt.bitLength(); - // round bitlen - bitlen = ((bitlen + 7) >> 3) << 3; - final byte[] bigBytes = bigInt.toByteArray(); - - if (((bigInt.bitLength() % 8) != 0) && (((bigInt.bitLength() / 8) + 1) == (bitlen / 8))) { - return bigBytes; - } - // set up params for copying everything but sign bit - int startSrc = 0; - int len = bigBytes.length; - - // if bigInt is exactly byte-aligned, just skip signbit in copy - if ((bigInt.bitLength() % 8) == 0) { - startSrc = 1; - len--; - } - final int startDst = bitlen / 8 - len; // to pad w/ nulls as per spec - final byte[] resizedBytes = new byte[bitlen / 8]; - System.arraycopy(bigBytes, startSrc, resizedBytes, startDst, len); - return resizedBytes; - } - - /** - * Resets this Base64 object to its initial newly constructed state. - */ - private void reset() { - buffer = null; - pos = 0; - readPos = 0; - currentLinePos = 0; - modulus = 0; - eof = false; - } - - // Getters for use in testing - - int getLineLength() { - return lineLength; - } - - byte[] getLineSeparator() { - return lineSeparator.clone(); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/RSATool.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/RSATool.java deleted file mode 100644 index 6281286999..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/RSATool.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.zhidao.adas.client.ssh; - - - - -import com.zhidao.support.adas.high.common.CupidLogUtils; - -import java.nio.charset.StandardCharsets; -import java.security.Key; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; -import java.util.HashMap; -import java.util.Map; - -import javax.crypto.Cipher; - -public class RSATool { - private static final String KEY_ALGORITHM = "RSA"; - private static final String ECB_PKCS1_PADDING = "RSA/ECB/PKCS1Padding"; - - public static Map initKey() throws Exception { - //实例化密钥生成器 - KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM); //加密方式 - //初始化密钥生成器 - keyPairGenerator.initialize(512, new SecureRandom()); //长度 - //生成密钥对 - KeyPair keyPair = keyPairGenerator.generateKeyPair(); - //甲方公钥 - RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); - //甲方私钥 - RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); - //将密钥存储在map中 - Map keyMap = new HashMap(); - keyMap.put("PUBLIC_KEY", publicKey); - keyMap.put("PRIVATE_KEY", privateKey); - return keyMap; - } - - public static void getBase64() { - try { - Map map = initKey(); - byte[] privateKey = ((Key) map.get("PRIVATE_KEY")).getEncoded(); - byte[] publicKey = ((Key) map.get("PUBLIC_KEY")).getEncoded(); - // 将公私钥转为base64-法1 -// String privateBase64 = new String(Base64.encodeBase64(privateKey)); -// String publicBase64 = new String(Base64.encodeBase64(publicKey)); - // 将公私钥转为base64-法2 - String privateBase64 = Base64.encodeBase64String(privateKey); - String publicBase64 = Base64.encodeBase64String(publicKey); - CupidLogUtils.i("RSATool", "privateBase64=" + privateBase64); - CupidLogUtils.i("RSATool", "publicBase64=" + publicBase64); - String data = "mogo@ZHIDAO10"; - String encryptData = encryptByPublicKey(data, publicKey); - CupidLogUtils.i("RSATool", "encryptData=" + encryptData); - String decodeData = decodeByPrivateKey(encryptData, Base64.decodeBase64(privateBase64)); - CupidLogUtils.i("RSATool", "decodeData=" + decodeData); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 公钥加密 - * - * @param data 待加密数据 - * @param key 密钥 - * @return String 加密数据 Base64类型 - */ - public static String encryptByPublicKey(String data, byte[] key) throws Exception { - //实例化密钥工厂 - KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); - //初始化公钥 - //密钥材料转换 - X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key); - //产生公钥 - PublicKey pubKey = keyFactory.generatePublic(x509KeySpec); - //数据加密 - Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING); - cipher.init(Cipher.ENCRYPT_MODE, pubKey); - return Base64.encodeBase64String(cipher.doFinal(data.getBytes(StandardCharsets.UTF_8))); - } - - /** - * 私钥解密 - * - * @param data 待解密数据 Base64类型 - * @param key 密钥 - * @return String 解密数据 - */ - public static String decodeByPrivateKey(String data, byte[] key) throws Exception { - //取得私钥 - PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key); - KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); - //生成私钥 - PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec); - //数据解密 - Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING); - cipher.init(Cipher.DECRYPT_MODE, privateKey); - return new String(cipher.doFinal(Base64.decodeBase64(data))); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSH.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSH.java deleted file mode 100644 index 730c076d86..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSH.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.zhidao.adas.client.ssh; - -import android.text.TextUtils; - -import com.jcraft.jsch.ChannelExec; -import com.jcraft.jsch.JSch; -import com.jcraft.jsch.JSchException; -import com.jcraft.jsch.Session; -import com.zhidao.support.adas.high.common.CupidLogUtils; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Properties; - -public class SSH { - private static final String TAG = SSH.class.getSimpleName(); - - private Session session = null; - private ChannelExec channelExec = null; - ByteArrayOutputStream err = null; - StringBuffer outBuf = null; - - public ByteArrayOutputStream getErr() { - return err; - } - - public StringBuffer getOutBuf() { - return outBuf; - } - - public Session getSession() { - return session; - } - - public ChannelExec getChannelExec() { - return channelExec; - } - - /** - * 使用用户名、密码连接 - * - * @param host 主机ip - * @param port 主机端口 - * @param username 主机用户名 - * @param password 主机密码 - * @throws JSchException - */ - public void connect(String host, int port, String username, String password) throws JSchException { - JSch jsch = new JSch(); - session = jsch.getSession(username, host, port); - session.setPassword(password); - Properties config = new Properties(); - config.put("StrictHostKeyChecking", "no"); - session.setConfig(config); - session.setTimeout(10000); - session.connect(); - CupidLogUtils.i(TAG, "Connected to " + host + "."); - } - - /** - * 使用授信连接 - * - * @param host 主机ip - * @param username 主机用户名 - * @param privateKey 私钥路径 - * @throws JSchException - */ - public void connect(String host, String username, String privateKey) throws JSchException { - JSch jsch = new JSch(); - jsch.addIdentity(privateKey); - session = jsch.getSession(username, host); - - Properties config = new Properties(); - config.put("StrictHostKeyChecking", "no"); - session.setConfig(config); - session.setTimeout(30000); - session.connect(); - CupidLogUtils.i(TAG, "Connected to " + host + "."); - } - - /** - * 执行 - * - * @param cmd 命令 - * @return 状态 - * @throws JSchException - * @throws IOException - */ - public SSHResult exec(String cmd) throws JSchException, IOException { - return exec(cmd, null); - } - - public SSHResult exec(String cmd, String suPwd) throws JSchException, IOException { - int exitStatus = 0; - channelExec = (ChannelExec) session.openChannel("exec"); - channelExec.setInputStream(null); - err = new ByteArrayOutputStream(); - channelExec.setErrStream(err); - channelExec.setCommand(cmd); - InputStream in = channelExec.getInputStream(); - OutputStream out = channelExec.getOutputStream(); - channelExec.connect(); - if (!TextUtils.isEmpty(suPwd) && (cmd.contains("sudo") || cmd.contains("su"))) { - out.write((suPwd + "\n").getBytes()); //这里是密码后跟了一个换行符 - out.flush(); - } - outBuf = new StringBuffer(); - byte[] tmp = new byte[1024]; - while (true) { - while (in.available() > 0) { - int i = in.read(tmp, 0, 1024); - if (i < 0) break; - outBuf.append(new String(tmp, 0, i)); - } - if (channelExec.isClosed()) { - if (in.available() > 0) continue; - exitStatus = channelExec.getExitStatus(); - break; - } - try { - Thread.sleep(1000L); - } catch (Exception e) { - } - } - channelExec.disconnect(); - if (exitStatus == 0) { - String outInfo = this.getOutBuf().toString(); - return new SSHResult(exitStatus, cmd, outInfo); - } else { - String errInfo = this.getErr().toString(); - return new SSHResult(exitStatus, cmd, errInfo); - } - } - - /** - * 断开连接 - */ - public void disConnect() { - if (channelExec != null) { - channelExec.disconnect(); - } - if (session != null) { - session.disconnect(); - } - } - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHManager.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHManager.java deleted file mode 100644 index 9b5a9552c4..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHManager.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.zhidao.adas.client.ssh; - -import android.text.TextUtils; - -import com.zhidao.support.adas.high.common.ThreadPoolManager; - -public class SSHManager { - private OnSShListener listener; - - public interface OnSShListener { - /** - * 向IPC发送命令返回结果 - * - * @param info - */ - void onSSHResult(SSHResult info); - } - - private String ipcConnectedIp; - private SSH ssh; - - public void shutdownIPC() { - sendIPCCmd("sudo -S shutdown -h now"); - } - - public void rebootIPC() { - sendIPCCmd("sudo -S reboot"); - } - - public void rebootAPDocker() { - sendIPCCmd("docker restart autocar_default_1"); - } - - private void sendIPCCmd(final String cmd) { - if (ssh == null) { - if (TextUtils.isEmpty(ipcConnectedIp)) { - if (listener != null) { - listener.onSSHResult(new SSHResult(SSHResult.RESULT_CODE.IP_UNKNOWN, cmd, "IPC IP未知")); - } - return; - } - ThreadPoolManager.getsInstance().execute(new Runnable() { - @Override - public void run() { - ssh = new SSH(); - String encodePwd = SSHTool.getEncodePwd(); - String privateKey = SSHTool.getPrivateKey(); - try { - String pwd = RSATool.decodeByPrivateKey(encodePwd, Base64.decodeBase64(privateKey)); - ssh.connect(ipcConnectedIp, 22, "reset", pwd); - SSHResult result = ssh.exec(cmd, pwd); - if (listener != null) - listener.onSSHResult(result); - } catch (Exception e) { - if (listener != null) - listener.onSSHResult(new SSHResult(SSHResult.RESULT_CODE.ERROR, cmd, e.getMessage())); - e.printStackTrace(); - } - ssh.disConnect(); - ssh = null; - } - }); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHResult.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHResult.java deleted file mode 100644 index efb052ad3e..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHResult.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.zhidao.adas.client.ssh; - -import com.zhidao.adas.client.DataDistribution; -import com.zhidao.adas.client.bean.MySSHResult; -import com.zhidao.support.adas.high.common.CupidLogUtils; - -/** - * SSH返回结果 - */ -public class SSHResult { - - public void onSSHResult(final SSHResult info) { - MySSHResult result = new MySSHResult(info.toString(), 0); - DataDistribution.getInstance().addData(result); -// showToastCenter("IPC命令下发结果:" + info.code + " 命令:" + info.cmd + " 信息:" + info.msg); -// CupidLogUtils.w(TAG, "IPC命令下发结果:" + info.code + " 命令:" + info.cmd + " 信息:" + info.msg); - } - - - public interface RESULT_CODE { - /** - * 工控机IP未知 - */ - int IP_UNKNOWN = -10001; - /** - * 网络异常或连接异常或IO异常 - */ - int ERROR = -10000; - /** - * 命令下发成功 可能存在-1的情况 - * 在虚拟机的ubuntu系统发送reboot或shutdown或ls 命令返回的是0,在工控机发送reboot或shutdown返回-1 ls返回0 - */ - int SEND_SUCCEED = 0; - /** - * 其他值根据Shell返回结果而定 >0 - */ - - } - - public final int code; - public final String cmd; - public final String msg; - - public SSHResult(int code, String cmd, String msg) { - this.code = code; - this.cmd = cmd; - this.msg = msg; - } - - @Override - public String toString() { - return "SSHResult{" + - "code=" + code + - ", cmd='" + cmd + '\'' + - ", msg='" + msg + '\'' + - '}'; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHTool.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHTool.java deleted file mode 100644 index 45d40f7867..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ssh/SSHTool.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zhidao.adas.client.ssh; - -public class SSHTool { - static { - System.loadLibrary("sshtool"); - } - - public static native String getEncodePwd(); - - public static native String getPrivateKey(); - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutoPilotModeDialog.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutoPilotModeDialog.java deleted file mode 100644 index 74e5eb6eaa..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutoPilotModeDialog.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.app.Dialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.SimpleItemAnimator; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.LineAdapter; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.bean.AutoPilotMode; -import com.zhidao.adas.client.bean.UpdateDataEvent; -import com.zhidao.adas.client.utils.Constants; -import com.zhidao.support.adas.high.AdasManager; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import java.util.List; - -import mogo.telematics.pad.MessagePad; - - -public class AutoPilotModeDialog extends Dialog { - private RecyclerView recyclerView; - private LineAdapter adapter; - private List list; - - public AutoPilotModeDialog(@NonNull Context context) { - super(context, R.style.CustomDialog); - - } - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_autopilot_mode); - //初始化界面控件 - initView(); - list = Constants.getPaths(getContext()); - initBtnRecyclerView(); - //初始化界面控件的事件 - initListener(); - setOnDismissListener(new OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - EventBus.getDefault().unregister(AutoPilotModeDialog.this); - } - }); - - } - - @Override - public void show() { - super.show(); - EventBus.getDefault().register(AutoPilotModeDialog.this); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onUpdateDataEvent(UpdateDataEvent event) { - list = Constants.getPaths(getContext()); - if (adapter != null) { - adapter.setData(list); - } - } - - private void initBtnRecyclerView() { - //初始info-recycle - LinearLayoutManager nodLinearLayoutManage = new LinearLayoutManager(getContext()); - nodLinearLayoutManage.setOrientation(LinearLayoutManager.VERTICAL); - recyclerView.setLayoutManager(nodLinearLayoutManage); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - recyclerView.setHasFixedSize(true); - //解决局部刷新闪屏问题 - SimpleItemAnimator animatorInfo = (SimpleItemAnimator) recyclerView.getItemAnimator(); - if (animatorInfo != null) - animatorInfo.setSupportsChangeAnimations(false); - //创建并设置Adapter - adapter = new LineAdapter(list); - recyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() { - @Override - public void onItemClick(int position, AutoPilotMode data) { - MessagePad.Location startLocation = MessagePad.Location.newBuilder() - .setLatitude(data.startLatLon.latitude) - .setLongitude(data.startLatLon.longitude) - .build(); - MessagePad.Location endLocation = MessagePad.Location.newBuilder() - .setLatitude(data.endLatLon.latitude) - .setLongitude(data.endLatLon.longitude) - .build(); - MessagePad.RouteInfo.Builder builder = MessagePad.RouteInfo.newBuilder(); - builder.setStartLocation(startLocation); - builder.setStartName(data.startName); - builder.setEndLocation(endLocation); - builder.setEndName(data.endName); - List list = data.getWayLatLons(); - if (list != null) - builder.addAllWayPoints(list); - builder.setSpeedLimit(data.speedLimit); - builder.setVehicleType(9); - builder.setIsSpeakVoice(true); - if (data.isBus) { - builder.setRouteID(data.routeID); - builder.setRouteName(data.routeName); - } - AdasManager.getInstance().sendAutoPilotModeReq(1, 0, builder.build()); - AutoPilotModeDialog.this.dismiss(); - } - }); - } - - /** - * 初始化界面的确定和取消监听器 - */ - private void initListener() { - findViewById(R.id.settings).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - getContext().startActivity(new Intent(getContext(), AutopilotConfigActivity.class)); - } - }); - findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MessagePad.RouteInfo.Builder builder = MessagePad.RouteInfo.newBuilder(); - AdasManager.getInstance().sendAutoPilotModeReq(0, 0, builder.build()); - AutoPilotModeDialog.this.dismiss(); - } - }); - } - - - /** - * 初始化界面控件 - */ - private void initView() { - recyclerView = findViewById(R.id.recyclerView); - - - } - - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutopilotConfigActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutopilotConfigActivity.java deleted file mode 100644 index baddbc16d4..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutopilotConfigActivity.java +++ /dev/null @@ -1,342 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.os.Bundle; -import android.os.Message; -import android.util.Pair; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.appcompat.widget.Toolbar; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.zhidao.adas.client.DataDistribution; -import com.zhidao.adas.client.OnAdasClientListener; -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.AutopilotConfigAdapter; -import com.zhidao.adas.client.base.BaseActivity; -import com.zhidao.adas.client.bean.AutoPilotMode; -import com.zhidao.adas.client.bean.DataShow; -import com.zhidao.adas.client.bean.UpdateDataEvent; -import com.zhidao.adas.client.utils.Constants; -import com.zhidao.support.adas.high.common.ThreadPoolManager; - -import org.greenrobot.eventbus.EventBus; - -import java.util.List; - - -public class AutopilotConfigActivity extends BaseActivity { - private static final String TAG = "CreateActivity"; - private Pair listenerPair; - private TextView toolbar_title; - private RecyclerView recyclerView; - private AutopilotConfigAdapter autopilotConfigAdapter; - private GridLayoutManager linearLayoutManager; - - private static final int WHAT_START = 0x01; - private static final int WHAT_UPDATE_SHOW = 0x02; - TextView no_date; - private TextView lonText; - private TextView latText; - private double lon = -1; - private double lat = -1; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_autopilot_cloud_config); - Toolbar toolbar = findViewById(R.id.toolbar); - recyclerView = findViewById(R.id.recyclerView); - no_date = findViewById(R.id.no_date); - setSupportActionBar(toolbar); - getSupportActionBar().setTitle(""); - toolbar_title = findViewById(R.id.toolbar_title); - toolbar_title.setText("创建线路"); - getSupportActionBar().setDisplayHomeAsUpEnabled(true);//左侧添加一个默认的返回图标 - getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用 - initHandler(); - initRecyclerView(); - listenerPair = new Pair<>(Constants.TITLE.RECEIVE_GNSS_INFO, listener); - toolbar_title.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - Toast.makeText(AutopilotConfigActivity.this, "恭喜解锁隐藏技能", Toast.LENGTH_LONG).show(); - return true; - } - }); - - } - - @Override - protected void onResume() { - super.onResume(); - init(); - DataDistribution.getInstance().registerAdasClientListener(new Pair<>(Constants.TITLE.RECEIVE_GNSS_INFO, listener)); - - } - - @Override - protected void onPause() { - super.onPause(); - DataDistribution.getInstance().unregisterAdasClientListener(new Pair<>(Constants.TITLE.RECEIVE_GNSS_INFO, listener)); - - } - - private void init() { - if (autopilotConfigAdapter.getItemCount() == 0) { - recyclerView.setVisibility(View.GONE); - no_date.setVisibility(View.VISIBLE); - } else { - no_date.setVisibility(View.GONE); - recyclerView.setVisibility(View.VISIBLE); - } - - } - - private void initRecyclerView() { - linearLayoutManager = new GridLayoutManager(this, 2); - linearLayoutManager.setOrientation(GridLayoutManager.VERTICAL); - recyclerView.setLayoutManager(linearLayoutManager); - //添加Android自带的分割线 - recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); - recyclerView.addItemDecoration(new HorizontalDividerItemDecoration(this)); - autopilotConfigAdapter = new AutopilotConfigAdapter(Constants.getPaths(this)); - recyclerView.setAdapter(autopilotConfigAdapter); - autopilotConfigAdapter.setOnItemClickListener(new AutopilotConfigAdapter.OnHaveDataListener() { - @Override - public void onHaveData(boolean isHave) { - if (isHave) { - no_date.setVisibility(View.GONE); - recyclerView.setVisibility(View.VISIBLE); - } else { - recyclerView.setVisibility(View.GONE); - no_date.setVisibility(View.VISIBLE); - - } - } - }); - } - - - public void onSave() { - List list = autopilotConfigAdapter.getDatas(); - if (list == null || list.isEmpty()) { - Toast.makeText(AutopilotConfigActivity.this, "未找到可用数据,无法保存", Toast.LENGTH_SHORT).show(); - return; - } - Toast.makeText(AutopilotConfigActivity.this, "正在保存...", Toast.LENGTH_SHORT).show(); - Runnable runnable = new Runnable() { - @Override - public void run() { - boolean isNull = false; - for (int i = 0; i < list.size(); i++) { - if (list.get(i).isNull()) { - isNull = true; - break; - } - } - if (!isNull) { - Constants.setPath(AutopilotConfigActivity.this, list); - } - Message msg = Message.obtain(); - msg.what = WHAT_START; - msg.obj = !isNull; - - getHandler().sendMessage(msg); - } - }; - ThreadPoolManager.getsInstance().execute(runnable); - } - - - @Override - protected void onDestroy() { - super.onDestroy(); - EventBus.getDefault().post(new UpdateDataEvent()); - } - - @Override - protected void handleMessage(Message msg) { - super.handleMessage(msg); - switch (msg.what) { - case WHAT_START: - AlertDialog.Builder builder = new AlertDialog.Builder(this); - if ((Boolean) msg.obj) { - builder.setTitle("保存成功") - .setMessage("配置保存成功啦") - .setNegativeButton("退出", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }) - .setPositiveButton("确定", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - } - }); - } else { - builder.setTitle("保存失败") - .setMessage("请输入必填项\n所有输入框均必填\uD83E\uDD2A\n(Bus必须输入道路名称和道路ID)") - .setPositiveButton("确认", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - } - }); - } - AlertDialog dialog = builder.show(); -// dialog.setCancelable(false); -// dialog.setCanceledOnTouchOutside(false); - break; - case WHAT_UPDATE_SHOW: - if (lonText != null) - lonText.setText("Lon:" + lon); - if (latText != null) - latText.setText("Lat:" + lat); - break; - - } - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.menu_create, menu); - MenuItem itemDel = menu.findItem(R.id.action_del_item); - CheckBox del = itemDel.getActionView().findViewById(R.id.action_del); - del.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (autopilotConfigAdapter != null) { - autopilotConfigAdapter.setShowDel(isChecked); - } - } - }); - - MenuItem itemLocation = menu.findItem(R.id.action_location_item); - Button btn_lon = itemLocation.getActionView().findViewById(R.id.btn_lon); - Button btn_lat = itemLocation.getActionView().findViewById(R.id.btn_lat); - lonText = itemLocation.getActionView().findViewById(R.id.lon); - latText = itemLocation.getActionView().findViewById(R.id.lat); - btn_lon.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (lon != -1) { - findEditText(lon); - } - } - }); - btn_lat.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (lat != -1) { - findEditText(lat); - } - } - }); - return true; - } - - private void findEditText(double value) { - View view = getWindow().getDecorView().findFocus(); - if (view instanceof EditText) { - EditText editText = ((EditText) view); - String content = String.valueOf(value); - editText.setText(content); - editText.setSelection(content.length()); - } - } - - private OnAdasClientListener listener = new OnAdasClientListener() { - @Override - public void onRefresh() { - List listGnssInfo = DataDistribution.getInstance().listGnssInfo; - if (!listGnssInfo.isEmpty()) { - String info = listGnssInfo.get(listGnssInfo.size() - 1).data; - lon = Double.parseDouble(info.split("longitude: ")[1].split("\n")[0]); - lat = Double.parseDouble(info.split("latitude: ")[1].split("\n")[0]); - getHandler().sendEmptyMessage(WHAT_UPDATE_SHOW); - } - } - }; - -// @Subscribe(threadMode = ThreadMode.MAIN) -// public void onLocationEvent(GnssInfo info) { -// if (info != null && info.bean != null) { -// lon = info.bean.getLongitude(); -// lat = info.bean.getLatitude(); -// if (lonText != null) -// lonText.setText("Lon:" + lon); -// if (latText != null) -// latText.setText("Lat:" + lat); -// } -// } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - switch (id) { - case R.id.action_settings_item: - autopilotConfigAdapter.add(); -// linearLayoutManager.scrollToPositionWithOffset(dbAdapter.getItemCount() - 1, 0); - recyclerView.scrollToPosition(autopilotConfigAdapter.getItemCount() - 1); - return true; - case R.id.action_save_item: - onSave(); - return true; - case android.R.id.home: - onBack(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private void onBack() { - finish(); -// new AlertDialog.Builder(this) -// .setTitle("退出提示") -// .setMessage("是否配置页面") -// .setNegativeButton("取消", -// new DialogInterface.OnClickListener() { -// @Override -// public void onClick(DialogInterface dialog, int which) { -// dialog.cancel(); -// } -// }) -// .setPositiveButton("确认", -// new DialogInterface.OnClickListener() { -// public void onClick(DialogInterface dialog, int whichButton) { -// finish(); -// } -// }).show(); - } - - //返回键处理 - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - onBack(); - return true; - } else { - return super.onKeyDown(keyCode, event); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/BackCameraFloatWindow.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/BackCameraFloatWindow.java deleted file mode 100644 index 050aaafe93..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/BackCameraFloatWindow.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.app.Activity; -import android.graphics.PixelFormat; -import android.os.Handler; -import android.os.Message; -import android.util.DisplayMetrics; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.WindowManager; -import android.widget.ImageView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.ui.widget.SweeperVideoView; -import com.zhidao.adas.client.utils.SysBarUtil; -import com.zhidao.adas.client.utils.image.ImageLoaderManager; - -import java.lang.ref.WeakReference; - -/** - * 摄像头数据展示 - * - * @author xuxinchao - * @description - * @since: 2022/4/20 - */ -public class BackCameraFloatWindow implements View.OnTouchListener { - - private final Activity mContext; - private WindowManager.LayoutParams mWindowParams; - private WindowManager mWindowManager; - - private View mFloatLayout; - private float mInViewX; - private float mInViewY; - private float mDownInScreenX; - private float mDownInScreenY; - private float mInScreenX; - private float mInScreenY; - private SweeperVideoView image_view; - private final boolean isFullScreen; - private final OnBackCameraFloatWindowListener onBackCameraFloatWindowListener; - - public interface OnBackCameraFloatWindowListener { - void onClose(); - } - - public BackCameraFloatWindow(Activity context, boolean isFullScreen, OnBackCameraFloatWindowListener onBackCameraFloatWindowListener) { - this.mContext = context; - this.isFullScreen = isFullScreen; - this.onBackCameraFloatWindowListener = onBackCameraFloatWindowListener; - initHandler(); - initFloatWindow(); - } - - - private void initFloatWindow() { - LayoutInflater inflater = LayoutInflater.from(mContext); - if (inflater == null) - return; - mFloatLayout = (View) inflater.inflate(R.layout.layout_back_camera, null); - image_view = mFloatLayout.findViewById(R.id.image_view); - ImageView btn_close = mFloatLayout.findViewById(R.id.btn_close); - btn_close.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (onBackCameraFloatWindowListener != null) { - onBackCameraFloatWindowListener.onClose(); - } - } - }); - mFloatLayout.setOnTouchListener(this); - mWindowParams = new WindowManager.LayoutParams(); -// mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); -// if (Build.VERSION.SDK_INT >= 26) {//8.0新特性 -// mWindowParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; -// }else{ -// mWindowParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; -// } - - mWindowManager = mContext.getWindowManager(); - - mWindowParams.format = PixelFormat.RGBA_8888; - mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - mWindowParams.gravity = Gravity.START | Gravity.TOP; - if (isFullScreen) { - mWindowParams.width = WindowManager.LayoutParams.MATCH_PARENT; - mWindowParams.height = WindowManager.LayoutParams.MATCH_PARENT; - } else { - mWindowParams.width = 1280; - mWindowParams.height = 720; - } -// mWindowParams.alpha = 0.9F; - } - - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - return floatLayoutTouch(motionEvent); - } - - private boolean floatLayoutTouch(MotionEvent motionEvent) { - switch (motionEvent.getAction()) { - case MotionEvent.ACTION_DOWN: - // 获取相对View的坐标,即以此View左上角为原点 - mInViewX = motionEvent.getX(); - mInViewY = motionEvent.getY(); - // 获取相对屏幕的坐标,即以屏幕左上角为原点 - mDownInScreenX = motionEvent.getRawX(); - mDownInScreenY = motionEvent.getRawY() - SysBarUtil.getSysBarHeight(mContext); - mInScreenX = motionEvent.getRawX(); - mInScreenY = motionEvent.getRawY() - SysBarUtil.getSysBarHeight(mContext); - break; - case MotionEvent.ACTION_MOVE: - // 更新浮动窗口位置参数 - mInScreenX = motionEvent.getRawX(); - mInScreenY = motionEvent.getRawY() - SysBarUtil.getSysBarHeight(mContext); - mWindowParams.x = (int) (mInScreenX - mInViewX); - mWindowParams.y = (int) (mInScreenY - mInViewY); - // 手指移动的时候更新小悬浮窗的位置 - mWindowManager.updateViewLayout(mFloatLayout, mWindowParams); - break; - case MotionEvent.ACTION_UP: - // 如果手指离开屏幕时,xDownInScreen和xInScreen相等,且yDownInScreen和yInScreen相等,则视为触发了单击事件。 - if (mDownInScreenX == mInScreenX && mDownInScreenY == mInScreenY) { - - } - break; - } - return true; - } - - public void showFloatWindow(float y) { - if (mFloatLayout.getParent() == null) { - DisplayMetrics metrics = new DisplayMetrics(); - // 默认固定位置,靠屏幕右边缘的中间 - mWindowManager.getDefaultDisplay().getMetrics(metrics); - mWindowParams.x = metrics.widthPixels; - mWindowParams.y = (int) (y); - mWindowManager.addView(mFloatLayout, mWindowParams); - } - } - - - public void hideFloatWindow() { - if (mFloatLayout.getParent() != null) - mWindowManager.removeView(mFloatLayout); - } - - public void setFloatLayoutAlpha(boolean alpha) { - if (alpha) - mFloatLayout.setAlpha((float) 0.5); - else - mFloatLayout.setAlpha(1); - } - - - public void onBackCameraVideo(byte[] data) { - Message msg = Message.obtain(); - msg.obj = data; - msg.what = 1; - getHandler().sendMessage(msg); - - - } - - - private BaseHandler mBaseHandler; - - - /** - * 初始化一个Handler,如果需要使用Handler,先调用此方法, - * 然后可以使用postRunnable(Runnable runnable), - * sendMessage在handleMessage(Message msg)中接收msg - */ - public void initHandler() { - mBaseHandler = new BaseHandler(this); - } - - /** - * 返回Handler,在此之前确定已经调用initHandler() - * - * @return Handler - */ - public Handler getHandler() { - return mBaseHandler; - } - - - /** - * 同Handler 的 handleMessage, - * getHandler.sendMessage,发送的Message在此接收 - * 在此之前确定已经调用initHandler() - * - * @param msg - */ - protected void handleMessage(Message msg) { - switch (msg.what) { - case 1: - image_view.onSweeperFutianBackCameraVideo((byte[]) msg.obj); - break; - } - } - - - protected static class BaseHandler extends Handler { - private final WeakReference mObjects; - - public BaseHandler(BackCameraFloatWindow mPresenter) { - mObjects = new WeakReference(mPresenter); - } - - @Override - public void handleMessage(Message msg) { - BackCameraFloatWindow mPresenter = mObjects.get(); - if (mPresenter != null) - mPresenter.handleMessage(msg); - } - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/FloatWindow.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/FloatWindow.java deleted file mode 100644 index 9724db97c4..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/FloatWindow.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.app.Activity; -import android.graphics.PixelFormat; -import android.util.DisplayMetrics; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.WindowManager; - -import androidx.recyclerview.widget.RecyclerView; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.ConnectStatusAdapter; -import com.zhidao.adas.client.bean.IPCConnectState; -import com.zhidao.adas.client.utils.MyLinearLayoutManager; -import com.zhidao.adas.client.utils.SysBarUtil; - -import java.util.List; - -/** - * @author xuxinchao - * @description - * @since: 2022/4/20 - */ -public class FloatWindow implements View.OnTouchListener { - - private final Activity mContext; - private WindowManager.LayoutParams mWindowParams; - private WindowManager mWindowManager; - - private View mFloatLayout; - private float mInViewX; - private float mInViewY; - private float mDownInScreenX; - private float mDownInScreenY; - private float mInScreenX; - private float mInScreenY; - private RecyclerView rv_status; - private ConnectStatusAdapter adapter; - private List list; - - public FloatWindow(Activity context, List list) { - this.mContext = context; - this.list = list; - initFloatWindow(); - } - - public void refreshView() { - if (adapter != null) { - adapter.refreshView(); - } - } - - private void initRV() { - //创建默认的线性LayoutManager 横向的GridLayoutManager - MyLinearLayoutManager linearLayoutManager = new MyLinearLayoutManager(mContext); -// linearLayoutManager.setStackFromEnd(true);//列表再底部开始展示,反转后由上面开始展示 -// linearLayoutManager.setReverseLayout(true);//列表翻转 - rv_status.setLayoutManager(linearLayoutManager); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - rv_status.setHasFixedSize(false); - rv_status.setNestedScrollingEnabled(false); - adapter = new ConnectStatusAdapter(); - adapter.setHasStableIds(true); - rv_status.setAdapter(adapter); - adapter.setData(list); - } - - private void initFloatWindow() { - LayoutInflater inflater = LayoutInflater.from(mContext); - if (inflater == null) - return; - mFloatLayout = (View) inflater.inflate(R.layout.layout_float, null); - rv_status = mFloatLayout.findViewById(R.id.rv_status); - mFloatLayout.setOnTouchListener(this); - initRV(); - mWindowParams = new WindowManager.LayoutParams(); -// mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); -// if (Build.VERSION.SDK_INT >= 26) {//8.0新特性 -// mWindowParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; -// }else{ -// mWindowParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; -// } - - mWindowManager = mContext.getWindowManager(); - - mWindowParams.format = PixelFormat.RGBA_8888; - mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - mWindowParams.gravity = Gravity.START | Gravity.TOP; - mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT; - mWindowParams.alpha = 0.9F; - } - - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - return floatLayoutTouch(motionEvent); - } - - private boolean floatLayoutTouch(MotionEvent motionEvent) { - switch (motionEvent.getAction()) { - case MotionEvent.ACTION_DOWN: - // 获取相对View的坐标,即以此View左上角为原点 - mInViewX = motionEvent.getX(); - mInViewY = motionEvent.getY(); - // 获取相对屏幕的坐标,即以屏幕左上角为原点 - mDownInScreenX = motionEvent.getRawX(); - mDownInScreenY = motionEvent.getRawY() - SysBarUtil.getSysBarHeight(mContext); - mInScreenX = motionEvent.getRawX(); - mInScreenY = motionEvent.getRawY() - SysBarUtil.getSysBarHeight(mContext); - break; - case MotionEvent.ACTION_MOVE: - // 更新浮动窗口位置参数 - mInScreenX = motionEvent.getRawX(); - mInScreenY = motionEvent.getRawY() - SysBarUtil.getSysBarHeight(mContext); - mWindowParams.x = (int) (mInScreenX - mInViewX); - mWindowParams.y = (int) (mInScreenY - mInViewY); - // 手指移动的时候更新小悬浮窗的位置 - mWindowManager.updateViewLayout(mFloatLayout, mWindowParams); - break; - case MotionEvent.ACTION_UP: - // 如果手指离开屏幕时,xDownInScreen和xInScreen相等,且yDownInScreen和yInScreen相等,则视为触发了单击事件。 - if (mDownInScreenX == mInScreenX && mDownInScreenY == mInScreenY) { - - } - break; - } - return true; - } - - public void showFloatWindow(float y) { - if (mFloatLayout.getParent() == null) { - DisplayMetrics metrics = new DisplayMetrics(); - // 默认固定位置,靠屏幕右边缘的中间 - mWindowManager.getDefaultDisplay().getMetrics(metrics); - mWindowParams.x = metrics.widthPixels; - mWindowParams.y = (int) (y); - mWindowManager.addView(mFloatLayout, mWindowParams); - } - } - - - public void hideFloatWindow() { - if (mFloatLayout.getParent() != null) - mWindowManager.removeView(mFloatLayout); - } - - public void setFloatLayoutAlpha(boolean alpha) { - if (alpha) - mFloatLayout.setAlpha((float) 0.5); - else - mFloatLayout.setAlpha(1); - } - - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/HelpActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/HelpActivity.java deleted file mode 100644 index e9c5cf6607..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/HelpActivity.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.os.Bundle; -import android.view.View; - -import androidx.annotation.Nullable; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.base.BaseActivity; - -public class HelpActivity extends BaseActivity { - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_help); - showToastCenter("点击屏幕任意位置,退出帮助页面"); - } - - public void onBack(View view) { - finish(); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/HorizontalDividerItemDecoration.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/HorizontalDividerItemDecoration.java deleted file mode 100644 index 932b4484e9..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/HorizontalDividerItemDecoration.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -package com.zhidao.adas.client.ui; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.util.Log; -import android.view.View; -import android.widget.LinearLayout; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -/** - * DividerItemDecoration is a {@link RecyclerView.ItemDecoration} that can be used as a divider - * between items of a {@link LinearLayoutManager}. It supports both {@link #HORIZONTAL} and - * {@link #VERTICAL} orientations. - * - *

- *     mDividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
- *             mLayoutManager.getOrientation());
- *     recyclerView.addItemDecoration(mDividerItemDecoration);
- * 
- */ -public class HorizontalDividerItemDecoration extends RecyclerView.ItemDecoration { - public static final int HORIZONTAL = LinearLayout.HORIZONTAL; - public static final int VERTICAL = LinearLayout.VERTICAL; - - private static final String TAG = "DividerItem"; - private static final int[] ATTRS = new int[]{android.R.attr.listDivider}; - - private Drawable mDivider; - - - private final Rect mBounds = new Rect(); - - /** - * Creates a divider {@link RecyclerView.ItemDecoration} that can be used with a - * {@link LinearLayoutManager}. - * - * @param context Current context, it will be used to access resources. - */ - public HorizontalDividerItemDecoration(Context context) { - final TypedArray a = context.obtainStyledAttributes(ATTRS); - mDivider = a.getDrawable(0); - if (mDivider == null) { - Log.w(TAG, "@android:attr/listDivider was not set in the theme used for this " - + "DividerItemDecoration. Please set that attribute all call setDrawable()"); - } - a.recycle(); - } - - - /** - * Sets the {@link Drawable} for this divider. - * - * @param drawable Drawable that should be used as a divider. - */ - public void setDrawable(@NonNull Drawable drawable) { - if (drawable == null) { - throw new IllegalArgumentException("Drawable cannot be null."); - } - mDivider = drawable; - } - - /** - * @return the {@link Drawable} for this divider. - */ - @Nullable - public Drawable getDrawable() { - return mDivider; - } - - @Override - public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { - if (parent.getLayoutManager() == null || mDivider == null) { - return; - } - drawHorizontal(c, parent); - } - - - private void drawHorizontal(Canvas canvas, RecyclerView parent) { - canvas.save(); - final int top; - final int bottom; - //noinspection AndroidLintNewApi - NewApi lint fails to handle overrides. - if (parent.getClipToPadding()) { - top = parent.getPaddingTop(); - bottom = parent.getHeight() - parent.getPaddingBottom(); - canvas.clipRect(parent.getPaddingLeft(), top, - parent.getWidth() - parent.getPaddingRight(), bottom); - } else { - top = 0; - bottom = parent.getHeight(); - } - - final int childCount = parent.getChildCount(); - for (int i = 0; i < childCount; ) { - final View child = parent.getChildAt(i); - parent.getLayoutManager().getDecoratedBoundsWithMargins(child, mBounds); - final int right = mBounds.right + Math.round(child.getTranslationX()); - final int left = right - mDivider.getIntrinsicWidth(); - mDivider.setBounds(left, top, right, bottom); - mDivider.draw(canvas); - i += 2; - } - canvas.restore(); - } - - @Override - public void getItemOffsets(Rect outRect, View view, RecyclerView parent, - RecyclerView.State state) { - if (mDivider == null) { - outRect.set(0, 0, 0, 0); - return; - } - outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java deleted file mode 100644 index 75c2f40d13..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java +++ /dev/null @@ -1,275 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.os.Bundle; -import android.os.Message; -import android.text.TextUtils; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.SimpleItemAnimator; - -import com.zhidao.adas.client.DataDistribution; -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.DataShowAdapter; -import com.zhidao.adas.client.base.BaseFragment; -import com.zhidao.adas.client.utils.Constants; -import com.zhidao.adas.client.utils.MyLinearLayoutManager; - -/** - * @author song kenan - * @des - * @date 2021/8/16 - */ -public class InfoFragment extends BaseFragment { - - private DataShowAdapter adapter; - private TextView tvTitle; - private String subTitle; - private BackCameraFloatWindow backCameraFloatWindow; - - public InfoFragment() { - } - - public InfoFragment(String title) { - super(title); - } - - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_info, container, false); - initView(view); - return view; - } - - @Override - public void onStart() { - super.onStart(); - setData(); - } - - private View layout_update; - - public void setTitle(String title) { - if (tvTitle != null) { - tvTitle.setText(title); - } else { - subTitle = title; - } - } - - @Override - public void onPause() { - super.onPause(); - hideFloatWindow(); - } - - @Override - public void onHiddenChanged(boolean hidden) { - super.onHiddenChanged(hidden); - if (hidden) { - hideFloatWindow(); - } - } - - private void hideFloatWindow() { - if (backCameraFloatWindow != null) { - backCameraFloatWindow.hideFloatWindow(); - backCameraFloatWindow = null; - } - } - - private void initView(View view) { - tvTitle = view.findViewById(R.id.tv_title); - RecyclerView rvInfo = view.findViewById(R.id.rv_info); - layout_update = view.findViewById(R.id.layout_update); - if (TextUtils.isEmpty(subTitle)) { - tvTitle.setText(title); - } else { - tvTitle.setText(subTitle); - subTitle = null; - } - tvTitle.setGravity(Gravity.CENTER); - if (Constants.TITLE.RECEIVE_BACK_CAMERA_VIDEO.equals(title)) { - Button button_full_screen = view.findViewById(R.id.btn_render_full_screen); - Button button = view.findViewById(R.id.btn_render); - button.setVisibility(View.VISIBLE); - button_full_screen.setVisibility(View.VISIBLE); - button_full_screen.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - showBackCameraFloatWindow(button_full_screen, true); - } - }); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - showBackCameraFloatWindow(button, false); - } - }); - } - //创建默认的线性LayoutManager 横向的GridLayoutManager - MyLinearLayoutManager linearLayoutManager = new MyLinearLayoutManager(this.getContext()); -// linearLayoutManager.setStackFromEnd(true);//列表再底部开始展示,反转后由上面开始展示 -// linearLayoutManager.setReverseLayout(true);//列表翻转 - rvInfo.setLayoutManager(linearLayoutManager); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - rvInfo.setHasFixedSize(false); - rvInfo.setNestedScrollingEnabled(false); - //升级按钮 - Button btn1 = view.findViewById(R.id.btn1); - //升级按钮 - Button btn2 = view.findViewById(R.id.btn2); - btn1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { -// AdasManager.getInstance().sendBaseInfo(IPCUpgradeInfo.affirm()); - } - }); - btn2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { -// AdasManager.getInstance().sendBaseInfo(IPCUpgradeInfo.cancel()); - } - }); - - - RecyclerView.ItemAnimator itemAnimator = rvInfo.getItemAnimator(); - if (itemAnimator != null) { - itemAnimator.setAddDuration(0); - itemAnimator.setChangeDuration(0); - itemAnimator.setMoveDuration(0); - itemAnimator.setRemoveDuration(0); - ((SimpleItemAnimator) itemAnimator).setSupportsChangeAnimations(false); - } - adapter = new DataShowAdapter(); - adapter.setHasStableIds(true); - rvInfo.setAdapter(adapter); - } - - private void showBackCameraFloatWindow(View v, boolean isFullScreen) { - if (isFullScreen) { - hideFloatWindow(); - } - if (backCameraFloatWindow == null) { - backCameraFloatWindow = new BackCameraFloatWindow(getActivity(), isFullScreen, new BackCameraFloatWindow.OnBackCameraFloatWindowListener() { - @Override - public void onClose() { - hideFloatWindow(); - } - }); - final int[] location = new int[2]; - v.getLocationOnScreen(location); - backCameraFloatWindow.showFloatWindow(location[1]); - } else { - hideFloatWindow(); - } - } - - private void setData() { - if (Constants.TITLE.RECEIVE_GNSS_INFO.equals(title)) { - adapter.setData(DataDistribution.getInstance().listGnssInfo); - } else if (Constants.TITLE.RECEIVE_CHASSIS_STATES.equals(title)) { - adapter.setData(DataDistribution.getInstance().listChassisStates); - } else if (Constants.TITLE.RECEIVE_TRACKED_OBJECTS.equals(title)) { - adapter.setData(DataDistribution.getInstance().listTrackedObjects); - } else if (Constants.TITLE.RECEIVE_AUTOPILOT_STATE.equals(title)) { - adapter.setData(DataDistribution.getInstance().listAutopilotState); - } else if (Constants.TITLE.RECEIVE_WARN.equals(title)) { - adapter.setData(DataDistribution.getInstance().listWarn); - } else if (Constants.TITLE.RECEIVE_TRAJECTORY.equals(title)) { - adapter.setData(DataDistribution.getInstance().listTrajectory); - } else if (Constants.TITLE.RECEIVE_ARRIVAL_NOTIFICATION.equals(title)) { - adapter.setData(DataDistribution.getInstance().listArrivalNotification); - } else if (Constants.TITLE.RECEIVE_STATUS_QUERY_RESP.equals(title)) { - adapter.setData(DataDistribution.getInstance().listStatusInfo); - } else if (Constants.TITLE.RECEIVE_OBU_SPAT.equals(title)) { - adapter.setData(DataDistribution.getInstance().listObuSpat); - } else if (Constants.TITLE.RECEIVE_OBU_RSI.equals(title)) { - adapter.setData(DataDistribution.getInstance().listObuRsi); - } else if (Constants.TITLE.RECEIVE_OBU_RSM.equals(title)) { - adapter.setData(DataDistribution.getInstance().listObuRsm); - } else if (Constants.TITLE.RECEIVE_OBU_MAP.equals(title)) { - adapter.setData(DataDistribution.getInstance().listObuMap); - } else if (Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP.equals(title)) { - adapter.setData(DataDistribution.getInstance().listRecordDataConfig); - } else if (Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP.equals(title)) { - adapter.setData(DataDistribution.getInstance().listGlobalPathResp); - } else if (Constants.TITLE.RECEIVE_RECORD_RESULT.equals(title)) { - adapter.setData(DataDistribution.getInstance().listRecordPanel); - } else if (Constants.TITLE.RECEIVE_BAG_MANAGER_CMD.equals(title)) { - adapter.setData(DataDistribution.getInstance().listBagManagerCmd); - } else if (Constants.TITLE.RECEIVE_REPORT_MESSAGE.equals(title)) { - adapter.setData(DataDistribution.getInstance().listMogoReportMessage); - } else if (Constants.TITLE.RECEIVE_PERCEPTION_TRAFFIC_LIGHT.equals(title)) { - adapter.setData(DataDistribution.getInstance().listPerceptionTrafficLight); - } else if (Constants.TITLE.RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY.equals(title)) { - adapter.setData(DataDistribution.getInstance().listPredictionObstacleTrajectory); - } else if (Constants.TITLE.RECEIVE_POINT_CLOUD_ORIGINAL.equals(title)) { - adapter.setData(DataDistribution.getInstance().listOriginalPointCloud); - } else if (Constants.TITLE.RECEIVE_PLANNING_OBJECTS.equals(title)) { - adapter.setData(DataDistribution.getInstance().listPlanningObjects); - } else if (Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE.equals(title)) { - adapter.setData(DataDistribution.getInstance().listPlanningDecisionState); - } else if (Constants.TITLE.RECEIVE_FUNCTION_STATES.equals(title)) { - adapter.setData(DataDistribution.getInstance().listFSMFunctionStates); - } else if (Constants.TITLE.RECEIVE_BACK_CAMERA_VIDEO.equals(title)) { - adapter.setData(DataDistribution.getInstance().listBackCameraVideo); - } else if (Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA.equals(title)) { - adapter.setData(DataDistribution.getInstance().listRoboSweeperTaskIndex); - } else if (Constants.TITLE.RECEIVE_V2N_CONGESTION_EVENT.equals(title)) { - adapter.setData(DataDistribution.getInstance().listV2nCongestionEvent); - } else if (Constants.TITLE.RECEIVE_V2N_GLOBAL_PATH_EVENTS.equals(title)) { - adapter.setData(DataDistribution.getInstance().listV2nGlobalPathEvents); - }else if (Constants.TITLE.RECEIVE_GET_PARAM_RESP.equals(title)) { - adapter.setData(DataDistribution.getInstance().listGetParamResp); - } else { - adapter.setData(DataDistribution.getInstance().listErrorData); - } - } - - private boolean isRefreshTitle = false; - - @Override - protected void handleMessage(Message msg) { - super.handleMessage(msg); - switch (msg.what) { - case WHAT_REFRESH_TRAFFIC_LIGHTS: - //感知信号灯显示 - if (msg.obj == null) { - if (isRefreshTitle) { - tvTitle.setText(title); - isRefreshTitle = false; - } - } else { - isRefreshTitle = true; - tvTitle.setText((String) msg.obj); - } - onRefreshView(); - break; - } - } - - @Override - protected void onRefreshView() { - if (adapter != null) { - adapter.refreshView(); - } - } - - public boolean onBackCameraVideo(byte[] data) { - if (backCameraFloatWindow != null) { - backCameraFloatWindow.onBackCameraVideo(data); - return true; - } - return false; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java deleted file mode 100644 index 3541465902..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ /dev/null @@ -1,1849 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.Manifest; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.res.Configuration; -import android.net.Uri; -import android.net.wifi.WifiManager; -import android.os.Build; -import android.os.Bundle; -import android.os.Message; -import android.os.PowerManager; -import android.os.SystemClock; -import android.provider.Settings; -import android.text.Editable; -import android.text.Html; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.util.Log; -import android.util.Pair; -import android.view.View; -import android.view.WindowManager; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.ListPopupWindow; -import android.widget.PopupWindow; -import android.widget.RadioButton; -import android.widget.RadioGroup; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.activity.result.ActivityResult; -import androidx.activity.result.ActivityResultCallback; -import androidx.activity.result.ActivityResultLauncher; -import androidx.activity.result.contract.ActivityResultContracts; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.widget.AppCompatButton; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.SimpleItemAnimator; - -import com.google.protobuf.TextFormat; -import com.mogo.support.obu.ObuScene; -import com.mogo.support.obu.constants.MogoObuConstants; -import com.zhidao.adas.client.App; -import com.zhidao.adas.client.BuildConfig; -import com.zhidao.adas.client.DataDistribution; -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.InfoTitleAdapter; -import com.zhidao.adas.client.base.BaseActivity; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.base.BaseFragment; -import com.zhidao.adas.client.bean.AdasParamReceiveData; -import com.zhidao.adas.client.bean.ErrorData; -import com.zhidao.adas.client.bean.IPCConnectState; -import com.zhidao.adas.client.bean.ObuMap; -import com.zhidao.adas.client.bean.ObuRsi; -import com.zhidao.adas.client.bean.ObuRsm; -import com.zhidao.adas.client.bean.ObuSpat; -import com.zhidao.adas.client.bean.PerceptionTrafficLight; -import com.zhidao.adas.client.bean.ReceiveBytesData; -import com.zhidao.adas.client.bean.ReceiveData; -import com.zhidao.adas.client.bean.SendCmd; -import com.zhidao.adas.client.bean.SpecialVehicleBean; -import com.zhidao.adas.client.bean.V2nGlobalPathEventsReceiveData; -import com.zhidao.adas.client.log.ConnectStatusSave; -import com.zhidao.adas.client.log.LogSave; -import com.zhidao.adas.client.other.permission.BackgrounderPermission; -import com.zhidao.adas.client.other.permission.OnAdasPermissionListener; -import com.zhidao.adas.client.other.router.RouterActivity; -import com.zhidao.adas.client.ui.special.SpecialVehicleDialog; -import com.zhidao.adas.client.utils.Constants; -import com.zhidao.adas.client.utils.PermissionUtil; -import com.zhidao.adas.client.utils.PreferencesUtils; -import com.zhidao.support.adas.high.AdasManager; -import com.zhidao.support.adas.high.AdasOptions; -import com.zhidao.support.adas.high.OnAdasConnectStatusListener; -import com.zhidao.support.adas.high.OnAdasListener; -import com.zhidao.support.adas.high.bean.AdasParam; -import com.zhidao.support.adas.high.bean.VersionCompatibility; -import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS; -import com.zhidao.support.adas.high.common.CupidLogUtils; -import com.zhidao.support.adas.high.common.ProtocolStatus; -import com.zhidao.support.adas.high.common.ReceiveTimeoutManager; -import com.zhidao.support.adas.high.common.RegexUtils; -import com.zhjt.mogo.adas.data.bean.AutopilotStatistics; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.net.Inet4Address; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.Enumeration; -import java.util.List; -import java.util.Locale; -import java.util.Set; -import java.util.concurrent.ScheduledExecutorService; - -import bag_manager.BagManagerOuterClass; -import chassis.ChassisStatesOuterClass; -import chassis.VehicleStateOuterClass; -import function_state_management.FunctionStates; -import mogo.telematics.pad.MessagePad; -import mogo.v2x.MogoV2X; -import mogo.v2x.RoadOverviewEvents; -import mogo_msg.MogoReportMsg; -import perception.TrafficLightOuterClass; -import planning.RoboSweeperTaskIndexOuterClass; -import prediction.Prediction; -import record_cache.RecordPanelOuterClass; -import system_master.SystemStatusInfo; - -public class MainActivity extends BaseActivity implements OnAdasListener, OnAdasConnectStatusListener, BaseAdapter.OnItemClickListener { - private final static String TAG = MainActivity.class.getSimpleName(); - private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.getDefault()); - private static final int WHAT_IPC_IP = 0x00; - private static final int WHAT_DRIVER_IP = 0x01; - private static final int WHAT_IPC_CONNECT_STATE = 0x02; - private static final int WHAT_RECEIVE_ERROR_DATA_SHOW = 0x03; - private static final int WHAT_RECEIVE_ERROR_DATA_HINT = 0x04; - private static final int WHAT_RECEIVE_ERROR_DATA_STOP = 0x05; - private EditText etIp; - private ImageView role; - private ImageView tvIp; - private TextView title; - private TextView ipcIp; - private TextView background; - private TextView localIp; - private View line1; - private RadioGroup connectionType; - private AppCompatButton connect; - private AppCompatButton disconnect; - private RadioButton fixation; - private RadioButton assign; - private CheckBox cb_print; - private CheckBox cb_save; - private CheckBox cb_timeout; - private CheckBox cb_cut_down; - private RecyclerView infoBtn; - private RecyclerView infoFragment; - private TextView tvConnectState; - private RadioGroup rg_show_log; - private ScheduledExecutorService mExecutorServiceConfigTimer; - private PingFloatWindow pingFloatWindow; - - private final List titleFragmentData = new ArrayList<>(); - private final List titleBtnData = new ArrayList<>(); - private final List connectStatusList = new ArrayList<>(); - private InfoTitleAdapter fragmentAdapter; - private BaseFragment fromFragment; - private FragmentManager manager; - private String ftpTime; - private boolean isPad; - private long recordKey; - private String recordFileName; - private int connectStatus; - private AutoPilotModeDialog autoPilotModeDialog; - private SpecialVehicleDialog specialVehicleDialog; - private ListPopupWindow listPopupWindow; - private FloatWindow floatWindow; - private View include_title; - private List specialVehicleBeanList;//特种车辆 - private long errorDataUpdateTime = 0; -// @Override -// protected void onStart() { -// super.onStart(); -// LogSave.getInstance().start(); -// } -// -// @Override -// protected void onStop() { -// super.onStop(); -// //需要将数据换发到别的页面 -// LogSave.getInstance().stop(); -// } - - PowerManager.WakeLock wakeLock; - WifiManager.WifiLock wifiLock; - - private ActivityResultLauncher intentActivityResultLauncher; - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - initHandler(); - ConnectStatusSave.getInstance().start(); - isPad = isPad(this); - if (!isPad) - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); - initView(); - showFragment(Constants.TITLE.RECEIVE_GNSS_INFO); - initAdas(); - connectStatus = AdasManager.getInstance().getIpcConnectionStatus(); - onUpdateConnectStateView(); - showIPCIP(); - canDrawOverlays(); - showHint(); - initRegisterForActivityResult(); - checkSavePermission(); -// PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); -// wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); -// wakeLock.acquire(); -// int wifiLockType = WifiManager.WIFI_MODE_FULL; -// try { -// wifiLockType = WifiManager.class.getField("WIFI_MODE_FULL_HIGH_PERF").getInt(null); -// } catch (Exception e) { -// // 我们必须运行在一个pre-Honeycomb设备上。 -// Log.w(TAG, "无法获得高性能wifi锁."); -// } -// WifiManager wifiManager = WifiManager.class.cast(getApplicationContext().getSystemService(WIFI_SERVICE)); -// wifiLock = wifiManager.createWifiLock(wifiLockType, TAG); -// wifiLock.acquire(); - } - - private void initRegisterForActivityResult() { - intentActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { - @Override - public void onActivityResult(ActivityResult result) { - checkSavePermission(); -// Intent data = result.getData(); -// int resultCode = result.getResultCode(); - //RESULT_OK -// Log.i("dddd", "resultCode=" + resultCode); - } - }); - } - - /** - * 权限检查 - */ - private void checkSavePermission() { - //权限申请 - String[] pgList = new String[]{Manifest.permission_group.STORAGE}; - PermissionUtil.requestByGroupName(this, pgList, 10000, permissionsListener); - } - - // 跳转到当前应用的设置界面 - private void goToAppSetting() { - Uri uri = Uri.fromParts("package", getPackageName(), null); - Intent intent = new Intent(); - intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); - intent.setData(uri); - intentActivityResultLauncher.launch(intent); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - PermissionUtil.onRequestPermissionsResult(this, permissions, grantResults, permissionsListener, false); - } - - //权限申请回调 - private final PermissionUtil.OnPermissionsListener permissionsListener = new PermissionUtil.OnPermissionsListener() { - @Override - public void onPermissionsOwned() { - - } - - @Override - public void onPermissionsForbidden(String[] permissions, int[] grantResults, ArrayList pmList) { - Set nameSet = PermissionUtil.getPermissionsNameByChinese(pmList.toArray(new String[0])); - if (nameSet != null && nameSet.size() > 0) { - AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) - .setTitle("警告") - .setMessage("请前往设置中手动授予" + nameSet.toString() + "权限,否则功能无法正常运行!") - .setNegativeButton("退出", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }) - .setPositiveButton("去设置", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - goToAppSetting(); - } - }) - .create(); - dialog.setCancelable(false); - dialog.setCanceledOnTouchOutside(false); - dialog.show(); - } - } - - @Override - public void onPermissionsDenied(String[] permissions, int[] grantResults, ArrayList pmList) { - Set nameSet = PermissionUtil.getPermissionsNameByChinese(pmList.toArray(new String[0])); - if (nameSet != null && nameSet.size() > 0) { - //重新请求权限 - AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) - .setTitle("提示") - .setMessage(nameSet.toString() + "权限为应用必要权限,请授权") - .setPositiveButton("确定", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String[] sList = pmList.toArray(new String[0]); - //重新申请权限,通过权限名的方式申请多组权限 - PermissionUtil.requestByPermissionName(MainActivity.this, sList, 10000, permissionsListener); - } - }) - .create(); - dialog.setCancelable(false); - dialog.setCanceledOnTouchOutside(false); - dialog.show(); - } - } - - @Override - public void onPermissionsSucceed() { - } - }; - - private void showHint() { - boolean isShowHint = PreferencesUtils.getBoolean(this, "show_hint", true); - if (isShowHint) { - new AlertDialog.Builder(this) - .setTitle("警告") - .setMessage("本应用运行时会影响鹰眼司机、乘客端的连接。\n使用完成后请彻底杀掉本应用并重启鹰眼") - .setNegativeButton("不再提示", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - PreferencesUtils.putBoolean(MainActivity.this, "show_hint", false); - } - }) - .setPositiveButton("知道了", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - } - }).show(); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - AdasManager.getInstance().setOnAdasListener(null); - AdasManager.getInstance().disconnect(); - if (mExecutorServiceConfigTimer != null) { - mExecutorServiceConfigTimer.shutdownNow(); - } - DataDistribution.getInstance().stop(); - if (floatWindow != null) { - floatWindow.hideFloatWindow(); - floatWindow = null; - } - ConnectStatusSave.getInstance().stop(); - // 释放唤醒锁, 如果没有其它唤醒锁存在, 设备会很快进入休眠状态 - if (wakeLock != null) - wakeLock.release(); - if (wifiLock != null) - wifiLock.release(); - if (autoPilotModeDialog != null && autoPilotModeDialog.isShowing()) { - autoPilotModeDialog.dismiss(); - autoPilotModeDialog = null; - } - if (specialVehicleDialog != null && specialVehicleDialog.isShowing()) { - specialVehicleDialog.dismiss(); - specialVehicleDialog = null; - } - } - - private void canDrawOverlays() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (!Settings.canDrawOverlays(this)) { - showToastCenter("当前无权限,请授权"); - startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()))); - } - } - } - - - private void connect(boolean isConnect) { - if (isConnect) { - switch (Constants.getIpcConnectionMode(this)) { - case AdasOptions.IPC_CONNECTION_MODE.FIXATION: - AdasManager.getInstance().getAdasOptions().setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(this)); - break; - case AdasOptions.IPC_CONNECTION_MODE.ASSIGN: - String ip = etIp.getText().toString().trim(); - if (TextUtils.isEmpty(ip)) { - Toast.makeText(this, "请输入指定IP", Toast.LENGTH_SHORT).show(); - return; - } - AdasManager.getInstance().getAdasOptions().setIpcAssignIP(ip); - break; - } - AdasManager.getInstance().getAdasOptions().setIpcConnectionMode(Constants.getIpcConnectionMode(this)); - AdasManager.getInstance().connect(); - } else - AdasManager.getInstance().disconnect(); - } - - - private void initView() { - ImageView btn_ping = findViewById(R.id.btn_ping); - include_title = findViewById(R.id.include_title); - etIp = findViewById(R.id.et_ip); - background = findViewById(R.id.background); - role = findViewById(R.id.role); - line1 = findViewById(R.id.line1); - connectionType = findViewById(R.id.connection_type); - tvIp = findViewById(R.id.tv_ip); - connect = findViewById(R.id.connect); - disconnect = findViewById(R.id.disconnect); - fixation = findViewById(R.id.fixation); - assign = findViewById(R.id.assign); - cb_print = findViewById(R.id.cb_print); - cb_save = findViewById(R.id.cb_save); - cb_timeout = findViewById(R.id.cb_timeout); - cb_cut_down = findViewById(R.id.cb_cut_down); - title = findViewById(R.id.title); - infoBtn = findViewById(R.id.info_btn); - infoFragment = findViewById(R.id.info_fragment); - tvConnectState = findViewById(R.id.tv_connect_state); - ipcIp = findViewById(R.id.ipc_ip); - localIp = findViewById(R.id.local_ip); - rg_show_log = findViewById(R.id.rg_show_log); - - findViewById(R.id.btn_router).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - RouterActivity.newInstance(MainActivity.this, false); - } - }); - - role.setSelected(BuildConfig.IS_CLIENT); - if (BuildConfig.IS_CLIENT) { - line1.setVisibility(View.GONE); - connectionType.setVisibility(View.GONE); - etIp.setVisibility(View.GONE); - tvIp.setVisibility(View.GONE); - connect.setVisibility(View.GONE); - disconnect.setVisibility(View.GONE); - cb_timeout.setVisibility(View.GONE); - AdasManager.getInstance().setEnableTimeoutDetection(false); - } - role.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - showToastCenter("我是" + (BuildConfig.IS_CLIENT ? "乘客端" : "司机端")); - } - }); - connect.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - connect(true); - } - }); - disconnect.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { -// MessagePad.Header header = MessagePad.Header.newBuilder() -// .setTimestamp(1.6523361438761907E9).build(); -// MogoPointCloudOuterClass.MogoPointCloud pointCloud = MogoPointCloudOuterClass.MogoPointCloud.newBuilder() -// .setSelfLongitude(112.57563687979261) -// .setSelfLatitude(26.828128487326854) -// .setSelfAltitude(52.89) -// .setSelfRoll(-0.00715584993317675) -// .setSelfPitch(0.008726646259971651) -// .setSelfYaw(0.4850269854068756) -// -// .addAddData(1F) -// .addAddData(2F) -// .addAddData(3F) -// .addAddData(4F) -// .addAddData(5F) -// .addAddData(6F) -// .addAddData(7F) -// .addAddData(8F) -// -// .addDelData(9F) -// .addDelData(10F) -// .addDelData(11F) -// .addDelData(12F) -// .addDelData(13F) -// .addDelData(14F) -// .addDelData(15F) -// .addDelData(16F) -// .addDelData(17F) -// .addDelData(18F) -// .addDelData(19F) -// .addDelData(20F) -// .build(); -// String data = PointCloudDecoder.decode(header, pointCloud); -// Log.i("ddd", "转换数据=" + data); - connect(false); - } - }); - initListData(); - initBtnRecyclerView(); - initFragmentRecyclerView(); - switch (Constants.getIpcConnectionMode(this)) { - case 0: - fixation.setChecked(true); - break; - case 1: - assign.setChecked(true); - break; - - } - String ip = Constants.getIPCIp(this); - if (!TextUtils.isEmpty(ip)) { - etIp.setText(ip); - etIp.setSelection(ip.length()); - } - - //初始化fragment - manager = getSupportFragmentManager(); - cb_print.setChecked(CupidLogUtils.isEnableLog()); - cb_print.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - AdasManager.getInstance().setEnableLog(isChecked); - } - }); - cb_save.setChecked(LogSave.getInstance().isStart()); - cb_save.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - LogSave.getInstance().start(); - } else { - LogSave.getInstance().stop(); - } - } - }); - boolean isEnable = Constants.getTimeoutEnable(this); - AdasManager.getInstance().setEnableTimeoutDetection(isEnable); - cb_timeout.setChecked(ReceiveTimeoutManager.getInstance().isEnable()); - cb_timeout.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - Constants.setTimeoutEnable(MainActivity.this, isChecked); - AdasManager.getInstance().setEnableTimeoutDetection(isChecked); - } - }); - cb_timeout.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); - builder.setTitle("超时时间配置"); - View view = getLayoutInflater().inflate(R.layout.dialog_timeout, null); - final EditText et = view.findViewById(R.id.et); - String timeout = String.valueOf(AdasManager.getInstance().getTimeoutDetectionTime()); - et.setText(timeout); - et.setSelection(timeout.length()); - final TextView hint = view.findViewById(R.id.text_hint); - hint.setText("由于没有心跳机制,如果服务器端断网或其他非正常断开,客户端无法感知,所以需要进行数据接收超时检测"); - builder.setView(view);// - builder.setCancelable(false);// - builder.setPositiveButton("设置", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - Editable editable = et.getText(); - if (TextUtils.isEmpty(editable)) { - // 条件不成立不能关闭 AlertDialog 窗口 - Toast.makeText(MainActivity.this, "请输入超时时间", Toast.LENGTH_SHORT).show(); - return; - } - String temp = et.getText().toString().trim(); - long t = Long.parseLong(temp); - AdasManager.getInstance().setTimeoutDetectionTime(t); - } - }); - //设置反面按钮,并做事件处理 - builder.setNegativeButton("取消", null); - builder.show();//显示Dialog对话框 - return true; - } - }); - cb_cut_down.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - DataDistribution.getInstance().setCutDown(isChecked); - } - }); - cb_cut_down.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - showToastCenter("显示数据量过大,会引起刷新卡顿", Toast.LENGTH_LONG); - return true; - } - }); - connectionType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(RadioGroup group, int checkedId) { - AdasManager.getInstance().disconnect(); - int type; - switch (checkedId) { - default: - case R.id.assign: - type = AdasOptions.IPC_CONNECTION_MODE.ASSIGN; - break; - case R.id.fixation: - type = AdasOptions.IPC_CONNECTION_MODE.FIXATION; - break; - } - Constants.setIpcConnectionMode(MainActivity.this, type); - } - }); - etIp.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - if (TextUtils.isEmpty(s)) { - Constants.delIPCIp(MainActivity.this); - } else { - String str = s.toString(); - if (str.contains(":")) { - str = str.replace(":", ":"); - etIp.setText(str); - etIp.setSelection(str.length()); - } - Constants.setIPCIp(MainActivity.this, str); - } - - } - - @Override - public void afterTextChanged(Editable s) { - } - }); - showLocalIP(); - title.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (TextUtils.equals(title.getText(), getString(R.string.have_error_data))) { - int position = titleFragmentData.size() - 1; - infoFragment.smoothScrollToPosition(position); - fragmentAdapter.setSelectedPosition(position); - showFragment(Constants.TITLE.RECEIVE_ERROR); - } else { - showLocalIP(); - } - } - }); - title.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - startActivity(new Intent(MainActivity.this, HelpActivity.class)); - return true; - } - }); - - tvIp.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (listPopupWindow == null) { - tvIp.setSelected(true); - showListPopupWindow(); - } else { - tvIp.setSelected(false); - listPopupWindow.dismiss(); - listPopupWindow = null; - } - } - }); - tvConnectState.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (floatWindow == null) { - floatWindow = new FloatWindow(MainActivity.this, connectStatusList); - floatWindow.showFloatWindow(include_title.getY() + include_title.getHeight()); - } else { - floatWindow.hideFloatWindow(); - floatWindow = null; - } - } - }); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - String str = "后台运行:" + (BackgrounderPermission.getInstance().isPermissionLongBackgroundRunning(this) ? "已优化" : "未优化"); - background.setText(Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY)); - background.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - BackgrounderPermission.getInstance().showPermissionLongBackgroundRunningDialog(MainActivity.this); - } - }); - BackgrounderPermission.getInstance().setListener(new OnAdasPermissionListener() { - @Override - public void onBackgrounderPermission(boolean isAllow) { - String str = "后台运行:" + (isAllow ? "已优化" : "未优化"); - background.setText(Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY)); - } - }); - } else { - background.setVisibility(View.GONE); - } - btn_ping.setSelected(pingFloatWindow != null); - btn_ping.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (pingFloatWindow == null) { - Pair pair = getInputIp(); - if (pair != null) { - pingFloatWindow = new PingFloatWindow(MainActivity.this, pair.first); - int[] location = new int[2]; - btn_ping.getLocationOnScreen(location); - int x = location[0]; - int y = location[1]; - pingFloatWindow.showFloatWindow(x + (btn_ping.getWidth() / 2) - 260, btn_ping.getY() + btn_ping.getHeight()); - } - - } else { - pingFloatWindow.hideFloatWindow(); - pingFloatWindow = null; - } - btn_ping.setSelected(pingFloatWindow != null); - } - }); - rg_show_log.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(RadioGroup group, int checkedId) { - DataDistribution.getInstance().setResId(checkedId); - } - }); - } - - - private Pair getInputIp() { - String address = etIp.getText().toString().trim(); - if (TextUtils.isEmpty(address)) { - Toast.makeText(this, "请输入OBU地址", Toast.LENGTH_SHORT).show(); - return null; - } - String tempIp; - int tempPort; - if (address.contains(":")) { - String[] temp = address.split(":"); - if (temp.length < 2) { - Toast.makeText(this, "地址输入有误", Toast.LENGTH_SHORT).show(); - return null; - } - tempIp = temp[0]; - try { - tempPort = Integer.parseInt(temp[1]); - if (tempPort <= 0 || tempPort > 65535) { - Toast.makeText(this, "端口范围溢出", Toast.LENGTH_SHORT).show(); - return null; - } - } catch (NumberFormatException e) { - e.printStackTrace(); - Toast.makeText(this, "端口不合法", Toast.LENGTH_SHORT).show(); - return null; - } - - } else { - tempIp = address; - tempPort = MogoObuConstants.DEFAULT_OBU_PORT; - } - if (!RegexUtils.isIP(tempIp)) { - Toast.makeText(this, "地址不合法", Toast.LENGTH_SHORT).show(); - return null; - } - return new Pair<>(tempIp, tempPort); - } - - private void showListPopupWindow() { - List ips = Constants.getIpcUsedIps(this); - if (ips != null && !ips.isEmpty()) { - listPopupWindow = new ListPopupWindow(this); - listPopupWindow.setAdapter(new ArrayAdapter(this, R.layout.item_pop, ips)); - listPopupWindow.setAnchorView(etIp);//以哪个控件为基准,在该处以mEditText为基准 - listPopupWindow.setModal(true); - listPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { - @Override - public void onDismiss() { - listPopupWindow = null; - tvIp.setSelected(false); - } - }); - listPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int i, long l) { - String text = ips.get(i); - etIp.setText(text); - etIp.setSelection(text.length()); - listPopupWindow.dismiss(); - listPopupWindow = null; - } - }); - listPopupWindow.show(); - } - } - - private void initListData() { - titleFragmentData.add(Constants.TITLE.RECEIVE_GNSS_INFO); - titleFragmentData.add(Constants.TITLE.RECEIVE_TRAJECTORY); - titleFragmentData.add(Constants.TITLE.RECEIVE_TRACKED_OBJECTS); - titleFragmentData.add(Constants.TITLE.RECEIVE_VEHICLE_STATE); - titleFragmentData.add(Constants.TITLE.RECEIVE_CHASSIS_STATES); - titleFragmentData.add(Constants.TITLE.RECEIVE_AUTOPILOT_STATE); - titleFragmentData.add(Constants.TITLE.RECEIVE_FUNCTION_STATES); - titleFragmentData.add(Constants.TITLE.RECEIVE_REPORT_MESSAGE); - titleFragmentData.add(Constants.TITLE.RECEIVE_PERCEPTION_TRAFFIC_LIGHT); - titleFragmentData.add(Constants.TITLE.RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY); - titleFragmentData.add(Constants.TITLE.RECEIVE_POINT_CLOUD_ORIGINAL); - titleFragmentData.add(Constants.TITLE.RECEIVE_PLANNING_OBJECTS); - titleFragmentData.add(Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE); - titleFragmentData.add(Constants.TITLE.RECEIVE_CAR_CONFIG_RESP); - titleFragmentData.add(Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP); - titleFragmentData.add(Constants.TITLE.RECEIVE_RECORD_RESULT); - titleFragmentData.add(Constants.TITLE.RECEIVE_BAG_MANAGER_CMD); - titleFragmentData.add(Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP); - titleFragmentData.add(Constants.TITLE.RECEIVE_ARRIVAL_NOTIFICATION); - titleFragmentData.add(Constants.TITLE.RECEIVE_STATUS_QUERY_RESP); - titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_SPAT); - titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_RSI); - titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_RSM); - titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_MAP); - titleFragmentData.add(Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA); - titleFragmentData.add(Constants.TITLE.RECEIVE_BACK_CAMERA_VIDEO); - titleFragmentData.add(Constants.TITLE.RECEIVE_V2N_CONGESTION_EVENT); - titleFragmentData.add(Constants.TITLE.RECEIVE_V2N_GLOBAL_PATH_EVENTS); - titleFragmentData.add(Constants.TITLE.RECEIVE_GET_PARAM_RESP); - titleFragmentData.add(Constants.TITLE.RECEIVE_WARN); - titleFragmentData.add(Constants.TITLE.RECEIVE_ERROR); - - - titleBtnData.add(Constants.TITLE.SEND_SET_AUTOPILOT_MODE_REQ); - titleBtnData.add(Constants.TITLE.SEND_GLOBAL_PATH_REQ); - titleBtnData.add(Constants.TITLE.SEND_SPECIAL_VEHICLE_TASK_CMD); - titleBtnData.add(Constants.TITLE.SEND_STATUS_QUERY_REQ); - titleBtnData.add(Constants.TITLE.SEND_BASIC_INFO_RESP); - titleBtnData.add(Constants.TITLE.SEND_RECORD_DATA_CONFIG_RESP); - titleBtnData.add(Constants.TITLE.SEND_RECORD_DATA_5); - titleBtnData.add(Constants.TITLE.SEND_RECORD_DATA_START); - titleBtnData.add(Constants.TITLE.SEND_RECORD_DATA_END); - titleBtnData.add(Constants.TITLE.SEND_TRAFFIC_LIGHT_DATA); - titleBtnData.add(Constants.TITLE.SEND_SET_AUTOPILOT_SPEED_REQ); - titleBtnData.add(Constants.TITLE.SEND_RECORD_CAUSE); - titleBtnData.add(Constants.TITLE.SEND_SET_DEMO_MODE_REQ); - titleBtnData.add(Constants.TITLE.SEND_SET_RAIN_MODE_REQ); - titleBtnData.add(Constants.TITLE.SEND_SYSTEM_CMD_REQ_REBOOT); - titleBtnData.add(Constants.TITLE.SEND_DETOURING); - titleBtnData.add(Constants.TITLE.SEND_DETOURING_SPEED); - titleBtnData.add(Constants.TITLE.SEND_AEB); - titleBtnData.add(Constants.TITLE.SEND_LANE_CHANGE_RESTRAIN_VALID); - titleBtnData.add(Constants.TITLE.SEND_STOP_YIELD_VALID); - titleBtnData.add(Constants.TITLE.SEND_HADMAP_SPEED_LIMIT_VALID); - titleBtnData.add(Constants.TITLE.SEND_RAMP_THETA_VALID); - titleBtnData.add(Constants.TITLE.SEND_TRIP_INFO); - titleBtnData.add(Constants.TITLE.SEND_PLANNING_CMD); - titleBtnData.add(Constants.TITLE.SEND_BLIND_AREA); - titleBtnData.add(Constants.TITLE.SEND_V2N_TO_PNC); - titleBtnData.add(Constants.TITLE.SEND_GET_PARAM_REQ); - } - - private void initBtnRecyclerView() { - //初始info-recycle - GridLayoutManager nodLinearLayoutManage = new GridLayoutManager(this, 2); - nodLinearLayoutManage.setOrientation(LinearLayoutManager.HORIZONTAL); - infoBtn.setLayoutManager(nodLinearLayoutManage); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - infoBtn.setHasFixedSize(true); - //解决局部刷新闪屏问题 - SimpleItemAnimator animatorInfo = (SimpleItemAnimator) infoBtn.getItemAnimator(); - if (animatorInfo != null) - animatorInfo.setSupportsChangeAnimations(false); - //创建并设置Adapter - InfoTitleAdapter btnAdapter = new InfoTitleAdapter(titleBtnData, false); - infoBtn.setAdapter(btnAdapter); - btnAdapter.setOnItemClickListener(this); - } - - /** - * 感知接口 提示 - * - * @param isSeriaNet 是否是透传接口 - */ - private void hintTrackedObjects(boolean isSeriaNet) { - int value = 0; - MessagePad.CarConfigResp carConfigResp = AdasManager.getInstance().getCarConfig(); - if (carConfigResp != null) { - value = carConfigResp.getProtocolVersionValue(); - } - if (isSeriaNet && value < 3 && value > 0 || value > 2) { - showToastCenter("当前工控机协议版本:" + value + ",此接口不受支持"); - } - } - - private void initFragmentRecyclerView() { - //创建默认的线性LayoutManager 横向的GridLayoutManager - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); - linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - infoFragment.setLayoutManager(linearLayoutManager); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - infoFragment.setHasFixedSize(true); - //解决局部刷新闪屏问题 - SimpleItemAnimator animator = (SimpleItemAnimator) infoFragment.getItemAnimator(); - if (animator != null) - animator.setSupportsChangeAnimations(false); - //创建并设置Adapter - fragmentAdapter = new InfoTitleAdapter(titleFragmentData, true); - infoFragment.setAdapter(fragmentAdapter); - fragmentAdapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() { - - @Override - public void onItemClick(int position, String data) { - fragmentAdapter.setSelectedPosition(position); - showFragment(data); - } - }); - } - - private String getIPCIP() { - final String ip = AdasManager.getInstance().getIpcConnectedIp(); - final int port = AdasManager.getInstance().getIpcConnectedPort(); - String temp = ""; - if (!TextUtils.isEmpty(ip)) { - temp = ip + ":" + port; - } - return temp; - } - - public void showIPCIP() { - if (!BuildConfig.IS_CLIENT) { - ipcIp.setVisibility(View.VISIBLE); - ipcIp.setText("IPC IP:" + getIPCIP()); - } else { - ipcIp.setVisibility(View.GONE); - } - } - - private int getStatusColor(int connectStatus) { - int color; - switch (connectStatus) { - case IPC_CONNECTION_STATUS.CONNECTED: - color = R.color.connect_status_connected; - break; - default: - case IPC_CONNECTION_STATUS.DISCONNECTED: - color = R.color.connect_status_disconnected; - break; - case IPC_CONNECTION_STATUS.CONNECTING: - color = R.color.connect_status_connecting; - break; - case IPC_CONNECTION_STATUS.SEARCH_ADDRESS: - color = R.color.connect_status_search_address; - break; - case IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS: - color = R.color.connect_status_disconnecting; - break; - } - return color; - } - - private String onUpdateConnectStateView() { - String status; - switch (connectStatus) { - case IPC_CONNECTION_STATUS.CONNECTED: - status = "已连接"; - break; - default: - case IPC_CONNECTION_STATUS.DISCONNECTED: - status = "未连接"; - break; - case IPC_CONNECTION_STATUS.CONNECTING: - status = "连接中"; - break; - case IPC_CONNECTION_STATUS.SEARCH_ADDRESS: - status = "搜索IP"; - break; - case IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS: - status = "未找到"; - break; - } - Message msg = Message.obtain(); - msg.obj = new IPCConnectState(status, getStatusColor(connectStatus)); - msg.what = WHAT_IPC_CONNECT_STATE; - getHandler().sendMessage(msg); - return status; - } - - //计算耗时 -// AtomicInteger integer = new AtomicInteger(0); -// AtomicLong atomicLong = new AtomicLong(0); -// AtomicLong timeLong = new AtomicLong(0); -// -// private void calculateTimeConsuming(RawData raw) { -// int num = integer.incrementAndGet(); -// long time = timeLong.addAndGet(System.nanoTime() - raw.receiveTime); -// long size = atomicLong.addAndGet(raw.originalData.size()); -// if (num % 1000 == 0) { -// double m = time / 1000000.0 / num; -// Log.i("优化后", num + "条数据,平均解析速度=" + m + "毫秒,共接收=" + size + "字节"); -// } -// } - - @Override - public void onError(ProtocolStatus status, byte[] bytes) { - long errorDataReceiveTime = SystemClock.elapsedRealtime(); - if (errorDataUpdateTime == 0) { - errorDataUpdateTime = errorDataReceiveTime + 800; - } - if (errorDataReceiveTime > errorDataUpdateTime) { - errorDataUpdateTime = 0; - getHandler().sendEmptyMessage(WHAT_RECEIVE_ERROR_DATA_SHOW); - if (getHandler().hasMessages(WHAT_RECEIVE_ERROR_DATA_STOP)) { - getHandler().removeMessages(WHAT_RECEIVE_ERROR_DATA_STOP); - } - getHandler().sendEmptyMessageDelayed(WHAT_RECEIVE_ERROR_DATA_STOP, 1500); - } - ErrorData base = new ErrorData(status, bytes); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onAutopilotAbility(boolean isAutopilotAbility, String unableAutopilotReason) { - if (fromFragment instanceof VersionFragment) { - VersionFragment fragment = (VersionFragment) fromFragment; - fragment.autopilotAbility(isAutopilotAbility, unableAutopilotReason); - } - Log.i(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + unableAutopilotReason); - } - - @Override - public void onStartAutopilotFailed(MogoReportMsg.MogoReportMessage message) { - - } - - @Override - public void onAutopilotStatistics(AutopilotStatistics statistics) { - Log.i(TAG, "启动自动驾驶状态=" + statistics.status + " 用时=" + statistics.usedTime + " SetAutopilotModeReq=" + (statistics.req == null ? null : TextFormat.printer().escapingNonAscii(false).printToString(statistics.req)) + " failedMessage=" + (statistics.failedMessage == null ? null : TextFormat.printer().escapingNonAscii(false).printToString(statistics.failedMessage))); - } - - @Override - public void onTrajectory(MessagePad.Header header, MessagePad.Trajectory trajectory) { - ReceiveData base = new ReceiveData(header, trajectory, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onTrackedObjects(MessagePad.Header header, MessagePad.TrackedObjects trackedObjects) { - ReceiveData base = new ReceiveData(header, trackedObjects, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo) { - ReceiveData base = new ReceiveData(header, gnssInfo, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState) { - App.INSTANCE.gear = vehicleState.getGear(); - ReceiveData base = new ReceiveData(header, vehicleState, sdf); - DataDistribution.getInstance().addData(base); - } - - - @Override - public void onChassisStates(MessagePad.Header header, ChassisStatesOuterClass.ChassisStates chassisStates) { - App.INSTANCE.gear = chassisStates.getGearSystemStates().getGearPosition(); - ReceiveData base = new ReceiveData(header, chassisStates, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onAutopilotState(MessagePad.Header header, MessagePad.AutopilotState autopilotState) { - ReceiveData base = new ReceiveData(header, autopilotState, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage mogoReportMessage) { - ReceiveData base = new ReceiveData(header, mogoReportMessage, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights) { - PerceptionTrafficLight base = new PerceptionTrafficLight(header, trafficLights, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onPredictionObstacleTrajectory(MessagePad.Header header, Prediction.mPredictionObjects predictionObjects) { - ReceiveData base = new ReceiveData(header, predictionObjects, sdf); - DataDistribution.getInstance().addData(base); - } - - -// @Override -// public void onPointCloud(MessagePad.Header header, MogoPointCloudOuterClass.MogoPointCloud pointCloud) { -// MyPointCloud base = new MyPointCloud(header, pointCloud, sdf); -// DataDistribution.getInstance().addData(base); -//// String data = PointCloudDecoder.decode(header, pointCloud); -//// Log.i("dddd", "data==" + data.length()); -//// Log.i("dddd", "data==" + data); -//// LogSave.getInstance().saveLog("转换数据=" + data); -// } - - // @Override -// public void onPointCloud(byte[] pointCloud) { -//// try { -//// MogoPointCloudOuterClass.MogoPointCloud pointCloud1 = MogoPointCloudOuterClass.MogoPointCloud.parseFrom(pointCloud); -//// HeaderOuterClass.Time time = pointCloud1.getHeader().getStamp(); -//// int s = time.getSec(); -//// int ns = time.getNsec(); -//// long t = (long) (s * 1000L) + (long) (ns / 1000000.d); -//// Log.i(TAG, "PointCloud=" + sdf.format(new Date(t))); -//// } catch (InvalidProtocolBufferException e) { -//// e.printStackTrace(); -//// } -//// try { -//// MogoPointCloudOuterClass.MogoPointCloud bean = MogoPointCloudOuterClass.MogoPointCloud.parseFrom(pointCloud); -//// Log.i("ddd","MogoPointCloud="+ TextFormat.printer().escapingNonAscii(false).printToString(bean)); -//// } catch (InvalidProtocolBufferException e) { -//// e.printStackTrace(); -//// } -// ReceiveBytesData base = new ReceiveBytesData(null, pointCloud, sdf); -// DataDistribution.getInstance().addData(base); -// } -// - @Override - public void onPointCloud(MessagePad.Header header, byte[] pointCloud) { - ReceiveBytesData base = new ReceiveBytesData(header, pointCloud, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onPlanningObjects(MessagePad.Header header, MessagePad.PlanningObjects planningObjects) { - ReceiveData base = new ReceiveData(header, planningObjects, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq) { - ReceiveData base = new ReceiveData(header, basicInfoReq, sdf); - DataDistribution.getInstance().addData(base); - AdasManager.getInstance().sendBasicInfoResp("", 0, com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.DEBUG); - runOnUiThread(new Runnable() { - @Override - public void run() { - showToastCenter("收到车机基础信息请求:" + base.toString(R.id.rb_all)); - } - }); - } - - @Override - public void onCarConfigResp(MessagePad.Header header, MessagePad.CarConfigResp carConfigResp) { - ReceiveData base = new ReceiveData(header, carConfigResp, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onRecordResult(MessagePad.Header header, RecordPanelOuterClass.RecordPanel recordPanel) { - ReceiveData base = new ReceiveData(header, recordPanel, sdf); - DataDistribution.getInstance().addData(base); - recordKey = recordPanel.getKey(); - recordFileName = recordPanel.getFilename(); - } - - @Override - public void onGlobalPathResp(MessagePad.Header header, MessagePad.GlobalPathResp globalPathResp) { - ReceiveData base = new ReceiveData(header, globalPathResp, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onWarn(MessagePad.Header header, MessagePad.Warn warn) { - ReceiveData base = new ReceiveData(header, warn, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onArrivalNotification(MessagePad.Header header, MessagePad.ArrivalNotification arrivalNotification) { - ReceiveData base = new ReceiveData(header, arrivalNotification, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onStatusQueryResp(MessagePad.Header header, SystemStatusInfo.StatusInfo statusInfo) { - ReceiveData base = new ReceiveData(header, statusInfo, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onRecordDataConfigResp(MessagePad.Header header, MessagePad.RecordDataConfig config) { - ReceiveData base = new ReceiveData(header, config, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onPlanningActionMsg(MessagePad.Header header, MessagePad.PlanningActionMsg planningActionMsg) { - ReceiveData base = new ReceiveData(header, planningActionMsg, sdf); - DataDistribution.getInstance().addData(base); - } - - - @Override - public void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { - ObuSpat base = new ObuSpat(header, spatWarningData, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { - ObuRsi base = new ObuRsi(header, rsiWarningData, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { - ObuRsm base = new ObuRsm(header, rsmWarningData, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { - ObuMap base = new ObuMap(header, mapMatchData, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onFunctionStates(MessagePad.Header header, FunctionStates.FSMFunctionStates functionStates) { - ReceiveData base = new ReceiveData(header, functionStates, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onBackCameraVideo(@NotNull MessagePad.Header header, @NotNull byte[] data) { - boolean isAddLog = true; - if (fromFragment instanceof InfoFragment) { - InfoFragment fragment = (InfoFragment) fromFragment; - isAddLog = !fragment.onBackCameraVideo(data); - } - if (isAddLog) { - ReceiveBytesData base = new ReceiveBytesData(header, data, sdf); - DataDistribution.getInstance().addData(base); - } - } - - @Override - public void onSweeperTaskIndexData(MessagePad.Header header, RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex) { - ReceiveData base = new ReceiveData(header, roboSweeperTaskIndex, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onBagManagerCmd(MessagePad.Header header, BagManagerOuterClass.BagManager bagManager) { - ReceiveData base = new ReceiveData(header, bagManager, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onV2nCongestionEvent(@NotNull MessagePad.Header header, @NotNull MogoV2X.RSI_PB rsi) { - ReceiveData base = new ReceiveData(header, rsi, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onV2nGlobalPathEvents(@NotNull MessagePad.Header header, @NotNull RoadOverviewEvents.RoadOverviewData roadOverview, @Nullable MogoV2X.RSI_PB construct, @Nullable MogoV2X.RSI_PB triangle, @Nullable MogoV2X.RSI_PB congestion, @Nullable MogoV2X.RSM_PB parkingViolation) { - V2nGlobalPathEventsReceiveData base = new V2nGlobalPathEventsReceiveData(header, roadOverview, construct, triangle, congestion, parkingViolation, sdf); - DataDistribution.getInstance().addData(base); - } - - @Override - public void onGetParamResp(@NonNull MessagePad.Header header, @NonNull MessagePad.SetParamReq getParamResp, @NonNull AdasParam adasParam) { - AdasParamReceiveData base = new AdasParamReceiveData(header, getParamResp, adasParam, sdf); - DataDistribution.getInstance().addData(base); - } - - private void initAdas() { - CupidLogUtils.e(TAG, "--->初始化"); - AdasOptions options; - if (BuildConfig.IS_CLIENT) { - /*—————————————作为乘客端———————————*/ - options = new AdasOptions.Builder().setClient(true).build(); - /*乘客端启动 注释掉 - NSDNettyManager.getInstance().searchAndConnectServer(this, "1234", new NettyClientListener() { - - @Override - public void onMessageResponseClient(MogoProtocolMsg msg, String sign, Channel channel) { - Log.i(TAG, "司机端连接成功=" + sign); - AdasManager.getInstance().decoderRaw(msg.getBody()); - } - - @Override - public void onClientStatusConnectChanged(int statusCode, String sign, Channel channel) { - if (statusCode == ConnectState.STATUS_CONNECT_SUCCESS) { - connectStatus = IPC_CONNECTION_STATUS.CONNECTED; - } else { - connectStatus = IPC_CONNECTION_STATUS.DISCONNECTED; - AdasManager.getInstance().stopDispatchHandler(); - } - getHandler().sendEmptyMessage(WHAT_DRIVER_IP); - onUpdateConnectStateView(); - } - });*/ - } else { - /*—————————————作为司机端———————————*/ - int mode = Constants.getIpcConnectionMode(this); -// Set messageTypes = new HashSet<>(); -// // 注释掉下面代码,默认开启点云订阅 -// messageTypes.add(MessageType.TYPE_RECEIVE_POINT_CLOUD); -// SubscribeInterfaceOptions subscribeInterfaceOptions = SubscribeInterfaceOptions.newBuilder() -// .setRole(com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.DEBUG) -// .setType(com.zhidao.support.adas.high.common.Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE) -// .setMessageTypes(messageTypes).build(); - switch (mode) { - default: - case AdasOptions.IPC_CONNECTION_MODE.FIXATION: - options = new AdasOptions.Builder().setClient(false).setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(this)).setIpcConnectionMode(mode).build(); -// options = new AdasOptions.Builder().setSubscribeInterfaceOptions(subscribeInterfaceOptions).setClient(false).setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(this)).setIpcConnectionMode(mode).build(); - break; - case AdasOptions.IPC_CONNECTION_MODE.ASSIGN: - options = new AdasOptions.Builder().setClient(false).setIpcAssignIP(Constants.getIPCIp(this)).setIpcConnectionMode(mode).build(); -// options = new AdasOptions.Builder().setSubscribeInterfaceOptions(subscribeInterfaceOptions).setClient(false).setIpcAssignIP(Constants.getIPCIp(this)).setIpcConnectionMode(mode).build(); - break; - } - - /*司机端启动 注释掉 - NSDNettyManager.getInstance().startNSDNettyServerWithSN(this, new NettyServerListener() { - @Override - public void onMessageResponseServer(MogoProtocolMsg msg, Channel channel) { - AdasManager.getInstance().sendWsMessage(msg.getBody()); - - } - - @Override - public void onStartServer() { - - } - - @Override - public void onStopServer() { - - } - - @Override - public void onChannelConnect(Channel channel) { - Log.i(TAG, "onChannelConnect channel=" + channel.id()); - } - - @Override - public void onChannelDisConnect(Channel channel) { - Log.i(TAG, "onChannelDisConnect channel=" + channel.id()); - } - }, "1234567");*/ - } - options.setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI); - AdasManager.getInstance().create(options, this); - AdasManager.getInstance().setOnAdasListener(this); - /*两端数据转发 注释掉 - AdasManager.getInstance().setOnMultiDeviceListener(new OnMultiDeviceListener() { - @Override - public void onForwardingDriverIPCMessage(byte[] bytes) { - // 发送数据给乘客端 - if (NSDNettyManager.getInstance().isServerStart()) { - NSDNettyManager.getInstance().sendMsgToAllClients(new MogoProtocolMsg(NORMAL_DATA, bytes.length, bytes)); - } else { -// Log.d("dddd", "司机端Server未启动!"); - } - } - - @Override - public void onForwardingPassengerIPCMessage(byte[] bytes) { - NSDNettyManager.getInstance() - .sendMogoProtocolMsgToServer(new MogoProtocolMsg(NORMAL_DATA, bytes.length, bytes), null); - Log.i(TAG, "乘客屏发送数据=" + ByteUtil.byteArrToHex(bytes)); - } - });*/ - } - - - @Override - public void onConnectionIPCStatus(int ipcConnectionStatus, String reason) { - if (fromFragment != null) { - fromFragment.updateConnectStatus(ipcConnectionStatus); - } -// Log.i(TAG, "连接状态=" + (reason == null ? "主动断开连接" : reason)); - String time = sdf.format(new Date()); - ConnectStatusSave.getInstance().saveLog(time + " ipcConnectionStatus=" + ipcConnectionStatus + " reason=" + reason); - connectStatusList.add(0, new IPCConnectState(reason == null ? "主动断开连接" : reason, getStatusColor(ipcConnectionStatus))); - if (connectStatusList.size() > 100) { - connectStatusList.remove(connectStatusList.size() - 1); - } - connectStatus = ipcConnectionStatus; - String status = onUpdateConnectStateView(); - if (connectStatus == IPC_CONNECTION_STATUS.CONNECTED) { - DataDistribution.getInstance().clearCount(); - getHandler().sendEmptyMessage(WHAT_IPC_IP); - String tem = getIPCIP(); - if (!TextUtils.isEmpty(tem)) { - List ips = Constants.getIpcUsedIps(this); - Constants.addIpcUsedIps(this, ips, tem); - } - } else if (connectStatus == IPC_CONNECTION_STATUS.DISCONNECTED) { - getHandler().sendEmptyMessage(WHAT_IPC_IP); - } - -// LogSave.getInstance().saveLog("连接状态", status); -// CupidLogUtils.i(TAG, "connectStatus=" + status); - } - - @Override - public void onCompatibility(VersionCompatibility versionCompatibility) { - showToastCenter("所连工控机:\n" + (versionCompatibility == null ? "未连接" : versionCompatibility.toString()), Toast.LENGTH_LONG); - } - - private void showLocalIP() { - showToastCenter("已刷新本机IP"); - localIp.setText("本机IP:" + getIpAddressString()); - } - - private String getIpAddressString() { - try { - for (Enumeration enNetI = NetworkInterface - .getNetworkInterfaces(); enNetI.hasMoreElements(); ) { - NetworkInterface netI = enNetI.nextElement(); - for (Enumeration enumIpAddr = netI - .getInetAddresses(); enumIpAddr.hasMoreElements(); ) { - InetAddress inetAddress = enumIpAddr.nextElement(); - if (inetAddress instanceof Inet4Address && !inetAddress.isLoopbackAddress()) { - return inetAddress.getHostAddress(); - } - } - } - } catch (SocketException e) { - e.printStackTrace(); - } - return "127.0.0.1"; - } - - /** - * 判断当前设备是手机还是平板,代码来自 Google I/O App for Android - * - * @param context - * @return 平板返回 True,手机返回 False - */ - public static boolean isPad(Context context) { - return (context.getResources().getConfiguration().screenLayout - & Configuration.SCREENLAYOUT_SIZE_MASK) - >= Configuration.SCREENLAYOUT_SIZE_LARGE; - } - - private void showFragment(String title) { - BaseFragment to = (BaseFragment) manager.findFragmentByTag(title); - if (to == null) { - if (Constants.TITLE.RECEIVE_CAR_CONFIG_RESP.equals(title)) { - to = new VersionFragment(Constants.TITLE.TITLE_CAR_CONFIG_RESP); - } else { - to = new InfoFragment(title); - } - } - FragmentTransaction transaction = manager.beginTransaction(); - if (fromFragment != null) { - transaction.hide(fromFragment); - } - if (!to.isAdded()) { - transaction.add(R.id.fl_info, to, title).commit(); - } else { - transaction.show(to).commit(); - } - if (Constants.TITLE.RECEIVE_CAR_CONFIG_RESP.equals(title)) { - AdasManager.getInstance().sendCarConfigReq(); - } else if (Constants.TITLE.RECEIVE_CHASSIS_STATES.equals(title)) { - InfoFragment fragment = (InfoFragment) to; - int type = AdasManager.getInstance().getUsedChassisType(); - String source; - if (type == com.zhidao.support.adas.high.common.Constants.CHASSIS_TYPE.NEW_CHASSIS) { - source = "ChassisStates"; - } else if (type == com.zhidao.support.adas.high.common.Constants.CHASSIS_TYPE.OLD_CHASSIS) { - source = "VehicleState"; - } else { - source = "Unknown"; - } - fragment.setTitle(Constants.TITLE.RECEIVE_CHASSIS_STATES + "\t来源:" + source); - } - fromFragment = to; - } - - @Override - public void onItemClick(int position, String data) { - if (connectStatus != IPC_CONNECTION_STATUS.CONNECTED) { - String msg = "未连接工控机"; - if (BuildConfig.IS_CLIENT) { - msg = "未连接司机端"; - } - showToastCenter(msg); -// return; - } - switch (data) { - case Constants.TITLE.SEND_SET_AUTOPILOT_MODE_REQ: -// MessagePad.Line.Builder line = MessagePad.Line.newBuilder(); -// line.setLineId(10); -// line.setTrajUrl("我是TrajUrl"); -// line.setTrajMd5("我是TrajMd5"); -// line.setStopUrl("我是StopUrl"); -// line.setStopMd5("我是StopMd5"); -// line.setTimestamp(60); -// line.setVehicleModel("我是VehicleModel"); -// AdasManager.getInstance().sendTrajectoryDownloadReq(line.build()); - if (autoPilotModeDialog == null) { - autoPilotModeDialog = new AutoPilotModeDialog(this); - } - if (!autoPilotModeDialog.isShowing()) { - autoPilotModeDialog.show(); - } - break; - case Constants.TITLE.SEND_GLOBAL_PATH_REQ: - //自动驾驶路径查询 - AdasManager.getInstance().sendGlobalPathReq(); - break; - case Constants.TITLE.SEND_SPECIAL_VEHICLE_TASK_CMD: -// AdasManager.getInstance().sendRoboBusJinlvM1AirConditionerCmd(1,2,3,4); -// AdasManager.getInstance().sendRoboBusJinlvM1HeaderCmd(5,6); -// AdasManager.getInstance().sendRoboBusJinlvM1MainLampCmd(7,8); -// AdasManager.getInstance().sendRoboBusJinlvM1SmallLampCmd(9); -// AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(10); - - - if (specialVehicleBeanList == null) { - specialVehicleBeanList = SpecialVehicleBean.init(); - } - if (specialVehicleDialog == null) { - specialVehicleDialog = new SpecialVehicleDialog(this, specialVehicleBeanList); - } - if (!specialVehicleDialog.isShowing()) { - specialVehicleDialog.show(); - } - break; - case Constants.TITLE.SEND_STATUS_QUERY_REQ: - AdasManager.getInstance().sendStatusQueryReq(); - break; - case Constants.TITLE.SEND_BASIC_INFO_RESP: - //发送sn - //速度设置 - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle("发送SN"); - View view = getLayoutInflater().inflate(R.layout.dialog_sn, null); - final EditText et = view.findViewById(R.id.et); - final EditText ev = view.findViewById(R.id.ev); - final EditText role = view.findViewById(R.id.role); - builder.setView(view);// - builder.setCancelable(false);// - builder.setPositiveButton("发送", null); - //设置反面按钮,并做事件处理 - builder.setNegativeButton("取消", null); - AlertDialog alertDialog = builder.show();//显示Dialog对话框 - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Editable editable = et.getText(); - if (TextUtils.isEmpty(editable)) { - // 条件不成立不能关闭 AlertDialog 窗口 - Toast.makeText(MainActivity.this, "请输入SN", Toast.LENGTH_SHORT).show(); - return; - } - int evInt = 0; - Editable evEd = ev.getText(); - if (!TextUtils.isEmpty(evEd)) { - evInt = Integer.parseInt(evEd.toString().trim()); - } - int roleInt = com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.DEBUG; - Editable roleEd = role.getText(); - if (!TextUtils.isEmpty(roleEd)) { - roleInt = Integer.parseInt(roleEd.toString().trim()); - } - AdasManager.getInstance().sendBasicInfoResp(editable.toString().trim(), evInt, roleInt); - alertDialog.dismiss(); - } - }); - break; - case Constants.TITLE.SEND_RECORD_DATA_5: - //数据采集5秒 - boolean b = AdasManager.getInstance().startRecordPackage(1, 5, 1, 2); - CupidLogUtils.w(TAG, "AutopilotRecord===>send:" + b); - break; - case Constants.TITLE.SEND_RECORD_DATA_START: - //数据采集start - boolean bStart = AdasManager.getInstance().startRecordPackage(1, 1); - CupidLogUtils.w(TAG, "AutopilotRecord===>send:" + bStart); - break; - case Constants.TITLE.SEND_RECORD_DATA_END: - //数据采集end - boolean bEnd = AdasManager.getInstance().stopRecordPackage(1, 1); - CupidLogUtils.w(TAG, "AutopilotRecord===>send:" + bEnd); - break; - case Constants.TITLE.SEND_TRAFFIC_LIGHT_DATA: - //发送信号灯 - MessagePad.TrafficLightStatus left = MessagePad.TrafficLightStatus.newBuilder() - .setPhaseNo("1") - .setColor("R") - .setRemain(249) - .build(); - MessagePad.TrafficLightStatus mid = MessagePad.TrafficLightStatus.newBuilder() - .setPhaseNo("2") - .setColor("G") - .setRemain(199) - .build(); - MessagePad.TrafficLightStatus right = MessagePad.TrafficLightStatus.newBuilder() - .setPhaseNo("3") - .setColor("G") - .setRemain(199) - .build(); - MessagePad.TrafficLightDetail detail = MessagePad.TrafficLightDetail.newBuilder() - .setLeft(left) - .setMid(mid) - .setRight(right) - .build(); - AdasManager.getInstance().sendTrafficLightData("10038", 26.848153, 112.574883, "180.0", "SN", 100413, -4, 201, 0, detail, System.currentTimeMillis()); - break; - case Constants.TITLE.SEND_SET_AUTOPILOT_SPEED_REQ: - //速度设置 - AlertDialog.Builder builder1 = new AlertDialog.Builder(this); - builder1.setTitle("自动驾驶限速"); - View view1 = getLayoutInflater().inflate(R.layout.dialog_speed, null); - final EditText et1 = (EditText) view1.findViewById(R.id.et); - builder1.setView(view1);// - builder1.setCancelable(false);// - builder1.setPositiveButton("设置", null); - //设置反面按钮,并做事件处理 - builder1.setNegativeButton("取消", null); - AlertDialog alertDialog1 = builder1.show();//显示Dialog对话框 - alertDialog1.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Editable editable = et1.getText(); - if (TextUtils.isEmpty(editable)) { - // 条件不成立不能关闭 AlertDialog 窗口 - Toast.makeText(MainActivity.this, "请输入速度", Toast.LENGTH_SHORT).show(); - return; - } - String temp = et1.getText().toString().trim(); - double speed = Double.parseDouble(temp) / 3.6; - AdasManager.getInstance().sendAutopilotSpeedReq(speed); - alertDialog1.dismiss(); - } - }); - break; - case Constants.TITLE.SEND_SYSTEM_CMD_REQ_REBOOT: - //重启所有节点 - AdasManager.getInstance().sendSystemCmdReq(MessagePad.SystemCmdType.SYSTEMCMD_REBOOT); - break; - - case Constants.TITLE.SEND_RECORD_CAUSE: - //采集类型 - AdasManager.getInstance().sendRecordCause(recordKey, recordFileName, "1", "变道有干扰"); - break; - case Constants.TITLE.SEND_SET_DEMO_MODE_REQ: - //演示模式 - new SendCmdDialog(this, SendCmd.getSendDemoMode()).show(); - break; - case Constants.TITLE.SEND_SET_RAIN_MODE_REQ: - //雨天模式 - new SendCmdDialog(this, SendCmd.getSendRainMode()).show(); - break; - case Constants.TITLE.SEND_RECORD_DATA_CONFIG_RESP: - //数据采集配置 - showRecordDataConfigRespDialog(); - break; - case Constants.TITLE.SEND_DETOURING: - //绕障类功能 - new SendCmdDialog(this, SendCmd.getSendDetouring()).show(); - break; - case Constants.TITLE.SEND_AEB: - //AEB - new SendCmdDialog(this, SendCmd.getSendAeb()).show(); - break; - case Constants.TITLE.SEND_LANE_CHANGE_RESTRAIN_VALID: - //限制绕障开关 - new SendCmdDialog(this, SendCmd.getSendLaneChangeRestrainVaild()).show(); - break; - case Constants.TITLE.SEND_STOP_YIELD_VALID: - //停车让行线前避让等待开关 - new SendCmdDialog(this, SendCmd.getSendStopYieldVaild()).show(); - break; - case Constants.TITLE.SEND_HADMAP_SPEED_LIMIT_VALID: - //地图限速功能开关 - new SendCmdDialog(this, SendCmd.getSendHadmapSpeedLimitVaild()).show(); - break; - case Constants.TITLE.SEND_RAMP_THETA_VALID: - //环岛模式开关 - new SendCmdDialog(this, SendCmd.getSendRampThetaValid()).show(); - break; - case Constants.TITLE.SEND_GET_PARAM_REQ: - //获取参数 - new SendCmdDialog(this, SendCmd.getSendGetParamReq()).show(); - break; - case Constants.TITLE.SEND_DETOURING_SPEED: - //绕障速度设置 - showDetouringSpeedDialog(); - break; - case Constants.TITLE.SEND_TRIP_INFO: - //行程信息 - AdasManager.getInstance().sendTripInfoReq(1, "x10", "x11", "x12", false); - AdasManager.getInstance().sendTripInfoReq(2, "x13", "x14", "x15", true); - AdasManager.getInstance().sendTripInfoReq(3, "x16", "x17", "x18", false); - AdasManager.getInstance().sendTripInfoReq(4, "x19", "x20", "x21", true); - AdasManager.getInstance().sendTripInfoReq(5, "x22", "x23", "x24", false); - break; - case Constants.TITLE.SEND_PLANNING_CMD: - //Planning指令 - new SendCmdDialog(this, SendCmd.getSendToPlanning()).show(); - break; - case Constants.TITLE.SEND_BLIND_AREA: - //盲区数据开关 - new SendCmdDialog(this, SendCmd.getSendBlindArea()).show(); - break; - case Constants.TITLE.SEND_V2N_TO_PNC: - //V2N数据到PnC - new SendCmdDialog(this, SendCmd.getSendV2nToPnc()).show(); - break; - } - } - - private void showDetouringSpeedDialog() { - AlertDialog.Builder builder1 = new AlertDialog.Builder(this); - builder1.setTitle("绕障速度"); - View view1 = getLayoutInflater().inflate(R.layout.dialog_detouring_speed, null); - final EditText et1 = (EditText) view1.findViewById(R.id.et); - builder1.setView(view1);// - builder1.setCancelable(false);// - builder1.setPositiveButton("设置", null); - //设置反面按钮,并做事件处理 - builder1.setNegativeButton("取消", null); - AlertDialog alertDialog1 = builder1.show();//显示Dialog对话框 - alertDialog1.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Editable editable = et1.getText(); - if (TextUtils.isEmpty(editable)) { - // 条件不成立不能关闭 AlertDialog 窗口 - Toast.makeText(MainActivity.this, "请输入速度", Toast.LENGTH_SHORT).show(); - return; - } - String temp = et1.getText().toString().trim(); - double speed = Double.parseDouble(temp); - AdasManager.getInstance().sendDetouringSpeed(speed); - alertDialog1.dismiss(); - } - }); - } - - private void showRecordDataConfigRespDialog() { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(Constants.TITLE.SEND_RECORD_DATA_CONFIG_RESP); - View view = getLayoutInflater().inflate(R.layout.dialog_record_data_config_resp, null); - final EditText reqTypeView = view.findViewById(R.id.reqType); - final EditText recordTypeView = view.findViewById(R.id.recordType); - final EditText topicsNeedToCacheView = view.findViewById(R.id.topicsNeedToCache); - builder.setView(view);// - builder.setCancelable(false);// - builder.setPositiveButton("发送", null); - //设置反面按钮,并做事件处理 - builder.setNegativeButton("取消", null); - AlertDialog alertDialog = builder.show();//显示Dialog对话框 - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Editable editable = reqTypeView.getText(); - if (TextUtils.isEmpty(editable)) { - // 条件不成立不能关闭 AlertDialog 窗口 - Toast.makeText(MainActivity.this, "请输入ReqType", Toast.LENGTH_SHORT).show(); - return; - } - int reqType = Integer.parseInt(editable.toString().trim()); - editable = recordTypeView.getText(); - if (TextUtils.isEmpty(editable)) { - Toast.makeText(MainActivity.this, "请输入RecordType", Toast.LENGTH_SHORT).show(); - return; - } - int recordType = Integer.parseInt(editable.toString().trim()); - List topicsNeedToCache = null; - editable = topicsNeedToCacheView.getText(); - if (!TextUtils.isEmpty(editable)) { - String cache = editable.toString().trim(); - cache = cache.replace(",", " ").replace(",", " "); - String[] caches = cache.split(" "); - topicsNeedToCache = Arrays.asList(caches); - } - AdasManager.getInstance().sendRecordDataConfigReq(reqType, recordType, topicsNeedToCache); - alertDialog.dismiss(); - } - }); - - } - - - @Override - protected void handleMessage(Message msg) { - super.handleMessage(msg); - switch (msg.what) { - case WHAT_IPC_IP: - showIPCIP(); - if (specialVehicleBeanList != null && !specialVehicleBeanList.isEmpty()) { - for (SpecialVehicleBean bean : specialVehicleBeanList) { - bean.dismissFloat(); - } - specialVehicleBeanList = null; - } - break; - case WHAT_DRIVER_IP: - ipcIp.setVisibility(View.VISIBLE); -// ipcIp.setText("司机IP:" + NSDNettyManager.getInstance().getConnServerIp()); - break; - case WHAT_IPC_CONNECT_STATE: - if (floatWindow != null) { - floatWindow.refreshView(); - } - IPCConnectState status = (IPCConnectState) msg.obj; - tvConnectState.setText(status.status); - tvConnectState.setTextColor(getResources().getColor(status.color)); - break; - case WHAT_RECEIVE_ERROR_DATA_SHOW: - title.setText(R.string.have_error_data); - title.setTextColor(getResources().getColor(android.R.color.holo_red_light)); - title.setVisibility(View.VISIBLE); - getHandler().sendEmptyMessageDelayed(WHAT_RECEIVE_ERROR_DATA_HINT, 500); - break; - case WHAT_RECEIVE_ERROR_DATA_HINT: - title.setVisibility(View.INVISIBLE); - break; - case WHAT_RECEIVE_ERROR_DATA_STOP: - title.setText(R.string.app_name); - title.setTextColor(getResources().getColor(R.color.colorWhile)); - title.setVisibility(View.VISIBLE); - errorDataUpdateTime = 0; - break; - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/PingFloatWindow.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/PingFloatWindow.java deleted file mode 100644 index 146c5aeeac..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/PingFloatWindow.java +++ /dev/null @@ -1,310 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.app.Activity; -import android.content.Context; -import android.graphics.PixelFormat; -import android.os.Handler; -import android.os.Message; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.WindowManager; - -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.support.obu.common.L; -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.ConnectStatusAdapter; -import com.zhidao.adas.client.bean.IPCConnectState; -import com.zhidao.adas.client.utils.MyLinearLayoutManager; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.lang.ref.WeakReference; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -/** - * ping命令窗口 - */ -public class PingFloatWindow implements View.OnTouchListener { - private static final String TAG = PingFloatWindow.class.getSimpleName(); - private static final int WHAT_STATE = 8; - private final Activity mContext; - private WindowManager.LayoutParams mWindowParams; - private WindowManager mWindowManager; - - private View mFloatLayout; - private float mInViewX; - private float mInViewY; - private float mDownInScreenX; - private float mDownInScreenY; - private float mInScreenX; - private float mInScreenY; - private RecyclerView rv_status; - private ConnectStatusAdapter adapter; - private final List list = new ArrayList<>(); - private final String ip; - private Timer timer; - - public PingFloatWindow(Activity context, String ip) { - this.mContext = context; - this.ip = ip; - initFloatWindow(); - initHandler(); - pingTimer(true); - } - - private void pingTimer(boolean isStart) { - if (isStart) { - if (timer == null) { - timer = new Timer(); - timer.schedule(new TimerTask() { - @Override - public void run() { - ping(); - } - }, 100L, 2500L);//延时 - } - } else { - if (timer != null) { - timer.cancel(); - timer = null; - } - } - } - - private void ping() { - Process p; - try { - //ping -c 3 -w 100 中 ,-c 是指ping的次数 3是指ping 3次 ,-w 100 以秒为单位指定超时间隔,是指超时时间为100秒 - p = Runtime.getRuntime().exec("ping -c 1 -w 2 " + ip); - int status = p.waitFor(); - InputStream input = p.getInputStream(); - BufferedReader in = new BufferedReader(new InputStreamReader(input)); - StringBuilder builder = new StringBuilder(); - String line; - while ((line = in.readLine()) != null) { - builder.append(line).append("\n"); - } - String str = "IP:" + ip + " 是否可以连通:" + (status == 0 ? "是" : "否"); - L.i(TAG, builder.toString() + str); - add(str, status == 0); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } - - private void add(String str, boolean isConnect) { - - int color; - if (isConnect) { - color = R.color.connect_status_connected; - } else { - color = R.color.connect_status_disconnected; - } - IPCConnectState status = new IPCConnectState(str, color); - list.add(0, status); - if (list.size() > 100) { - list.remove(list.size() - 1); - } - Message msg = Message.obtain(); - msg.what = WHAT_STATE; - getHandler().sendMessage(msg); - } - - - public void refreshView() { - if (adapter != null) { - adapter.refreshView(); - } - } - - private void initRV() { - //创建默认的线性LayoutManager 横向的GridLayoutManager - MyLinearLayoutManager linearLayoutManager = new MyLinearLayoutManager(mContext); -// linearLayoutManager.setStackFromEnd(true);//列表再底部开始展示,反转后由上面开始展示 -// linearLayoutManager.setReverseLayout(true);//列表翻转 - rv_status.setLayoutManager(linearLayoutManager); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - rv_status.setHasFixedSize(false); - rv_status.setNestedScrollingEnabled(false); - adapter = new ConnectStatusAdapter(); - adapter.setHasStableIds(true); - rv_status.setAdapter(adapter); - adapter.setData(list); - } - - private void initFloatWindow() { - LayoutInflater inflater = LayoutInflater.from(mContext); - if (inflater == null) - return; - mFloatLayout = (View) inflater.inflate(R.layout.layout_float, null); - rv_status = mFloatLayout.findViewById(R.id.rv_status); - mFloatLayout.setOnTouchListener(this); - initRV(); - mWindowParams = new WindowManager.LayoutParams(); -// mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); -// if (Build.VERSION.SDK_INT >= 26) {//8.0新特性 -// mWindowParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; -// }else{ -// mWindowParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; -// } - - mWindowManager = mContext.getWindowManager(); - - mWindowParams.format = PixelFormat.RGBA_8888; - mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - mWindowParams.gravity = Gravity.START | Gravity.TOP; - mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT; - mWindowParams.alpha = 0.9F; - } - - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - return floatLayoutTouch(motionEvent); - } - - private boolean floatLayoutTouch(MotionEvent motionEvent) { - switch (motionEvent.getAction()) { - case MotionEvent.ACTION_DOWN: - // 获取相对View的坐标,即以此View左上角为原点 - mInViewX = motionEvent.getX(); - mInViewY = motionEvent.getY(); - // 获取相对屏幕的坐标,即以屏幕左上角为原点 - mDownInScreenX = motionEvent.getRawX(); - mDownInScreenY = motionEvent.getRawY() - getSysBarHeight(mContext); - mInScreenX = motionEvent.getRawX(); - mInScreenY = motionEvent.getRawY() - getSysBarHeight(mContext); - break; - case MotionEvent.ACTION_MOVE: - // 更新浮动窗口位置参数 - mInScreenX = motionEvent.getRawX(); - mInScreenY = motionEvent.getRawY() - getSysBarHeight(mContext); - mWindowParams.x = (int) (mInScreenX - mInViewX); - mWindowParams.y = (int) (mInScreenY - mInViewY); - // 手指移动的时候更新小悬浮窗的位置 - mWindowManager.updateViewLayout(mFloatLayout, mWindowParams); - break; - case MotionEvent.ACTION_UP: - // 如果手指离开屏幕时,xDownInScreen和xInScreen相等,且yDownInScreen和yInScreen相等,则视为触发了单击事件。 - if (mDownInScreenX == mInScreenX && mDownInScreenY == mInScreenY) { - - } - break; - } - return true; - } - - public void showFloatWindow(float x, float y) { - if (mFloatLayout.getParent() == null) { -// DisplayMetrics metrics = new DisplayMetrics(); - // 默认固定位置,靠屏幕右边缘的中间 -// mWindowManager.getDefaultDisplay().getMetrics(metrics); - mWindowParams.x = (int) x; - mWindowParams.y = (int) (y); - mWindowManager.addView(mFloatLayout, mWindowParams); - } - } - - - public void hideFloatWindow() { - pingTimer(false); - if (getHandler() != null) { - getHandler().removeCallbacksAndMessages(null); - } - if (mFloatLayout.getParent() != null) - mWindowManager.removeView(mFloatLayout); - - } - - public void setFloatLayoutAlpha(boolean alpha) { - if (alpha) - mFloatLayout.setAlpha((float) 0.5); - else - mFloatLayout.setAlpha(1); - } - - private int sbar = -1; - - // 获取系统状态栏高度 - public int getSysBarHeight(Context contex) { - if (sbar == -1) { - Class c; - Object obj; - Field field; - int x; - sbar = 0; - try { - c = Class.forName("com.android.internal.R$dimen"); - obj = c.newInstance(); - field = c.getField("status_bar_height"); - x = Integer.parseInt(field.get(obj).toString()); - sbar = contex.getResources().getDimensionPixelSize(x); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - return sbar; - } - - - private BaseHandler mBaseHandler; - - /** - * 初始化一个Handler,如果需要使用Handler,先调用此方法, - * 然后可以使用postRunnable(Runnable runnable), - * sendMessage在handleMessage(Message msg)中接收msg - */ - public void initHandler() { - mBaseHandler = new BaseHandler(this); - } - - /** - * 返回Handler,在此之前确定已经调用initHandler() - * - * @return Handler - */ - public Handler getHandler() { - return mBaseHandler; - } - - - /** - * 同Handler 的 handleMessage, - * getHandler.sendMessage,发送的Message在此接收 - * 在此之前确定已经调用initHandler() - * - * @param msg - */ - protected void handleMessage(Message msg) { - switch (msg.what) { - case WHAT_STATE: - refreshView(); - break; - } - } - - - protected static class BaseHandler extends Handler { - private final WeakReference mObjects; - - public BaseHandler(PingFloatWindow mPresenter) { - mObjects = new WeakReference(mPresenter); - } - - @Override - public void handleMessage(Message msg) { - PingFloatWindow mPresenter = mObjects.get(); - if (mPresenter != null) - mPresenter.handleMessage(msg); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/SendCmdDialog.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/SendCmdDialog.java deleted file mode 100644 index 93fbe2ab5c..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/SendCmdDialog.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.app.Dialog; -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.SimpleItemAnimator; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.SendCmdAdapter; -import com.zhidao.adas.client.bean.SendCmd; -import com.zhidao.adas.client.bean.SendCmdOption; -import com.zhidao.adas.client.utils.Constants; -import com.zhidao.support.adas.high.AdasManager; - - -public class SendCmdDialog extends Dialog { - private RecyclerView recyclerView; - private final SendCmd sendCmd; - - public SendCmdDialog(@NonNull Context context, SendCmd sendCmd) { - super(context, R.style.CustomDialog); - this.sendCmd = sendCmd; - } - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_send_cmd); - //初始化界面控件 - initView(); - initRecyclerView(); - //初始化界面控件的事件 - setOnDismissListener(new OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - } - }); - - } - - @Override - public void show() { - super.show(); - } - - private void initRecyclerView() { - //创建默认的线性LayoutManager 横向的GridLayoutManager - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); - linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - recyclerView.setLayoutManager(linearLayoutManager); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - recyclerView.setHasFixedSize(true); - //解决局部刷新闪屏问题 - SimpleItemAnimator animator = (SimpleItemAnimator) recyclerView.getItemAnimator(); - if (animator != null) - animator.setSupportsChangeAnimations(false); - //创建并设置Adapter - SendCmdAdapter adapter = new SendCmdAdapter(sendCmd.value, new SendCmdAdapter.OnItemClickListener() { - @Override - public void onItemClick(SendCmdOption data) { - String name = sendCmd.name; - if (Constants.TITLE.SEND_PLANNING_CMD.equals(name)) { - if (data.tag == SendCmdOption.TAG.PULL_OVER) { - AdasManager.getInstance().sendPlanningPullOverCmd((int) data.value); - } else if (data.tag == SendCmdOption.TAG.LANE_CHANGE) { - AdasManager.getInstance().sendPlanningLaneChangeCmd((int) data.value); - } - } else if (Constants.TITLE.SEND_SET_DEMO_MODE_REQ.equals(name)) { - if (data.tag == SendCmdOption.TAG.DEMO_MODE) { - AdasManager.getInstance().sendDemoModeReq((int) data.value); - } - } else if (Constants.TITLE.SEND_BLIND_AREA.equals(name)) { - if (data.tag == SendCmdOption.TAG.BLIND_AREA) { - AdasManager.getInstance().sendBlindAreaCmd((boolean) data.value); - } - } else if (Constants.TITLE.SEND_V2N_TO_PNC.equals(name)) { - if (data.tag == SendCmdOption.TAG.V2N_TO_PNC) { - AdasManager.getInstance().sendV2nToPncCmd((boolean) data.value); - } - } else if (Constants.TITLE.SEND_SET_RAIN_MODE_REQ.equals(name)) { - if (data.tag == SendCmdOption.TAG.RAIN_MODE) { - AdasManager.getInstance().sendRainModeReq((int) data.value); - } - } else if (Constants.TITLE.SEND_DETOURING.equals(name)) { - if (data.tag == SendCmdOption.TAG.DETOURING) { - AdasManager.getInstance().sendDetouring((int) data.value); - } - } else if (Constants.TITLE.SEND_AEB.equals(name)) { - if (data.tag == SendCmdOption.TAG.AEB) { - AdasManager.getInstance().sendAebCmd((int) data.value); - } - } else if (Constants.TITLE.SEND_LANE_CHANGE_RESTRAIN_VALID.equals(name)) { - if (data.tag == SendCmdOption.TAG.LANE_CHANGE_RESTRAIN_VALID) { - AdasManager.getInstance().sendLaneChangeRestrainValid((int) data.value); - } - } else if (Constants.TITLE.SEND_STOP_YIELD_VALID.equals(name)) { - if (data.tag == SendCmdOption.TAG.STOP_YIELD_VALID) { - AdasManager.getInstance().sendStopYieldValid((int) data.value); - } - } else if (Constants.TITLE.SEND_HADMAP_SPEED_LIMIT_VALID.equals(name)) { - if (data.tag == SendCmdOption.TAG.HADMAP_SPEED_LIMIT_VALID) { - AdasManager.getInstance().sendHadmapSpeedLimitValid((int) data.value); - } - } else if (Constants.TITLE.SEND_RAMP_THETA_VALID.equals(name)) { - if (data.tag == SendCmdOption.TAG.RAMP_THETA_VALID) { - AdasManager.getInstance().sendRampThetaValid((int) data.value); - } - } else if (Constants.TITLE.SEND_GET_PARAM_REQ.equals(name)) { - if (data.tag == com.zhidao.support.adas.high.common.Constants.PARAM_TYPE.UNKNOWN) { - AdasManager.getInstance().sendGetAllParamReq(); - } else { - AdasManager.getInstance().sendGetParamReq((int) data.value); - } - } - } - }); - recyclerView.setAdapter(adapter); - } - - /** - * 初始化界面控件 - */ - private void initView() { - recyclerView = findViewById(R.id.recyclerView); - TextView title = findViewById(R.id.title); - title.setText(sendCmd.name); - } - - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/VersionFragment.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/VersionFragment.java deleted file mode 100644 index a6420d2506..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/VersionFragment.java +++ /dev/null @@ -1,544 +0,0 @@ -package com.zhidao.adas.client.ui; - -import android.content.Context; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.RadioButton; -import android.widget.RadioGroup; -import android.widget.Spinner; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.SimpleItemAnimator; - -import com.zhidao.adas.client.App; -import com.zhidao.adas.client.BuildConfig; -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.ConfigAdapter; -import com.zhidao.adas.client.adapter.InterfaceAdapter; -import com.zhidao.adas.client.base.BaseFragment; -import com.zhidao.adas.client.bean.Config; -import com.zhidao.adas.client.bean.InterfaceModel; -import com.zhidao.adas.client.utils.RandomColor; -import com.zhidao.support.adas.high.AdasManager; -import com.zhidao.support.adas.high.bean.VersionCompatibility; -import com.zhidao.support.adas.high.common.Constants; -import com.zhidao.support.adas.high.common.CupidLogUtils; -import com.zhidao.support.adas.high.common.MessageType; -import com.zhidao.support.adas.high.common.autopilot.ability.AutopilotAbilityManager; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Set; - -import chassis.Chassis; -import mogo.telematics.pad.MessagePad; - -/** - * @des 升级页面 - */ -public class VersionFragment extends BaseFragment { - private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS ", Locale.getDefault()); - private TextView ipsView; - private EditText ipView; - private RecyclerView recyclerView; - private RecyclerView rec_registered; - private RecyclerView rec_unregistered; - private CheckBox registered_check_all; - private CheckBox unregistered_check_all; - private TextView hint_registered; - private TextView hint_unregistered; - private TextView can; - private TextView gear_influence; - private TextView gear; - private TextView title_gear; - private RadioButton rb_taxi; - private RadioGroup rg; - - private ConfigAdapter adapter; - private InterfaceAdapter unregisteredAdapter; - private InterfaceAdapter registeredAdapter; - - private int role = Constants.TERMINAL_ROLE.DEBUG;//角色 默认调试屏 - - public VersionFragment() { - } - - - public VersionFragment(String title) { - super(title); - } - - - @Override - public void onAttach(@NonNull Context context) { - super.onAttach(context); - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_version, container, false); - initView(view); - return view; - } - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - showIps(); - showVersion(); - } - - - private void showIps() { - HashSet ips = AdasManager.getInstance().getIPCFixationIPList(getActivity()); - if (ips != null && !ips.isEmpty()) { - StringBuilder builder = new StringBuilder(); - int i = 0; - for (String ip : ips) { - i++; - builder.append(ip); - if (i % 4 == 0) { - builder.append("\n"); - } else { - builder.append("\t\t\t\t"); - } - } - ipsView.setText(builder.toString()); - } - - } - - - private void initView(View view) { - TextView tvTitle = view.findViewById(R.id.tv_title); - Button btn1 = view.findViewById(R.id.btn1); - ipView = view.findViewById(R.id.ip); - Button btn2 = view.findViewById(R.id.btn2); - ipsView = view.findViewById(R.id.ips_view); - recyclerView = view.findViewById(R.id.config_list); - rb_taxi = view.findViewById(R.id.rb_taxi); - can = view.findViewById(R.id.can); - gear_influence = view.findViewById(R.id.gear_influence); - gear = view.findViewById(R.id.gear); - title_gear = view.findViewById(R.id.title_gear); - rg = view.findViewById(R.id.rg); - initFragmentRecyclerView(); - CupidLogUtils.w("InfoFragment===>" + title); - tvTitle.setText(title); - tvTitle.setGravity(Gravity.CENTER); - initRegistrationView(view); - btn1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - String ip = ipView.getText().toString().trim(); - if (TextUtils.isEmpty(ip)) { - Toast.makeText(getContext(), "请输入IP", Toast.LENGTH_SHORT).show(); - return; - } - if (AdasManager.getInstance().addIPCFixationIP(getContext(), ip)) { - ipView.setText(""); - showIps(); - } else { - Toast.makeText(getContext(), "IP已存在", Toast.LENGTH_SHORT).show(); - } - } - }); - btn2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - String ip = ipView.getText().toString().trim(); - if (TextUtils.isEmpty(ip)) { - Toast.makeText(getContext(), "请输入IP", Toast.LENGTH_SHORT).show(); - return; - } - if (AdasManager.getInstance().delIPCFixationIP(getContext(), ip)) { - ipView.setText(""); - showIps(); - } else { - Toast.makeText(getContext(), "IP不存在", Toast.LENGTH_SHORT).show(); - } - } - }); - if (BuildConfig.IS_CLIENT) { - view.findViewById(R.id.ipc_ip_config).setVisibility(View.GONE); - view.findViewById(R.id.line1).setVisibility(View.GONE); - tvTitle.setText("版本"); - } - rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(RadioGroup group, int checkedId) { - if (checkedId == R.id.rb_taxi) { - AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI); - gear("TAXI", BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI); - } else if (checkedId == R.id.rb_bus) { - AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_BUS); - gear("BUS", BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_BUS); - } else if (checkedId == R.id.rb_sweeper) { - AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_SWEEPER); - gear("SWEEPER", BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_SWEEPER); - } else if (checkedId == R.id.rb_m1) { - AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M1); - gear("M1", BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M1); - } else if (checkedId == R.id.rb_m2) { - AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M2); - gear("M1", BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_M2); - } else if (checkedId == R.id.rb_van) { - AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_VAN); - gear("VAN", BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_VAN); - } - } - }); - gear("TAXI", BuildConfig.UNABLE_LAUNCH_AUTOPILOT_GEAR_TAXI); - } - - private void gear(String car, Set unableLaunchAutopilotGear) { - title_gear.setText(car + "不能启动自动驾驶的档位:"); - String gear; - if (unableLaunchAutopilotGear == null) { - gear = "无限制"; - } else { - gear = Arrays.toString(unableLaunchAutopilotGear.toArray()); - } - this.gear.setText(gear); - } - - //根据连接状态更新数据 - @Override - public void onConnectionIPCStatus(int ipcConnectionStatus) { - super.onConnectionIPCStatus(ipcConnectionStatus); - if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.DISCONNECTED || ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) { - showVersion(); - initRegistrationData(); - if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.DISCONNECTED) { - clearRegistrationViewState(); - } - } - } - - public void showVersion() { - List list = new ArrayList<>(); - if (!BuildConfig.IS_CLIENT) { - String ip = AdasManager.getInstance().getIpcConnectedIp(); - String temp = ""; - if (!TextUtils.isEmpty(ip)) { - temp = ip + ":" + AdasManager.getInstance().getIpcConnectedPort(); - } - MessagePad.CarConfigResp adasConfig = AdasManager.getInstance().getCarConfig(); - list.add(new Config("更新时间:", AdasManager.getInstance().getIpcConnectionStatus() == Constants.IPC_CONNECTION_STATUS.CONNECTED ? sdf.format(new Date()) : null)); - list.add(new Config("工控机IP:", temp)); - list.add(new Config("工控机版本:", adasConfig == null ? null : adasConfig.getDockVersion())); - list.add(new Config("车牌号:", adasConfig == null ? null : adasConfig.getPlateNumber())); - list.add(new Config("MAC地址:", adasConfig == null ? null : adasConfig.getMacAddress())); - list.add(new Config("自动驾驶限速:", adasConfig == null ? null : adasConfig.getSpeedLimit() + "m/s")); - list.add(new Config("最大自动驾驶限速:", adasConfig == null ? null : adasConfig.getMaxSpeedLimit() + "m/s")); - list.add(new Config("最小加速度:", adasConfig == null ? null : adasConfig.getMinAcceleration() + "m/s²")); - list.add(new Config("最大加速度:", adasConfig == null ? null : adasConfig.getMaxAcceleration() + "m/s²")); - list.add(new Config("IPC通信协议版本:", adasConfig == null ? null : String.valueOf(adasConfig.getProtocolVersionValue()))); - list.add(new Config("APP通信协议版本:", String.valueOf(AdasManager.getInstance().getProtocolVersion()))); - VersionCompatibility versionCompatibility = AdasManager.getInstance().getVersionCompatibility(); - list.add(new Config("版本兼容性:", versionCompatibility == null ? null : versionCompatibility.toString())); - } - - list.add(new Config("ADAS LIB版本:", AdasManager.getInstance().getAdasVersion())); - list.add(new Config("APP版本:", BuildConfig.VERSION_NAME)); - list.add(new Config("APP构建时间:", BuildConfig.BUILD_TIME)); - list.add(new Config("GIT分支:", BuildConfig.GIT_BRANCH_NAME)); - list.add(new Config("APK名称:", BuildConfig.APK_NAME)); - adapter.setData(list); - } - - private String gear() { - StringBuilder builder = new StringBuilder(); - Chassis.GearPosition gear = App.INSTANCE.gear; - if (gear != null) { - boolean b = AutopilotAbilityManager.getInstance().isLaunchAutopilot(gear); - builder.append(" 当前档位:").append(gear.name()); - builder.append(" 是否可以启动自驾:").append(b); - } - return builder.toString(); - } - - private String getAutopilotAbilityConfig(String value) { - return value; - } - - public void autopilotAbility(boolean isAutopilotAbility, String unableAutopilotReason) { - if (getActivity() != null) - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - can.setTextColor(getResources().getColor(RandomColor.randomColor())); - can.setText(getAutopilotAbilityConfig(isAutopilotAbility + ",原因:" + unableAutopilotReason)); - gear_influence.setTextColor(getResources().getColor(RandomColor.randomColor())); - gear_influence.setText(gear()); - } - }); - - - } - - private void updateRefreshConfig(List list, Config temp) { - int index = list.indexOf(temp); - if (index < 0) { - list.add(temp); - if (getActivity() != null) - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - adapter.notifyItemInserted(list.size() - 1); - } - }); - } else { - Config config = list.get(index); - config.cover(temp); - config.color = RandomColor.randomColor(); - if (getActivity() != null) - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - adapter.notifyItemChanged(index); - } - }); - } - } - - @Override - protected void onRefreshView() { - showVersion(); - } - - private void initFragmentRecyclerView() { - //创建默认的线性LayoutManager 横向的GridLayoutManager - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity()); - linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - recyclerView.setLayoutManager(linearLayoutManager); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - recyclerView.setHasFixedSize(true); - //解决局部刷新闪屏问题 - SimpleItemAnimator animator = (SimpleItemAnimator) recyclerView.getItemAnimator(); - if (animator != null) - animator.setSupportsChangeAnimations(false); - //创建并设置Adapter - adapter = new ConfigAdapter(); - recyclerView.setAdapter(adapter); - } - - - private void initRegistrationView(View view) { - recyclerView = view.findViewById(R.id.config_list); - rec_registered = view.findViewById(R.id.rec_registered); - rec_unregistered = view.findViewById(R.id.rec_unregistered); - registered_check_all = view.findViewById(R.id.registered_check_all); - unregistered_check_all = view.findViewById(R.id.unregistered_check_all); - hint_unregistered = view.findViewById(R.id.hint_unregistered); - hint_registered = view.findViewById(R.id.hint_registered); - Button update = view.findViewById(R.id.update); - initFragmentRecyclerView(); - initRegisteredRecyclerView(); - initUnregisteredRecyclerView(); - initSpinner(view); - registered_check_all.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (buttonView.isPressed()) { - registeredAdapter.setCheckAll(isChecked); - unregisteredAdapter.setCheckAll(false); - unregisteredAdapter.setEnabled(!isChecked); - unregistered_check_all.setEnabled(!isChecked); - } - } - }); - registeredAdapter.setListener(new InterfaceAdapter.OnInterfaceAdapterListener() { - @Override - public void onCheckAll(boolean isCheckAll) { - registered_check_all.setChecked(isCheckAll); - } - - @Override - public void onCheckNum(int checkNum) { - boolean isEnable = checkNum == 0; - unregisteredAdapter.setEnabled(isEnable); - unregistered_check_all.setEnabled(isEnable); - } - }); - unregistered_check_all.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (buttonView.isPressed()) { - unregisteredAdapter.setCheckAll(isChecked); - registeredAdapter.setCheckAll(false); - registeredAdapter.setEnabled(!isChecked); - registered_check_all.setEnabled(!isChecked); - } - } - }); - unregisteredAdapter.setListener(new InterfaceAdapter.OnInterfaceAdapterListener() { - @Override - public void onCheckAll(boolean isCheckAll) { - unregistered_check_all.setChecked(isCheckAll); - } - - @Override - public void onCheckNum(int checkNum) { - boolean isEnable = checkNum == 0; - registeredAdapter.setEnabled(isEnable); - registered_check_all.setEnabled(isEnable); - } - }); - update.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - update(); - } - }); - initRegistrationData(); - } - - - private void update() { - if (registeredAdapter.getCheckNum() == 0 && unregisteredAdapter.getCheckNum() == 0) { - Toast.makeText(getContext(), "请选择后在更新", Toast.LENGTH_SHORT).show(); - return; - } - Set set; - if (registeredAdapter.getCheckNum() == 0) { - //注册 - set = unregisteredAdapter.getCheckedModel(); - if (set == null || set.isEmpty()) { - Toast.makeText(getContext(), "请选择要注册的接口", Toast.LENGTH_SHORT).show(); - return; - } - if (set.size() == 1) { - AdasManager.getInstance().subscribeInterface(role, Constants.SUBSCRIBE_TYPE.SUBSCRIBE, set.iterator().next()); - } else { - AdasManager.getInstance().subscribeInterface(role, Constants.SUBSCRIBE_TYPE.SUBSCRIBE, set); - } - } else { - //取消注册 - set = registeredAdapter.getCheckedModel(); - if (set == null || set.isEmpty()) { - Toast.makeText(getContext(), "请选择要取消注册的接口", Toast.LENGTH_SHORT).show(); - return; - } - if (set.size() == 1) { - AdasManager.getInstance().subscribeInterface(role, Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE, set.iterator().next()); - } else { - AdasManager.getInstance().subscribeInterface(role, Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE, set); - } - } - clearRegistrationViewState(); - initRegistrationData(); - - } - - private void clearRegistrationViewState() { - registered_check_all.setChecked(false); - unregistered_check_all.setChecked(false); - registered_check_all.setEnabled(true); - unregistered_check_all.setEnabled(true); - if (registeredAdapter != null) - registeredAdapter.notifyDataSetChanged(); - if (unregisteredAdapter != null) - unregisteredAdapter.notifyDataSetChanged(); - } - - private void initRegistrationData() { - //初始化数据 - Set set = AdasManager.getInstance().getSubscribedInterface(); - List registeredList = new ArrayList<>(); - List unregisteredList = new ArrayList<>(); - if (set != null && !set.isEmpty()) { - registered_check_all.setVisibility(View.VISIBLE); - for (MessageType messageType : set) { - registeredList.add(new InterfaceModel(messageType)); - } - } else { - registered_check_all.setVisibility(View.INVISIBLE); - } - set = AdasManager.getInstance().getUnsubscribedInterface(); - if (set != null && !set.isEmpty()) { - unregistered_check_all.setVisibility(View.VISIBLE); - for (MessageType messageType : set) { - unregisteredList.add(new InterfaceModel(messageType)); - } - } else { - unregistered_check_all.setVisibility(View.INVISIBLE); - } - registeredAdapter.setData(registeredList, 0); - unregisteredAdapter.setData(unregisteredList, 0); - hint_registered.setText("已注册接口(" + registeredAdapter.getItemCount() + ")"); - hint_unregistered.setText("未注册接口(" + unregisteredAdapter.getItemCount() + ")"); - } - - - private void initRegisteredRecyclerView() { - //创建默认的线性LayoutManager 横向的GridLayoutManager - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); - linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - rec_registered.setLayoutManager(linearLayoutManager); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - rec_registered.setHasFixedSize(false); - rec_registered.setNestedScrollingEnabled(false); - registeredAdapter = new InterfaceAdapter(); - rec_registered.setAdapter(registeredAdapter); - } - - private void initUnregisteredRecyclerView() { - //创建默认的线性LayoutManager 横向的GridLayoutManager - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); - linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - rec_unregistered.setLayoutManager(linearLayoutManager); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - rec_unregistered.setHasFixedSize(false); - rec_unregistered.setNestedScrollingEnabled(false); - unregisteredAdapter = new InterfaceAdapter(); - rec_unregistered.setAdapter(unregisteredAdapter); - } - - - private void initSpinner(View view) { - String[] s = {"司机", "乘客", "调试"}; - ArrayAdapter dataAdapter = new ArrayAdapter(getContext(), android.R.layout.simple_spinner_item, s); - dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner sp = view.findViewById(R.id.spinner); - sp.setAdapter(dataAdapter); - sp.setSelection(2); - sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - role = position; - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleDialog.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleDialog.java deleted file mode 100644 index 6f5d1761c8..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleDialog.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.zhidao.adas.client.ui.special; - -import android.app.Dialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.SimpleItemAnimator; - -import com.zhidao.adas.client.App; -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.adapter.SpecialVehicleAdapter; -import com.zhidao.adas.client.base.BaseAdapter; -import com.zhidao.adas.client.bean.SpecialVehicleBean; -import com.zhidao.adas.client.ui.AutopilotConfigActivity; - -import java.util.List; - - -/** - * 特种车辆 - */ -public class SpecialVehicleDialog extends Dialog { - private RecyclerView recyclerView; - private List list; - - - public SpecialVehicleDialog(@NonNull Context context, List list) { - super(context, R.style.CustomDialog); - this.list = list; - } - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_autopilot_mode); - //初始化界面控件 - initView(); - //初始化界面控件的事件 - initListener(); - initBtnRecyclerView(); - setOnDismissListener(new OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - } - }); - - } - - @Override - public void show() { - super.show(); - } - - - private void initBtnRecyclerView() { - //初始info-recycle - LinearLayoutManager nodLinearLayoutManage = new LinearLayoutManager(getContext()); - nodLinearLayoutManage.setOrientation(LinearLayoutManager.VERTICAL); - recyclerView.setLayoutManager(nodLinearLayoutManage); - //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 - recyclerView.setHasFixedSize(true); - //解决局部刷新闪屏问题 - SimpleItemAnimator animatorInfo = (SimpleItemAnimator) recyclerView.getItemAnimator(); - if (animatorInfo != null) - animatorInfo.setSupportsChangeAnimations(false); - //创建并设置Adapter - SpecialVehicleAdapter adapter = new SpecialVehicleAdapter(list); - recyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() { - @Override - public void onItemClick(int position, SpecialVehicleBean data) { - if (data.options == null) { - Toast.makeText(getContext(), "“" + data.name + "”暂未支持", Toast.LENGTH_SHORT).show(); - } else { - data.showFloat(App.INSTANCE); - SpecialVehicleDialog.this.dismiss(); - } - - } - }); - } - - /** - * 初始化界面的确定和取消监听器 - */ - private void initListener() { - findViewById(R.id.settings).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - getContext().startActivity(new Intent(getContext(), AutopilotConfigActivity.class)); - } - }); - } - - - /** - * 初始化界面控件 - */ - private void initView() { - recyclerView = findViewById(R.id.recyclerView); - findViewById(R.id.settings).setVisibility(View.GONE); - findViewById(R.id.cancel).setVisibility(View.GONE); - TextView textView = findViewById(R.id.title); - textView.setText("特种车辆"); - } - - -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleFloatWindow.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleFloatWindow.java deleted file mode 100644 index 51a652c336..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleFloatWindow.java +++ /dev/null @@ -1,461 +0,0 @@ -package com.zhidao.adas.client.ui.special; - -import android.content.Context; -import android.graphics.Color; -import android.os.Handler; -import android.os.Message; -import android.util.DisplayMetrics; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.FrameLayout; -import android.widget.HorizontalScrollView; -import android.widget.LinearLayout; -import android.widget.RadioButton; -import android.widget.RadioGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.appcompat.widget.AppCompatButton; - -import com.zhidao.adas.client.R; -import com.zhidao.adas.client.bean.SpecialVehicleBean; -import com.zhidao.adas.client.bean.SpecialVehicleOption; -import com.zhidao.adas.client.utils.SysBarUtil; - -import java.lang.ref.WeakReference; - - -/** - * 2017/1/10. - * Description:全局悬浮窗口 - */ - -public class SpecialVehicleFloatWindow extends LinearLayout { - - /*********************悬浮窗相关***********************/ - - private int sW; - private int sH; - private boolean isMaximize = true;//是否是最大化 - private WindowManager wm; - //此wmParams变量为获取的全局变量,用以保存悬浮窗口的属性 - private WindowManager.LayoutParams wmParams; - private int btnMaximizeW; - private int btnMaximizeH; - - /*********************CAN数据配置相关***********************/ - private final static int WHAT_UPDATE_DATA = 1; - private BaseHandler mBaseHandler; - private LinearLayout layout_btn; - private HorizontalScrollView btn_list; - private AppCompatButton btn_send; - private RadioGroup rg_send_type; - private TextView text; - private TextView title; - private TextView btn_maximize; - private View can_parent; - - private OnFloatWindowListener listener; - private final SpecialVehicleBean specialVehicleBean; - - public interface OnFloatWindowListener { - void onBack(); - - void onMinimality(); - - void onMaximize(); - } - - public boolean isMaximize() { - return isMaximize; - } - - public void setOnFloatWindowListener(OnFloatWindowListener listener) { - this.listener = listener; - } - - public void setWmParams(WindowManager.LayoutParams wmParams) { - this.wmParams = wmParams; - } - - public SpecialVehicleFloatWindow(@NonNull Context context, @NonNull SpecialVehicleBean specialVehicleBean) { - super(context, null, 0); - this.specialVehicleBean = specialVehicleBean; - wm = (WindowManager) context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); - //加载布局 - LayoutInflater.from(context).inflate(R.layout.dialog_special_vehicle_config, this, true); - initParameter(); - initCanView(); - } - - private void initParameter() { - DisplayMetrics metrics2 = getResources().getDisplayMetrics(); - sW = metrics2.widthPixels; - sH = metrics2.heightPixels; - } - - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (event.getAction() == KeyEvent.ACTION_UP) { - if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { - if (isMaximize) { - minimality(); - return true; - } - } - } - return super.dispatchKeyEvent(event); - } - - private float mInViewX; - private float mInViewY; - private float mDownInScreenX; - private float mDownInScreenY; - private float mInScreenX; - private float mInScreenY; - - @Override - public boolean onTouchEvent(MotionEvent event) { - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - // 获取相对View的坐标,即以此View左上角为原点 - mInViewX = event.getX(); - mInViewY = event.getY(); - // 获取相对屏幕的坐标,即以屏幕左上角为原点 - mDownInScreenX = event.getRawX(); - mDownInScreenY = event.getRawY() - SysBarUtil.getSysBarHeight(getContext()); - mInScreenX = event.getRawX(); - mInScreenY = event.getRawY() - SysBarUtil.getSysBarHeight(getContext()); - - if (!isMaximize) { - btn_maximize.setPressed(true); - btnMaximizeW = btn_maximize.getWidth(); - btnMaximizeH = btn_maximize.getHeight(); - } - break; - case MotionEvent.ACTION_MOVE: - // 更新浮动窗口位置参数 - mInScreenX = event.getRawX(); - mInScreenY = event.getRawY() - SysBarUtil.getSysBarHeight(getContext()); - wmParams.x = (int) (mInScreenX - mInViewX); - wmParams.y = (int) (mInScreenY - mInViewY); - updateViewLayout(); - break; - - case MotionEvent.ACTION_UP: - // 如果手指离开屏幕时,xDownInScreen和xInScreen相等,且yDownInScreen和yInScreen相等,则视为触发了单击事件。 -// if (mDownInScreenX == mInScreenX && mDownInScreenY == mInScreenY) { - float temX = Math.abs(mDownInScreenX - mInScreenX); - float temY = Math.abs(mDownInScreenY - mInScreenY); - if (temX + temY < 10) { - maximize(); - } else { - if (isMaximize) { - specialVehicleBean.setFloatWindowLocationMaxX(getContext(), wmParams.x); - specialVehicleBean.setFloatWindowLocationMaxY(getContext(), wmParams.y); - } else { - btn_maximize.setPressed(false); - // 抬起手指时让floatView屏幕左右边缘 距离20个像素 -// wmParams.x = wmParams.x <= (sW / 2) ? AmiConstants.SCREEN_MARGIN : sW - btnMaximizeW - AmiConstants.SCREEN_MARGIN; - int tem = wmParams.x; - if (tem < SpecialVehicleBean.SCREEN_MARGIN) - tem = SpecialVehicleBean.SCREEN_MARGIN; - else if (sW - (tem + btnMaximizeW) < SpecialVehicleBean.SCREEN_MARGIN) { - tem = sW - btnMaximizeW - SpecialVehicleBean.SCREEN_MARGIN; - } - wmParams.x = tem; - tem = wmParams.y; - if (tem < SpecialVehicleBean.SCREEN_MARGIN) - tem = SpecialVehicleBean.SCREEN_MARGIN; - else if (sH - (tem + btnMaximizeH) < SpecialVehicleBean.SCREEN_MARGIN) { - tem = sH - btnMaximizeH - SpecialVehicleBean.SCREEN_MARGIN; - } - wmParams.y = tem; - updateViewLayout(); - specialVehicleBean.setFloatWindowLocationMinX(getContext(), wmParams.x); - specialVehicleBean.setFloatWindowLocationMinY(getContext(), wmParams.y); - } - } - - break; - } - return true; - } - - public void updateViewLayout() { - wm.updateViewLayout(this, wmParams); - } - - // 获取系统状态栏高度 - private int sbar = -1; - - - /*****************************业务逻辑*******************************************/ - - - private void initCanView() { - initHandler(); - can_parent = findViewById(R.id.can_parent); - btn_list = findViewById(R.id.btn_list); - btn_send = findViewById(R.id.btn_send); - rg_send_type = findViewById(R.id.rg_send_type); - text = findViewById(R.id.text); - title = findViewById(R.id.title); - title.setText(specialVehicleBean.name); - btn_maximize = findViewById(R.id.btn_maximize); - btn_maximize.setText(specialVehicleBean.simpleName); - initListener(); - initBtnRecyclerView(); - initSendTypeView(); - } - - private void initSendTypeView() { - int resId; - switch (specialVehicleBean.sendType) { - default: - case SpecialVehicleBean.SEND_TYPE.ONE: - resId = R.id.btn_one; - break; - case SpecialVehicleBean.SEND_TYPE.MORE: - resId = R.id.btn_more; - break; - case SpecialVehicleBean.SEND_TYPE.ALL: - resId = R.id.btn_all; - break; - } - rg_send_type.check(resId); - btn_send.setVisibility(specialVehicleBean.sendType == SpecialVehicleBean.SEND_TYPE.ONE ? View.GONE : View.VISIBLE); - rg_send_type.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(RadioGroup group, int checkedId) { - View checkView = group.findViewById(checkedId); - if (!checkView.isPressed()) { - return; - } - int type = SpecialVehicleBean.SEND_TYPE.ONE; - if (checkedId == R.id.btn_more) { - type = SpecialVehicleBean.SEND_TYPE.MORE; - } else { - if (specialVehicleBean.sendType == SpecialVehicleBean.SEND_TYPE.MORE) { - for (int i = 0; i < layout_btn.getChildCount(); i++) { - LinearLayout view = (LinearLayout) layout_btn.getChildAt(i); - RadioGroup radioGroup = view.findViewById(R.id.item_group); - SpecialVehicleOption option = specialVehicleBean.options.get(i); - if (option.moreCheckPos != -1) { - option.moreCheckPos = -1; - radioGroup.check(option.checkPos); - } - } - } - if (checkedId == R.id.btn_one) { - type = SpecialVehicleBean.SEND_TYPE.ONE; - } else if (checkedId == R.id.btn_all) { - type = SpecialVehicleBean.SEND_TYPE.ALL; - } - } - specialVehicleBean.sendType = type; - btn_send.setVisibility(type == SpecialVehicleBean.SEND_TYPE.ONE ? View.GONE : View.VISIBLE); - } - }); - btn_send.setOnClickListener(onClickListener); - } - - - private void initListener() { - findViewById(R.id.btn_back).setOnClickListener(onClickListener); - findViewById(R.id.btn_minimality).setOnClickListener(onClickListener); - } - - public void minimality() { - isMaximize = false; - btn_maximize.setVisibility(VISIBLE); - can_parent.setVisibility(GONE); - if (listener != null) { - listener.onMinimality(); - } - - } - - public void maximize() { - isMaximize = true; - if (listener != null) { - listener.onMaximize(); - } - btn_maximize.setVisibility(GONE); - can_parent.setVisibility(VISIBLE); - - } - - private final OnClickListener onClickListener = new OnClickListener() { - @Override - public void onClick(View v) { - int id = v.getId(); - if (id == R.id.btn_back) { - if (listener != null) { - listener.onBack(); - } - } else if (id == R.id.btn_minimality) { - minimality(); - } else if (id == R.id.btn_send) { - String cmd = specialVehicleBean.sendCmd(-1); - updateText(0, cmd); - } - } - }; - - - private void initBtnRecyclerView() { - - layout_btn = new LinearLayout(getContext()); - btn_list.addView(layout_btn); - layout_btn.setOrientation(LinearLayout.HORIZONTAL); - FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) layout_btn.getLayoutParams(); - lp.gravity = Gravity.CENTER_VERTICAL; - for (int i = 0; i < specialVehicleBean.options.size(); i++) { - SpecialVehicleOption bean = specialVehicleBean.options.get(i); - View view = LayoutInflater.from(getContext()).inflate(R.layout.item_special_vehicle, layout_btn, false); - TextView name = view.findViewById(R.id.name); - RadioGroup radioGroup = view.findViewById(R.id.item_group); - - name.setText(bean.name); - String[] value = bean.value; - for (int j = 0; j < value.length; j++) { - RadioButton button = LayoutInflater.from(getContext()).inflate(R.layout.item_special_vehicle_option_radio_btn, radioGroup, false) - .findViewById(R.id.r_btn); - button.setText(value[j]); - button.setId(j); - if (specialVehicleBean.tag.equals(SpecialVehicleBean.TAG.FTQSC)) { - if (i == 1 || i == 2 || i == 3 || i == 4) { - ViewGroup.LayoutParams layoutParams = button.getLayoutParams(); - layoutParams.width = 202; - } - } - radioGroup.addView(button); - } - radioGroup.setTag(bean.tag); - radioGroup.setOnCheckedChangeListener(onCheckedChangeListener); - radioGroup.check(bean.checkPos); - layout_btn.addView(view); - } - } - - private final RadioGroup.OnCheckedChangeListener onCheckedChangeListener = new RadioGroup.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(RadioGroup group, int checkedId) { - View checkView = group.findViewById(checkedId); - if (checkView == null || !checkView.isPressed()) { - return; - } - int tag = (int) group.getTag(); - SpecialVehicleOption bean = specialVehicleBean.options.get(tag); - if (specialVehicleBean.sendType != SpecialVehicleBean.SEND_TYPE.MORE) { - bean.checkPos = checkedId; - String cmd = specialVehicleBean.sendCmd(tag); - updateText(0, cmd); - } else { - bean.moreCheckPos = checkedId; - } - } - }; - - - /** - * 更新文本 - * - * @param tag 0--发送 1--接收 - * @param data 数据 - */ - private void updateText(int tag, String data) { - Message msg = Message.obtain(); - msg.what = WHAT_UPDATE_DATA; - msg.obj = data; - msg.arg1 = tag; - getHandler().sendMessage(msg); - } - - - /** - * 初始化一个Handler,如果需要使用Handler,先调用此方法, - * 然后可以使用postRunnable(Runnable runnable), - * sendMessage在handleMessage(Message msg)中接收msg - */ - public void initHandler() { - mBaseHandler = new BaseHandler(this); - } - - /** - * 返回Handler,在此之前确定已经调用initHandler() - * - * @return Handler - */ - public Handler getHandler() { - return mBaseHandler; - } - - /** - * 同Handler的postRunnable - * 在此之前确定已经调用initHandler() - */ - protected void postRunnable(Runnable runnable) { - postRunnableDelayed(runnable, 0); - } - - /** - * 同Handler的postRunnableDelayed - * 在此之前确定已经调用initHandler() - */ - protected void postRunnableDelayed(Runnable runnable, long delayMillis) { - if (mBaseHandler == null) initHandler(); - mBaseHandler.postDelayed(runnable, delayMillis); - } - - - /** - * 同Handler 的 handleMessage, - * getHandler.sendMessage,发送的Message在此接收 - * 在此之前确定已经调用initHandler() - * - * @param msg - */ - protected void handleMessage(Message msg) { - switch (msg.what) { - case WHAT_UPDATE_DATA: - if (msg.arg1 == 0) { - text.setTextColor(Color.parseColor("#FFFFFF")); - } else { - text.setTextColor(Color.parseColor("#FF0000")); - } - String str = (String) msg.obj; - if (str.length() < 100) { - text.setTextSize(14); - } else { - text.setTextSize(10); - } - text.setText(str); - break; - } - - } - - - protected static class BaseHandler extends Handler { - private final WeakReference mObjects; - - public BaseHandler(SpecialVehicleFloatWindow mPresenter) { - mObjects = new WeakReference(mPresenter); - } - - @Override - public void handleMessage(Message msg) { - SpecialVehicleFloatWindow mPresenter = mObjects.get(); - if (mPresenter != null) - mPresenter.handleMessage(msg); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleFloatWindowManager.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleFloatWindowManager.java deleted file mode 100644 index 45068dee3d..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/special/SpecialVehicleFloatWindowManager.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.zhidao.adas.client.ui.special; - -import android.content.Context; -import android.graphics.PixelFormat; -import android.view.Gravity; -import android.view.WindowManager; - -import com.zhidao.adas.client.bean.SpecialVehicleBean; - - -public class SpecialVehicleFloatWindowManager implements SpecialVehicleFloatWindow.OnFloatWindowListener { - private final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); - private SpecialVehicleFloatWindow floatWindow = null; - private WindowManager wm = null; - private final Context context; - private final SpecialVehicleBean specialVehicleBean; - - public SpecialVehicleFloatWindowManager(Context context, SpecialVehicleBean specialVehicleBean) { - this.context = context; - this.specialVehicleBean = specialVehicleBean; - } - - public void show() { - if (!createFloatWindow()) { - if (floatWindow.isMaximize()) { - floatWindow.minimality(); - } else { - floatWindow.maximize(); - } - } - } - - private boolean createFloatWindow() { - if (floatWindow == null) { - wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; - layoutParams.format = PixelFormat.RGBA_8888; - layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;//| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE - layoutParams.gravity = Gravity.START | Gravity.TOP; - layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; - layoutParams.alpha = 0.9f; - floatWindow = new SpecialVehicleFloatWindow(context, specialVehicleBean); - floatWindow.setWmParams(layoutParams); - floatWindow.setOnFloatWindowListener(this); - layoutParams.x = specialVehicleBean.getFloatWindowLocationMaxX(context); - layoutParams.y = specialVehicleBean.getFloatWindowLocationMaxY(context); - wm.addView(floatWindow, layoutParams); - return true; - } - return false; - } - - private void removeFloatWindow() { - if (floatWindow != null) { - wm.removeView(floatWindow); - floatWindow = null; - wm = null; - } - } - - @Override - public void onBack() { - removeFloatWindow(); - } - - @Override - public void onMinimality() { - layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; - layoutParams.x = specialVehicleBean.getFloatWindowLocationMinX(context); - layoutParams.y = specialVehicleBean.getFloatWindowLocationMinY(context); - layoutParams.alpha = 1f; - if (floatWindow != null) { - floatWindow.updateViewLayout(); - } - } - - @Override - public void onMaximize() { - layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; - layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; - layoutParams.x = specialVehicleBean.getFloatWindowLocationMaxX(context); - layoutParams.y = specialVehicleBean.getFloatWindowLocationMaxY(context); - layoutParams.alpha = 0.9f; - if (floatWindow != null) { - floatWindow.updateViewLayout(); - } - } - - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/widget/SweeperVideoView.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/widget/SweeperVideoView.java deleted file mode 100644 index 69e1faceac..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/widget/SweeperVideoView.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.zhidao.adas.client.ui.widget; - - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.widget.AppCompatImageView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.Priority; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.request.RequestOptions; -import com.bumptech.glide.request.target.CustomTarget; -import com.bumptech.glide.request.transition.Transition; -import com.zhidao.adas.client.utils.image.GlideRoundedCornersTransform; - -/** - * 清扫车摄像头展示View - */ -public class SweeperVideoView extends AppCompatImageView { - private static final String TAG = SweeperVideoView.class.getSimpleName(); - private final RequestOptions requestOptions = new RequestOptions() - .priority(Priority.HIGH) - .skipMemoryCache(true) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .dontAnimate(); - - public SweeperVideoView(@NonNull Context context) { - super(context); - } - - public SweeperVideoView(@NonNull Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - public SweeperVideoView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - int i = 0; - - public void onSweeperFutianBackCameraVideo(@NonNull byte[] data) { - i++; - Log.i(TAG, "数据源加载次数=" + i); - Glide.with(SweeperVideoView.this) - .asBitmap() - .load(data) - .placeholder(SweeperVideoView.this.getDrawable()) -// .optionalTransform(new GlideRoundedCornersTransform(50f, GlideRoundedCornersTransform.CornerType.ALL)) - .apply(requestOptions) - .into(target); - - - } - - int j = 0; - private final CustomTarget target = new CustomTarget() { - @Override - public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { - j++; - Log.i(TAG, "显示回调次数=" + j); - //回调内容 - if (!resource.isRecycled()) { - setImageBitmap(resource); - } else { - Log.i(TAG, "显示回调 Bitmap被回收"); - } - } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - //这个方法在target被回收时调用,如果在除了imageView以外的地方引用了imageView中的bitmap,在这里清除引用以避免崩溃 - } - }; -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java deleted file mode 100644 index 5e31e26251..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java +++ /dev/null @@ -1,214 +0,0 @@ -package com.zhidao.adas.client.utils; - -import android.content.Context; -import android.os.Environment; -import android.text.TextUtils; - -import com.google.gson.reflect.TypeToken; -import com.zhidao.adas.client.bean.AutoPilotMode; -import com.zhidao.support.adas.high.common.JsonUtil; -import com.zhidao.support.adas.high.common.MessageType; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -/** - * @author song kenan - * @des - * @date 2021/10/8 - */ -public class Constants { - public static final String ROOT_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "IPCMonitoring" + File.separator;//程序外部存储跟目录 - public static final String FILE_PATH = ROOT_PATH + "Crash" + File.separator; - - private static final String ALL_PATH = "all_path";//所有路线 - private static final String DEFAULT_PATH = "[{\"endLatLon\":{\"latitude\":40.19774,\"longitude\":116.72704},\"endName\":\"汇源果汁\",\"name\":\"北京市顺义区北小营镇\",\"speedLimit\":20.0,\"startLatLon\":{\"latitude\":40.20047,\"longitude\":116.73512},\"startName\":\"13号路口西\"},{\"endLatLon\":{\"latitude\":40.19996,\"longitude\":116.73584},\"endName\":\"13号路口(主路)\",\"name\":\"北京市顺义区北小营镇\",\"speedLimit\":20.0,\"startLatLon\":{\"latitude\":40.19763,\"longitude\":116.72686},\"startName\":\"汇源果汁\"}]"; - - public static List getPaths(Context context) { - String json = PreferencesUtils.getString(context, ALL_PATH, DEFAULT_PATH); - List list = JsonUtil.fromJson(json, new TypeToken>() { - }.getType()); - return list; - } - - public static boolean setPath(Context context, List list) { - if (list != null) { - return PreferencesUtils.putString(context, ALL_PATH, JsonUtil.toJson(list)); - } - return false; - } - - public static boolean addPath(Context context, List list, AutoPilotMode mode) { - if (list == null) - list = new ArrayList<>(); - if (!list.contains(mode)) { - list.add(mode); - return PreferencesUtils.putString(context, ALL_PATH, JsonUtil.toJson(list)); - } - return false; - } - - public static boolean delPath(Context context, List list, AutoPilotMode mode) { - if (list == null) { - return PreferencesUtils.delete(context, ALL_PATH); - } else { - if (list.contains(mode)) { - list.remove(mode); - return PreferencesUtils.putString(context, ALL_PATH, JsonUtil.toJson(list)); - } - } - return false; - } - - - /***********************是否使用固定IP******************/ - // 0:固定IP 1:指定 2:UDP - private static final String IPC_CONNECTION_MODE = "ipc_connection_mode"; - - public static void setIpcConnectionMode(Context context, int type) { - PreferencesUtils.putInt(context, IPC_CONNECTION_MODE, type); - } - - public static int getIpcConnectionMode(Context context) { - return PreferencesUtils.getInt(context, IPC_CONNECTION_MODE, 0); - } - - public static boolean delIpcConnectionMode(Context context) { - return PreferencesUtils.delete(context, IPC_CONNECTION_MODE); - } - - /***********************保存IP******************/ - private static final String IPC_IP = "ipc_ip"; - - public static void setIPCIp(Context context, String ip) { - PreferencesUtils.putString(context, IPC_IP, ip); - } - - public static String getIPCIp(Context context) { - return PreferencesUtils.getString(context, IPC_IP, null); - } - - public static boolean delIPCIp(Context context) { - return PreferencesUtils.delete(context, IPC_IP); - } - - - /***********************保存使用过的IP列表******************/ - - - private static final String IPC_USED_IP = "ipc_used_ip"; - - public static List getIpcUsedIps(Context context) { - String json = PreferencesUtils.getString(context, IPC_USED_IP, null); - if (TextUtils.isEmpty(json)) return null; - List list = JsonUtil.fromJson(json, new TypeToken>() { - }.getType()); - return list; - } - - public static boolean addIpcUsedIps(Context context, List list, String mode) { - if (list == null) - list = new ArrayList<>(); - list.remove(mode); - list.add(0, mode); - if (list.size() > 10) { - list.remove(list.size() - 1); - } - return PreferencesUtils.putString(context, IPC_USED_IP, JsonUtil.toJson(list)); - } - - public static boolean delIpcUsedIps(Context context, List list, String mode) { - if (list == null) { - return PreferencesUtils.delete(context, IPC_USED_IP); - } else { - if (list.contains(mode)) { - list.remove(mode); - return PreferencesUtils.putString(context, IPC_USED_IP, JsonUtil.toJson(list)); - } - } - return false; - } - - /*********************存储超时检测按钮开关状态******************/ - private static final String TIMEOUT_ENABLE = "timeout_enable"; - - public static void setTimeoutEnable(Context context, boolean isEnable) { - PreferencesUtils.putBoolean(context, TIMEOUT_ENABLE, isEnable); - } - - public static boolean getTimeoutEnable(Context context) { - return PreferencesUtils.putBoolean(context, TIMEOUT_ENABLE, true); - } - - public static boolean delTimeoutEnable(Context context) { - return PreferencesUtils.delete(context, TIMEOUT_ENABLE); - } - - - public interface TITLE { - String RECEIVE_TRAJECTORY = MessageType.TYPE_RECEIVE_TRAJECTORY.desc; - String RECEIVE_TRACKED_OBJECTS = MessageType.TYPE_RECEIVE_TRACKED_OBJECTS.desc; - String RECEIVE_GNSS_INFO = MessageType.TYPE_RECEIVE_GNSS_INFO.desc; - String RECEIVE_CHASSIS_STATES = MessageType.TYPE_RECEIVE_CHASSIS_STATES.desc; - String RECEIVE_AUTOPILOT_STATE = MessageType.TYPE_RECEIVE_AUTOPILOT_STATE.desc; - String RECEIVE_FUNCTION_STATES = MessageType.TYPE_RECEIVE_FUNCTION_STATES.desc; - String RECEIVE_BACK_CAMERA_VIDEO = MessageType.TYPE_RECEIVE_BACK_CAMERA_VIDEO.desc; - String RECEIVE_REPORT_MESSAGE = MessageType.TYPE_RECEIVE_REPORT_MESSAGE.desc; - String RECEIVE_PERCEPTION_TRAFFIC_LIGHT = MessageType.TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT.desc; - String RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY = MessageType.TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY.desc; - String RECEIVE_POINT_CLOUD_ORIGINAL = MessageType.TYPE_RECEIVE_POINT_CLOUD.desc; - String RECEIVE_PLANNING_OBJECTS = MessageType.TYPE_RECEIVE_PLANNING_OBJECTS.desc; - String RECEIVE_PLANNING_DECISION_STATE = MessageType.TYPE_RECEIVE_PLANNING_DECISION_STATE.desc; - String RECEIVE_SWEEPER_TASK_INDEX_DATA = MessageType.TYPE_RECEIVE_SWEEPER_TASK_INDEX_DATA.desc; - String RECEIVE_V2N_CONGESTION_EVENT = MessageType.TYPE_RECEIVE_V2N_CONGESTION_EVENT.desc; - String RECEIVE_V2N_GLOBAL_PATH_EVENTS = MessageType.TYPE_RECEIVE_V2N_GLOBAL_PATH_EVENTS.desc; - String RECEIVE_GET_PARAM_RESP = MessageType.TYPE_RECEIVE_GET_PARAM_RESP.desc; - - // String RECEIVE_BASIC_INFO_REQ = "自动驾驶设备基础信息请求"; - String TITLE_CAR_CONFIG_RESP = "工控机版本\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t配置"; - String RECEIVE_CAR_CONFIG_RESP = "信息与配置"; - String RECEIVE_RECORD_RESULT = MessageType.TYPE_RECEIVE_RECORD_RESULT.desc; - String RECEIVE_BAG_MANAGER_CMD = MessageType.TYPE_RECEIVE_BAG_MANAGER_CMD.desc; - String RECEIVE_RECORD_DATA_CONFIG_RESP = MessageType.TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP.desc; - String RECEIVE_GLOBAL_PATH_RESP = MessageType.TYPE_RECEIVE_GLOBAL_PATH_RESP.desc; - String RECEIVE_WARN = MessageType.TYPE_RECEIVE_WARN.desc; - String RECEIVE_ARRIVAL_NOTIFICATION = MessageType.TYPE_RECEIVE_ARRIVAL_NOTIFICATION.desc; - String RECEIVE_STATUS_QUERY_RESP = MessageType.TYPE_RECEIVE_STATUS_QUERY_RESP.desc; - String RECEIVE_OBU_SPAT = "OBU SPAT信息"; - String RECEIVE_OBU_RSI = "OBU RSI信息"; - String RECEIVE_OBU_RSM = "OBU RSM信息"; - String RECEIVE_OBU_MAP = "OBU MAP信息"; - String RECEIVE_ERROR = "错误数据"; - - - String SEND_SET_AUTOPILOT_MODE_REQ = "自动驾驶模式"; - String SEND_GLOBAL_PATH_REQ = "自动驾驶路径查询"; - String SEND_SPECIAL_VEHICLE_TASK_CMD = "特种车辆"; - String SEND_STATUS_QUERY_REQ = "状态查询"; - String SEND_BASIC_INFO_RESP = "下发SN"; - String SEND_RECORD_DATA_5 = "数据采集5秒"; - String SEND_RECORD_DATA_START = "数据采集Start"; - String SEND_RECORD_DATA_END = "数据采集End"; - String SEND_TRAFFIC_LIGHT_DATA = "发送信号灯"; - String SEND_SET_AUTOPILOT_SPEED_REQ = "自动驾驶限速"; - String SEND_SYSTEM_CMD_REQ_REBOOT = "重启所有节点"; - String SEND_RECORD_CAUSE = "采集类型"; - String SEND_SET_DEMO_MODE_REQ = "演示模式"; - String SEND_SET_RAIN_MODE_REQ = "雨天模式"; - String SEND_RECORD_DATA_CONFIG_RESP = "数据采集配置"; - String SEND_DETOURING = "绕障类功能"; - String SEND_DETOURING_SPEED = "绕障速度阈值"; - String SEND_TRIP_INFO = "行程信息"; - String SEND_PLANNING_CMD = "Planning指令"; - String SEND_BLIND_AREA = "盲区数据开关"; - String SEND_V2N_TO_PNC = "V2N数据到PnC"; - String SEND_AEB = "AEB开关"; - String SEND_LANE_CHANGE_RESTRAIN_VALID = "限制绕障开关"; - String SEND_STOP_YIELD_VALID = "停车让行线前避让等待开关"; - String SEND_HADMAP_SPEED_LIMIT_VALID = "地图限速开关"; - String SEND_RAMP_THETA_VALID = "环岛模式开关"; - String SEND_GET_PARAM_REQ = "参数获取"; - - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/CrashHandler.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/CrashHandler.java deleted file mode 100644 index 14957a6a1f..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/CrashHandler.java +++ /dev/null @@ -1,293 +0,0 @@ -package com.zhidao.adas.client.utils; - -import android.content.Context; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.os.Build; -import android.os.Environment; -import android.os.Looper; -import android.util.Log; -import android.widget.Toast; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.io.Writer; -import java.lang.Thread.UncaughtExceptionHandler; -import java.lang.reflect.Field; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - - -/** - * ClassName: CrashHandler - * Function: UncaughtException处理类,当程序发生Uncaught异常的时候,由该类来接管程序,并记录发送错误报告. - * - * @author Norris Norris.sly@gmail.com - * @Date 2013 2013-3-24 下午12:27:10 - * @Fields ────────────────────────────────────────────────────────────────────────────────────────────────────── - * @Methods ────────────────────────────────────────────────────────────────────────────────────────────────────── - * 2013-3-24下午12:27:10 Modified By Norris - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - * @see ────────────────────────────────────────────────────────────────────────────────────────────────────── - * @since Ver 1.0 I used to be a programmer like you, then I took an arrow in the knee - */ -public class CrashHandler implements UncaughtExceptionHandler { - - /** - * Log日志的tag - * String : TAG - * - * @since 2013-3-21下午8:44:28 - */ - private static final String TAG = "NorrisInfo"; - /** - * 系统默认的UncaughtException处理类 - * Thread.UncaughtExceptionHandler : mDefaultHandler - * - * @since 2013-3-21下午8:44:43 - */ - private UncaughtExceptionHandler mDefaultHandler; - /** - * CrashHandler实例 - * CrashHandler : mInstance - * - * @since 2013-3-21下午8:44:53 - */ - private static CrashHandler mInstance = new CrashHandler(); - /** - * 程序的Context对象 - * Context : mContext - * - * @since 2013-3-21下午8:45:02 - */ - private Context mContext; - /** - * 用来存储设备信息和异常信息 - * Map : mLogInfo - * - * @since 2013-3-21下午8:46:15 - */ - private Map mLogInfo = new HashMap(); - /** - * 用于格式化日期,作为日志文件名的一部分(FIXME 注意在windows下文件名无法使用:等符号!) - * SimpleDateFormat : mSimpleDateFormat - * - * @since 2013-3-21下午8:46:39 - */ - private SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyyMMdd_HH-mm-ss"); - - /** - * Creates a new instance of CrashHandler. - */ - private CrashHandler() { - } - - /** - * getInstance:{获取CrashHandler实例 ,单例模式 } - * ────────────────────────────────── - * - * @return CrashHandler - * @throws - * @since I used to be a programmer like you, then I took an arrow in the knee Ver 1.0 - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - * 2013-3-21下午8:52:24 Modified By Norris - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - */ - public static CrashHandler getInstance() { - return mInstance; - } - - /** - * init:{初始化} - * ────────────────────────────────── - * - * @param paramContext - * @return void - * @throws - * @since I used to be a programmer like you, then I took an arrow in the knee Ver 1.0 - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - * 2013-3-21下午8:52:45 Modified By Norris - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - */ - public void init(Context paramContext) { - mContext = paramContext; - // 获取系统默认的UncaughtException处理器 - mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); - // 设置该CrashHandler为程序的默认处理器 - Thread.setDefaultUncaughtExceptionHandler(this); - } - - /** - * 当UncaughtException发生时会转入该重写的方法来处理 - * (non-Javadoc) - * - * @see UncaughtExceptionHandler#uncaughtException(Thread, Throwable) - */ - public void uncaughtException(Thread paramThread, Throwable paramThrowable) { - // 获取设备参数信息 - getDeviceInfo(mContext); -// mLogInfo.put("versionName", String.valueOf(BuildConfig.VERSION_CODE)); -// mLogInfo.put("versionCode", BuildConfig.VERSION_NAME); - // 保存日志文件 - String result = saveCrashLogToFile(paramThrowable); - mDefaultHandler.uncaughtException(paramThread, paramThrowable); -// if (!handleException(paramThrowable) && mDefaultHandler != null) { -// // 如果自定义的没有处理则让系统默认的异常处理器来处理 -// mDefaultHandler.uncaughtException(paramThread, paramThrowable); -// } else { -//// try { -//// // 如果处理了,让程序继续运行1秒再退出,保证文件保存并上传到服务器 -//// paramThread.sleep(1000); -//// } catch (InterruptedException e) { -//// e.printStackTrace(); -//// } -// // 退出程序 -// android.os.Process.killProcess(android.os.Process.myPid()); -// System.exit(1); -// } - } - - /** - * handleException:{自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.} - * ────────────────────────────────── - * - * @param paramThrowable - * @return true:如果处理了该异常信息;否则返回false. - * @throws - * @since I used to be a programmer like you, then I took an arrow in the knee Ver 1.0 - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - * 2013-3-24下午12:28:53 Modified By Norris - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - */ - public boolean handleException(Throwable paramThrowable) { - if (paramThrowable == null) - return false; - new Thread() { - public void run() { - Looper.prepare(); - Toast.makeText(mContext, "很抱歉,程序出现异常,即将退出", Toast.LENGTH_SHORT).show(); - Looper.loop(); - } - }.start(); - // 获取设备参数信息 - getDeviceInfo(mContext); - // 保存日志文件 - String result = saveCrashLogToFile(paramThrowable); - //上传崩溃日志 - return true; - } - - /** - * getDeviceInfo:{获取设备参数信息} - * ────────────────────────────────── - * - * @param paramContext - * @throws - * @since I used to be a programmer like you, then I took an arrow in the knee Ver 1.0 - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - * 2013-3-24下午12:30:02 Modified By Norris - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - */ - public void getDeviceInfo(Context paramContext) { - try { - // 获得包管理器 - PackageManager mPackageManager = paramContext.getPackageManager(); - // 得到该应用的信息,即主Activity - PackageInfo mPackageInfo = mPackageManager.getPackageInfo( - paramContext.getPackageName(), PackageManager.GET_ACTIVITIES); - if (mPackageInfo != null) { - String versionName = mPackageInfo.versionName == null ? "null" - : mPackageInfo.versionName; - String versionCode = mPackageInfo.versionCode + ""; - mLogInfo.put("versionName", versionName); - mLogInfo.put("versionCode", versionCode); - } - } catch (NameNotFoundException e) { - e.printStackTrace(); - } - // 反射机制 - Field[] mFields = Build.class.getDeclaredFields(); - // 迭代Build的字段key-value 此处的信息主要是为了在服务器端手机各种版本手机报错的原因 - for (Field field : mFields) { - try { - field.setAccessible(true); - mLogInfo.put(field.getName(), field.get("").toString()); - Log.d(TAG, field.getName() + ":" + field.get("")); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - - /** - * saveCrashLogToFile:{将崩溃的Log保存到本地} - * TODO 可拓展,将Log上传至指定服务器路径 - * ────────────────────────────────── - * - * @param paramThrowable - * @return FileName - * @throws - * @since I used to be a programmer like you, then I took an arrow in the knee Ver 1.0 - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - * 2013-3-24下午12:31:01 Modified By Norris - * ────────────────────────────────────────────────────────────────────────────────────────────────────── - */ - - - private String saveCrashLogToFile(Throwable paramThrowable) { - StringBuffer mStringBuffer = new StringBuffer(); - for (Map.Entry entry : mLogInfo.entrySet()) { - String key = entry.getKey(); - String value = entry.getValue(); - mStringBuffer.append(key + "=" + value + "\r\n"); - } - Writer mWriter = new StringWriter(); - PrintWriter mPrintWriter = new PrintWriter(mWriter); - paramThrowable.printStackTrace(mPrintWriter); - paramThrowable.printStackTrace(); - Throwable mThrowable = paramThrowable.getCause(); - // 迭代栈队列把所有的异常信息写入writer中 - while (mThrowable != null) { - mThrowable.printStackTrace(mPrintWriter); - // 换行 每个个异常栈之间换行 - mThrowable = mThrowable.getCause(); - } - - //记得关闭 - - String mResult = mWriter.toString(); - // String mResult = mWriter.toString().replace("\n", "").replace(":", "").replace("/", "").replace("\t", ""); - mStringBuffer.append(mResult); - // 保存文件,设置文件名 - String mTime = mSimpleDateFormat.format(new Date()); - String mFileName = mContext.getPackageName() + "_Exception-" + mTime + ".log"; - if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { - try { - File mDirectory = new File(Constants.FILE_PATH); - Log.d(TAG, mDirectory.toString()); - if (!mDirectory.exists()) - mDirectory.mkdirs(); - FileOutputStream mFileOutputStream = new FileOutputStream(mDirectory + File.separator + mFileName); - mFileOutputStream.write(mStringBuffer.toString().getBytes()); - mFileOutputStream.close(); - return mResult; - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return mResult; - } - - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/FileUtils.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/FileUtils.java deleted file mode 100644 index 5fbc347909..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/FileUtils.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.zhidao.adas.client.utils; - -import android.content.Context; - -import java.io.File; -import java.io.FileWriter; -import java.io.Writer; - -/** - * @author nie yunlong - * @des - * @date 2021/2/5 - */ -class FileUtils { - - /** - * 创建文件 - * - * @param data - * @param name - */ - public static void createFile(Context context, String data, String name) { - try { - File file = new File(context.getExternalFilesDir(null) + "/" + name); - if (!file.exists()) { - file.createNewFile(); - } - Writer out = new FileWriter(file,true); - out.write(data); - out.append("\n"); - out.flush(); - out.close(); - - } catch (Exception e) { - e.printStackTrace(); - } - - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/MyLinearLayoutManager.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/MyLinearLayoutManager.java deleted file mode 100644 index b4e06c2a6c..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/MyLinearLayoutManager.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.zhidao.adas.client.utils; - -import android.content.Context; -import android.util.AttributeSet; - -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -public class MyLinearLayoutManager extends LinearLayoutManager { - public MyLinearLayoutManager(Context context) { - super(context); - } - - public MyLinearLayoutManager(Context context, int orientation, boolean reverseLayout) { - super(context, orientation, reverseLayout); - } - - public MyLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - - @Override - public boolean supportsPredictiveItemAnimations() { - return false; - } - - @Override - public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { - //override this method and implement code as below - try { - super.onLayoutChildren(recycler, state); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/PermissionUtil.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/PermissionUtil.java deleted file mode 100644 index f50e46beda..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/PermissionUtil.java +++ /dev/null @@ -1,434 +0,0 @@ -package com.zhidao.adas.client.utils; - - -import android.Manifest; -import android.app.Activity; -import android.content.Context; -import android.content.pm.PackageManager; -import android.os.Build; -import android.util.Log; - -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -/** - * author:chenjs - */ -public class PermissionUtil { - private static final String TAG = PermissionUtil.class.getSimpleName(); - private static final boolean LOG_FLAG = true;//日志标识 - - //日历 - private static final String[] Group_Calendar = { - Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR - }; - //照相机 - private static final String[] Group_Camera = { - Manifest.permission.CAMERA - }; - //通讯录 - private static final String[] Group_Contacts = { - Manifest.permission.WRITE_CONTACTS, Manifest.permission.GET_ACCOUNTS, - Manifest.permission.READ_CONTACTS - }; - //定位 - private static final String[] Group_Location = { - Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION - }; - //麦克风 - private static final String[] Group_Microphone = { - Manifest.permission.RECORD_AUDIO - }; - //电话 - private static final String[] Group_Phone = { - Manifest.permission.READ_PHONE_STATE, Manifest.permission.CALL_PHONE, - Manifest.permission.READ_CALL_LOG, Manifest.permission.WRITE_CALL_LOG, - Manifest.permission.ADD_VOICEMAIL, Manifest.permission.USE_SIP, - Manifest.permission.PROCESS_OUTGOING_CALLS - }; - //传感器 - private static final String[] Group_Sensors = { - Manifest.permission.BODY_SENSORS - }; - //短信 - private static final String[] Group_Sms = { - Manifest.permission.READ_SMS, Manifest.permission.SEND_SMS, - Manifest.permission.RECEIVE_SMS, Manifest.permission.RECEIVE_MMS, - Manifest.permission.RECEIVE_WAP_PUSH - }; - //存储 - private static final String[] Group_Storage = { - Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE - }; - private static Map m_PermissionGroupList = null; - private static Map m_PermissionsMappingList = null; - - static { - initMap(); - } - - /** - * 通过权限组名来申请一组权限 - * - * @param context - * @param permissionGroupName - * @param requestCode - * @param listener - */ - public static void requestByGroupName(Activity context, String permissionGroupName, int requestCode, OnPermissionsListener listener) { - requestByGroupName(context, new String[]{permissionGroupName}, requestCode, listener); - } - - /** - * 通过权限组名来申请多组权限 - * - * @param context Activity上下文 - * @param pgNameArray 多个要申请的权限组名称 - * @param requestCode 请求码 - * @param listener 回调接口 - */ - public static void requestByGroupName(Activity context, String[] pgNameArray, int requestCode, OnPermissionsListener listener) { - showLog("requestByPermissionGroup"); - try { - //如果操作系统SDK级别在23之上(android6.0),就进行动态权限申请 - if (Build.VERSION.SDK_INT >= 23 && pgNameArray != null) { - String[] permissionsList = getAppPermissionsList(context);//应用权限列表 - ArrayList targetList = new ArrayList<>(); - if (permissionsList == null || permissionsList.length == 0) { - showLog("获得权限列表为空"); - return; - } - - for (String groupName : pgNameArray) { - ArrayList tmpPermissionList = isPermissionDeclared(permissionsList, groupName); - if (tmpPermissionList == null) {//未找到 - showLog("未找到[" + groupName + "]中的权限"); - continue; - } - - for (int i = 0; i < tmpPermissionList.size(); i++) { - //判断是否拥有权限 - int nRet = ContextCompat.checkSelfPermission(context, tmpPermissionList.get(i)); - if (nRet != PackageManager.PERMISSION_GRANTED) { - targetList.add(tmpPermissionList.get(i)); - } - } - } - - if (targetList.size() > 0) { - showLog("进行以下权限申请:" + targetList.toString()); - String[] sList = targetList.toArray(new String[0]); - ActivityCompat.requestPermissions(context, sList, requestCode); - } else { - showLog("全部权限都已授权"); - if (listener != null) { - listener.onPermissionsOwned(); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 通过权限名来申请一组权限 - * - * @param context - * @param permission - * @param requestCode - * @param listener - */ - public static void requestByPermissionName(Activity context, String permission, int requestCode, OnPermissionsListener listener) { - requestByPermissionName(context, new String[]{permission}, requestCode, listener); - } - - /** - * 通过权限名来申请多组权限 - * - * @param context Activity上下文 - * @param permissionArray 多个要申请的权限名称 - * @param requestCode 请求码 - * @param listener 回调接口 - */ - public static void requestByPermissionName(Activity context, String[] permissionArray, int requestCode, OnPermissionsListener listener) { - showLog("requestPermissions"); - try { - //如果操作系统SDK级别在23之上(android6.0),就进行动态权限申请 - if (Build.VERSION.SDK_INT >= 23 && permissionArray != null) { - ArrayList targetList = new ArrayList<>(); - for (String strPermission : permissionArray) { - //判断是否拥有权限 - int nRet = ContextCompat.checkSelfPermission(context, strPermission); - if (nRet != PackageManager.PERMISSION_GRANTED) { - targetList.add(strPermission); - } - } - - if (targetList.size() > 0) { - showLog("进行以下权限申请:" + targetList.toString()); - String[] sList = targetList.toArray(new String[0]); - ActivityCompat.requestPermissions(context, sList, requestCode); - } else { - showLog("全部权限都已授权"); - if (listener != null) { - listener.onPermissionsOwned(); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 针对申请权限时的用户操作进行处理 - * - * @param context - * @param permissions 申请的权限 - * @param grantResults 各权限的授权状态 - * @param listener 回调接口 - * @param controlFlag 控制标识,用于判断当响应禁止列表后,是否继续处理可再申请列表(避免出现同时处理禁止列表和可再申请列表,互相干扰,比如弹出两个提示框) - */ - public static void onRequestPermissionsResult(Activity context, String[] permissions, int[] grantResults, OnPermissionsListener listener, boolean controlFlag) { - try { - ArrayList requestList = new ArrayList<>();//可再申请列表 - ArrayList banList = new ArrayList<>();//禁止列表 - for (int i = 0; i < permissions.length; i++) { - if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { - showLog("[" + permissions[i] + "]权限授权成功"); - } else { - boolean nRet = ActivityCompat.shouldShowRequestPermissionRationale(context, permissions[i]); - //Log.i(TAG,"shouldShowRequestPermissionRationale nRet="+nRet); - if (nRet) {//允许重新申请 - requestList.add(permissions[i]); - } else {//禁止申请 - banList.add(permissions[i]); - } - } - } - - do { - //优先对禁止列表进行判断 - if (banList.size() > 0) { - if (listener != null) { - listener.onPermissionsForbidden(permissions, grantResults, banList); - } - if (!controlFlag) {//对禁止列表处理后,且控制标识为false,则跳过对可再申请列表的处理 - break; - } - } - if (requestList.size() > 0) { - if (listener != null) { - listener.onPermissionsDenied(permissions, grantResults, requestList); - } - } - if (banList.size() == 0 && requestList.size() == 0) { - showLog("权限授权成功"); - if (listener != null) { - listener.onPermissionsSucceed(); - } - } - } while (false); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 判断权限状态 - * - * @param context - * @param permission 权限名 - * @return - */ - public static boolean checkPermission(Context context, String permission) { - try { - //如果操作系统SDK级别在23之上(android6.0),就进行动态权限申请 - if (Build.VERSION.SDK_INT >= 23) { - int nRet = ContextCompat.checkSelfPermission(context, permission); - showLog("checkSelfPermission nRet=" + nRet); - return nRet == PackageManager.PERMISSION_GRANTED; - } - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } - } - - /** - * 获得当前应用清单中的权限列表 - * - * @param context 应用上下文 - * @return - */ - public static String[] getAppPermissionsList(Context context) { - try { - PackageManager packageManager = context.getApplicationContext().getPackageManager(); - String packageName = context.getApplicationContext().getPackageName(); - String[] array = packageManager.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS).requestedPermissions; - return array; - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - /** - * 判断权限列表中是否声明了指定权限组中的权限 - * - * @param permissionList 权限列表 - * @param permissionGroup 权限组名 - * @return 存在则返回找到的权限组权限,否则返回null - */ - public static ArrayList isPermissionDeclared(String[] permissionList, String permissionGroup) { - try { - if (permissionList != null && permissionGroup != null) { - String[] pmGroup = m_PermissionGroupList.get(permissionGroup); - if (pmGroup != null) { - ArrayList arrayList = new ArrayList<>(); - //遍历 - for (int i = 0; i < pmGroup.length; i++) { - String strPermission = pmGroup[i]; - for (int j = 0; j < permissionList.length; j++) { - if (strPermission.equals(permissionList[j])) {//找到指定权限组中的权限 - arrayList.add(strPermission); - break; - } - } - } - if (arrayList.size() == 0) { - return null; - } - return arrayList; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - /** - * 获得传入的权限名列表对应的中文名称 - * - * @param permissionList 权限名列表 - * @return 集合 - */ - public static Set getPermissionsNameByChinese(String[] permissionList) { - try { - if (permissionList != null) { - HashSet nameSet = new HashSet<>();//确保集合元素不重复 - String tmpName; - for (String strPermission : permissionList) { - tmpName = m_PermissionsMappingList.get(strPermission); - if (tmpName != null) { - nameSet.add(tmpName); - } - } - return nameSet; - } - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - private static void initMap() { - if (m_PermissionGroupList == null) { - m_PermissionGroupList = new HashMap<>(); - m_PermissionGroupList.put(Manifest.permission_group.CALENDAR, Group_Calendar); - m_PermissionGroupList.put(Manifest.permission_group.CAMERA, Group_Camera); - m_PermissionGroupList.put(Manifest.permission_group.CONTACTS, Group_Contacts); - m_PermissionGroupList.put(Manifest.permission_group.LOCATION, Group_Location); - m_PermissionGroupList.put(Manifest.permission_group.MICROPHONE, Group_Microphone); - m_PermissionGroupList.put(Manifest.permission_group.PHONE, Group_Phone); - m_PermissionGroupList.put(Manifest.permission_group.SENSORS, Group_Sensors); - m_PermissionGroupList.put(Manifest.permission_group.SMS, Group_Sms); - m_PermissionGroupList.put(Manifest.permission_group.STORAGE, Group_Storage); - } - - if (m_PermissionsMappingList == null) { - m_PermissionsMappingList = new HashMap<>(); - //日历 - for (String strPermission : Group_Calendar) { - m_PermissionsMappingList.put(strPermission, "日历"); - } - //照相机 - for (String strPermission : Group_Camera) { - m_PermissionsMappingList.put(strPermission, "摄像头"); - } - //通讯录 - for (String strPermission : Group_Contacts) { - m_PermissionsMappingList.put(strPermission, "通讯录"); - } - //定位 - for (String strPermission : Group_Location) { - m_PermissionsMappingList.put(strPermission, "位置"); - } - //麦克风 - for (String strPermission : Group_Microphone) { - m_PermissionsMappingList.put(strPermission, "麦克风"); - } - //电话 - for (String strPermission : Group_Phone) { - m_PermissionsMappingList.put(strPermission, "电话"); - } - //传感器 - for (String strPermission : Group_Sensors) { - m_PermissionsMappingList.put(strPermission, "传感器"); - } - //短信 - for (String strPermission : Group_Sms) { - m_PermissionsMappingList.put(strPermission, "短信"); - } - //存储 - for (String strPermission : Group_Storage) { - m_PermissionsMappingList.put(strPermission, "存储"); - } - } - } - - private static void showLog(String str) { - if (LOG_FLAG) { - Log.i(TAG, str); - } - } - - public interface OnPermissionsListener { - /** - * 权限都已拥有时的处理 - */ - void onPermissionsOwned(); - - /** - * 权限被禁止时的处理 - * - * @param permissions 申请的全部权限 - * @param grantResults 各权限的授权状态 - * @param pmList 禁止申请的权限列表 - */ - void onPermissionsForbidden(String[] permissions, int[] grantResults, ArrayList pmList); - - /** - * 权限被拒绝时的处理 - * - * @param permissions - * @param grantResults - * @param pmList 可再申请的权限列表 - */ - void onPermissionsDenied(String[] permissions, int[] grantResults, ArrayList pmList); - - /** - * 权限申请成功时的处理 - */ - void onPermissionsSucceed(); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/PreferencesUtils.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/PreferencesUtils.java deleted file mode 100644 index f9a8006feb..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/PreferencesUtils.java +++ /dev/null @@ -1,286 +0,0 @@ -package com.zhidao.adas.client.utils; - -import android.content.Context; -import android.content.SharedPreferences; - -public class PreferencesUtils { - - public static String PREFERENCE_NAME = "control"; - - public static boolean hasString(Context context, String key) { - if (context == null) return false; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - return settings.contains(key); - } - - /** - * put string preferences - * - * @param context - * @param key The name of the preference to modify - * @param value The new value for the preference - * @return True if the new values were successfully written to persistent - * storage. - */ - public static boolean putString(Context context, String key, String value) { - - if (context == null) return false; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - editor.putString(key, value); - return editor.commit(); - } - - /** - * get string preferences - * - * @param context - * @param key The name of the preference to retrieve - * @return The preference value if it exists, or null. Throws - * ClassCastException if there is a preference with this name that - * is not a string - * @see #getString(Context, String, String) - */ - public static String getString(Context context, String key) { - if (context == null) return null; - return getString(context, key, null); - } - - /** - * get string preferences - * - * @param context - * @param key The name of the preference to retrieve - * @param defaultValue Value to return if this preference does not exist - * @return The preference value if it exists, or defValue. Throws - * ClassCastException if there is a preference with this name that - * is not a string - */ - public static String getString(Context context, String key, - String defaultValue) { - - if (context == null) return defaultValue; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - return settings.getString(key, defaultValue); - } - - /** - * put int preferences - * - * @param context - * @param key The name of the preference to modify - * @param value The new value for the preference - * @return True if the new values were successfully written to persistent - * storage. - */ - public static boolean putInt(Context context, String key, int value) { - - if (context == null) return false; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - editor.putInt(key, value); - return editor.commit(); - } - - /** - * get int preferences - * - * @param context - * @param key The name of the preference to retrieve - * @return The preference value if it exists, or -1. Throws - * ClassCastException if there is a preference with this name that - * is not a int - * @see #getInt(Context, String, int) - */ - public static int getInt(Context context, String key) { - - if (context == null) return -1; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - return getInt(context, key, -1); - } - - /** - * get int preferences - * - * @param context - * @param key The name of the preference to retrieve - * @param defaultValue Value to return if this preference does not exist - * @return The preference value if it exists, or defValue. Throws - * ClassCastException if there is a preference with this name that - * is not a int - */ - public static int getInt(Context context, String key, int defaultValue) { - if (context == null) return defaultValue; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - return settings.getInt(key, defaultValue); - } - - /** - * put long preferences - * - * @param context - * @param key The name of the preference to modify - * @param value The new value for the preference - * @return True if the new values were successfully written to persistent - * storage. - */ - public static boolean putLong(Context context, String key, long value) { - if (context == null) return false; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - editor.putLong(key, value); - return editor.commit(); - } - - /** - * get long preferences - * - * @param context - * @param key The name of the preference to retrieve - * @return The preference value if it exists, or -1. Throws - * ClassCastException if there is a preference with this name that - * is not a long - * @see #getLong(Context, String, long) - */ - public static long getLong(Context context, String key) { - if (context == null) return -1; - return getLong(context, key, -1); - } - - /** - * get long preferences - * - * @param context - * @param key The name of the preference to retrieve - * @param defaultValue Value to return if this preference does not exist - * @return The preference value if it exists, or defValue. Throws - * ClassCastException if there is a preference with this name that - * is not a long - */ - public static long getLong(Context context, String key, long defaultValue) { - if (context == null) return defaultValue; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - - return settings.getLong(key, defaultValue); - } - - /** - * put float preferences - * - * @param context - * @param key The name of the preference to modify - * @param value The new value for the preference - * @return True if the new values were successfully written to persistent - * storage. - */ - public static boolean putFloat(Context context, String key, float value) { - if (context == null) return false; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - editor.putFloat(key, value); - return editor.commit(); - } - - /** - * get float preferences - * - * @param context - * @param key The name of the preference to retrieve - * @return The preference value if it exists, or -1. Throws - * ClassCastException if there is a preference with this name that - * is not a float - * @see #getFloat(Context, String, float) - */ - public static float getFloat(Context context, String key) { - if (context == null) return -1; - return getFloat(context, key, -1); - } - - /** - * get float preferences - * - * @param context - * @param key The name of the preference to retrieve - * @param defaultValue Value to return if this preference does not exist - * @return The preference value if it exists, or defValue. Throws - * ClassCastException if there is a preference with this name that - * is not a float - */ - public static float getFloat(Context context, String key, float defaultValue) { - if (context == null) return defaultValue; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - return settings.getFloat(key, defaultValue); - } - - /** - * put boolean preferences - * - * @param context - * @param key The name of the preference to modify - * @param value The new value for the preference - * @return True if the new values were successfully written to persistent - * storage. - */ - public static boolean putBoolean(Context context, String key, boolean value) { - if (context == null) return false; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - editor.putBoolean(key, value); - return editor.commit(); - } - - /** - * get boolean preferences, default is false - * - * @param context - * @param key The name of the preference to retrieve - * @return The preference value if it exists, or false. Throws - * ClassCastException if there is a preference with this name that - * is not a boolean - * @see #getBoolean(Context, String, boolean) - */ - public static boolean getBoolean(Context context, String key) { - if (context == null) return false; - return getBoolean(context, key, false); - } - - /** - * get boolean preferences - * - * @param context - * @param key The name of the preference to retrieve - * @param defaultValue Value to return if this preference does not exist - * @return The preference value if it exists, or defValue. Throws - * ClassCastException if there is a preference with this name that - * is not a boolean - */ - public static boolean getBoolean(Context context, String key, - boolean defaultValue) { - if (context == null) return defaultValue; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - return settings.getBoolean(key, defaultValue); - } - - - public static boolean delete(Context context, String key) { - if (context == null) return false; - SharedPreferences settings = context.getSharedPreferences( - PREFERENCE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - editor.remove(key); - return editor.commit(); - } - -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/RandomColor.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/RandomColor.java deleted file mode 100644 index 1b36a27c04..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/RandomColor.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.zhidao.adas.client.utils; - -import com.zhidao.adas.client.R; - -import java.util.Random; - - -public class RandomColor { - //随机颜色,且不与上一次重复 - private static Random randomColor; - private static int tempColorIndex; - private static int[] colors = {R.color.color1, R.color.color2, R.color.color3, R.color.color4, R.color.color5}; - - public static int randomColor() { - randomColorTemp(); - return colors[tempColorIndex]; - } - - private static void randomColorTemp() { - if (randomColor == null) - randomColor = new Random(); - int colorInt = randomColor.nextInt(colors.length); - if (tempColorIndex == colorInt) { - randomColorTemp(); - } else { - tempColorIndex = colorInt; - } - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/SysBarUtil.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/SysBarUtil.java deleted file mode 100644 index 8bdc4c294f..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/SysBarUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.zhidao.adas.client.utils; - -import android.content.Context; - -import java.lang.reflect.Field; - -public class SysBarUtil { - private static int sbar = -1; - - // 获取系统状态栏高度 - public static int getSysBarHeight(Context contex) { - if (sbar == -1) { - Class c; - Object obj; - Field field; - int x; - sbar = 0; - try { - c = Class.forName("com.android.internal.R$dimen"); - obj = c.newInstance(); - field = c.getField("status_bar_height"); - x = Integer.parseInt(field.get(obj).toString()); - sbar = contex.getResources().getDimensionPixelSize(x); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - return sbar; - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/BlurTransformation.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/BlurTransformation.java deleted file mode 100644 index d224c9800f..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/BlurTransformation.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.zhidao.adas.client.utils.image; - - -/** - * Copyright (C) 2018 Wasabeef - *

- * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Paint; - -import androidx.annotation.NonNull; - -import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; - -import java.security.MessageDigest; - -/** - * 高斯模糊 - */ -public class BlurTransformation extends BitmapTransformation { - - private static final int VERSION = 1; - private static final String ID ="com.zhidao.adas.client.utils.image.BlurTransformation." + VERSION; - private static int MAX_RADIUS = 25; - private static int DEFAULT_DOWN_SAMPLING = 1; - - private int radius; - private int sampling; - - public BlurTransformation() { - this(MAX_RADIUS, DEFAULT_DOWN_SAMPLING); - } - - - public BlurTransformation(int radius) { - this(radius, DEFAULT_DOWN_SAMPLING); - } - - public BlurTransformation(int radius, int sampling) { - this.radius = radius; - this.sampling = sampling; - } - - @Override - public String toString() { - return "BlurTransformation(radius=" + radius + ", sampling=" + sampling + ")"; - } - - @Override - protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { - int width = toTransform.getWidth(); - int height = toTransform.getHeight(); - int scaledWidth = width / sampling; - int scaledHeight = height / sampling; - - Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_4444); - - Canvas canvas = new Canvas(bitmap); - canvas.scale(1 / (float) sampling, 1 / (float) sampling); - Paint paint = new Paint(); - paint.setFlags(Paint.FILTER_BITMAP_FLAG); - canvas.drawBitmap(toTransform, 0, 0, paint); - - bitmap = FastBlur.blur(bitmap, radius, true); - - return bitmap; - } - - @Override - public boolean equals(Object o) { - return o instanceof BlurTransformation && - ((BlurTransformation) o).radius == radius && - ((BlurTransformation) o).sampling == sampling; - } - - @Override - public int hashCode() { - return ID.hashCode() + radius * 1000 + sampling * 10; - } - - @Override - public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { - messageDigest.update((ID + radius + sampling).getBytes(CHARSET)); - } -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/FastBlur.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/FastBlur.java deleted file mode 100644 index 66028e2ecb..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/FastBlur.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.zhidao.adas.client.utils.image; - -import android.graphics.Bitmap; - -/** - * Copyright (C) 2018 Wasabeef - *

- * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -public class FastBlur { - - public static Bitmap blur(Bitmap sentBitmap, int radius, boolean canReuseInBitmap) { - - // Stack Blur v1.0 from - // http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html - // - // Java Author: Mario Klingemann - // http://incubator.quasimondo.com - // created Feburary 29, 2004 - // Android port : Yahel Bouaziz - // http://www.kayenko.com - // ported april 5th, 2012 - - // This is a compromise between Gaussian Blur and Box blur - // It creates much better looking blurs than Box Blur, but is - // 7x faster than my Gaussian Blur implementation. - // - // I called it Stack Blur because this describes best how this - // filter works internally: it creates a kind of moving stack - // of colors whilst scanning through the image. Thereby it - // just has to add one new block of color to the right side - // of the stack and remove the leftmost color. The remaining - // colors on the topmost layer of the stack are either added on - // or reduced by one, depending on if they are on the right or - // on the left side of the stack. - // - // If you are using this algorithm in your code please add - // the following line: - // - // Stack Blur Algorithm by Mario Klingemann - - Bitmap bitmap; - if (canReuseInBitmap) { - bitmap = sentBitmap; - } else { - bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); - } - - if (radius < 1) { - return (null); - } - - int w = bitmap.getWidth(); - int h = bitmap.getHeight(); - - int[] pix = new int[w * h]; - bitmap.getPixels(pix, 0, w, 0, 0, w, h); - - int wm = w - 1; - int hm = h - 1; - int wh = w * h; - int div = radius + radius + 1; - - int r[] = new int[wh]; - int g[] = new int[wh]; - int b[] = new int[wh]; - int rsum, gsum, bsum, x, y, i, p, yp, yi, yw; - int vmin[] = new int[Math.max(w, h)]; - - int divsum = (div + 1) >> 1; - divsum *= divsum; - int dv[] = new int[256 * divsum]; - for (i = 0; i < 256 * divsum; i++) { - dv[i] = (i / divsum); - } - - yw = yi = 0; - - int[][] stack = new int[div][3]; - int stackpointer; - int stackstart; - int[] sir; - int rbs; - int r1 = radius + 1; - int routsum, goutsum, boutsum; - int rinsum, ginsum, binsum; - - for (y = 0; y < h; y++) { - rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; - for (i = -radius; i <= radius; i++) { - p = pix[yi + Math.min(wm, Math.max(i, 0))]; - sir = stack[i + radius]; - sir[0] = (p & 0xff0000) >> 16; - sir[1] = (p & 0x00ff00) >> 8; - sir[2] = (p & 0x0000ff); - rbs = r1 - Math.abs(i); - rsum += sir[0] * rbs; - gsum += sir[1] * rbs; - bsum += sir[2] * rbs; - if (i > 0) { - rinsum += sir[0]; - ginsum += sir[1]; - binsum += sir[2]; - } else { - routsum += sir[0]; - goutsum += sir[1]; - boutsum += sir[2]; - } - } - stackpointer = radius; - - for (x = 0; x < w; x++) { - - r[yi] = dv[rsum]; - g[yi] = dv[gsum]; - b[yi] = dv[bsum]; - - rsum -= routsum; - gsum -= goutsum; - bsum -= boutsum; - - stackstart = stackpointer - radius + div; - sir = stack[stackstart % div]; - - routsum -= sir[0]; - goutsum -= sir[1]; - boutsum -= sir[2]; - - if (y == 0) { - vmin[x] = Math.min(x + radius + 1, wm); - } - p = pix[yw + vmin[x]]; - - sir[0] = (p & 0xff0000) >> 16; - sir[1] = (p & 0x00ff00) >> 8; - sir[2] = (p & 0x0000ff); - - rinsum += sir[0]; - ginsum += sir[1]; - binsum += sir[2]; - - rsum += rinsum; - gsum += ginsum; - bsum += binsum; - - stackpointer = (stackpointer + 1) % div; - sir = stack[(stackpointer) % div]; - - routsum += sir[0]; - goutsum += sir[1]; - boutsum += sir[2]; - - rinsum -= sir[0]; - ginsum -= sir[1]; - binsum -= sir[2]; - - yi++; - } - yw += w; - } - for (x = 0; x < w; x++) { - rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; - yp = -radius * w; - for (i = -radius; i <= radius; i++) { - yi = Math.max(0, yp) + x; - - sir = stack[i + radius]; - - sir[0] = r[yi]; - sir[1] = g[yi]; - sir[2] = b[yi]; - - rbs = r1 - Math.abs(i); - - rsum += r[yi] * rbs; - gsum += g[yi] * rbs; - bsum += b[yi] * rbs; - - if (i > 0) { - rinsum += sir[0]; - ginsum += sir[1]; - binsum += sir[2]; - } else { - routsum += sir[0]; - goutsum += sir[1]; - boutsum += sir[2]; - } - - if (i < hm) { - yp += w; - } - } - yi = x; - stackpointer = radius; - for (y = 0; y < h; y++) { - // Preserve alpha channel: ( 0xff000000 & pix[yi] ) - pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum]; - - rsum -= routsum; - gsum -= goutsum; - bsum -= boutsum; - - stackstart = stackpointer - radius + div; - sir = stack[stackstart % div]; - - routsum -= sir[0]; - goutsum -= sir[1]; - boutsum -= sir[2]; - - if (x == 0) { - vmin[y] = Math.min(y + r1, hm) * w; - } - p = x + vmin[y]; - - sir[0] = r[p]; - sir[1] = g[p]; - sir[2] = b[p]; - - rinsum += sir[0]; - ginsum += sir[1]; - binsum += sir[2]; - - rsum += rinsum; - gsum += ginsum; - bsum += binsum; - - stackpointer = (stackpointer + 1) % div; - sir = stack[stackpointer]; - - routsum += sir[0]; - goutsum += sir[1]; - boutsum += sir[2]; - - rinsum -= sir[0]; - ginsum -= sir[1]; - binsum -= sir[2]; - - yi += w; - } - } - - bitmap.setPixels(pix, 0, w, 0, 0, w, h); - - return (bitmap); - } -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/GlideRoundedCornersTransform.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/GlideRoundedCornersTransform.java deleted file mode 100644 index f9923dd9f8..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/GlideRoundedCornersTransform.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.zhidao.adas.client.utils.image; - -import android.graphics.Bitmap; -import android.graphics.BitmapShader; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.RectF; - -import androidx.annotation.NonNull; - -import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.CenterCrop; - -import java.security.MessageDigest; - -/** - * Glide加载图片,使图片变成圆角图片工具 - * 基本用法Glide.with(this).load(imgUrl).apply(RequestOptions.bitmapTransform(GlideRoundedCornersTransform(this))).into(imageView) - * 如果想用多个Transform可以使用{@link com.bumptech.glide.load.MultiTransformation} 进行Transform的融合 - * @author tongchenfei - */ -public class GlideRoundedCornersTransform extends CenterCrop { - private float mRadius; - private CornerType mCornerType; - private static final int VERSION = 1; - private static final String ID = "GlideRoundedCornersTransform." + VERSION; - private static final byte[] ID_BYTES = ID.getBytes(CHARSET); - - /** - * 待处理的圆角枚举 - */ - public enum CornerType { - ALL, - TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, - TOP, BOTTOM, LEFT, RIGHT, - TOP_LEFT_BOTTOM_RIGHT, - TOP_RIGHT_BOTTOM_LEFT, - TOP_LEFT_TOP_RIGHT_BOTTOM_RIGHT, - TOP_RIGHT_BOTTOM_RIGHT_BOTTOM_LEFT, - TOP_LEFT_TOP_RIGHT - } - - public GlideRoundedCornersTransform(float radius, CornerType cornerType) { - super(); - mRadius = radius; - mCornerType = cornerType; - } - - @Override - protected Bitmap transform(@NonNull BitmapPool pool,@NonNull Bitmap toTransform, int outWidth, int outHeight) { - Bitmap transform = super.transform(pool, toTransform, outWidth, outHeight); - return roundCrop(pool, transform); - } - - private Bitmap roundCrop(BitmapPool pool, Bitmap source) { - if (source == null) { - return null; - } - int width = source.getWidth(); - int height = source.getHeight(); - Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); - - if (result == null) { - result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config - .ARGB_8888); - } - Canvas canvas = new Canvas(result); - Paint paint = new Paint(); - paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader - .TileMode.CLAMP)); - paint.setAntiAlias(true); - - Path path = new Path(); - drawRoundRect(canvas, paint, path, width, height); - - return result; - } - - private void drawRoundRect(Canvas canvas, Paint paint, Path path, int width, int height) { - float[] rids; - switch (mCornerType) { - case ALL: - rids = new float[]{mRadius, mRadius, mRadius, mRadius, mRadius, mRadius, mRadius, mRadius}; - drawPath(rids, canvas, paint, path, width, height); - break; - case TOP_LEFT: - rids = new float[]{mRadius, mRadius, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}; - drawPath(rids, canvas, paint, path, width, height); - break; - case TOP_RIGHT: - rids = new float[]{0.0f, 0.0f, mRadius, mRadius, 0.0f, 0.0f, 0.0f, 0.0f}; - drawPath(rids, canvas, paint, path, width, height); - break; - case BOTTOM_RIGHT: - rids = new float[]{0.0f, 0.0f, 0.0f, 0.0f, mRadius, mRadius, 0.0f, 0.0f}; - drawPath(rids, canvas, paint, path, width, height); - break; - case BOTTOM_LEFT: - rids = new float[]{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, mRadius, mRadius}; - drawPath(rids, canvas, paint, path, width, height); - break; - case TOP: - rids = new float[]{mRadius, mRadius, mRadius, mRadius, 0.0f, 0.0f, 0.0f, 0.0f}; - drawPath(rids, canvas, paint, path, width, height); - break; - case BOTTOM: - rids = new float[]{0.0f, 0.0f, 0.0f, 0.0f, mRadius, mRadius, mRadius, mRadius}; - drawPath(rids, canvas, paint, path, width, height); - break; - case LEFT: - rids = new float[]{mRadius, mRadius, 0.0f, 0.0f, 0.0f, 0.0f, mRadius, mRadius}; - drawPath(rids, canvas, paint, path, width, height); - break; - case RIGHT: - rids = new float[]{0.0f, 0.0f, mRadius, mRadius, mRadius, mRadius, 0.0f, 0.0f}; - drawPath(rids, canvas, paint, path, width, height); - break; - case TOP_LEFT_BOTTOM_RIGHT: - rids = new float[]{mRadius, mRadius, 0.0f, 0.0f, mRadius, mRadius, 0.0f, 0.0f}; - drawPath(rids, canvas, paint, path, width, height); - break; - case TOP_RIGHT_BOTTOM_LEFT: - rids = new float[]{0.0f, 0.0f, mRadius, mRadius, 0.0f, 0.0f, mRadius, mRadius}; - drawPath(rids, canvas, paint, path, width, height); - break; - case TOP_LEFT_TOP_RIGHT_BOTTOM_RIGHT: - rids = new float[]{mRadius, mRadius, mRadius, mRadius, mRadius, mRadius, 0.0f, 0.0f}; - drawPath(rids, canvas, paint, path, width, height); - break; - case TOP_RIGHT_BOTTOM_RIGHT_BOTTOM_LEFT: - rids = new float[]{0.0f, 0.0f, mRadius, mRadius, mRadius, mRadius, mRadius, mRadius}; - drawPath(rids, canvas, paint, path, width, height); - break; - case TOP_LEFT_TOP_RIGHT: - rids = new float[]{mRadius, mRadius, mRadius, mRadius, 0.0f, 0.0f, 0.0f, 0.0f}; - drawPath(rids, canvas, paint, path, width, height); - break; - default: - throw new RuntimeException("RoundedCorners type not belong to CornerType"); - } - } - - /** - * @param rids 圆角的半径,依次为左上角xy半径,右上角,右下角,左下角 - */ - private void drawPath(float[] rids, Canvas canvas, Paint paint, Path path, int width, int height) { - path.addRoundRect(new RectF(0, 0, width, height), rids, Path.Direction.CW); - canvas.drawPath(path, paint); - } - - @Override - public boolean equals(Object o) { - return o instanceof GlideRoundedCornersTransform; - } - - @Override - public int hashCode() { - return ID.hashCode(); - } - - @Override - public void updateDiskCacheKey(MessageDigest messageDigest) { - messageDigest.update(ID_BYTES); - } -} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/ImageLoaderManager.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/ImageLoaderManager.java deleted file mode 100644 index 1c07520895..0000000000 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/image/ImageLoaderManager.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.zhidao.adas.client.utils.image; - -import android.content.Context; -import android.widget.ImageView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.Priority; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.load.resource.bitmap.CenterCrop; -import com.bumptech.glide.load.resource.bitmap.CircleCrop; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; -import com.bumptech.glide.request.RequestOptions; - -import java.io.File; - -/** - * create by libo - * create on 2018/12/26 - * description Glide图片加载工具类 - */ -public class ImageLoaderManager { - - /** - * 默认加载方式 - * - * @param context - * @param url - * @param imageView - */ - public static void loadImage(Context context, String url, ImageView imageView) { - RequestOptions requestOptions = new RequestOptions() - .priority(Priority.HIGH) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .dontAnimate(); - - Glide.with(context) - .load(url) - .apply(requestOptions) - .transition(DrawableTransitionOptions.withCrossFade()) - .into(imageView); - } - - /** - * 加载圆形图片 - * - * @param context - * @param url - * @param imageView - */ - public static void loadCircleImage(Context context, String url, ImageView imageView) { - RequestOptions requestOptions = new RequestOptions() - .priority(Priority.HIGH) - .dontAnimate() - .diskCacheStrategy(DiskCacheStrategy.ALL) - .bitmapTransform(new CircleCrop()); - - Glide.with(context) - .load(url) - .apply(requestOptions) - .transition(DrawableTransitionOptions.withCrossFade()) - .into(imageView); - } - - /** - * 加载圆角图片 - * - * @param context - * @param url - * @param imageView - * @param radius 圆角大小 - */ - public static void loadRoundImage(Context context, String url, ImageView imageView, int radius) { - RequestOptions requestOptions = new RequestOptions() - .priority(Priority.HIGH) - .dontAnimate() - .diskCacheStrategy(DiskCacheStrategy.ALL) - .transforms(new CenterCrop(), new RoundedCorners(radius)); - - Glide.with(context) - .load(url) - .apply(requestOptions) - .transition(DrawableTransitionOptions.withCrossFade()) - .into(imageView); - } - - /** - * 加载图片指定大小 - * - * @param context - * @param url - * @param imageView - * @param width - * @param height - */ - public static void loadSizeImage(Context context, String url, ImageView imageView, int width, int height) { - RequestOptions requestOptions = new RequestOptions() - .priority(Priority.HIGH) - .override(width, height) - .diskCacheStrategy(DiskCacheStrategy.RESOURCE); - - Glide.with(context) - .load(url) - .apply(requestOptions) - .transition(DrawableTransitionOptions.withCrossFade()) - .into(imageView); - } - - /** - * 加载资源文件 - * - * @param context - * @param resId - * @param imageView - */ - public static void loadImage(Context context, int resId, ImageView imageView) { - RequestOptions requestOptions = new RequestOptions() - .priority(Priority.HIGH) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .centerCrop(); - - Glide.with(context) - .load(resId) - .apply(requestOptions) - .into(imageView); - } - - /** - * 加载本地图片文件 - * - * @param context - * @param file - * @param imageView - */ - public static void loadFileImage(Context context, File file, ImageView imageView) { - RequestOptions requestOptions = new RequestOptions() - .priority(Priority.HIGH) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .centerCrop(); - - Glide.with(context) - .load(file) - .apply(requestOptions) - .into(imageView); - } - - /** - * 加载高斯模糊 - * - * @param context - * @param url - * @param imageView - * @param radius 模糊级数 最大25 - */ - public static void loadBlurImage(Context context, String url, ImageView imageView, int radius) { - RequestOptions requestOptions = new RequestOptions() - .override(300) - .transforms(new BlurTransformation(radius)); - - Glide.with(context) - .load(url) - .apply(requestOptions) - .transition(DrawableTransitionOptions.withCrossFade()) - .into(imageView); - } - - /** - * 加载gif图 - * - * @param context - * @param url - * @param imageView - */ - public static void loadGifImage(Context context, String url, ImageView imageView) { - Glide.with(context) - .load(url) - .into(imageView); - } -} \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/color/item_text_color.xml b/app_ipc_monitoring/src/main/res/color/item_text_color.xml deleted file mode 100644 index 4b611429b1..0000000000 --- a/app_ipc_monitoring/src/main/res/color/item_text_color.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/app_ipc_monitoring/src/main/res/color/item_text_color1.xml b/app_ipc_monitoring/src/main/res/color/item_text_color1.xml deleted file mode 100644 index 0f67bce160..0000000000 --- a/app_ipc_monitoring/src/main/res/color/item_text_color1.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/bg_adas_dialog.xml b/app_ipc_monitoring/src/main/res/drawable/bg_adas_dialog.xml deleted file mode 100644 index cbfb69f454..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/bg_adas_dialog.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/bg_radio_button.xml b/app_ipc_monitoring/src/main/res/drawable/bg_radio_button.xml deleted file mode 100644 index 51b99e6dfb..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/bg_radio_button.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/bg_special_vehicle_float.xml b/app_ipc_monitoring/src/main/res/drawable/bg_special_vehicle_float.xml deleted file mode 100644 index f234ac57f3..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/bg_special_vehicle_float.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/border_title.png b/app_ipc_monitoring/src/main/res/drawable/border_title.png deleted file mode 100644 index 9bc911f3dc..0000000000 Binary files a/app_ipc_monitoring/src/main/res/drawable/border_title.png and /dev/null differ diff --git a/app_ipc_monitoring/src/main/res/drawable/btn_bg.xml b/app_ipc_monitoring/src/main/res/drawable/btn_bg.xml deleted file mode 100644 index ba61bf76b4..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/btn_bg.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/btn_maximize_text_color.xml b/app_ipc_monitoring/src/main/res/drawable/btn_maximize_text_color.xml deleted file mode 100644 index f7b06336e2..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/btn_maximize_text_color.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/btn_special_vehicle_small_bg.xml b/app_ipc_monitoring/src/main/res/drawable/btn_special_vehicle_small_bg.xml deleted file mode 100644 index 35ec4217b8..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/btn_special_vehicle_small_bg.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/help.png b/app_ipc_monitoring/src/main/res/drawable/help.png deleted file mode 100644 index 7c4f62166e..0000000000 Binary files a/app_ipc_monitoring/src/main/res/drawable/help.png and /dev/null differ diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_add_false.xml b/app_ipc_monitoring/src/main/res/drawable/ic_add_false.xml deleted file mode 100644 index 76e20442b6..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_add_false.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_add_true.xml b/app_ipc_monitoring/src/main/res/drawable/ic_add_true.xml deleted file mode 100644 index 1b622a26f5..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_add_true.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_border_green.xml b/app_ipc_monitoring/src/main/res/drawable/ic_border_green.xml deleted file mode 100644 index 9646ed9e7c..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_border_green.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_border_red.xml b/app_ipc_monitoring/src/main/res/drawable/ic_border_red.xml deleted file mode 100644 index 6733c29059..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_border_red.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_border_yellow.xml b/app_ipc_monitoring/src/main/res/drawable/ic_border_yellow.xml deleted file mode 100644 index d5cc348db9..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_border_yellow.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_close.xml b/app_ipc_monitoring/src/main/res/drawable/ic_close.xml deleted file mode 100644 index a25a07f33f..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_close.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_driver.xml b/app_ipc_monitoring/src/main/res/drawable/ic_driver.xml deleted file mode 100644 index 86e1d257b1..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_driver.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_minus_false.xml b/app_ipc_monitoring/src/main/res/drawable/ic_minus_false.xml deleted file mode 100644 index d32a9ba9f7..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_minus_false.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_minus_true.xml b/app_ipc_monitoring/src/main/res/drawable/ic_minus_true.xml deleted file mode 100644 index 5e3bf24a2c..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_minus_true.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_pack_up.xml b/app_ipc_monitoring/src/main/res/drawable/ic_pack_up.xml deleted file mode 100644 index 328407001b..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_pack_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_passenger.xml b/app_ipc_monitoring/src/main/res/drawable/ic_passenger.xml deleted file mode 100644 index 19739491ff..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_passenger.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_ping.xml b/app_ipc_monitoring/src/main/res/drawable/ic_ping.xml deleted file mode 100644 index 7f2d08030c..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_ping.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_ping_selected.xml b/app_ipc_monitoring/src/main/res/drawable/ic_ping_selected.xml deleted file mode 100644 index b012d739a9..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_ping_selected.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_pull.xml b/app_ipc_monitoring/src/main/res/drawable/ic_pull.xml deleted file mode 100644 index 2a5cad0c1e..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_pull.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_back.xml b/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_back.xml deleted file mode 100644 index 907343605c..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_back.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_back_true.xml b/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_back_true.xml deleted file mode 100644 index 6e5e50af88..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_back_true.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_minimality.xml b/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_minimality.xml deleted file mode 100644 index bbe2de802f..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_minimality.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_minimality_true.xml b/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_minimality_true.xml deleted file mode 100644 index 5c35a310b5..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/ic_special_vehicle_minimality_true.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/icon.xml b/app_ipc_monitoring/src/main/res/drawable/icon.xml deleted file mode 100644 index 0e2c205a40..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/icon.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/icon_dev_status_net_disable.xml b/app_ipc_monitoring/src/main/res/drawable/icon_dev_status_net_disable.xml deleted file mode 100644 index ae72ee0cef..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/icon_dev_status_net_disable.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/icon_dev_status_net_enable.xml b/app_ipc_monitoring/src/main/res/drawable/icon_dev_status_net_enable.xml deleted file mode 100644 index 62b02e1a5f..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/icon_dev_status_net_enable.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/item_bg.xml b/app_ipc_monitoring/src/main/res/drawable/item_bg.xml deleted file mode 100644 index 3476874a12..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/item_bg.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/radio_btn_bg.xml b/app_ipc_monitoring/src/main/res/drawable/radio_btn_bg.xml deleted file mode 100644 index 31c702bcc5..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/radio_btn_bg.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/selector_add.xml b/app_ipc_monitoring/src/main/res/drawable/selector_add.xml deleted file mode 100644 index b90c10de3e..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/selector_add.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/selector_history_ip.xml b/app_ipc_monitoring/src/main/res/drawable/selector_history_ip.xml deleted file mode 100644 index a36a8d2aa8..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/selector_history_ip.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/selector_minus.xml b/app_ipc_monitoring/src/main/res/drawable/selector_minus.xml deleted file mode 100644 index 4d671adc0f..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/selector_minus.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/selector_ping.xml b/app_ipc_monitoring/src/main/res/drawable/selector_ping.xml deleted file mode 100644 index 5f7eb6e4d1..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/selector_ping.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/selector_role.xml b/app_ipc_monitoring/src/main/res/drawable/selector_role.xml deleted file mode 100644 index bf22904e61..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/selector_role.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/selector_router.xml b/app_ipc_monitoring/src/main/res/drawable/selector_router.xml deleted file mode 100644 index 8ed897608c..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/selector_router.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/drawable/selector_special_vehicle_back.xml b/app_ipc_monitoring/src/main/res/drawable/selector_special_vehicle_back.xml deleted file mode 100644 index 6adf0a241c..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/selector_special_vehicle_back.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/selector_special_vehicle_minimality.xml b/app_ipc_monitoring/src/main/res/drawable/selector_special_vehicle_minimality.xml deleted file mode 100644 index f313d33d5a..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/selector_special_vehicle_minimality.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app_ipc_monitoring/src/main/res/drawable/text.xml b/app_ipc_monitoring/src/main/res/drawable/text.xml deleted file mode 100644 index 58c4db851b..0000000000 --- a/app_ipc_monitoring/src/main/res/drawable/text.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/layout/activity_autopilot_cloud_config.xml b/app_ipc_monitoring/src/main/res/layout/activity_autopilot_cloud_config.xml deleted file mode 100644 index a7b9a9c4ba..0000000000 --- a/app_ipc_monitoring/src/main/res/layout/activity_autopilot_cloud_config.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/layout/activity_guardian.xml b/app_ipc_monitoring/src/main/res/layout/activity_guardian.xml deleted file mode 100644 index 6caba13db3..0000000000 --- a/app_ipc_monitoring/src/main/res/layout/activity_guardian.xml +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/layout/activity_help.xml b/app_ipc_monitoring/src/main/res/layout/activity_help.xml deleted file mode 100644 index 76bfacd070..0000000000 --- a/app_ipc_monitoring/src/main/res/layout/activity_help.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app_ipc_monitoring/src/main/res/layout/activity_main.xml b/app_ipc_monitoring/src/main/res/layout/activity_main.xml deleted file mode 100644 index ad66fa0e54..0000000000 --- a/app_ipc_monitoring/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app_ipc_monitoring/src/main/res/layout/activity_router.xml b/app_ipc_monitoring/src/main/res/layout/activity_router.xml deleted file mode 100644 index 0abd4797e8..0000000000 --- a/app_ipc_monitoring/src/main/res/layout/activity_router.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - -