2014-01-02 15 views
0

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

IntentFilter intentFilter= new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 
     SMSReceiver sMSReceiver= new SMSReceiver(); 
     registerReceiver(sMSReceiver, intentFilter); 

Так есть ли простой способ для обработки входящих вызовов также

ответ

0

Просто напишите один приемник вещания и объявил его в манифесте

<receiver 
     android:name="com.sample.myapp.ReceiveIncomingCall" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.READ_PHONE_STATE" > 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
    </receiver> 

написать приемник, как это ...

public class ReceiveIncomingCall extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      // call is coming... 
     } 
    } 
} 

и добавить

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

в манифесте

+0

нормально .. позвольте мне проверить код .. – saa

+0

@saa это работает ??? –

1

Использование TelephonyManager.EXTRA_STATE_RINGING и TelephonyManager.EXTRA_STATE_IDLE. Проверьте цель:

intent.getStringExtra(TelephonyManager.EXTRA_STATE) 

, который должен соответствовать одному из них.

В манифесте:

<receiver android:name=".CallReciever"> 
    <intent-filter> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
</receiver> 
+0

Позвольте мне проверить ваш код Niek – saa

0

Вы должны правильно обрабатывать аудио фокуса. Существует хорошее руководство на Android Developers: http://developer.android.com/training/managing-audio/audio-focus.html

OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() { 
public void onAudioFocusChange(int focusChange) { 
    if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT 
     // Pause playback 
    } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { 
     // Resume playback 
    } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) { 
     am.unregisterMediaButtonEventReceiver(RemoteControlReceiver); 
     am.abandonAudioFocus(afChangeListener); 
     // Stop playback 
    } 
}; 
Смежные вопросы