BLOG

Blitz Gateスタッフブログ

BLOG

[Android]アプリからプリンターへ印刷をする方法

書いた人:

Android , Java , 技術 , 開発言語  

printer_android

どうも、ゆんゆんです。

 

iOS版に引き続き、Android版もお届けしようという内容です。
まだiOS版をご覧になっていない方は、おすすめ記事から飛べますので、そちらをご確認ください。

 

さて、今回の環境はこんな感じです。

 

Android OS: 7.0
Device: Galaxy S6
Android Studio: 2.3.3
Language: Java
Printer: Canon MG3500 シリーズ

 

前提条件

アプリから印刷をする場合、Androidはドライバが必要となります。
ドライバは各プリンターを製造している会社が、AndroidアプリとしてGooglePlayStoreなどに出しています。

 

また、ドライバアプリからプリンターをAndroidに追加しないと、プリンターとして選択できませんので、事前に追加をしておきましょう。

 

Canonのドライバーはこちらです。
Canon Print Service

 

画面設定

今回もシンプルに、画面に表示している画像をそのまま印刷してみます。

 

なので、画面レイアウトはこんな感じです。

 

android_print_step_1

 

Printボタンが押されたら、印刷の画面へ流れる動きを想定しています。

 

印刷処理

本題の印刷処理はこんな感じのソースになります。

 

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v4.print.PrintHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

	private Button printButton;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		this.printButton = (Button)findViewById(R.id.printButton);
		this.printButton.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v)
			{
				// 印刷処理
				doPhotoPrint();
			}
		});
	}

	/**
	 * 印刷ボタン押下時
	 */
	public void doPhotoPrint() {
		// プリンターヘルパーを生成し、設定を行う
		PrintHelper printHelper = new PrintHelper(MainActivity.this);
		printHelper.setScaleMode(PrintHelper.SCALE_MODE_FIT);

		// 印刷情報を設定
		Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.flower);
		String jobName = "test print";

		// 印刷
		printHelper.printBitmap(jobName, bitmap);
	}
}

 

これで印刷が出来ます。

 

Printボタンを押すとこんな画面が表示されて

android_print_step_2

印刷ができます。

 

iOSと異なり、部数やサイズ、カラー設定など、直感的に操作出来る画面となっています。

 

また、これはオマケですが、プリンターを変更すると実はPDFへの出力も出来ます。

 

android_print_step_3

 

まとめ

簡単な設定なのはiOSと同じですが、詳細をユーザが自由に選べるため、操作がし易いですね。
半面、ドライバアプリが必要になってしまいますが、トレードオフな気がします。

 

今回はここまで、ではでは〜♪

  • このエントリーをはてなブックマークに追加