Android 在同一活动中播放2个音频文件
当我点击播放按钮时,我需要这2个对象独立工作 这两个实例应分别播放 人声应该有自己的进度条,该进度条将指示其音频的音量,而不会影响乐器的音量Android 在同一活动中播放2个音频文件,android,audio,media-player,Android,Audio,Media Player,当我点击播放按钮时,我需要这2个对象独立工作 这两个实例应分别播放 人声应该有自己的进度条,该进度条将指示其音频的音量,而不会影响乐器的音量 将此问题视为使用不同的音量控制运行两个音频。这可以通过在MediaPlayer实例上设置单独的音频流类型来实现。我不知道这是否会产生任何意外的后果,我想你应该使用流式音乐来播放音乐。。。但它是有效的 MediaPlayer instrumental = new MediaPlayer(); MediaPlayer vocal = new MediaPlay
将此问题视为使用不同的音量控制运行两个音频。这可以通过在
MediaPlayer
实例上设置单独的音频流类型来实现。我不知道这是否会产生任何意外的后果,我想你应该使用流式音乐
来播放音乐。。。但它是有效的
MediaPlayer instrumental = new MediaPlayer();
MediaPlayer vocal = new MediaPlayer();
然后稍后在您的onseekbarchaneglistener
seek1 = (SeekBar) findViewById(R.id.seek1);
seek2 = (SeekBar) findViewById(R.id.seek2);
seek1.setOnSeekBarChangeListener(this);
seek2.setOnSeekBarChangeListener(this);
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
seek1.setMax(am.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
seek2.setProgress(am.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL));
// Set up your MediaPlayers
// Call the following lines before onPrepare()
instrumental.setAudioStreamType(AudioManager.STREAM_MUSIC);
vocal.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
您可以使用其setVolume()方法控制MediaPlayer的音频。例如:
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (seekBar.equals(seek1)) {
am.setStreamVolume(AudioManager.STREAM_MUSIC, seekBar.getProgress(), 0);
}
else {
am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, seekBar.getProgress(), 0);
}
}
参数用于左和右声音。要修改这些值,请尝试计算本文中提到的值:您可以添加您的问题吗?啊,我正在尝试将乐器与人声一起演奏。但是在声音方面。我应该通过progressbar控制音量。谢谢你,ken先生,但我要做的是调整vocal的音量,这是资产中的另一个音频文件。这样可以做到。我的手机现在可以用了。使用来自资源的2个音频文件。和2个滑块控制2个单独的流。你试过了吗?有什么问题?使用AudioManager.STREAM\u语音呼叫安全吗?因为除了这个问题,我还有一个录音功能,可以记录我的声音。在播放这两个音频时,据我所知是安全的。我不知道如何控制2个不同的卷流。您将需要不同的流。你可以试试别的。警报等。
MediaPlayer mp = new MediaPlayer();
...
mp.setVolume(1, 1);