est-il possible d'enregistrer un auditeur pour écouter les modifications du niveau de volume du flux de musique dans Android? P>
J'affiche le volume réel dans une barre de recherche et je voudrais changer la barre de recherche si l'utilisateur modifie le volume avec les touches de volume matériel. Pour le moment, le bon volume est affiché jusqu'à ce que l'utilisateur modifie le volume avec des touches matérielles. P>
5 Réponses :
Vous pouvez afficher le volume en accédant au volume actuel d'Audiomanger si votre application est actuellement mise au point. Sinon, il n'y a pas de manière concrète (voie officielle utilisant API) de le faire. P>
J'ai eu le volume actuel du gestionnaire audio. Le problème est que si l'utilisateur modifie le volume par exemple avec les touches matérielles, mon application n'a aucun moyen de reconnaître cela pour le moment et que la barre affiche le mauvais volume.
Une option serait d'utiliser RegisterMediaButToneventreceiver et demandez à votre application des touches matérielles. Vous pouvez ajuster la barre de recherche de volume dans votre application et utiliser Audiomanager pour ajuster le volume. P>
Une autre possibilité serait de créer un service dans votre application qui fonctionne en arrière-plan et vérifie périodiquement le volume et ajuste périodiquement votre barre de recherche en conséquence. P>
Ce n'est pas une réponse parfaite, mais un hack: J'ai trouvé au-dessus de l'action dans des journaux natifs lors de la modification du volume via une clé de volume dure. P> 01-25 16:11:24.015: DEBUG/VolumePanel(189): onVolumeChanged(streamType: 2, flags: 4)
01-25 16:11:24.015: DEBUG/BluetoothA2dpService(189): Received intent with action: android.media.VOLUME_CHANGED_ACTION
Je n'aime pas l'approche "Android.Media.Volume_Changed_Action" en principal, mais je l'aime parce que cela fonctionne.
Android recommande de laisser le système faire tout cela pour vous en appelant SetVolumecontrolstream (). Cela fera apparaître une barre de recherche de volume pour le flux audio que votre application utilise chaque fois que l'utilisateur tente d'ajuster le volume avec leurs boutons matériels. P>
"Vous pouvez être tenté d'essayer d'écouter des appuis sur la touche de volume et de modifier le volume de votre flux audio de cette façon. Résistez à l'urgence. Android fournit la méthode de SetVolumElecontrolstream () à la ligne de volume directe appuyant sur le flux audio que vous spécifiez. . p>
Ayant identifié le flux audio Votre application utilisera, vous devez la définir en tant que cible de flux de volume. Vous devez faire cet appel plus tôt dans le cycle de vie de votre application - car il vous suffit de l'appeler une fois pendant le cycle de vie de l'activité, vous devez généralement l'appeler dans la méthode Oncreate () (de l'activité ou du fragment qui contrôle votre support). Cela garantit que chaque fois que votre application est visible, la fonction de contrôle du volume est que l'utilisateur s'attend. P>
setvolumecontrolstream (Audiomanager.stream_music); p>
À partir de ce point, appuyez sur les touches de volume de l'appareil affectant le flux audio que vous spécifiez (dans ce cas "musique") chaque fois que l'activité ou le fragment cible est visible. " P>
de: http://developer.android.com/training/ Gestion-audio / volume-lecture.html p>
J'ai fait face à un problème similaire. L'application doit indiquer un indicateur de volume hors tension dans le cas du support de supports a été désactivé pendant la lecture vidéo. Cette approche gère des cas lorsque l'utilisateur change également le niveau de média par balayage. Ainsi, écrit un wrapper RX simple pour contentobserver qui observe directement le niveau de son du support) P>