Browse Source

fix: 修复 MQTT 连接逻辑中的多处 NPE 和 Bug

- sendCommand: 增加 type/data/device/time 字段 null 检查,防止 NPE 崩溃
- programPublish: 删除 if 块外多余的 programTime 赋值,修复防抖逻辑失效
- ContainerHandler: weakReference.get() 增加 null 判断,socket 心跳不受影响

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
master
高志龙 4 weeks ago
parent
commit
579a0a8536
  1. 11
      app/src/main/java/qianmu/container/handler/ContainerHandler.java
  2. 12
      app/src/main/java/qianmu/container/mqtt/MQTTService.java
  3. 306
      error.txt

11
app/src/main/java/qianmu/container/handler/ContainerHandler.java

@ -389,7 +389,9 @@ public class ContainerHandler extends Handler {
//30分钟定时定时拉取更新APP
private void updateApp(){
sendEmptyMessageDelayed(UPDATE_APP, 1800*1000);//app更新
weakReference.get().appUpdate();
ContainerService service = weakReference.get();
if(service == null) return;
service.appUpdate();
//同屏接口
DeviceData.getPrimaryMachine(null, this::updateClientStateByIP);
}
@ -398,7 +400,9 @@ public class ContainerHandler extends Handler {
* 获取时间戳设置系统时间
* */
private void setSystemTime(){
weakReference.get().getCurrentTimestamp();
ContainerService service = weakReference.get();
if(service == null) return;
service.getCurrentTimestamp();
if("指路机".equals(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE))){
//开启背景音乐
@ -413,7 +417,8 @@ public class ContainerHandler extends Handler {
//每5秒钟发送一次socket心跳
String second = MyApplication.getInstance().secondFormat.format(System.currentTimeMillis());
if (Integer.valueOf(second) % 5 == 0){
weakReference.get().detectionAppState();
ContainerService service = weakReference.get();
if(service != null) service.detectionAppState();
LocSocCliManager.sendHeartBeatToServer();
}
} catch (Throwable t) {

12
app/src/main/java/qianmu/container/mqtt/MQTTService.java

@ -470,6 +470,11 @@ public class MQTTService extends Service {
CloseMqttBean closeMqttBean =new Gson().fromJson(msg, new TypeToken<CloseMqttBean>() {
}.getType());
if(closeMqttBean == null || closeMqttBean.getType() == null){
LoggerUtil.e(TAG,"sendCommand: type为空,忽略消息:"+msg);
return;
}
if(closeMqttBean.getType().equals("firmware-update")){
//固件升级
//systemUpdate(closeMqttBean);
@ -494,6 +499,7 @@ public class MQTTService extends Service {
SignWayUtil.shutDown();
}else if(closeMqttBean.getType().equals("device-time-update")){
//定时开关机
if(closeMqttBean.getData() == null || closeMqttBean.getData().getTime() == null) return;
PowerData.savePowerList(closeMqttBean.getData().getTime());
}else if(closeMqttBean.getType().equals("device-time-clear")){
@ -528,6 +534,7 @@ public class MQTTService extends Service {
}
}else if(closeMqttBean.getType().equals("device-edit")){
//设备信息编辑
if(closeMqttBean.getData() == null || closeMqttBean.getData().getDevice() == null) return;
MqttDataBean.deviceData device = closeMqttBean.getData().getDevice();
DeviceData.saveDeviceName(device.getName());
DeviceData.saveDeviceInfo(DeviceData.HINT_DEVICE_TOUCH, String.valueOf(device.getTouch()));//设备触摸
@ -617,8 +624,8 @@ public class MQTTService extends Service {
* */
public void programPublish(){
long currentTime = System.currentTimeMillis();
//防止相同时间接收到多条信
if(currentTime-programTime>500){
//防止短时间内接收多条相同消
if(currentTime-programTime>1000){
programTime = currentTime;
if (Constant.whoActivity.equals(Constant.ROUTE_SCREEN_SAVER)) {
Log.e(TAG,"屏保页面,进行通知更新数据");
@ -627,7 +634,6 @@ public class MQTTService extends Service {
EventBus.getDefault().post(new MessageEvent(Constant.ACTION_UPDATE_PROG2));
}
}
programTime = currentTime;
}
/**

306
error.txt

@ -0,0 +1,306 @@
2026-05-13 13:05:33 >>显示器状态:<< 显示器正常
2026-05-13 13:06:43 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:06:43 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:06:43 >>TTS: << 手动暂停播放
2026-05-13 13:06:43 >>WebViewActivity<< JS调用了Android的方法:startRecord()
2026-05-13 13:06:43 >>ASRInit: << onReadyForSpeech
2026-05-13 13:06:45 >>ASRInit: << onBeginningOfSpeech
2026-05-13 13:06:45 >>显示器状态:<< 显示器正常
2026-05-13 13:06:45 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:06:45 >>ASRInit: << false
2026-05-13 13:06:46 >>ASRInit: << false
2026-05-13 13:06:46 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:南昌
2026-05-13 13:06:46 >>ASRInit: << false
2026-05-13 13:06:46 >>ASRInit: << false
2026-05-13 13:06:46 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:南昌站
2026-05-13 13:06:46 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:来站在机场
2026-05-13 13:06:46 >>ASRInit: << false
2026-05-13 13:06:47 >>ASRInit: << false
2026-05-13 13:06:48 >>ASRInit: << onEndOfSpeech
2026-05-13 13:06:48 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:06:53 >>WebViewActivity<< JS调用了Android的方法:startRecord()
2026-05-13 13:06:53 >>TTS: << 手动暂停播放
2026-05-13 13:06:53 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:06:53 >>ASRInit: << onReadyForSpeech
2026-05-13 13:06:55 >>ASRInit: << onBeginningOfSpeech
2026-05-13 13:06:55 >>ASRInit: << false
2026-05-13 13:06:56 >>ASRInit: << false
2026-05-13 13:06:56 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:来菜
2026-05-13 13:06:56 >>ASRInit: << false
2026-05-13 13:06:56 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:来菜在
2026-05-13 13:06:57 >>ASRInit: << false
2026-05-13 13:06:57 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:来菜在场
2026-05-13 13:06:58 >>ASRInit: << false
2026-05-13 13:06:59 >>ASRInit: << onEndOfSpeech
2026-05-13 13:06:59 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:06:59 >>TTS: << 手动暂停播放
2026-05-13 13:06:59 >>WebViewActivity<< JS调用了Android的方法:startRecord()
2026-05-13 13:06:59 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:06:59 >>ASRInit: << onReadyForSpeech
2026-05-13 13:07:01 >>ASRInit: << onBeginningOfSpeech
2026-05-13 13:07:02 >>ASRInit: << false
2026-05-13 13:07:03 >>ASRInit: << false
2026-05-13 13:07:03 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:来菜
2026-05-13 13:07:03 >>ASRInit: << false
2026-05-13 13:07:03 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:来蔡寨
2026-05-13 13:07:03 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:来菜再起
2026-05-13 13:07:03 >>ASRInit: << false
2026-05-13 13:07:04 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:来菜在几层
2026-05-13 13:07:04 >>ASRInit: << false
2026-05-13 13:07:04 >>ASRInit: << false
2026-05-13 13:07:06 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:07:06 >>ASRInit: << onEndOfSpeech
2026-05-13 13:07:10 >>WebView日志<< useQueryVoiceStream: SSE连接成功
2026-05-13 13:07:10 >>WebView日志<< [object Object]
2026-05-13 13:07:10 >>WebView日志<< [object Object]
2026-05-13 13:07:10 >>WebView日志<< [object Object]
2026-05-13 13:07:10 >>WebView日志<< useQueryVoiceStream未处理的类型 [object Object]
2026-05-13 13:07:11 >>TTS: << 手动暂停播放
2026-05-13 13:07:11 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:07:11 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:07:13 >>TTS: << onCompletion: 1024
2026-05-13 13:07:53 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:07:53 >>显示器状态:<< 显示器正常
2026-05-13 13:07:59 >>TTS: << 手动暂停播放
2026-05-13 13:07:59 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:07:59 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:07:59 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:07:59 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:08:10 >>TTS: << onCompletion: 1024
2026-05-13 13:09:03 >>显示器状态:<< 显示器正常
2026-05-13 13:09:03 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:10:13 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:10:13 >>显示器状态:<< 显示器正常
2026-05-13 13:10:18 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:18 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:18 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:21 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:21 >>TTS: << 手动暂停播放
2026-05-13 13:10:21 >>WebViewActivity<< JS调用了Android的方法:startRecord()
2026-05-13 13:10:21 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:10:21 >>ASRInit: << onReadyForSpeech
2026-05-13 13:10:24 >>TTS: << 手动暂停播放
2026-05-13 13:10:24 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:10:24 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:24 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:10:24 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:10:25 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:28 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:30 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:34 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:35 >>TTS: << onCompletion: 1024
2026-05-13 13:10:37 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:38 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:39 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:42 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:44 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:48 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:54 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:55 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:57 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:58 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:10:58 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:11:02 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:11:03 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:11:05 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:11:07 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:11:10 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:11:10 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:11:12 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:11:23 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:11:23 >>显示器状态:<< 显示器正常
2026-05-13 13:12:13 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:12:13 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:12:13 >>TTS: << 手动暂停播放
2026-05-13 13:12:13 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:12:23 >>TTS: << onCompletion: 1024
2026-05-13 13:12:33 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:12:33 >>显示器状态:<< 显示器正常
2026-05-13 13:13:43 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:13:43 >>显示器状态:<< 显示器正常
2026-05-13 13:14:53 >>显示器状态:<< 显示器正常
2026-05-13 13:14:53 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:16:02 >>getMachineAppProgramMsg()<< {"code":200,"data":{"appVersion":"V2.0.8.25","appPackageUrl":"https://qianmu-iot.1000my.com/iotFile/Moderation/iotFile/project-gscmh7-skrmq_1v543rnna/20260512/GnAlXuIaEi5biUexFsHWs.apk","programVersion":"v1.6.2","programPackageUrl":"https://qianmu-iot.1000my.com/iotFile/Moderation/iotFile/saas/20260511/orcw_kPmOlQuOTGIyVK7k.zip"},"msg":"success"}
2026-05-13 13:16:03 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:16:03 >>显示器状态:<< 显示器正常
2026-05-13 13:17:13 >>显示器状态:<< 显示器正常
2026-05-13 13:17:13 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:18:23 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:18:23 >>显示器状态:<< 显示器正常
2026-05-13 13:19:33 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:19:33 >>显示器状态:<< 显示器正常
2026-05-13 13:20:43 >>显示器状态:<< 显示器正常
2026-05-13 13:20:43 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:21:56 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:21:56 >>显示器状态:<< 显示器正常
2026-05-13 13:23:03 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:23:03 >>显示器状态:<< 显示器正常
2026-05-13 13:24:13 >>显示器状态:<< 显示器正常
2026-05-13 13:24:13 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:25:23 >>显示器状态:<< 显示器正常
2026-05-13 13:25:23 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:26:33 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:26:33 >>显示器状态:<< 显示器正常
2026-05-13 13:27:06 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:27:10 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:27:11 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:27:11 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:27:43 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:27:43 >>显示器状态:<< 显示器正常
2026-05-13 13:28:12 >>TTS: << 手动暂停播放
2026-05-13 13:28:12 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:28:12 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:28:12 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:28:23 >>TTS: << onCompletion: 1024
2026-05-13 13:28:53 >>显示器状态:<< 显示器正常
2026-05-13 13:28:53 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:30:03 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:30:03 >>显示器状态:<< 显示器正常
2026-05-13 13:31:02 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:31:02 >>WebViewActivity<< JS调用了Android的方法:startRecord()
2026-05-13 13:31:02 >>TTS: << 手动暂停播放
2026-05-13 13:31:02 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:31:02 >>ASRInit: << onReadyForSpeech
2026-05-13 13:31:04 >>ASRInit: << onBeginningOfSpeech
2026-05-13 13:31:04 >>ASRInit: << false
2026-05-13 13:31:05 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:你好
2026-05-13 13:31:05 >>ASRInit: << false
2026-05-13 13:31:05 >>ASRInit: << false
2026-05-13 13:31:07 >>ASRInit: << onEndOfSpeech
2026-05-13 13:31:07 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:31:09 >>WebView日志<< useQueryVoiceStream: SSE连接成功
2026-05-13 13:31:09 >>WebView日志<< [object Object]
2026-05-13 13:31:09 >>WebView日志<< useQueryVoiceStream未处理的类型 [object Object]
2026-05-13 13:31:09 >>WebView日志<< [object Object]
2026-05-13 13:31:10 >>WebView日志<< 接口内容异常:https://qianmu-iot.1000my.com/api/aimgr/v1/web/subject-info?subjectCode=gudFg9sxiRqVgLaYfEdBx&projectCode=project-gscmh7-skrmq_1v543rnna&a=1778650269705
2026-05-13 13:31:10 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:31:10 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:31:10 >>TTS: << 手动暂停播放
2026-05-13 13:31:13 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:31:13 >>显示器状态:<< 显示器正常
2026-05-13 13:31:19 >>TTS: << onCompletion: 1024
2026-05-13 13:31:22 >>WebViewActivity<< JS调用了Android的方法:startRecord()
2026-05-13 13:31:22 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:31:22 >>TTS: << 手动暂停播放
2026-05-13 13:31:22 >>ASRInit: << onReadyForSpeech
2026-05-13 13:31:24 >>ASRInit: << onBeginningOfSpeech
2026-05-13 13:31:24 >>ASRInit: << false
2026-05-13 13:31:24 >>ASRInit: << false
2026-05-13 13:31:24 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:请问
2026-05-13 13:31:24 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:请问你的
2026-05-13 13:31:24 >>ASRInit: << false
2026-05-13 13:31:25 >>ASRInit: << false
2026-05-13 13:31:25 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:请问你的心
2026-05-13 13:31:25 >>ASRInit: << false
2026-05-13 13:31:25 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:请问你的形状
2026-05-13 13:31:25 >>ASRInit: << false
2026-05-13 13:31:25 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:请问你的心脏是谁智
2026-05-13 13:31:25 >>WebViewActivity<< android调用js方法:giveAskText(),语音内容:请问你的心脏是谁制作的
2026-05-13 13:31:25 >>ASRInit: << false
2026-05-13 13:31:26 >>ASRInit: << false
2026-05-13 13:31:27 >>ASRInit: << onEndOfSpeech
2026-05-13 13:31:27 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:31:38 >>WebView日志<< [object Object]
2026-05-13 13:31:38 >>WebView日志<< [object Object]
2026-05-13 13:31:38 >>WebView日志<< useQueryVoiceStream: SSE连接成功
2026-05-13 13:31:38 >>WebView日志<< [object Object]
2026-05-13 13:31:38 >>WebView日志<< useQueryVoiceStream未处理的类型 [object Object]
2026-05-13 13:31:38 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:31:38 >>TTS: << 手动暂停播放
2026-05-13 13:31:38 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:31:47 >>TTS: << onCompletion: 1024
2026-05-13 13:32:23 >>显示器状态:<< 显示器正常
2026-05-13 13:32:23 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:32:48 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:32:48 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:32:48 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:32:48 >>TTS: << 手动暂停播放
2026-05-13 13:32:48 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:32:59 >>TTS: << onCompletion: 1024
2026-05-13 13:33:33 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:33:33 >>显示器状态:<< 显示器正常
2026-05-13 13:34:43 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:34:43 >>显示器状态:<< 显示器正常
2026-05-13 13:35:53 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:35:53 >>显示器状态:<< 显示器正常
2026-05-13 13:37:06 >>显示器状态:<< 显示器正常
2026-05-13 13:37:06 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:38:13 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:38:13 >>显示器状态:<< 显示器正常
2026-05-13 13:38:34 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:38 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:39 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:40 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:43 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:45 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:46 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:47 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:48 >>OnLongClick<< 用户长按了页面
2026-05-13 13:38:51 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:51 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:53 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:57 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:38:57 >>WebViewActivity<< JS调用了Android的方法:stopVoice()
2026-05-13 13:38:58 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:38:58 >>TTS: << 手动暂停播放
2026-05-13 13:38:58 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:39:02 >>WebView日志<< 距离目的地 233 米,预计4 分钟
2026-05-13 13:39:18 >>SocketServer_onStart<< onStart
2026-05-13 13:39:18 >>当前版本号: << V2.0.8.25
2026-05-13 13:39:18 >>UpdateFileActivity<< setData()
2026-05-13 13:39:18 >>剩余存储不足4G: << false
2026-05-13 13:39:18 >>UpdateFileActivity<< onResume()
2026-05-13 13:39:45 >>UpdateFileActivity<< onResume()
2026-05-13 13:40:15 >>getMachine:<< 获取激活码
2026-05-13 13:40:18 >>uploadLogFile<< {"code":200,"data":"上传日志成功","msg":"操作成功"}
2026-05-13 13:40:18 >>TAG<< 固件:rk3588s_s-userdebug 12 SQ3A.220705.003.A1 eng.ys.20241209.151540 release-keys
2026-05-13 13:40:18 >>TAG<< 设备型号:亿晟rk3588,Android12
2026-05-13 13:40:18 >>TAG<< 安卓版本:12
2026-05-13 13:40:18 >>语音授权: << true
2026-05-13 13:40:18 >>getDevCoordinateByIP()<< {"code":200,"msg":"success","data":{"machineCode":"KUgRswe-810BfhZoS3iOh","machineName":"L1-智能体(周生生)","machineTypeName":"导视","label":"android","screenAttribute":"2160*3840竖屏","building":"A","buildingCode":"H3tAWHgt_JCSVSSfmR8Rj","buildingOrder":0,"floor":"L1","floorCode":"lsXNGimknqvgXsBwXN8zb","floorOrder":4,"ip":"10.37.0.173","mac":"1C:54:E6:30:83:63","location":"151","angle":"-130","projectCode":"project-gscmh7-skrmq_1v543rnna","projectName":"北京清河万象汇导视/信发项目","regionCode":"","lensCoordinate":"","orientationCoordinate":"","deployType":"saas","xfyunIp":"","xfyunPort":"","baiduVoiceServer":"","iotserverForDevice":"https://qianmu-iot.1000my.com","style":"0","activationCode":"ZSEH3v","voiceActivationCode":"958039ac-f803-11f0-8138-de5f4ad655c4","voiceActivationSourceConfig":"{\"productId\":\"279633939\",\"apiKey\":\"cbaa3949d58ccbaa3949d58c69a6717e\",\"productKey\":\"b92c79a2dec223b738e795ad88d2515f\",\"productSecret\":\"67d8f67b4be237e84900361f660fa9d2\"}","locationDescription":"","detailImageCode":""},"traceId":"18d6aab5b5d0499da5691133728320d3.22270.17786508366239429"}
2026-05-13 13:40:26 >>UpdateFileActivity<< TYPE_DOWNLOAD_FILE-跳转至导视
2026-05-13 13:40:27 >>ASRInit: << 初始化成功!
2026-05-13 13:40:27 >>WebView日志<< Uncaught ReferenceError: leaveScreenSave is not defined
2026-05-13 13:40:30 >>WebView日志<< 视频预加载完成
2026-05-13 13:40:30 >>WebView日志<< THREE.Quaternion: .inverse() has been renamed to invert().
2026-05-13 13:40:30 >>WebView日志<< 地图数据更新时间: 2026-05-11 16:20:20
2026-05-13 13:40:35 >>WebView日志<< 项目初始化无屏保, 不做操作
2026-05-13 13:40:35 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:40:35 >>WebView日志<< Number of Triangles : 13336
2026-05-13 13:41:57 >>getCurrentTimestamp()<< {"code":200,"data":"1778650937729","msg":"操作成功"}
2026-05-13 13:42:16 >>设置开关机时间:<< {"off":"22:10","on":"09:40","weekList":[]}
2026-05-13 13:42:16 >>TAG<< 设置了定时开关机:关机:[2026,5,13,22,10],开机:[2026,5,14,9,40]
2026-05-13 13:42:17 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:42:17 >>显示器状态:<< 显示器正常
2026-05-13 13:42:17 >>getMachineAppProgramMsg()<< {"code":200,"data":{"appVersion":"V2.0.8.25","appPackageUrl":"https://qianmu-iot.1000my.com/iotFile/Moderation/iotFile/project-gscmh7-skrmq_1v543rnna/20260512/GnAlXuIaEi5biUexFsHWs.apk","programVersion":"v1.6.2","programPackageUrl":"https://qianmu-iot.1000my.com/iotFile/Moderation/iotFile/saas/20260511/orcw_kPmOlQuOTGIyVK7k.zip"},"msg":"success"}
2026-05-13 13:43:26 >>设置2开机时间:<< 202605140940
2026-05-13 13:43:27 >>显示器状态:<< 显示器正常
2026-05-13 13:43:27 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:43:34 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:38 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:40 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:42 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:43 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:44 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:48 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:50 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:55 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:57 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:43:58 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:02 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:03 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:04 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:10 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:10 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:11 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:13 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:15 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:15 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:18 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:44:40 >>显示器状态:<< 显示器正常
2026-05-13 13:44:40 >>pingNet()<< {"code":200,"data":"设备KUgRswe-810BfhZoS3iOh测试http访问","msg":"success"}
2026-05-13 13:45:18 >>WebViewActivity<< JS调用了Android的方法:hasProgram():false
2026-05-13 13:45:18 >>WebViewActivity<< JS调用了Android的方法:startTTS()
2026-05-13 13:45:18 >>TTS: << 手动暂停播放
2026-05-13 13:45:18 >>WebViewActivity<< JS调用了Android的方法:stopTTS()
2026-05-13 13:45:30 >>TTS: << onCompletion: 1024
Loading…
Cancel
Save