在我的应用程序中,我发起了一个拨出电话,我正在使用PhoneStateListener了解呼叫状态。
每当我开始拨打电话时,电话状态为TelephonyManager.CALL_STATE_OFFHOOK
。当呼叫接收者接听电话时,我的电话状态没有任何变化。
我尝试了很多,但没有得到这个回答状态。有人告诉使用蓝牙的HFP(免提配置文件)来获得呼叫应答状态。但我没有从Android开发者网站获得有关HFP的任何信息。
如果有人遇到同样的问题并得到了解决方案,请提出宝贵的建议。
答案 0 :(得分:1)
接收方应答呼叫时CALL_STATE_OFFHOOK
不会改变:
设备呼叫状态:摘机。至少存在一个正在拨打,有效或等待的通话,并且没有来电正在响铃或等待。
只要电话正在通话,状态就不应该改变,无论是否应答。
这个问题已被问过许多项目,到目前为止,我找到的所有项目都没有得到解决:Detect if an outgoing call has been answered,Android : How to get a state that the outgoing call has been answered?,Android : How to get a state that the outgoing call has been answered?(还有很多其他项目)。那里提供的解决方案依赖于CALL_STATE_OFFHOOK
状态来改变应答呼叫时,这种情况不会发生。
似乎没有可用于获取传出呼叫状态的公共API。我看到的最好的解决方法是Vivek Khandelwal所建议的,编码时间不长,性能开销也很大。除非添加太多权限(现在需要添加READ_CALL_LOGS
),否则请使用它。
答案 1 :(得分:0)
我也有同样的问题。这可能不是您问题的答案。我只是分享我的所作所为。
我有一个活动可以打开联系人并可以拨打电话。我想要的是,知道呼叫是否成功(即接收者接听电话)。
我当时找不到使用PhoneStateListener的解决方案。
因此,作为一种解决方法,如果在启动联系活动后拨打该联系人的电话号码,我会检查呼叫记录。
看看他的帮助。
答案 2 :(得分:0)