2013-07-03 3 views
3
MediaPlayer instrumental = new MediaPlayer(); 
MediaPlayer vocal = new MediaPlayer(); 

버튼 재생을 클릭하면이 2 객체가 독립적으로 작동해야합니다.동일한 활동의 ​​오디오 파일을 두 번 재생하십시오.

이 두 인스턴스는 별도로 재생되어야합니다.

보컬에는 악기의 볼륨에 영향을주지 않고 오디오 음량을 나타내는 자체 진행 표시 줄이 있어야합니다.

이 문제는 볼륨에 대해 다른 컨트롤을 사용하여 두 개의 오디오를 실행하는 것으로 생각하십시오.

+0

질문/문제를 추가 할 수 있습니까? –

+0

ahm 나는 보컬과 함께 악기를 연주하려고합니다. 그러나 보컬 오디오에서. 나는 진행 바에 의해 볼륨에 대한 제어권을 가져야한다. – ceosilvajr

답변

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

당신의 당신은 그것의 setVolume() 메소드를 사용하여 MediaPlayer를의 오디오를 제어 할 수 있습니다 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); 
    } 

} 
+0

이 선생님 감사합니다.하지만 내가하려는 것은 자산의 다른 오디오 파일 인 보컬의 볼륨을 조정하는 것입니다. – ceosilvajr

+1

이렇게 할 것입니다. 나는 지금 내 휴대폰으로 작업하고있다. 애셋의 오디오 파일 2 개 포함. 2 개의 분리 된 스트림을 제어하는 ​​2 개의 슬라이더. 너 해봤 어? 뭐가 문제 야? –

+0

AudioManager.STREAM_VOICE_CALL을 사용해도 안전합니까? 왜냐하면이 문제와 함께 나는 내 목소리를 녹음 할 녹음 기능이 있기 때문입니다. 이 두 개의 오디오를 재생하는 동안. – ceosilvajr

2

. 예 :

MediaPlayer mp = new MediaPlayer(); 
... 
mp.setVolume(1, 1); 

매개 변수는 왼쪽 및 오른쪽 소리 용입니다. 이 값을 수정하려면이 게시물에서 언급 한 값을 계산 해보십시오. https://stackoverflow.com/a/12075910/582083

관련 문제