我想知道android APP是否有任何方法可以检测另一个人(不是设备所有者)接听电话的时间。换句话说,要测量我拨打一个号码和其他人接听它之间的时间。我想创建一个图表,例如:John 平均需要 5 秒接听电话,Jane 平均需要 8 秒等等。
谢谢!
我想知道android APP是否有任何方法可以检测另一个人(不是设备所有者)接听电话的时间。换句话说,要测量我拨打一个号码和其他人接听它之间的时间。我想创建一个图表,例如:John 平均需要 5 秒接听电话,Jane 平均需要 8 秒等等。
谢谢!
为 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
}
}
这应该是一个开始
可能有一种使用MediaRecorder的方法,但我在其他地方读到它是否有效取决于手机。此示例记录到文件,但您可以重定向到流并在应用程序中处理音频。
不过,还有其他问题需要牢记。引用Lifehacker 文章:
[W] 当你处理不是通过 VoIP 的电话时,你会危险地接近窃听法,这可能会变得复杂。
如果您有资源,通过 VOIP 重定向呼叫并从 VOIP 服务器记录可能会更容易。
编辑:试试这个链接。它使用TelephonyManager
来检查呼叫状态从“响铃”到“摘机”的变化。