diff options
Diffstat (limited to 'WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java')
-rw-r--r-- | WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java new file mode 100644 index 000000000..9d8cc1cd7 --- /dev/null +++ b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java @@ -0,0 +1,74 @@ +package com.android.launcher3.wallpapertileinfo; + +import android.Manifest; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.PorterDuff; +import android.os.Process; +import android.provider.MediaStore; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import com.android.launcher3.R; +import com.android.launcher3.WallpaperPickerActivity; + +public class PickImageInfo extends WallpaperTileInfo { + + @Override + public void onClick(WallpaperPickerActivity a) { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT).setType("image/*"); + a.startActivityForResultSafely(intent, WallpaperPickerActivity.IMAGE_PICK); + } + + @Override + public View createView(Context context, LayoutInflater inflator, ViewGroup parent) { + mView = inflator.inflate(R.layout.wallpaper_picker_image_picker_item, parent, false); + + // Make its background the last photo taken on external storage + Bitmap lastPhoto = getThumbnailOfLastPhoto(context); + if (lastPhoto != null) { + ImageView galleryThumbnailBg = + (ImageView) mView.findViewById(R.id.wallpaper_image); + galleryThumbnailBg.setImageBitmap(lastPhoto); + int colorOverlay = context.getResources().getColor(R.color.wallpaper_picker_translucent_gray); + galleryThumbnailBg.setColorFilter(colorOverlay, PorterDuff.Mode.SRC_ATOP); + } + + mView.setTag(this); + return mView; + } + + private Bitmap getThumbnailOfLastPhoto(Context context) { + boolean canReadExternalStorage = context.checkPermission( + Manifest.permission.READ_EXTERNAL_STORAGE, Process.myPid(), Process.myUid()) == + PackageManager.PERMISSION_GRANTED; + + if (!canReadExternalStorage) { + // MediaStore.Images.Media.EXTERNAL_CONTENT_URI requires + // the READ_EXTERNAL_STORAGE permission + return null; + } + + Cursor cursor = MediaStore.Images.Media.query(context.getContentResolver(), + MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + new String[] { MediaStore.Images.ImageColumns._ID, + MediaStore.Images.ImageColumns.DATE_TAKEN}, + null, null, MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC LIMIT 1"); + + Bitmap thumb = null; + if (cursor != null) { + if (cursor.moveToNext()) { + int id = cursor.getInt(0); + thumb = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(), + id, MediaStore.Images.Thumbnails.MINI_KIND, null); + } + cursor.close(); + } + return thumb; + } +}
\ No newline at end of file |