3
MediaPlayer instrumental = new MediaPlayer();
MediaPlayer vocal = new MediaPlayer();

ボタン再生をクリックすると、この 2 つのオブジェクトが独立して動作する必要があります。

この 2 つのインスタンスは別々に再生する必要があります。

ボーカルには、楽器の音量に影響を与えずにオーディオの音量を示す独自の進行状況バーが必要です。

この問題は、ボリュームのコントロールが異なる 2 つのオーディオを実行していると考えてください。

4

2 に答える 2

1

これは、インスタンスに個別のオーディオ ストリーム タイプを設定することで実行できMediaPlayerます。これが意図しない結果をもたらすかどうかはわかりませんがSTREAM_MUSIC、音楽に使用することになっていると思います...しかし、機能します。

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);

その後、あなたのonSeekBarChangeListener

@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);
    }

}
于 2013-07-03T08:54:11.193 に答える