如何在Android中检查是否接听了拨出电话?

我试图检测用户何时接听电话.我的应用程序拨打电话号码,但没有看到用户是否回答我无法执行我需要的关键功能.看起来你可以在第5版及以上版本中执行此操作,如本文所示,但我无法弄清楚如何做到这一点.我知道有人必须想出一个解决办法,因为正如一个人之前所说,一旦用户回答,呼叫计时器就会启动,所以必须有办法检测它.此问题已多次发布,但没有人发布正确答案.

似乎答案在于蒂姆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;
        }
    }
}

解决方法

我认为没有实际检查铃声的变化是不可能的.我将就如何做到这一点提出一个想法,因为还没有人给出任何答案.

在我当前的两部手机上(一个是根,一个不是),拨打号码,然后启动“呼叫计时器”.电话本身似乎甚至不知道何时应答呼叫,只有在呼叫结束时才知道.我不相信有这么简单的方法.

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

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...