Запись входящих и исходящих звонков с помощью BR с помощью Telephony Manager - PullRequest
1 голос
/ 19 января 2012

Я пишу приложение, которое должно обнаруживать входящие / исходящие звонки и записывать их.Мне удалось заставить приемника вещания зарегистрироваться и начать запись вызова, но я не могу остановить его.

Приложен код соответствующего BroadcastReciever, который я написал, и, кстати, он вызывается из службы.

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();
    }



}

Пожалуйста, сообщите, я не смог найти какие-либо подробности о подобной проблеме в Интернете: \

1 Ответ

0 голосов
/ 19 января 2012

Посмотрите на ссылку BroadcastReceiver http://developer.android.com/reference/android/content/BroadcastReceiver.html

История такова: BroadcastReceiver, когда срабатывает, живет только в течение 10 секунд, после того как он убит ОС, если он все еще не вернулся из метода onReceive (). Запустите службу после того, как вам позвонили, и сделайте запись там, затем остановите эту услугу на другом приемнике, когда состояние телефона изменилось.

...