Android - puis-je désactiver les applications audio en cours de lecture?
Salut, je suis nouveau sur ce. Mon auto-projet d'enseignement est une petite application qui joue un audio flux d'infos. Pour être efficace, l'application a vraiment besoin d'interrompre les cours de lecture des lecteurs de médias (par exemple: Last FM, Imeem, lecteur de musique, Spotify, etc).
Je ne sais pas ce qui va être la lecture ou de l'application sera de jouer, mais je veux demander à chacun de mettre en pause jusqu'à ce que j'ai fait. Plutôt des sons gras, je sais, mais il doit être possible, parce que quand il y a un appel entrant, c'est essentiellement ce qui se passe.
Puis-je envoyer un message à tous les joueurs en leur demandant de mettre en pause pendant un moment? Pourrais-je usurper un appel entrant, juste pour le temps qu'il faut?
Grâce.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Audio la manipulation sur Android va être assez horrible pour un certain temps. Les Api sont assez bizarre, mal documenté, et gardez la modification, l'autodérision/la rupture entre les versions. Même les
AudioManager
code a Fixme.De toute façon, il y a plusieurs types de flux dans Android (la musique, les notifications, les appels téléphoniques, etc.) et les applications sont destinées à choisir le plus approprié pour la lecture. J'imagine que la majorité des applications Android devrait utiliser de la musique/type de média (
STREAM_TYPE_MUSIC
). Vous définissez sur votreMediaPlayer
à l'aide de lasetAudioStreamType
méthode.Le SDK ne permet pas de définir un seul flux type solo — l'origine de tous les autres cours d'eau pour être coupé, mais je ne crois pas que vous pouvez identifier l'audio lu par des applications particulières et en quelque sorte de pause/reprendre. Les applications de musique en général, vont utiliser le
PhoneStateListener
eux-mêmes pour mettre en pause lors d'un appel.Donc dans votre cas, vous pouvez "emprunter" le coup de téléphone de flux pour votre
MediaPlayer
et d'utiliser la méthode d'appelAudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true)
lorsque la lecture commence, puis de l'onu-solo le flux avecfalse
lors de la lecture ou de votreActivity
est fait.Je peux vous dire que cela fonctionne, mais je ne me souviens pas désinvolte, si vous avez besoin de configurer l'audio mode à
MODE_IN_CALL
lors de l'utilisation de l'appel vocal flux (comme ceci:AudioManager.setMode(AudioManager.MODE_IN_CALL)
). Si vous trouvez que c'est nécessaire, alors vous devez vous assurer de retourner la mode àMODE_NORMAL
une fois la lecture terminée, sinon à chaque fois que vous appuyez sur le volume des touches, il va dire "En volume"! Toutefois, si vous ne souhaitez revenir àMODE_NORMAL
vous devez vérifier qu'un véritable appel téléphonique n'est pas le cas à l'époque...Vous pourriez peut-être utiliser un autre type de flux plutôt que de l'appel vocal, mais je suis juste de parler de l'expérience de travail sur une application qui pourrait utiliser le haut-parleur ou l'écouteur pour la lecture audio, qui nécessite l'utilisation de l'appel vocal flux.
Comme je l'ai dit, audio la manipulation n'est pas particulièrement plaisir... 😉
Il a été 2 ans. Mais j'espère que cela pourrait aider quelqu'un:
Remarque: si vous appelez setStreamMute(int, boolean) pour couper le flux n fois, vous devez l'appeler n fois de nouveau pour rétablir le son (utilisation
false
).Le moyen le plus approprié est d'utiliser le
AudioManager.requestAudioFocus(...)
méthodeVoir
http://developer.android.com/reference/android/media/AudioManager.html#requestAudioFocus%28android.media.AudioManager.OnAudioFocusChangeListener,%20int,%20int%29
Vous pouvez essayer AudioManager.adjustVolume méthode: