2012-04-15 3 views
2

После прочтения руководства по Android and some posts здесь я внедрил простое решение для захвата события HEADSET UNPLUG на моем планшете под управлением Android 2.3.3.ACTION_AUDIO_BECOMING_NOISY не записывается

К сожалению, кажется, что у меня что-то отсутствует, так как событие onReceive() никогда не захватывается.

Бельего внедренный код:

public class MusicIntentReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     if (intent.getAction().equals(android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) { 
      Toast.makeText(context, "Headphones disconnected.", Toast.LENGTH_SHORT).show(); 
     } 

    } 


} 

И андроид файл манифеста:

<receiver android:name=".MusicIntentReceiver"> 
      <intent-filter> 
       <action android:name="android.media.AUDIO_BECOMING_NOISY" /> 
      </intent-filter> 
     </receiver> 

Что мне не хватает?

ответ

3

Фильтр NOISY срабатывает при изменении источников аудиовыхода и может вызвать фанки.

Правильный фильтр для наушников штекер должен быть:

IntentFilter commandFilter = new IntentFilter(); 
commandFilter.addAction(Intent.ACTION_HEADSET_PLUG); 

Манифест следует читать:

<intent-filter> 
      <action android:name="android.intent.action.HEADSET_PLUG" /> 
</intent-filter> 
+0

вопрос, который я бегу в с том, что это HEADSET_PLUG триггеры на каждом OnCreate из Активность, поэтому я получаю много ложных срабатываний, когда у меня нет подключенных наушников. – wblaschko

+0

Вам необходимо зарегистрироваться на onResume и отменить регистрацию on onPause –