1

在使用 adb logcat 中的 RILJ 输出监控我的 Android 手机(Samsung Galaxy S6-8;操作系统:Android 6-8)的通话状态时,有时会出现错误,我不知道这可能来自哪里。

我在做什么:

  1. 通过“logcat -b main -v long”和“logcat -b radio -v long”读取 adb logcat 输出
  2. 使用正则表达式过滤器“< GET_CURRENT_CALLS”匹配每个日志行
  3. 将每一行映射到其状态:DIALING、ALERTING、ACTIVE、INCOMING、HOLDING、WAITING

结果:

这似乎运作良好,这是 A 方和 B 方之间调用的示例输出:

A-Party 02-18 14:57:00.796: D/RILJ(4544): [0899]> GET_CURRENT_CALLS [SUB0]
A-Party 02-18 14:57:00.804: D/RILJ(4544): [0899]< GET_CURRENT_CALLS {[id=1,DIALING,toa=129,norm,mo,0,voc,noevp,,cli=1,,1] } [SUB0]
B-Party 02-18 14:57:42.956: D/RILJ(4494): [1856]> GET_CURRENT_CALLS [SUB0]
B-Party 02-18 14:57:42.963: D/RILJ(4494): [1856]< GET_CURRENT_CALLS {[id=1,INCOMING,toa=145,norm,mt,0,voc,noevp,,cli=1,,1] } [SUB0]
A-Party 02-18 14:57:02.869: D/RILJ(4544): [0902]> GET_CURRENT_CALLS [SUB0]
A-Party 02-18 14:57:02.870: D/RILJ(4544): [0903]> GET_CURRENT_CALLS [SUB0]
A-Party 02-18 14:57:02.873: D/RILJ(4544): [0902]< GET_CURRENT_CALLS {[id=1,ALERTING,toa=129,norm,mo,0,voc,noevp,,cli=1,,1] } [SUB0]
A-Party 02-18 14:57:02.879: D/RILJ(4544): [0903]< GET_CURRENT_CALLS {[id=1,ALERTING,toa=129,norm,mo,0,voc,noevp,,cli=1,,1] } [SUB0]
A-Party 02-18 14:57:02.909: D/RILJ(4544): [0904]> GET_CURRENT_CALLS [SUB0]
A-Party 02-18 14:57:02.917: D/RILJ(4544): [0904]< GET_CURRENT_CALLS {[id=1,ALERTING,toa=129,norm,mo,0,voc,noevp,,cli=1,,1] } [SUB0]
B-Party 02-18 14:57:59.539: D/RILJ(4494): [1862]> GET_CURRENT_CALLS [SUB0]
A-Party 02-18 14:57:18.988: D/RILJ(4544): [0906]> GET_CURRENT_CALLS [SUB0]
B-Party 02-18 14:57:59.545: D/RILJ(4494): [1862]< GET_CURRENT_CALLS {[id=1,ACTIVE,toa=145,norm,mt,0,voc,noevp,,cli=1,,1] } [SUB0]
A-Party 02-18 14:57:18.999: D/RILJ(4544): [0906]< GET_CURRENT_CALLS {[id=1,ACTIVE,toa=129,norm,mo,0,voc,noevp,,cli=1,,1] } [SUB0]
B-Party 02-18 14:58:31.225: D/RILJ(4494): [1865]> GET_CURRENT_CALLS [SUB0]
B-Party 02-18 14:58:31.251: D/RILJ(4494): [1865]< GET_CURRENT_CALLS {} [SUB0]
A-Party 02-18 14:57:55.350: D/RILJ(4544): [0909]> GET_CURRENT_CALLS [SUB0]
A-Party 02-18 14:57:55.363: D/RILJ(4544): [0909]< GET_CURRENT_CALLS {} [SUB0]
A-Party 02-18 14:58:27.693: D/RILJ(4544): [0924]> GET_CURRENT_CALLS [SUB0]

问题:

对于某些执行,似乎缺少日志消息。这条线可能会发生

A-Party 02-18 14:57:18.999: D/RILJ(4544): [0906]< GET_CURRENT_CALLS {[id=1,ACTIVE,toa=129,norm,mo,0,voc,noevp,,cli=1,,1] } [SUB0]

不见了。因此,呼叫状态 ACTIVE 未注册,尽管我可以在电话屏幕上看到呼叫已应答并且确实处于活动状态。

我现在正试图让这个运行更稳定一段时间,但我不知道问题可能是什么。我已经想到/尝试了以下方法,但不知道是否可能是导致此问题的原因:

  1. 它可能是来自 RILJ 的一个“错误”,它缺少一条日志,还是 100% 可靠?
  2. 是否有另一种更可靠的服务/可能性来跟踪呼叫状态?即使 RILJ 日志丢失,手机似乎也能正确知道状态,因此它必须以某种方式从另一个来源知道。
  3. 可能是 adb logcat 问题导致某些消息丢失了?

如果有人有一些答案或其他提示来解决此问题并提供 100% 可靠的呼叫状态跟踪,我将不胜感激。

谢谢

编辑:

我多次看到 cpu 使用率为 100%,是否有可能由于 cpu 性能而导致 adb 日志“丢失”,或者我可以确保在使用率降低时完全收到日志行?

4

0 回答 0