كيف أحصل على صورة مصغرة للألبوم في Android؟
-
27-09-2019 - |
سؤال
لدي قائمة بالألبومات التي حصلت عليها باستخدام هذا:
private List<Album> getAlbums() {
Cursor cur = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
List<Album> albums = new ArrayList<Album>();
if (cur.moveToFirst()) {
do {
int albumIdIndex = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID);
int albumIndex = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM);
int artistIndex = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int albumId = cur.getInt(albumIdIndex);
String name = cur.getString(albumIndex);
String artist = cur.getString(artistIndex);
LogUtil.i(TAG, "albumid= " + albumId + ", album= " + name + ", artist=" + artist);
Album album = new Album(albumId, name, artist);
if (!albums.contains(album)) {
albums.add(album);
}
} while (cur.moveToNext());
}
return albums;
}
أستخدم هذه القائمة من الألبومات في قائمة ، لكني أريد أيضًا الحصول على صورة مصغرة للألبومات.
أعلم أنه يمكنني استخدام الكود التالي للحصول على العمل الفني الفعلي ، لكنني بحاجة إلى الصور المصغرة لأنني أخرج من الذاكرة إذا كنت أستخدم الصور الكاملة في نشاط القائمة:
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
رأيت هذا المنشور:Troid Media Thumbnails. قضايا خطيرة؟لكن ليس لدي ImageId ، فقط الألبوم ، لذلك لا أعتقد أنه يساعد.
المحلول
احصل على كل فن ألبوم ، قم بإنشاء إصدار جديد منه باستخدام bitmap.createscaledbitmap () ، استخدم ذلك ، إعادة تدوير () صورة نقطية قديمة لجعل الذاكرة تختفي ، انتقل إلى الصورة التالية. حافظ على hashmap أو شيء للتأكد من أنك لا تقوم بتحميل نفس الألبوم Art مرتين أو أكثر (سيكون هناك أكثر من مسار واحد معرف Art Art ، ذاكرة التخزين المؤقت.
يجب أن تعمل بشكل جيد. (يعمل لدي)