setDataSource failed 0x8000000

4

I am receiving an error (setDataSource failed 0x8000000) when using MediaMetadataRetriever to retrieve the artist and title of an mp3 file, but I cannot understand why. When running on my emulator, it works perfectly, but crashes when running on my Samsung S4. I know the directory is correct (/storage/extSdCard/Music/) because I can load file names without any problem whatsoever. Can someone please explain why this isn't working?

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

EDIT:

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
android
asked on Stack Overflow Sep 15, 2013 by user184994 • edited Sep 15, 2013 by Michael

2 Answers

1

In my case the problem was caused by my forgetting to set INTERNET permission while my app requires access to the internet. Rookie error.

answered on Stack Overflow Nov 7, 2014 by xji
0

Puting the setDataSource() method in try-catch block solved the issue.

  try {
            metaRetriver.setDataSource(AudioPath);
           //
        } catch (Exception e) {
            //
        }
answered on Stack Overflow Jul 4, 2018 by Sameer Ladkat

User contributions licensed under CC BY-SA 3.0