4

我想知道android APP是否有任何方法可以检测另一个人(不是设备所有者)接听电话的时间。换句话说,要测量我拨打一个号码和其他人接听它之间的时间。我想创建一个图表,例如:John 平均需要 5 秒接听电话,Jane 平均需要 8 秒等等。

谢谢!

4

2 回答 2

3

为 callstate 创建一个接收器,它将接收每一个正在响铃、空闲和通话中的电话。我会在它开始响铃时得到系统时间,并在电话接听时与之进行比较。

public void onReceive(Context context, Intent intent) {

String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
    //Phone ringing
    callTime = System.currentTimeMillis();

}else if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK){
    //Call answered
    answeredTime = System.currentTimeMillis();
    timeTaken = answeredTime - callTime;


}else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
    //Call rejected

}

}

这应该是一个开始

于 2013-09-30T11:57:45.900 回答
0

可能有一种使用MediaRecorder的方法,但我在其他地方读到它是否有效取决于手机。此示例记录到文件,但您可以重定向到流并在应用程序中处理音频。

不过,还有其他问题需要牢记。引用Lifehacker 文章

[W] 当你处理不是通过 VoIP 的电话时,你会危险地接近窃听法,这可能会变得复杂。

如果您有资源,通过 VOIP 重定向呼叫并从 VOIP 服务器记录可能会更容易。

编辑:试试这个链接。它使用TelephonyManager来检查呼叫状态从“响铃”到“摘机”的变化。

于 2013-09-29T22:05:13.850 回答