From a51e351e6972845ce37eff2b90571cd9ce73ac62 Mon Sep 17 00:00:00 2001 From: Owen Lin Date: Thu, 26 Jul 2012 17:16:47 +0800 Subject: Fix some lint warnings in Gallery. 1. Implement our own openPipeHelper 2. Add @TargetApi to TileImageViewAdapter Change-Id: I74dca78c4c4f18e0f782afad02d5ba9b410a503e --- .../gallery3d/provider/GalleryProvider.java | 38 +++++++++++++++++++--- .../android/gallery3d/ui/TileImageViewAdapter.java | 2 ++ 2 files changed, 35 insertions(+), 5 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/gallery3d/provider/GalleryProvider.java b/src/com/android/gallery3d/provider/GalleryProvider.java index 79ec66be8..45f47a42c 100644 --- a/src/com/android/gallery3d/provider/GalleryProvider.java +++ b/src/com/android/gallery3d/provider/GalleryProvider.java @@ -22,13 +22,14 @@ import android.content.Context; import android.database.Cursor; import android.database.MatrixCursor; import android.net.Uri; +import android.os.AsyncTask; import android.os.Binder; -import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.provider.MediaStore.Images.ImageColumns; import android.util.Log; import com.android.gallery3d.app.GalleryApp; +import com.android.gallery3d.common.AsyncTaskUtil; import com.android.gallery3d.common.Utils; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaItem; @@ -211,7 +212,7 @@ public class GalleryProvider extends ContentProvider { if (PicasaSource.isPicasaImage(object)) { return PicasaSource.openFile(getContext(), object, mode); } else if (object instanceof MtpImage) { - return openPipeHelper(uri, null, null, null, + return openPipeHelper(null, new MtpPipeDataWriter((MtpImage) object)); } else { throw new FileNotFoundException("unspported type: " + object); @@ -226,6 +227,34 @@ public class GalleryProvider extends ContentProvider { throw new UnsupportedOperationException(); } + private static interface PipeDataWriter { + void writeDataToPipe(ParcelFileDescriptor output, T args); + } + + // Modified from ContentProvider.openPipeHelper. We are target at API LEVEL 10. + // But openPipeHelper is available in API LEVEL 11. + private static ParcelFileDescriptor openPipeHelper( + final T args, final PipeDataWriter func) throws FileNotFoundException { + try { + final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); + AsyncTask task = new AsyncTask() { + @Override + protected Object doInBackground(Object... params) { + try { + func.writeDataToPipe(pipe[1], args); + return null; + } finally { + Utils.closeSilently(pipe[1]); + } + } + }; + AsyncTaskUtil.executeInParallel(task, (Object[]) null); + return pipe[0]; + } catch (IOException e) { + throw new FileNotFoundException("failure making pipe"); + } + } + private final class MtpPipeDataWriter implements PipeDataWriter { private final MtpImage mImage; @@ -234,14 +263,13 @@ public class GalleryProvider extends ContentProvider { } @Override - public void writeDataToPipe(ParcelFileDescriptor output, - Uri uri, String mimeType, Bundle opts, Object args) { + public void writeDataToPipe(ParcelFileDescriptor output, Object args) { OutputStream os = null; try { os = new ParcelFileDescriptor.AutoCloseOutputStream(output); os.write(mImage.getImageData()); } catch (IOException e) { - Log.w(TAG, "fail to download: " + uri, e); + Log.w(TAG, "fail to download: " + mImage.toString(), e); } finally { Utils.closeSilently(os); } diff --git a/src/com/android/gallery3d/ui/TileImageViewAdapter.java b/src/com/android/gallery3d/ui/TileImageViewAdapter.java index 4865e5c67..a14df754a 100644 --- a/src/com/android/gallery3d/ui/TileImageViewAdapter.java +++ b/src/com/android/gallery3d/ui/TileImageViewAdapter.java @@ -16,6 +16,7 @@ package com.android.gallery3d.ui; +import android.annotation.TargetApi; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; @@ -107,6 +108,7 @@ public class TileImageViewAdapter implements TileImageView.Model { // // As a result, we should decode region (50-6, 50-6, 250+6, 250+6) or // (44, 44, 256, 256) from the original photo and down sample it to 106. + @TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB) @Override public Bitmap getTile(int level, int x, int y, int tileSize, int borderSize, BitmapPool pool) { -- cgit v1.2.3