我正在尝试检测用户何时接听电话。我的应用程序拨打电话号码,但没有看到用户是否回答我无法执行我需要的关键功能。看起来你可以在第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;
}
}
}
答案 0 :(得分:0)
我认为没有实际检查铃声的变化是不可能的。我将就如何做到这一点提出一个想法,因为还没有人给出任何答案。
在我当前的两部手机上(一部是root,一部不是),拨打号码,然后启动“呼叫计时器”。电话本身似乎甚至不知道何时应答呼叫,只有在呼叫结束时才知道。我不相信有一种简单的方法可以做到这一点。
如果您比较每个铃声并比较间距以确保呼叫仍然响铃,您就会知道它没有被应答。一旦你发现不应该存在的噪音,你可以假设某人已经回答并说“你好”或其他什么(希望与铃声不同的时候)。您已经知道如何检测呼叫是否已结束。我不知道有人会在这样的项目上开始使用什么类型的声音API。