blob: 2985360542608f2e485a6a4fcaf30ed538655aee [file] [log] [blame]
package com.android.gallery3d.data;
import android.content.ContentResolver;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.provider.MediaStore.Images;
import android.provider.MediaStore.Video;
import android.provider.MediaStore.Images.ImageColumns;
import android.provider.MediaStore.Video.VideoColumns;
public class VideoMediaItem extends DatabaseMediaItem {
private static final int MICRO_TARGET_PIXELS = 128 * 128;
// Must preserve order between these indices and the order of the terms in
// PROJECTION_VIDEOS.
private static final int INDEX_ID = 0;
private static final int INDEX_CAPTION = 1;
private static final int INDEX_MIME_TYPE = 2;
private static final int INDEX_LATITUDE = 3;
private static final int INDEX_LONGITUDE = 4;
private static final int INDEX_DATE_TAKEN = 5;
private static final int INDEX_DATE_ADDED = 6;
private static final int INDEX_DATE_MODIFIED = 7;
private static final int INDEX_DATA = 8;
private static final int INDEX_DURATION = 9;
private static final String[] PROJECTION_VIDEOS = new String[] {
VideoColumns._ID,
VideoColumns.TITLE,
VideoColumns.MIME_TYPE,
VideoColumns.LATITUDE,
VideoColumns.LONGITUDE,
VideoColumns.DATE_TAKEN,
VideoColumns.DATE_ADDED,
VideoColumns.DATE_MODIFIED,
VideoColumns.DATA,
VideoColumns.DURATION};
public int mDurationInSec;
@Override
protected void cancelImageGeneration(ContentResolver resolver, int type) {
Video.Thumbnails.cancelThumbnailRequest(resolver, mId);
}
@Override
protected Bitmap generateImage(ContentResolver resolver, int type) {
switch (type) {
// Return a MINI_KIND bitmap in the cases of TYPE_FULL_IMAGE
// and TYPE_THUMBNAIL.
case TYPE_FULL_IMAGE:
case TYPE_THUMBNAIL:
return Video.Thumbnails.getThumbnail(
resolver, mId, Images.Thumbnails.MINI_KIND, null);
case TYPE_MICROTHUMBNAIL:
Bitmap bitmap = Video.Thumbnails.getThumbnail(
resolver, mId, Images.Thumbnails.MINI_KIND, null);
return bitmap == null
? null
: Utils.resize(bitmap, MICRO_TARGET_PIXELS);
default:
throw new IllegalArgumentException();
}
}
public static VideoMediaItem load(Cursor cursor) {
VideoMediaItem item = new VideoMediaItem();
item.mId = cursor.getInt(INDEX_ID);
item.mCaption = cursor.getString(INDEX_CAPTION);
item.mMimeType = cursor.getString(INDEX_MIME_TYPE);
item.mLatitude = cursor.getDouble(INDEX_LATITUDE);
item.mLongitude = cursor.getDouble(INDEX_LONGITUDE);
item.mDateTakenInMs = cursor.getLong(INDEX_DATE_TAKEN);
item.mDateAddedInSec = cursor.getLong(INDEX_DATE_ADDED);
item.mDateModifiedInSec = cursor.getLong(INDEX_DATE_MODIFIED);
item.mFilePath = cursor.getString(INDEX_DATA);
item.mDurationInSec = cursor.getInt(INDEX_DURATION);
return item;
}
public static Cursor queryVideoInBucket(
ContentResolver resolver, int bucketId) {
// Build the where clause
StringBuilder builder = new StringBuilder(ImageColumns.BUCKET_ID);
builder.append(" = ").append(bucketId);
String whereClause = builder.toString();
return resolver.query(
Video.Media.EXTERNAL_CONTENT_URI,
PROJECTION_VIDEOS, whereClause, null, null);
}
}