2017-02-02 2 views
0

J'ai une application Android qui utilise Linphone pour les appels VOIP.Contrôlez le volume de Soundpool lors de la réception d'un appel

Quand je reçois un appel, je commence une sonnerie de mon propre (un fichier mp3 brut) comme ceci:

final AudioManager audioManager = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE); 
final float maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING); 
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
audioManager.setStreamVolume(AudioManager.STREAM_RING, (int)maxVolume , 0); 
soundPool.play(id, maxVolume , maxVolume , 1, 0, 1.0f); 

Le son que je veux joue, mais avec un faible volume. L'appel lui-même est accepté automatiquement, sans avoir besoin de l'autorisation de la réception.

Si je reçois l'appel et termine l'appel avant la fin du son, le son continuera (c'est correct) mais le volume sera soudainement au maximum comme je le souhaitais en premier lieu. Cela signifie que le périphérique peut entrer dans un état d'appel dans lequel le volume du groupe audio est automatiquement réduit et à la fin de l'appel, le son peut avoir la valeur maximale.

Comment puis-je régler le volume au maximum même pendant un appel?

+0

Salut Yonatan, quelle est votre exigence exacte? Voulez-vous émettre un son pendant un appel? Et pourquoi voulez-vous jouer le son pendant que l'appel est en cours? Qu'est-ce que vous voulez réaliser en faisant cela? – Chandrakanth

+0

L'appel est automatiquement accepté, j'ai donc besoin de jouer un son pour que l'utilisateur sache qu'un appel est en cours. Donc je peux jouer le son mais je n'arrive pas à le mettre sur le volume maximum tant que l'appel est en cours –

Répondre

0

Comme le volume est automatiquement réduit, j'ai dû essayer et accepter l'appel seulement après avoir joué le son. Étant donné que SoundPool ne prend pas en charge la gestion des événements lorsqu'un son est terminé, je suis passé à un MediaPlayer qui le prend en charge, donc je joue la sonnerie et j'accepte l'appel après cela.