2010-12-15 85 views
2

Je suis en train d'essayer d'attraper les États pour ACTION_SCO_AUDIO_STATE_CHANGED comme spécifié par: http://developer.android.com/reference/android/media/AudioManager.html#ACTION_SCO_AUDIO_STATE_CHANGEDJe n'arrive pas à attraper ACTION_SCO_AUDIO_STATE_CHANGED pourquoi?

Je me suis inscrit dans l'intention de mon manifeste, mais je ne reçois pas quoi que ce soit lors de la connexion à un périphérique Bluetooth. Toute permission particulière dont j'ai besoin ou quelque chose?

Manifest:

<receiver android:name="com.app.receiver.BluetoothReceiver"> 
     <intent-filter> 
      <action android:name="android.media.SCO_AUDIO_STATE_CHANGED" /> 
      <action android:name="android.bluetooth.device.action.ACL_CONNECTED" /> 
      <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" /> 
      <action android:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" /> 
      <action android:name="android.bluetooth.device.action.BOND_STATE_CHANGED" /> 
     </intent-filter> 
    </receiver> 

Je ne peux pas obtenir l'un des appels de BOND_STATE_CHANGED, SCO_AUDIO_STATE_CHANGED ou ACL_DISCONNECT_REQUESTED. Les autres intentions je les reçois très bien.

Merci,

-Jona

+0

Pouvez-vous poster votre manifeste où vous enregistrez le récepteur? – EboMike

+0

Je suppose que je suis aussi perdu que tout le monde ... – Jona

Répondre

1

Il est probablement une intention de diffusion qui ne peut pas être reçu à l'aide du manifeste. Vous devrez configurer un objet BroadcastReceiver et l'enregistrer pour recevoir la diffusion. Le récepteur doit être actif pour recevoir l'intention.

Certaines intentions de diffusion fonctionnent de la sorte alors que d'autres sont autorisées à être interceptées via le manifeste.

L'autre possibilité est que le récepteur nécessite une autorisation que vous ne demandez pas.

Ceci est une note importante du SDK sur Context.registerReceiver(). Remarque: cette méthode ne peut pas être appelée à partir d'un composant BroadcastReceiver; c'est-à-dire d'un BroadcastReceiver déclaré dans le manifeste d'une application. Il est correct, cependant, d'appeler cette méthode à partir d'une autre BroadcastReceiver qui lui-même a été enregistré au moment de l'exécution avec registerReceiver (BroadcastReceiver, IntentFilter), puisque la durée de vie d'une telle BroadcastReceiver enregistrée est liée à l'objet qui l'a enregistré

-1
<uses-permission android:name="android.permission.BROADCAST_STICKY" 
+0

Sticky n'est pas nécessaire du tout. – Jona