35 votes

Comment gérer sainement les volumes audio dans mon application Android?

J'ai une application qui joue intermittent des sons tandis que son activité est ouverte, et l'utilisateur est toujours attendu pour faire de ces bruits, mais malheureusement, il est contraint par la musique de flux de volume. Les options que j'ai découvert sont donc:

  1. Ajuster la musique du flux de volume, éventuellement assourdissant à l'utilisateur s'il leur arrive de jouer de la musique à l'époque.
  2. Appel MediaPlayer.setVolume() qui est inefficace si la musique du flux de volume est de 0.
  3. Poignée bouton de volume presses de moi-même qui pose deux questions: volume appuie sur un bouton ajuster le volume de la sonnerie à moins que mon audio est en cours de lecture, et j'ai été encore incapable de rattraper le onKey événement pour un volume appuyez sur le bouton à l'aide de mon OnKeyListener. S'il y avait un moyen de forcer l'ajustement à appliquer à la musique stream alors que mon activité a le focus, ou prenez simplement le bouton de presses à moi-même ce serait le travail.
  4. Jouer en silence, un morceau en boucle de l'audio en arrière-plan pour garder la musique en flux dans le contexte des ajustements de volume.

Je pense que la 3ème option est probablement le meilleur depuis qu'il cède le contrôle du volume pour l'utilisateur, mais s'il y avait un moyen de remplacer le système de volume en un seul mediaplayer instance qui serait trop de travail.

76voto

Luke Points 6644

Avez-vous une autre suggestion via Google Groupes qui est la plate-forme intégrée, solution que je cherchais et fonctionne très bien:

Merci de ne pas manipuler les touches de volume vous-même - il est presque impossible de garantir que vous ne cassera pas la le comportement des touches de volume.

Appel de cette API dans votre onCreate():

setVolumeControlStream(AudioManager.STREAM_MUSIC);

Ceci dit l'AudioManager que lorsque votre application a le focus, le volume les clés doivent régler le volume de la musique.

2voto

Jill Points 21

Il est utile de cette API: setVolumeControlStream (AudioManager.STREAM_MUSIC);

A moins que je ne passe plus de temps à corriger ce bogue de volume.

0voto

Hitendra Points 1207

Cela ne vous aidera pas si vous avez remplacé la méthode onKeyDown (int keycode, KeyEvent event) d'une activité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X