2012-01-18 4 views
1

수신/발신 통화를 감지하고 녹음하는 앱을 작성하고 있습니다. 나는 브로드 캐스트 리시버를 등록하고 녹음 녹음을 시작했지만 멈출 수는 없다.전화 통신 관리자를 사용하여 BR로 수신 및 발신 통화 기록

첨부 된 관련 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(); 
    } 



} 

알려 주시기 바랍니다, 나는 웹에서 유사한 문제에 대한 모든 정보를 찾을 수 couldnt한다 :

답변

0

는 브로드 캐스트 리시버 레퍼런스를 살펴 보자 \ http://developer.android.com/reference/android/content/BroadcastReceiver.html

이야기입니다 만 10 삶을 발사 브로드 캐스트 리시버 때 OS에서 kill 된 후에도 여전히 onReceive() 메소드에서 돌아 오지 않았습니다. 전화를받은 후 서비스를 시작한 다음 전화 상태가 변경되면 다른 수신기에서이 서비스를 중지하십시오.