写真の印刷

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

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

画像を印刷する

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

  • 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 ドキュメントの印刷またはカスタム ドキュメントの印刷のレッスンをご覧ください。