Получение обложки песни из местных СМИ - PullRequest
0 голосов
/ 12 октября 2018
ContentResolver musicResolver = getContentResolver();
        Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        Cursor musicCursor = musicResolver.query(musicUri,null,null,null,null);

   if(musicCursor!=null && musicCursor.moveToFirst()){
        int idColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
        int titleColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
        int artistColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
        int imageColumn = musicCursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART);

        //Add songs to the array list
        do{
            String theArt = musicCursor.getString(imageColumn);
            Bitmap image = BitmapFactory.decodeFile(theArt);
            long songId = musicCursor.getLong(idColumn);
            String songTitle = musicCursor.getString(titleColumn);
            String songArtist = musicCursor.getString(artistColumn);

            songsArrayList.add(new Songs(songId,songTitle,songArtist,image));

        }while (musicCursor.moveToNext())

Я хочу получить обложку песни, которую я получаю из локального хранилища, я понятия не имею, как это сделать, поэтому я получаю

int imageColumn = musicCursor.getColumnIndex (MediaStore.Audio.Albums.ALBUM_ART);

этот код в интернете, чтобы получить обложку альбома, это показывает ошибку, когда я получаю строку из него.Что касается доступа к столбцу -1, я думаю, что он не получает правильный столбец для получения изображения, пожалуйста, дайте мне знать, как получить изображение с носителя, как показано выше кода

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.downloadbro.mumusic, PID: 10877
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.downloadbro.mumusic/com.downloadbro.mumusic.MainActivity}: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2755)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2816)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1555)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:163)
    at android.app.ActivityThread.main(ActivityThread.java:6383)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
 Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
    at android.database.CursorWindow.nativeGetString(Native Method)
    at android.database.CursorWindow.getString(CursorWindow.java:438)
    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
    at android.database.CursorWrapper.getString(CursorWrapper.java:137)
    at com.downloadbro.mumusic.MainActivity.getSongList(MainActivity.java:80)
    at com.downloadbro.mumusic.MainActivity.onCreate(MainActivity.java:45)
    at android.app.Activity.performCreate(Activity.java:6861)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)

И это может дать мнеобложка альбома, но я хочу, чтобы медиа-арт не показывал мне такую ​​функцию

...