로 전환 나는 미디 파일을 생성하고이처럼 쓰기 : 나는이를 변경해야 할 수도 있습니다 생각안드로이드 MediaPlayer를 - 다음 곡
File output = new File("exampleout.mid");
를, 그래서 올바른 폴더 (단지 읽기/쓰기에 폴더, 아마 Music /)
다음이 Media Player로이 미디 파일을 재생하려고하지만이 파일을로드하는 방법을 알 수 없습니다.
mediaPlayer = MediaPlayer.create(this, R.raw.test3);
읽기 전용 디렉토리/res/raw에서만로드됩니다. 하지만 같은 것을 시도해 보면 :
mediaPlayer = MediaPlayer.create(this, "file://exampleout");
생성에는 정수로 입력해야하기 때문에 작동하지 않습니다. AssetFileDescriptor를 실험했지만 아직 설명하지 못했습니다.
한편 새 파일을 생성하고 첫 번째 파일 재생이 끝나면 재생할 mediaPlayer (연쇄)에로드하려고합니다.
MediaPlayer mediaPlayer = MediaPlayer.create(Activity.this,R.raw.a1);
mediaPlayer.setOnCompletionListener(new musicCompletionListener());
mediaPlayer.start();
private class musicCompletionListener implements OnCompletionListener {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.setDataSource(WHATTOPUTHERE)
mediaPlayer.release();
}
}
내 문제는 실제로 파일을 호출하는 방법입니다. 내가 문자열을 apparantly 사용할 수 없습니다 r.raw 디렉토리는 읽기 전용 성 때문에 불가능합니다. 솔루션이 그렇게 어렵지는 않다고 생각하지만, C++에서 Java로 편 해지고 있습니다. 어떤 도움도 많이 받으 셨습니다!
그냥 말 :
그리고 다음 파일을 호출. 나는 setDataSource (string)을 시도했으나 http://stackoverflow.com/questions/9625680/mediaplayer-setdatasource-better-to-use-path-or-filedescriptor에 설명 된 것과 같이 이것은 나와 IOerror를 준다. 방법, AssetManager assetManager = Context.getAssets(); AssetFileDescriptor fileDescriptor = assetManager.openFd ("a2.mp3"); mediaPlayer.setDataSource (fileDescriptor.getFileDescriptor()); – dorien
다음과 같이 얻을 수있는 setDataSource에서 Uri를 전달해야합니다. String path = "동적으로 생성 된 MIDI 파일을 저장하는 경로"; Uri midiUri = Uri.parse (path); 호프가 문제를 해결할 수 있기를 바랍니다. –
@Android_Crazy 감사합니다. 나는 그것을 시도했다. 그것은'setDataSource (Uri)'에서'Uri는 변수로 해석 될 수 없습니다 '라고 말해줍니다. 나는 이것을 다음과 같이했다 :'String path = "/data/data/com.example.optimuse/exampleout.mid"; \t \t Uri midiUri = Uri.parse (path); \t \t \t \t // 파일 filePath = topDirFile.getAbsolutePath() + File.separator + "exampleout.mid"; \t 시도 { \t \t \t mediaPlayer.setDataSource (Uri); \t \t //mediaPlayer.setDataSource("res/raw/test3 "); \t \t} 캐치 (예외 E1) { \t \t \t e1.printStackTrace(); \t \t}' – dorien