Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检索大量歌曲的唱片集艺术_Android_Audio Player_Android Music Player - Fatal编程技术网

Android 检索大量歌曲的唱片集艺术

Android 检索大量歌曲的唱片集艺术,android,audio-player,android-music-player,Android,Audio Player,Android Music Player,好的,所以我是一个使用android的新手,也是一个网站本身的新手。 我正在尝试为我的音乐播放器检索专辑艺术 public void getSonglist(){ Songs song; ContentResolver songResolver = getContentResolver(); Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Uri artUri; Cursor songC

好的,所以我是一个使用android的新手,也是一个网站本身的新手。 我正在尝试为我的音乐播放器检索专辑艺术

public void getSonglist(){
    Songs song;
    ContentResolver songResolver = getContentResolver();
    Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Uri artUri;
    Cursor songCursor = songResolver.query(songUri, null, null, null, null);
    final Uri ART_CONTENT_URI = Uri.parse("content://media/external/audio/albumart");
if(songCursor.moveToFirst()){
    do{ song = new Songs("","",0);
        albumID = songCursor.getLong(songCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
        song.setTitle(songCursor.getString(songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));
        song.setArtist(songCursor.getString(songCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));
        song.set_Id(songCursor.getLong(songCursor.getColumnIndex(MediaStore.Audio.Media._ID)));
        artUri = ContentUris.withAppendedId(ART_CONTENT_URI, albumID);
        AlbumArt = null;

        try {
            AlbumArt = (MediaStore.Images.Media.getBitmap(getContentResolver(), artUri));
        } catch (Exception exception) {
            // log error
        }
        song.setAlbumArt(AlbumArt);
        songlist.add(song);
    }while(songCursor.moveToNext());
}

}
这里的问题是,虽然代码没有错误,但我的设备上有大量歌曲(大约900首),并且在尝试加载相册艺术时,应用程序内存不足。(E/art:抛出OutOfMemoryError“未能分配1000012字节的分配,其中包含331252个可用字节和323KB,直到OOM为止”)

有人能告诉我另一种更好的方式来获得专辑艺术吗? (如果可能,请用代码支持您的答案)