我正在编写一个应该检测传入/传出呼叫并记录它们的应用程序。 我设法让广播接收器注册并开始录制呼叫,但我不能让它停止。
附件是我写的相关BroadcastReciever的代码,BTW是从服务中调用的。
public class IncomingCall extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if(TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state)){
String incnum = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
int day = new Date().getDate(), mont = new Date().getMonth() , yea = new Date().getYear(), hou = new Date().getHours(), min = new Date().getMinutes();
String s = ""+day+"_"+mont+"_"+yea+"_"+hou+"_"+min+"_"+incnum+"_Incoming"+".3gp";
final AudioRecorder ar = new AudioRecorder(s, context);
ar.start();
Thread th = new Thread(){
public void run(){
String stat = TelephonyManager.ACTION_PHONE_STATE_CHANGED;
while(stat == TelephonyManager.EXTRA_STATE_OFFHOOK){
stat = TelephonyManager.ACTION_PHONE_STATE_CHANGED;
}
ar.stop();
}
};
th.start();
}
}
请注意,我无法在网上找到有关类似问题的任何细节:\
答案 0 :(得分:0)
查看BroadcastReceiver参考http://developer.android.com/reference/android/content/BroadcastReceiver.html
故事是:BroadcastReceiver在被解雇之后只会持续10秒,如果它仍然没有从onReceive()方法返回,它会被OS杀死。 接到电话后启动服务并在那里录音,然后在电话状态改变时从另一个接收器停止此服务。