Un support de Capture bouton sur Android >=4.0 (fonctionne sur 2,3)
J'ai écrit certains de service qui utilise BroadcastReceiver de capturer l'un des boutons de médias (le bouton"lecture" à partir d'un casque), et il fonctionne parfaitement sur android 2.3.x (HTC Nexus One ou HTC Desire)
Quand j'ai essayé de courir sur Android 4.0.3 (Samsung Nexus S), il ne fonctionne pas (mon application ne reçoit pas l'intention "d'android.l'intention.d'action.MEDIA_BUTTON" et le bouton "play" se comporte comme d'habitude: les arrêts/démarrages de la musique).
Contenu manifeste:
... <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name=".buttonreceiver.MediaButtonIntentReceiver" > <intent-filter android:priority="10000" > <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver> ...
Est-il moyen de le faire fonctionner sur android 4.0.3
edit: j'ai essayer la solution proposée, j'ai ajouté de l'action et de l'exécuter, mais mon récepteur ne fonctionne toujours pas recevoir de l'intention. Ce qui est plus étrange inscription récepteur par le code ne fonctionne pas:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_and_activation_view);
Log.d("MR", "onCreate - " + getIntent().getAction());
mReceiver = new MediaButtonIntentReceiver();
registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_MEDIA_BUTTON));
}
Maintenant, je suis totalement confus.
OriginalL'auteur Marek R | 2012-05-10
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que vous avez une activité dans votre application, et que l'utilisateur exécute cette activité avant de tenter d'appuyer sur ce bouton. Jusqu'alors, votre
<receiver>
ne recevrez pas d'émissions.Mise à JOUR
Sur Android 4.0 et plus, il semble que vous avez aussi besoin d'appeler
registerMediaButtonEventReceiver()
àAudioManager
afin de recevoir les événements. Cet état permettra de tenir jusqu'à ce que quelque chose d'autre appelsregisterMediaButtonEventReceiver()
ou jusqu'à ce que vous appelezunregisterMediaButtonEventReceiver()
.Par exemple, une activité de ce genre:
permettra un manifeste enregistré
MediaButtonReceiver
pour obtenir ACTION_MEDIA_BUTTON événements.cette seule solution possible?" -- oui, bien que je soupçonne que vous ne comprenez pas les corriger. Ils n'ont pas à quitter l'exécution de l'activité. Ils ont juste à lancer manuellement une activité de la vôtre une fois, pour déplacer votre application de cet arrêté. Veuillez lire le reliées blog dans ma réponse.
Il n'a pas de travail.Je veux dire, j'ai ajouté l'Activité et de l'exécuter, mais je suis incapable de capturer "android.l'intention.d'action.MEDIA_BUTTON", même lorsque l'Activité est en cours d'exécution de mon récepteur fais obtenir cette intention.
OK, j'ai trouvé le problème, de voir la mise à jour de réponse.
Merci enfin plus ou moins, il fonctionne.
OriginalL'auteur CommonsWare
Si vous voulez que votre application par défaut mais n'avez pas besoin de faire quoi que ce soit avec l'appuie sur un bouton, vous pouvez utiliser la méthode suivante.
Ajouter ceci au fichier manifeste (dans la "Demande" node):
Ajouter à onCreate() de l'activité principale ou n'importe où vous le souhaitez qui est appelé lorsque l'application est exécutée. Pourrait être utile dans le onResume() de l'événement:
OriginalL'auteur boosth