2010-02-11 3 views
2

Y at-il une source définitive qui explique comment le mixage Android fonctionne vraiment? Je reçois un comportement vraiment inattendu en utilisant SoundPool sur STREAM_NOTIFICATION quand il se mélange avec de la musique sur STREAM_MUSIC.Comment fonctionne le mixage Android?

Lorsque la musique est en cours de lecture, même si son volume est trop bas, les sons joués par SoundPool sont à 50% du volume par rapport à l'absence de musique.

C'est à peu près le code que je utilise:

SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_NOTIFICATION, 0); 

Quelques personnes:

sound_id = soundPool.load(context, 
       context.getResources().getIdentifier("sound1", 
         "raw", 
         "com.package.name"), 
       1); 

Et plus tard ceci:

final AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
final int volume = manager.getStreamVolume(AudioManager.STREAM_MUSIC); 

manager.setStreamVolume(AudioManager.STREAM_MUSIC, volume/2, 0); 

soundPool.play(sound_id, 1f, 1f, 1, 0, 1); 

new Handler().postDelayed(new Runnable() { 
     public void run() { 
      manager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0); 
     } 
    }, 1000); 

Si aucune musique est en cours de lecture , les sons sont à plein volume, agréables et clairs. Si de la musique est en cours de lecture, la musique est atténuée correctement, mais le son ne joue toujours qu'à 50% du volume.

Quel est l'algorithme de mélange? Est-ce que quelqu'un sait quelque chose à ce sujet, ou une solution de contournement?

+0

Encore plus étrange - ce comportement ne se produit que sur les casques d'écoute non-micro, et non pas par le haut-parleur. –

+0

avez-vous réussi à comprendre cela? Je suis frappé par le même comportement étrange ... – marmor

Répondre

0

Avez-vous essayé de régler le volume sur NOTIFICATION_STREAM? J'ai un problème similaire lors de l'utilisation du MediaPlayer (sans le groupe sonore) et de régler manuellement le volume de vapeur de notification tout en évitant le flux de musique résolu par un problème.