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?
Encore plus étrange - ce comportement ne se produit que sur les casques d'écoute non-micro, et non pas par le haut-parleur. –
avez-vous réussi à comprendre cela? Je suis frappé par le même comportement étrange ... – marmor