【问题标题】:How to check if an outgoing call is answered, in Android?如何在Android中检查拨出电话是否已接听?
【发布时间】:2016-03-09 13:06:18
【问题描述】:

我正在尝试检测用户何时接听电话。我的应用程序拨打电话号码,但没有看到用户是否接听,我无法执行我需要的关键功能。如本文所示,您似乎可以在第 5 版及更高版本中执行此操作,但我不知道该怎么做。我知道一定有人想出了一个解决方法,因为正如一个人之前所说,一旦用户回答,呼叫计时器就会启动,所以必须有一种方法来检测它。这个问题已经发布了很多次,但没有人发布正确的答案。

似乎答案就在 Tim S. 在这里回答:

Cannot detect when outgoing call is answered in Android

<uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" />

<receiver android:name=".listener.OutCallLogger">
    <intent-filter>
        <action android:name="android.intent.action.PRECISE_CALL_STATE" />
    </intent-filter>
</receiver>
public class OutCallLogger extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        switch (intent.getIntExtra(TelephonyManager.EXTRA_FOREGROUND_CALL_STATE, -2) {
            case PreciseCallState.PRECISE_CALL_STATE_IDLE:
                Log.d(This.LOG_TAG, "IDLE");
                break;
            case PreciseCallState.PRECISE_CALL_STATE_DIALING:
                Log.d(This.LOG_TAG, "DIALING");
                break;
            case PreciseCallState.PRECISE_CALL_STATE_ALERTING:
                Log.d(This.LOG_TAG, "ALERTING");
                break;
            case PreciseCallState.PRECISE_CALL_STATE_ACTIVE:
                Log.d(This.LOG_TAG, "ACTIVE");
                break;
        }
    }
}

【问题讨论】:

  • 对此有任何答案或指导吗?
  • 你找到解决办法了吗?

标签: android


【解决方案1】:

如果不实际检查铃声是否有变化,我认为这是不可能的。我将给出一个关于如何完成的想法,因为还没有人给出任何答案。

在我当前的两部手机上(一部是 root,一部不是),拨打号码,然后“呼叫计时器”开始。电话本身似乎甚至不知道电话何时被接听,只知道电话结束时。我不相信有一种简单的方法可以做到这一点。

如果您比较每个单独的铃声并比较间隔以确保呼叫仍在响铃,您就会知道它没有被接听。一旦你检测到不应该存在的噪音,你就可以假设有人已经回答并说“你好”或其他什么(希望不是与铃声同时出现)。您已经知道如何检测通话是否已结束。我不知道有人会在这样的项目中使用哪种类型的声音 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    相关资源
    最近更新 更多