안녕하세요.
미디어 플레이어로 기존 폰에서 가지고 있는 mp3 재생 샘플을 만들고 있는데 setDataSource()에서 IOException이 떨어져서 문의 드립니다.
http://developer.android.com/guide/topics/media/mediaplayer.html 를 참고해서 작성중입니다.
미디어 목록은 아래와 같은 형태로 불러오구요.
ContentResolver contentResolver = getContentResolver();
Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor cursor = contentResolver.query(uri, null, null, null, null);
if (cursor == null){//
query failed, handle error.}
else if (!cursor.moveToFirst()) { // no media on the device}
lse {
int titleColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Media._ID);
do {
long thisId = cursor.getLong(idColumn);
String thisTitle = cursor.getString(titleColumn);// ...process entry...
} while (cursor.moveToNext());
}
Uri contentUri = ContentUris.withAppendedId(android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.reset();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(getApplicationContext(), contentUri);
그런데 setDataSource()에서 자꾸 IOException이 떨어집니다.
uri.toString()을 해보면 아래와 같이
content://media/external/audio/media/숫자 형태로 나오는걸로 보면 URI는 정상적으로 되어 있는것 같은데 말이죠..
도움좀 부탁 드려요 ㅠㅠ
05-20 18:58:01.597: I/MusicInfo(27900): content://media/external/audio/media/3
05-20 18:58:01.607: D/MediaPlayer(27900): Couldn't open file on client side, trying server side
05-20 18:58:01.617: E/MediaPlayer(27900): Unable to to create media player
05-20 18:58:01.627: W/System.err(27900): java.io.IOException: setDataSource failed.: status=0x80000000
05-20 18:58:01.627: W/System.err(27900): at android.media.MediaPlayer.setDataSource(Native Method)
05-20 18:58:01.627: W/System.err(27900): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:758)
05-20 18:58:01.627: W/System.err(27900): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:713)
05-20 18:58:01.627: W/System.err(27900): at ctestPlayerService.initMediaPlayer(PlayerService.java:49)
05-20 18:58:01.627: W/System.err(27900): at test.PlayerService.selectItem(PlayerService.java:127)
05-20 18:58:01.627: W/System.err(27900): at test.test.TestActivity$3.onItemClick(TestActivity.java:79)
05-20 18:58:01.627: W/System.err(27900): at android.widget.AdapterView.performItemClick(AdapterView.java:290)
05-20 18:58:01.627: W/System.err(27900): at android.widget.ListView.performItemClick(ListView.java:3599)
05-20 18:58:01.627: W/System.err(27900): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1849)
05-20 18:58:01.627: W/System.err(27900): at android.os.Handler.handleCallback(Handler.java:587)
05-20 18:58:01.627: W/System.err(27900): at android.os.Handler.dispatchMessage(Handler.java:92)
05-20 18:58:01.637: W/System.err(27900): at android.os.Looper.loop(Looper.java:130)
05-20 18:58:01.637: W/System.err(27900): at android.app.ActivityThread.main(ActivityThread.java:3806)
05-20 18:58:01.637: W/System.err(27900): at java.lang.reflect.Method.invokeNative(Native Method)
05-20 18:58:01.637: W/System.err(27900): at java.lang.reflect.Method.invoke(Method.java:507)
05-20 18:58:01.637: W/System.err(27900): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-20 18:58:01.637: W/System.err(27900): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-20 18:58:01.637: W/System.err(27900): at dalvik.system.NativeStart.main(Native Method)