远程检查电话的状态

时间:2013-10-30 00:16:19

标签: android adb monitoring

我想在开始通话后检查通过连接的PC呼叫的状态,如果可能的话,使用ADB。 我通过使用adb命令service call phone 2 s16 "some phone number"输入电话号码,然后发送input keyevent 5按呼叫按钮来开始通话。

现在我很想找到一种方法来确定呼叫的状态。我需要知道被叫号码当前是否正忙,如果呼叫被取消或者呼叫是否成功/我是否有与被叫号码的开放式语音连接。 有没有办法监控?

手机型号真的无关紧要,也没用我用来调用号码和android版本的android服务/应用程序。手机将被植根。我将使用任何有用的东西。

6 个答案:

答案 0 :(得分:6)

adb shell dumpsys telephony.registry | grep mCallState,将返回:

  • 0表示空闲,
  • 1 =响铃和
  • 2 =有效通话

答案 1 :(得分:1)

确定呼叫是否仍在进行中非常简单。你可以:

确定所调用的数字当前是否正忙是一个完全不同的范围,因为您现在必须处理网络特定的实现(cdma与gsm完全不同)。在CDMA上,几乎不可能弄明白。

答案 2 :(得分:1)

adb shell致电TelephonyManager.getCallState()使用:

adb shell service call phone 30

对于正确解析设备端的service call命令输出而没有外部依赖关系,请参阅我的answer here

另请阅读Calling Android services from ADB shell了解详情。

答案 3 :(得分:0)

我刚刚找到了自己的答案。使用“dumpsys telephony.registry”可以获得我需要的所有信息。它包含变量“mCallState”,这正是我需要的。

更新:确定不是我需要的100%,由于某种原因,建立连接时callstate不会改变。如果有人有更多我想知道的想法。

更新2:显然这是Android中的安全衡量标准,您无法在通话期间获得当前通话状态,您只知道用户正在建立一个,但如果已经存在活动连接或者仍然存在拨号。

答案 4 :(得分:0)

您找到这些号码的方法是首先确定您的AOS版本,然后转到GrepCode并转到您的版本。然后点击以下链接: /com.android.internal.telephony.ITelephony (* .java)并搜索CALL_TRANSACTION的代码。

答案 5 :(得分:0)

运行adb logcat|grep -i currentCallState

您将获得日志:

D/PhoneUtils( 1242): setAudioMode() currentCallState : DIALING

D/PhoneUtils( 1242): setAudioMode() currentCallState : DIALING

D/PhoneUtils( 1242): setAudioMode() currentCallState : DIALING

D/PhoneUtils( 1242): setAudioMode() currentCallState : DIALING

D/PhoneUtils( 1242): setAudioMode() currentCallState : ALERTING

D/PhoneUtils( 1242): setAudioMode() currentCallState : ACTIVE

D/PhoneUtils( 1242): setAudioMode() currentCallState : DISCONNECTING

D/PhoneUtils( 1242): setAudioMode() currentCallState : IDLE

拨打 - 仍然拨打电话 警报 - 振铃 断开连接 - 单击“断开连接” 空闲 - 恢复正常状态