버튼 클릭을 기반으로 몇 가지 음악 (wav 형식) 파일을 재생하려고합니다. MediaPlayer가 제대로 작동하지 않습니다. MediaPlayer 클래스의 객체를 인스턴스화하려고 할 때마다 create()에서 실패합니다. 코드를 게시하기 전에 여기에 내가하고있는 일이 있습니다.
1. 두 개의 버튼이 포함 된 레이아웃 파일.
2. 해당 단추는 읽고 정의 된 onClickListeners입니다.
3. 클릭 한 단추에 따라 playAudioFile(View)
이라는 함수가 호출되어 MediaPlayer 인스턴스를 만들고 파일을 재생합니다. 내가 여기에 위의 문제에 유래하는 세부 솔루션에 게시물을 많이 겪었MediaPlayer에서 Create()가 실패합니다 - android
public void playAudioFile(View v) {
/*Steps:
* 1. Take in id of the button.
* 2. Using id, identify what file needs to be played.
* 3. Play file.
*/
String path_to_file = null; //this is the path to the file.
if(b01.getId() == ((Button)v).getId()) {
Log.v(this.toString(), "Button 01 pressed.");
path_to_file = "/sdcard/audio/temp1.wav";
} else if(b02.getId() == ((Button)v).getId()) {
Log.v(this.toString(), "Button02 pressed.");
path_to_file = "/sdcard/audio/temp2.wav";
}
path_to_file = "file://" + path_to_file;
Uri streamUri = Uri.parse(path_to_file);
Log.v(this.toString(), "Path of file = " + path_to_file);
MediaPlayer mp = MediaPlayer.create(this, streamUri);
if(mp == null) {
Log.v(this.toString(), "Create() on MediaPlayer failed.");
}
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
try {
mp.start();
} catch (IllegalStateException e) {
e.printStackTrace();
Log.v(this.toString(), "Illegal state exception thrown in start.");
}
}
});
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.release();
}
});
}
다음과 같이 playAudioFile (보기)에 대한 코드입니다. 거기에있는 모든 제안을 통합 한 후에이 문제가 발생합니다. 어떤 도움이라도 대환영입니다.
감사합니다,
스리 람
파일 경로 앞에 추가 \를 추가 할 것입니다. –
@chirag : 파일 경로 앞에 추가 \를 추가하면 setDataSource()에서 mediaplayer가 실패하지 않았습니까? 왜 prepare()에서? 내가 한 제안을 시험해 보겠습니다. – Sriram
@chirag : no, 파일 경로가 변경되지 않기 전에 '\'를 제거하십시오. 감사! – Sriram