Loading res/menu/photo.xml +3 −0 Original line number Original line Diff line number Diff line Loading @@ -75,4 +75,7 @@ <item android:id="@+id/action_show_on_map" <item android:id="@+id/action_show_on_map" android:title="@string/show_on_map" android:title="@string/show_on_map" android:showAsAction="never" /> android:showAsAction="never" /> <item android:id="@+id/print" android:title="@string/print_image" android:showAsAction="never" /> </menu> </menu> src/com/android/gallery3d/app/AbstractGalleryActivity.java +17 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.ServiceConnection; import android.content.res.Configuration; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.os.Bundle; import android.os.IBinder; import android.os.IBinder; import android.view.Menu; import android.view.Menu; Loading @@ -40,9 +41,11 @@ import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.filtershow.cache.ImageLoader; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLRootView; import com.android.gallery3d.ui.GLRootView; import com.android.gallery3d.util.PanoramaViewHelper; import com.android.gallery3d.util.PanoramaViewHelper; import com.android.gallery3d.util.PrintJob; import com.android.gallery3d.util.ThreadPool; import com.android.gallery3d.util.ThreadPool; import com.android.photos.data.GalleryBitmapPool; import com.android.photos.data.GalleryBitmapPool; Loading Loading @@ -342,4 +345,18 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext throw new RuntimeException("Batch service unavailable"); 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); } } } src/com/android/gallery3d/app/PhotoPage.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -1059,6 +1059,10 @@ public abstract class PhotoPage extends ActivityState implements } } return true; return true; } } case R.id.print: { mActivity.printSelectedImage(manager.getContentUri(path)); return true; } case R.id.action_delete: case R.id.action_delete: confirmMsg = mActivity.getResources().getQuantityString( confirmMsg = mActivity.getResources().getQuantityString( R.plurals.delete_selection, 1); R.plurals.delete_selection, 1); Loading src/com/android/gallery3d/util/PrintJob.java +14 −0 Original line number Original line Diff line number Diff line Loading @@ -18,9 +18,11 @@ package com.android.gallery3d.util; import android.content.Context; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.RectF; import android.net.Uri; import android.os.Bundle; import android.os.Bundle; import android.os.CancellationSignal; import android.os.CancellationSignal; import android.print.PageRange; import android.print.PageRange; Loading @@ -29,13 +31,20 @@ import android.print.PrintDocumentAdapter; import android.print.PrintDocumentInfo; import android.print.PrintDocumentInfo; import android.print.PrintManager; import android.print.PrintManager; import android.print.pdf.PdfDocument; 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 com.android.gallery3d.filtershow.imageshow.MasterImage; import java.io.FileDescriptor; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.FileOutputStream; public class PrintJob { public class PrintJob { private final static int MAX_PRINT_SIZE = 2048; public static void printBitmap(Context context, final String jobName, final Bitmap bitmap) { public static void printBitmap(Context context, final String jobName, final Bitmap bitmap) { if (bitmap == null) { return; } PrintManager printManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE); PrintManager printManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE); android.print.PrintJob printJob = printManager.print(jobName, android.print.PrintJob printJob = printManager.print(jobName, new PrintDocumentAdapter() { new PrintDocumentAdapter() { Loading Loading @@ -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); } } } Loading
res/menu/photo.xml +3 −0 Original line number Original line Diff line number Diff line Loading @@ -75,4 +75,7 @@ <item android:id="@+id/action_show_on_map" <item android:id="@+id/action_show_on_map" android:title="@string/show_on_map" android:title="@string/show_on_map" android:showAsAction="never" /> android:showAsAction="never" /> <item android:id="@+id/print" android:title="@string/print_image" android:showAsAction="never" /> </menu> </menu>
src/com/android/gallery3d/app/AbstractGalleryActivity.java +17 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.ServiceConnection; import android.content.res.Configuration; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.os.Bundle; import android.os.IBinder; import android.os.IBinder; import android.view.Menu; import android.view.Menu; Loading @@ -40,9 +41,11 @@ import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.common.ApiHelper; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.filtershow.cache.ImageLoader; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLRootView; import com.android.gallery3d.ui.GLRootView; import com.android.gallery3d.util.PanoramaViewHelper; import com.android.gallery3d.util.PanoramaViewHelper; import com.android.gallery3d.util.PrintJob; import com.android.gallery3d.util.ThreadPool; import com.android.gallery3d.util.ThreadPool; import com.android.photos.data.GalleryBitmapPool; import com.android.photos.data.GalleryBitmapPool; Loading Loading @@ -342,4 +345,18 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext throw new RuntimeException("Batch service unavailable"); 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); } } }
src/com/android/gallery3d/app/PhotoPage.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -1059,6 +1059,10 @@ public abstract class PhotoPage extends ActivityState implements } } return true; return true; } } case R.id.print: { mActivity.printSelectedImage(manager.getContentUri(path)); return true; } case R.id.action_delete: case R.id.action_delete: confirmMsg = mActivity.getResources().getQuantityString( confirmMsg = mActivity.getResources().getQuantityString( R.plurals.delete_selection, 1); R.plurals.delete_selection, 1); Loading
src/com/android/gallery3d/util/PrintJob.java +14 −0 Original line number Original line Diff line number Diff line Loading @@ -18,9 +18,11 @@ package com.android.gallery3d.util; import android.content.Context; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.RectF; import android.net.Uri; import android.os.Bundle; import android.os.Bundle; import android.os.CancellationSignal; import android.os.CancellationSignal; import android.print.PageRange; import android.print.PageRange; Loading @@ -29,13 +31,20 @@ import android.print.PrintDocumentAdapter; import android.print.PrintDocumentInfo; import android.print.PrintDocumentInfo; import android.print.PrintManager; import android.print.PrintManager; import android.print.pdf.PdfDocument; 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 com.android.gallery3d.filtershow.imageshow.MasterImage; import java.io.FileDescriptor; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.FileOutputStream; public class PrintJob { public class PrintJob { private final static int MAX_PRINT_SIZE = 2048; public static void printBitmap(Context context, final String jobName, final Bitmap bitmap) { public static void printBitmap(Context context, final String jobName, final Bitmap bitmap) { if (bitmap == null) { return; } PrintManager printManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE); PrintManager printManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE); android.print.PrintJob printJob = printManager.print(jobName, android.print.PrintJob printJob = printManager.print(jobName, new PrintDocumentAdapter() { new PrintDocumentAdapter() { Loading Loading @@ -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); } } }