我需要拦截从我的设备发出的所有VOIP呼叫,以及 计算总通话时长。
你能建议阅读材料进行研究吗?
谢谢, 扒开。
答案 0 :(得分:0)
如果您想查看来自的每个电话,您可以扩展BroadcastReceiver和@Override
onReceive
方法。在您的清单文件中,您必须为PHONE_STATE
意图过滤器注册广播接收器。这意味着每次PHONE_STATE
更改时都会触发您的接收器。
在onReceive
方法中,您可以获得TelephonyManager
个实例,并检查CALL_STATE_RINGING
和其他状态,以确定从响铃,摘机,返回空闲的时间。这将让您了解通话的持续时间。
以下是文档:BroadcastReceiver
以下是您的清单
的示例 <receiver android:name=".receivers.PhoneBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
这是广播接收器的一个例子
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int callState = telephonyManager.getCallState();
Bundle extras = intent.getExtras();
if (extras == null) {
return;
}
String incomingNumber = extras.getString("incoming_number");
Log.d(TAG, "Receiving callStateChange: " + callState + " number: " + incomingNumber);
switch (callState) {
case TelephonyManager.CALL_STATE_RINGING :
processIncomingNumber(context, incomingNumber);
break;
case TelephonyManager.CALL_STATE_IDLE :
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancelAll();
break;
}
}