Приемник смены режима звонка Широковещательный приемник?
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
Log.i("MyApp","Silent mode");
break;
case AudioManager.RINGER_MODE_VIBRATE:
Log.i("MyApp","Vibrate mode");
break;
case AudioManager.RINGER_MODE_NORMAL:
Log.i("MyApp","Normal mode");
break;
}
Из приведенного выше кода я могу получить режим звонка. То, что я хотел бы сделать, это прослушать изменения режима звонка и вызвать функцию.
Мне сказали, что я могу зарегистрировать AudioManager. RINGER_MODE_CHANGED_ACTION и прислушайтесь к намерению изменения в методе broadcastReceive. Это звучит ясно. Но я новичок в андроиде и действительно не знаю, как его написать. Есть ли кто-нибудь, кто может просто написать фрагмент кода и показать, как именно он работает, вместо того, чтобы говорить что-то использовать:) Спасибо.
Ответы
Ответ 1
Используйте следующий код внутри метода onCreate()
вашего Activity
или Service
, который вы хотите обработать трансляцию:
BroadcastReceiver receiver=new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
//code...
}
};
IntentFilter filter=new IntentFilter(
AudioManager.RINGER_MODE_CHANGED_ACTION);
registerReceiver(receiver,filter);
Ответ 2
Другим решением является добавление получателя с действием в манифесте:
<receiver android:name=".receivers.RingerModeStateChangeReceiver" >
<intent-filter>
<action android:name="android.media.RINGER_MODE_CHANGED" />
</intent-filter>
</receiver>
и ваш класс RingerModeStateChangeReceiver должен расширить BroadcastReceiver.