setDataSource失败0x8000000

时间:2013-09-15 10:05:34

标签: android

我在使用MediaMetadataRetriever检索mp3文件的艺术家和标题时收到错误(setDataSource失败0x8000000),但我无法理解原因。在我的模拟器上运行时,它运行正常,但在我的Samsung S4上运行时崩溃。我知道目录是正确的(/ storage / extSdCard / Music /),因为我可以毫无问题地加载文件名。有人可以解释为什么这不起作用吗?

        if (songs.size() != 0){
            for (int x = 0; x < songs.size(); x++){
                MediaMetadataRetriever mmr = new MediaMetadataRetriever();
                mmr.setDataSource(SD_PATH + songs.get(x));

                String tagTitle =
                     mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
                String tagArtist =
                     mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);


                taggedSongs.add(tagArtist + " - " + tagTitle);
            }

            ArrayAdapter<String> songList = new ArrayAdapter<String>(this,R.layout.song_item,taggedSongs);

编辑:

logcat的:

09-15 10:55:02.805: E/AndroidRuntime(1292): FATAL EXCEPTION: main
09-15 10:55:02.805: E/AndroidRuntime(1292): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jimmy.jimp3/com.jimmy.jimp3.MainActivity}: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.app.ActivityThread.access$700(ActivityThread.java:154)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.os.Looper.loop(Looper.java:137)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.app.ActivityThread.main(ActivityThread.java:5306)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at java.lang.reflect.Method.invokeNative(Native Method)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at java.lang.reflect.Method.invoke(Method.java:511)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at dalvik.system.NativeStart.main(Native Method)
09-15 10:55:02.805: E/AndroidRuntime(1292): Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.media.MediaMetadataRetriever.setDataSource(Native Method)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:66)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at com.jimmy.jimp3.MainActivity.taggedPlaylist(MainActivity.java:78)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at com.jimmy.jimp3.MainActivity.onCreate(MainActivity.java:47)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.app.Activity.performCreate(Activity.java:5255)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
09-15 10:55:02.805: E/AndroidRuntime(1292):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
09-15 10:55:02.805: E/AndroidRuntime(1292):     ... 11 more

2 个答案:

答案 0 :(得分:1)

在我的情况下,问题是由于我的应用程序需要访问互联网时忘记设置INTERNET权限。菜鸟错误。

答案 1 :(得分:0)

在try-catch块中插入setDataSource()方法解决了该问题。

  try {
            metaRetriver.setDataSource(AudioPath);
           //
        } catch (Exception e) {
            //
        }