写真の印刷

写真の撮影と共有は、モバイル デバイスの最も一般的な用途の 1 つです。アプリで写真を撮影、表示したり、ユーザーが画像を共有したりできるようにする場合は、その画像をアプリで印刷できるようにすることを検討してください。Android サポート ライブラリには便利な印刷機能が用意されており、最小限のコードとシンプルな印刷レイアウト オプション セットで画像を印刷することができます。

このレッスンでは、v4 サポート ライブラリ PrintHelper クラスを使用して画像を印刷する方法について説明します。

画像を印刷する

Android サポート ライブラリの PrintHelper クラスを使用すると、画像を簡単に印刷できます。このクラスには、レイアウト オプション setScaleMode() が 1 つあり、次のいずれかの印刷オプションを使用することができます。

  • SCALE_MODE_FIT - ページの印刷可能領域内に画像全体が収まるように画像のサイズが変更されます。
  • SCALE_MODE_FILL - ページの印刷可能領域に全体が表示されるように画像が拡大または縮小されます。この設定を選択すると、画像の上端と下端、または左端と右端の一部が印刷されません。スケールモードを設定しない場合は、これがデフォルト値です。

setScaleMode() のスケーリング オプションは両方とも、画像のアスペクト比をそのまま維持します。次のコード例は、PrintHelper クラスのインスタンスを作成し、スケーリング オプションを設定して、印刷プロセスを開始する方法を示しています。

Kotlin

    private fun doPhotoPrint() {
        activity?.also { context ->
            PrintHelper(context).apply {
                scaleMode = PrintHelper.SCALE_MODE_FIT
            }.also { printHelper ->
                val bitmap = BitmapFactory.decodeResource(resources, R.drawable.droids)
                printHelper.printBitmap("droids.jpg - test print", bitmap)
            }
        }
    }
    

Java

    private void doPhotoPrint() {
        PrintHelper photoPrinter = new PrintHelper(getActivity());
        photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT);
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.droids);
        photoPrinter.printBitmap("droids.jpg - test print", bitmap);
    }
    

このメソッドは、メニュー項目のアクションとして呼び出すことができます。サポートされるとは限らない(印刷などの)アクションのメニュー項目は、オーバーフロー メニューに配置する必要があるため、ご注意ください。詳しくは、アクションバー デザインガイドをご覧ください。

printBitmap() メソッドが呼び出されたら、以降アプリからのアクションは不要です。Android 印刷ユーザー インターフェースが表示され、そのインターフェースを使ってユーザーがプリンタと印刷オプションを選択できます。その後、ユーザーは画像を印刷するか、アクションをキャンセルできます。ユーザーが画像の印刷を選択すると印刷ジョブが作成され、システムバーに印刷通知が表示されます。

画像の他に追加コンテンツを印刷する場合は、印刷ドキュメントを作成する必要があります。印刷ドキュメントの作成については、HTML ドキュメントの印刷またはカスタム ドキュメントの印刷のレッスンをご覧ください。