2012-04-15 12 views
2

Nach dem Lesen des Android-Entwickler-Guide und einige Beiträge hier gefangen zu werden, habe ich eine einfache Lösung implementiert, um ein HEADSET UNPLUG Ereignis in meinem Tablet mit Android 2.3.3 zu erfassen.ACTION_AUDIO_BECOMING_NOISY nicht

wird es scheint, dass ich etwas seit dem OnReceive() Ereignis fehlt bin nie gefangen Leider.

Bellow ist die implementierte Code:

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

    } 


} 

Und in der Android-Manifest-Datei:

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

Was mir fehlt?

Antwort

3

Der verrauschte Filter wird ausgelöst, wenn Audio-Ausgangsquellen ändern und könnte funky stuff verursachen.

Der richtige Filter für Headset-Stecker sollte sein:

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

Das Manifest sollte lauten:

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

Das Problem, das ich in mit diesem renne ist, dass es HEADSET_PLUG auf jedem onCreate eines auslöst Aktivität, so viele Fehlalarme ich erhalte, wenn ich keine Kopfhörer angeschlossen. – wblaschko

+0

Sie haben auf onResume registrieren und deregistrieren auf onPause –