2010-06-05 6 views
1

voici ma situation:Android MediaPlayer ignore son volume interne lorsque le volume du système change

J'ai un lecteur multimédia jouer de la musique dans une application Android. J'ai trouvé qu'avec certains casques, le volume est beaucoup trop fort même lorsque le volume est réglé sur son réglage le plus bas. En conséquence, je veux changer le volume de la musique pour tous les niveaux de volume à 10% de ce qu'il est normalement (en fait, cette valeur est définie par l'utilisateur bien sûr).

Les travaux suivants: parfaitement

mediaPlayer.setVolume(0.1f, 0.1f); 

Le volume de la musique est maintenant à un bon niveau d'écoute. Cependant, si l'utilisateur modifie maintenant le volume à l'aide du bouton de volume (changeant ainsi le volume du flux musical), le lecteur multimédia change le volume comme prévu, mais il semble également réinitialiser les paramètres 'setVolume' à 1.0, provoquant un changement massif de volume . Si vous réglez le volume sur 0,1, le volume sera réglé comme il devrait l'être (ce qui représente 10% du volume actuel du flux de musique).

Pour citer les docs Android pour la méthode MediaPlayer.setVolume:

Cette API est recommandé pour équilibrer la sortie des flux audio dans une application

Comment pouvez-vous faire si elle obtient réinitialiser à 1.0 chaque fois que le volume du système change?

Toute aide grandement appréciée. Merci.

+0

Cela peut être dû à un bug sur le héros. Le niveau de volume n'est pas réinitialisé lors de l'utilisation d'émulateurs sur les versions 1.5/2.01/2.1. –

Répondre

0

Ma suggestion serait d'essayer redéfinissant la onKeyDown (...) et régler manuellement le volume en obtenant l'objet AudioManager en utilisant:

getSystemService(AUDIO_SERVICE).adjustVolume(ADJUST_RAISE);

ou quelle que soit la méthode que vous utilisez pour modifier le volume. En remplaçant les comportements du bouton de bascule du volume, vous supprimez les comportements par défaut qui causent des problèmes.

+0

Merci pour votre commentaire. Remplacer onKeyUp/Down (puis redéfinir l'objet MediaPlayer sur le bon volume) est une légère amélioration, mais il y a deux problèmes: 1: L'activité doit être mise au point (normalement pas pour un lecteur de musique jouant dans un service) 2: Si la vue correcte est mise au point, pendant une fraction de seconde, le volume devient très fort avant d'être corrigé. Merci encore. Quoi qu'il en soit, je pense avoir besoin d'une suite de téléphones Android pour tester ce genre de choses ... –

+0

Il existe d'autres méthodes adjustVolume dans l'API qui affectent des flux spécifiques de manière spécifique, donc vous pouvez vouloir les vérifier (je ne suis pas sûr s'ils seront plus utiles pour vous). – mtmurdock