2013-06-04 4 views
1

Я пытаюсь разработать приложение, в котором он включит ваш звонок, если кто-то назовет вас определенным количеством раз подряд в течение определенного периода времени. Это мое первое приложение, поэтому я немного застрял.Android обнаруживает входящие звонки?

Как записывать каждый раз, когда вызов получен во внутреннем списке? Должно ли это быть службой, которая всегда будет работать, или может ли эта работа работать в обычном приложении, просто получая намерение приложения дозвона?

Приносим извинения, если этот вопрос немного расплывчатый.

+0

Вы можете зарегистрироваться в качестве приемника, а затем вы могли бы хранить информацию в базе данных sqlite. – gsingh2011

ответ

4

Лучший способ сделать это, объявив приемник вещания в манифесте, это приведет к тому, что код в вашем классе BroadcastReceiver будет выполняться каждый раз при запуске события, без необходимости запуска службы в фоновом режиме все время, пусть OS обрабатывать наблюдающая часть для вас ...

<receiver android:name=".ReceiverExample"> 
    <intent-filter> 
    <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
</receiver> 

Теперь в вашем BroadcastReceiver классе «ReceiverExample», создать SharedPreference для хранения количества Incomming вызовов, а также основываясь на том, что вам может подтвердить, есть ли время сделать что-то еще или нет ...

public class ReceiverExample extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    //Logic to listen incoming calls, and keep track of them using Shared Preferences.. 
    } 
    } 

Службы хороши для длительных задач, но сама ОС хорошо подходит для мониторинга/наблюдения событий (например, событий телефонии, например. Incomming звонков ...), постарайтесь не переделать работу операционной системы путем создания служб только для мониторинга уже известных событий ...

С уважением

+0

+1 для простоты –

0
use single Tone Class for recording 


public class Recording { 

    private static MediaRecorder recorder; 
    private File audiofile; 

    private static Recording mInstance; 

    public MediaRecorder getRecorder() { 
     System.out.println("From singleton..!!!"); 
     return recorder; 
    } 

    public static Recording getInstance(Context context) { 
     return mInstance == null ? (mInstance = new Recording(context)) 
       : mInstance; 
    } 

    private Recording(Context context) { 
     System.out.println("Again initiated object"); 
     File sampleDir = Environment.getExternalStorageDirectory(); 
     try { 
      audiofile = File.createTempFile("" + new Date().getTime(), ".amr", 
        sampleDir); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return; 
     } 

     recorder = new MediaRecorder(); 
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     recorder.setOutputFile(audiofile.getAbsolutePath()); 
    } 
} 
Смежные вопросы