diff options
author | Owen Lin <owenlin@google.com> | 2012-07-26 17:16:47 +0800 |
---|---|---|
committer | Owen Lin <owenlin@google.com> | 2012-07-30 15:20:58 +0800 |
commit | a51e351e6972845ce37eff2b90571cd9ce73ac62 (patch) | |
tree | 2616322a6597f2535a706eb457800725039b2e5b /src/com/android/gallery3d/provider | |
parent | f51196e8b35f6c7ff81fce6a2fb837f1d4f76c40 (diff) | |
download | android_packages_apps_Snap-a51e351e6972845ce37eff2b90571cd9ce73ac62.tar.gz android_packages_apps_Snap-a51e351e6972845ce37eff2b90571cd9ce73ac62.tar.bz2 android_packages_apps_Snap-a51e351e6972845ce37eff2b90571cd9ce73ac62.zip |
Fix some lint warnings in Gallery.
1. Implement our own openPipeHelper
2. Add @TargetApi to TileImageViewAdapter
Change-Id: I74dca78c4c4f18e0f782afad02d5ba9b410a503e
Diffstat (limited to 'src/com/android/gallery3d/provider')
-rw-r--r-- | src/com/android/gallery3d/provider/GalleryProvider.java | 38 |
1 files changed, 33 insertions, 5 deletions
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<T> { + 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 <T> ParcelFileDescriptor openPipeHelper( + final T args, final PipeDataWriter<T> func) throws FileNotFoundException { + try { + final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); + AsyncTask<Object, Object, Object> task = new AsyncTask<Object, Object, Object>() { + @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<Object> { 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); } |