Search code examples
javaandroidandroid-mediaplayer

How to get songs from Internal Storage for phone with no sdcard slot


I own a phone which do not have any sdcard slot but it has 64GB internal storage space. The thing is that whenever i load songs using my custom media player, it only loads .ogg files only (no MP3 files at all) and this happens when uri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;. But When uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; it crashes the application since there is no sdcard slot to search in for.

Here is my code,

    private void loadSongs() {
    Uri uri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
    //Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

    String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
    Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
    if (cursor != null) {
        if (cursor.moveToFirst()) {
            do {
                String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));

                Log.i("DATA111", url);

                mediaMetadataRetrieve = new MediaMetadataRetriever();
                mediaMetadataRetrieve.setDataSource(url);

                art = mediaMetadataRetrieve.getEmbeddedPicture();

                if (art != null) {
                    songImage = BitmapFactory.decodeByteArray(art, 0, art.length);
                }

                SongInfo s = new SongInfo(name, artist, url, songImage);
                _songs.add(s);

            } while (cursor.moveToNext());
        }

        cursor.close();
        songAdapter = new SongAdapter(MainActivity.this, _songs);

    }
}

Can anyone find me a solution for this problem?

Logcats Results:

I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps][DM]/01 - ZNMD - Dil Dhadakne Do [www.DJMaza.Com].mp3
 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps][DM]/02 - ZNMD - Ik Junoon (Paint It Red) [www.DJMaza.Com].mp3
 /storage/emulated/0/DraStic/shaders/fxaa/fxaa.dsda:103)

Run Results :

                   Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                  at android.media.MediaMetadataRetriever.setDataSource(Native Method)
                  at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:69)
                  at com.example.captain.mp2x.MainActivity.loadSongs(MainActivity.java:184)
                  at com.example.captain.mp2x.MainActivity.checkUserPermission(MainActivity.java:146)
                  at com.example.captain.mp2x.MainActivity.onCreate(MainActivity.java:103)

This is what it logs when Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;:

I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/01 - ZNMD - Dil Dhadakne Do [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/02 - ZNMD - Ik Junoon (Paint It Red) [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/03 - ZNMD - Khaabon Ke Parinday [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/04 - ZNMD - Senorita [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/05 - ZNMD - Der Lagi Lekin [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/06 - ZNMD - Sooraj Ki Baahon Mein [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/07 - ZNMD - Toh Zinda Ho Tum [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/08 - ZNMD - Ik Junoon (Remix) [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/Zindagi Na Milegi Dobara [2011-MP3-VBR-320Kbps] - [DM]/09 - ZNMD - Senorita (Remix) [www.DJMaza.Com].mp3 I/DATA111: /storage/emulated/0/Download/Saints Row The Third Theme Ringtone.m4a E/MediaMetadataRetrieverJNI: getEmbeddedPicture: Call to getEmbeddedPicture failed. I/DATA111: /storage/emulated/0/MIUI/ringtone/Saints Row The Third Theme Ringtone.m4a E/MediaMetadataRetrieverJNI: getEmbeddedPicture: Call to getEmbeddedPicture failed. I/DATA111: /storage/emulated/0/DraStic/shaders/fxaa/fxaa.dsd

And when it is Uri uri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI; it shows I/DATA111: /system/media/audio/ui/Effect_Tick.ogg E/MediaMetadataRetrieverJNI: getEmbeddedPicture: Call to getEmbeddedPicture failed. and many other .ogg files.


Solution

  • Check if you get valid urls.

    Check if files exists and if not skip.