Escribí una aplicación de Android para recibir un evento de auricular Bluetooth, pero onReceive() no se invoca

Escribí una aplicación de Android para recibir un evento de auriculares Bluetooth, pero onReceive() no se invoca. Aunque no estoy seguro de si ACTION_MEDIA_BUTTON se usa como un evento o si no es este evento.


código de muestra para implementar el receptor:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;

public class MediaButtonIntentReceiver extends BroadcastReceiver {

private static final String TAG = "MediaButtonIntentReceiver";
public MediaButtonIntentReceiver() {
    super();
    }


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

    String intentAction = intent.getAction(); //getAction()
    Log.d(TAG, "onReceive called");
    if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
                return;
    }
    KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
    if (event == null) {
                return;
    }
    int action = event.getAction();
       if (action == KeyEvent.ACTION_DOWN) {
    // do something
                Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show(); 
    }
    abortBroadcast();
}
}



La actividad se ve así:

public class myactivity extends Activity {
    private static final String TAG ="Bluetooth_priority";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) { //onCreate 
        super.onCreate(savedInstanceState);
        Log.d(TAG, "Oncreate called");
        setContentView(R.layout.main);
        IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
        MediaButtonIntentReceiver r = new MediaButtonIntentReceiver();
        filter.setPriority(1000); // set teh priority
        registerReceiver(r, filter); //register
    }
}



Manifest.xml se ve así:

<receiver android:name="MediaButtonIntentReceiver">
        <intent-filter android:priority="1000">
            <action android:name="android.intent.action.MEDIA_BUTTON" />
        </intent-filter>

En caso de que alguien sepa sobre esto, responda. Incluso estableciendo la prioridad en 2147483647, no funciona.

preguntado el 04 de julio de 12 a las 10:07

¿También agregó el permiso bluetooth al manifiesto? <uses-permission android:name="android.permission.BLUETOOTH" /> -

¡Gracias Martijn por tu rápida respuesta! Pero el permiso de uso ya está agregado. -

¿Necesito abrir la conexión de enchufe bluetooth para esto? -

1 Respuestas

Creo que estás filtrando por la intención equivocada. Creo que la acción de intención que desea es BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED

Puedes referirte a http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html#ACTION_CONNECTION_STATE_CHANGED

respondido 20 mar '13, 09:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.