ビデオのサムネイルを含むビデオの詳細を含む ListView を作成しようとしています。
アダプターの getView メソッドで呼び出します
new ThumbnailCreatorTask(videoThumbnail).execute(path) for every row
これは ThumbnailCreatorTask です:
private class ThumbnailCreatorTask extends AsyncTask<String, Void, Bitmap>{
private final WeakReference<ImageView> imageViewReference;
public ThumbnailCreatorTask(ImageView imageView){
imageViewReference = new WeakReference<ImageView>(imageView);
}
@Override
protected Bitmap doInBackground(String... params) {
return ThumbnailUtils.createVideoThumbnail(params[0], Thumbnails.MICRO_KIND);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if (imageViewReference != null && bitmap != null) {
ImageView imageView = imageViewReference.get();
imageView.setImageBitmap(bitmap);
}
}
}
いくつかの行を作成した後、次のクラッシュが発生します。
07-16 16:26:30.060: E/dalvikvm-heap(17318): 1843200-byte external allocation too large for this process.
07-16 16:26:30.060: E/GraphicsJNI(17318): VM won't let us allocate 1843200 bytes
07-16 16:26:30.190: E/ThumbnailUtils(17318): Got OOM error
07-16 16:26:30.190: E/ThumbnailUtils(17318): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.graphics.Bitmap.nativeCreate(Native Method)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.graphics.Bitmap.createBitmap(Bitmap.java:477)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.graphics.Bitmap.createBitmap(Bitmap.java:432)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.media.MediaMetadataRetriever._getFrameAtTime(Native Method)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.media.MediaMetadataRetriever.getFrameAtTime(MediaMetadataRetriever.java:201)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.media.MediaMetadataRetriever.getFrameAtTime(MediaMetadataRetriever.java:225)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.media.ThumbnailUtils.createVideoThumbnail(ThumbnailUtils.java:155)
私のアプローチは完全に間違っていると思います。私の場合、サムネイルの作成はどのように処理する必要がありますか?