我有一个应用程序,我将同时播放 2 个音频文件,用户将尝试听到一个(口语)而不是另一个(背景噪音)。通过他们正确听到文件的成功反馈输入,我想降低 2 个文件中 1 个(单词)的音量并再次播放,他们会尝试在噪音中听到它。我只想降低一个文件的音量......另一个需要保持不变(否则它会破坏尝试听到另一个文件的目的)。到目前为止,我发现 MediaManager 能够更改应用程序的全局音量,而不是应用程序中的特定音频剪辑。
任何帮助是极大的赞赏。
我有一个应用程序,我将同时播放 2 个音频文件,用户将尝试听到一个(口语)而不是另一个(背景噪音)。通过他们正确听到文件的成功反馈输入,我想降低 2 个文件中 1 个(单词)的音量并再次播放,他们会尝试在噪音中听到它。我只想降低一个文件的音量......另一个需要保持不变(否则它会破坏尝试听到另一个文件的目的)。到目前为止,我发现 MediaManager 能够更改应用程序的全局音量,而不是应用程序中的特定音频剪辑。
任何帮助是极大的赞赏。
我认为媒体播放器是全球性的印象是不正确的。您可以设置此文件的音量,即使您播放更大或更安静的文件(即使使用相同的 mp),它也会保持该音量。oncompletion 侦听器对于释放文件很重要,否则您将获得异常并失去所有声音。对数数学函数对于使音量在 0 到 100 之间适当缩放很重要。
假设 MAX_VOLUME 为 100:
mp = MediaPlayer.create(getApplicationContext(), R.raw.noise);
final float noisevolume = (float) (1 - (Math.log(MAX_VOLUME - 50) / Math.log(MAX_VOLUME)));
mp.setVolume(noisevolume, noisevolume);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});