سؤال

لدي قائمة بالألبومات التي حصلت عليها باستخدام هذا:

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 ، ذاكرة التخزين المؤقت.

يجب أن تعمل بشكل جيد. (يعمل لدي)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top