samsung resetear reproduccion mis encuentra dispositivos detecta configurar conectar conectan con como celular auricular audifonos aparece android audio android-intent

resetear - Detecta si un auricular está conectado a un dispositivo Android o no.



mis audifonos bluetooth no aparece en dispositivos de reproduccion (4)

¿Cómo puedo determinar si un auricular está conectado a un dispositivo Android o no?



Puedes usar el receptor de transmisión.

Entonces, puedes escribir este código en "AndroidManifest.xml"

<receiver android:name="com.juno.brheadset.HeadsetStateReceiver"> <intent-filter> <action android:name="android.intent.action.HEADSET_PLUG"/> </intent-filter> </receiver>-->

Pero, esto no funciona. Cuando OS envía este intento de "HEADSET_PLUG", el sistema operativo establece el indicador "Intent.FLAG_RECEIVER_REGISTERED_ONLY". Por lo tanto, debe escribir el siguiente código en la clase Activity o Service en lugar de "AndroidManifest".

public class BRHeadsetActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); HeadsetStateReceiver receiver = new HeadsetStateReceiver(); registerReceiver( receiver, receiverFilter ); }

Espero que este artículo te ayude. ¡Adiós!

Esta es la parte de "HeadsetObserver.java", Android SDK Source.

private final void sendIntent(int headset, int headsetState, int prevHeadsetState, String headsetName) { if ((headsetState & headset) != (prevHeadsetState & headset)) { // Pack up the values and broadcast them to everyone Intent intent = new Intent(Intent.ACTION_HEADSET_PLUG); **intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);** int state = 0; int microphone = 0; if ((headset & HEADSETS_WITH_MIC) != 0) { microphone = 1; } if ((headsetState & headset) != 0) { state = 1; } intent.putExtra("state", state); intent.putExtra("name", headsetName); intent.putExtra("microphone", microphone); if (LOG) Slog.v(TAG, "Intent.ACTION_HEADSET_PLUG: state: "+state+" name: "+headsetName+" mic: "+microphone); // TODO: Should we require a permission? ActivityManagerNative.broadcastStickyIntent(intent, null); } }


AudioManager.isWiredHeadsetOn() siempre devuelve false porque requiere permisos de usuario MODIFY_AUDIO_SETTINGS .

Pasé varios días mientras encontraba respuesta. No hay información sobre esto en la documentación oficial. Y esta BugTracker ya registrada en BugTracker .


Cuando dices "auricular", ¿te refieres a "auricular con cable"? Si es así, hay una intención de detectar si uno está o no enchufado o desconectado: ACTION_HEADSET_PLUG .

Para verificar el estado, puede usar AudioManager.isWiredHeadsetOn() , aunque eso puede devolver false si también hay un auricular bluetooth, y el audio se enruta a eso en su lugar.