diff options
author | nicolasroard <nicolasroard@google.com> | 2013-08-19 16:21:12 -0700 |
---|---|---|
committer | nicolasroard <nicolasroard@google.com> | 2013-08-19 17:17:36 -0700 |
commit | 513eb24fe6b9376ce41bff0abc53d6d14daf8325 (patch) | |
tree | d1f86d4bae566f2b33006c3fd388efd5452551f1 /src/com | |
parent | f29cc45abb96754e954d56673e3a959d8bb9787e (diff) | |
download | android_packages_apps_Gallery2-513eb24fe6b9376ce41bff0abc53d6d14daf8325.tar.gz android_packages_apps_Gallery2-513eb24fe6b9376ce41bff0abc53d6d14daf8325.tar.bz2 android_packages_apps_Gallery2-513eb24fe6b9376ce41bff0abc53d6d14daf8325.zip |
Add printing to Gallery
Change-Id: I26aad645759f95813003badffbd03845e0df37bb
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/gallery3d/app/AbstractGalleryActivity.java | 17 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/PhotoPage.java | 4 | ||||
-rw-r--r-- | src/com/android/gallery3d/util/PrintJob.java | 14 |
3 files changed, 35 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/app/AbstractGalleryActivity.java b/src/com/android/gallery3d/app/AbstractGalleryActivity.java index c4367c06d..923c5b2e6 100644 --- a/src/com/android/gallery3d/app/AbstractGalleryActivity.java +++ b/src/com/android/gallery3d/app/AbstractGalleryActivity.java @@ -29,6 +29,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.res.Configuration; +import android.net.Uri; import android.os.Bundle; import android.os.IBinder; import android.view.Menu; @@ -40,9 +41,11 @@ import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaItem; +import com.android.gallery3d.filtershow.cache.ImageLoader; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLRootView; import com.android.gallery3d.util.PanoramaViewHelper; +import com.android.gallery3d.util.PrintJob; import com.android.gallery3d.util.ThreadPool; import com.android.photos.data.GalleryBitmapPool; @@ -342,4 +345,18 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext throw new RuntimeException("Batch service unavailable"); } } + + public void printSelectedImage(Uri uri) { + if (uri == null) { + return; + } + String path = ImageLoader.getLocalPathFromUri(this, uri); + if (path != null) { + Uri localUri = Uri.parse(path); + path = localUri.getLastPathSegment(); + } else { + path = uri.getLastPathSegment(); + } + PrintJob.printBitmapAtUri(this, path, uri); + } } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 7960ed645..2bc147ab1 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -1059,6 +1059,10 @@ public abstract class PhotoPage extends ActivityState implements } return true; } + case R.id.print: { + mActivity.printSelectedImage(manager.getContentUri(path)); + return true; + } case R.id.action_delete: confirmMsg = mActivity.getResources().getQuantityString( R.plurals.delete_selection, 1); diff --git a/src/com/android/gallery3d/util/PrintJob.java b/src/com/android/gallery3d/util/PrintJob.java index d06466a21..f4bbda189 100644 --- a/src/com/android/gallery3d/util/PrintJob.java +++ b/src/com/android/gallery3d/util/PrintJob.java @@ -18,9 +18,11 @@ package com.android.gallery3d.util; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.RectF; +import android.net.Uri; import android.os.Bundle; import android.os.CancellationSignal; import android.print.PageRange; @@ -29,13 +31,20 @@ import android.print.PrintDocumentAdapter; import android.print.PrintDocumentInfo; import android.print.PrintManager; import android.print.pdf.PdfDocument; +import com.android.gallery3d.app.AbstractGalleryActivity; +import com.android.gallery3d.filtershow.cache.ImageLoader; import com.android.gallery3d.filtershow.imageshow.MasterImage; import java.io.FileDescriptor; import java.io.FileOutputStream; public class PrintJob { + private final static int MAX_PRINT_SIZE = 2048; + public static void printBitmap(Context context, final String jobName, final Bitmap bitmap) { + if (bitmap == null) { + return; + } PrintManager printManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE); android.print.PrintJob printJob = printManager.print(jobName, new PrintDocumentAdapter() { @@ -95,4 +104,9 @@ public class PrintJob { } + public static void printBitmapAtUri(Context context, String imagePrint, Uri uri) { + // TODO: load full size images. For now, it's better to constrain ourselves. + Bitmap bitmap = ImageLoader.loadConstrainedBitmap(uri, context, MAX_PRINT_SIZE, null, false); + printBitmap(context, imagePrint, bitmap); + } } |