この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、記事の最後で紹介します)
任意の文字列をQRコードで表示する
QRコードでデータ交換する考え方もアリですね!
ポイント
URLの交換をスマホで行う場合に便利なQRコード。
QRコードはURLの交換に特化したインタフェースではありません。
任意のデータをQRコードで表示して、データ交換の手段として使用できます。
QRコードに表示できるデータ量は、数字が7089字、英数字が4296字、 漢字が1817字、バイナリが2953バイトです。
今回は任意の文字列をQRコードで表示する実装を紹介します。
QRコードの表示
QRコードを表示する場合、オープンソースのZXingライブラリを使用すれば簡単に実装できます。
ZXingライブラリは、QRコードの他にバーコードなどの2次元コードを扱うことが可能です。
ZXing
QRダイアログ
QRコードの表示をダイアログ画面として実装します。
サンプルではタイトル、QRコード化する文字列を引数にダイアログ画面を表示、画面のタップで閉じます。

◎build.gradle(モジュール)
dependencies {
…
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
…
}
◎CustomDialogQr.java
public class CustomDialogQr extends DialogFragment {
private static final String TAG = CustomDialogQr.class.getSimpleName();
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(requireActivity());
String title = requireArguments().getString("TITLE");
String qr = requireArguments().getString("QR");
Objects.requireNonNull(dialog.getWindow()).requestFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
dialog.setContentView(R.layout.dialog_qrcode);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setCanceledOnTouchOutside(true);
dialog.findViewById(R.id.layout).setOnClickListener(view -> dismiss());
TextView textView = dialog.findViewById(R.id.title);
textView.setOnClickListener(view1 -> dismiss());
textView.setText(title);
//QRコード画像の大きさを指定(pixel)
int size = (int) (120 * getResources().getDisplayMetrics().density);
try {
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
//QRコードをBitmapで作成
Bitmap bitmap = barcodeEncoder.encodeBitmap(qr, BarcodeFormat.QR_CODE, size, size);
//作成したQRコードを画面上に配置
ImageView qrcode = dialog.findViewById(R.id.qrcode);
qrcode.setOnClickListener(view1 -> dismiss());
qrcode.setImageBitmap(bitmap);
} catch (WriterException e) {
Log.d(TAG, e.getMessage() != null ? e.getMessage() : "onCreateDialog:IOException");
}
return dialog;
}
@Override
public void onDetach() {
super.onDetach();
}
}
BarcodeEncoderにQRコード化する文字列、フォーマット、サイズを指定して、結果をBitmapで受け取ります。
受け取ったBitmapをImageViewにセットします。
◎dialog_qrcode.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<FrameLayout
android:id="@+id/layout"
android:layout_width="240dp"
android:layout_height="240dp"
tools:ignore="UselessParent">
<TextView
android:id="@+id/title"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center"
style="@style/TextViewStyle3"/>
<ImageView
android:id="@+id/qrcode"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:importantForAccessibility="no" />
</FrameLayout>
</RelativeLayout>
QRダイアログを表示する
タイトルとQRコード化する文字列をBundleにセットして、QRダイアログを表示します。
:
// GRコード表示
Bundle bundle = new Bundle();
bundle.putString("TITLE", "Googleスプレッドシート");
bundle.putString("QR", "https://docs.google.com/spreadsheets/d/.../edit?usp=drive_link");
CustomDialogQr customDialogQr = new CustomDialogQr();
customDialogQr.setArguments(bundle);
customDialogQr.show(getSupportFragmentManager(), "Googleスプレッドシート");
:
今回は、ここまでです。
任意の文字列をQRコードで表示しているAndroidアプリです。
誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にあるコメントか、
こちらから、お願いいたします♪
ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ
アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、Android のアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。
未経験者からシステムエンジニアを目指すのに最適です。まずは無料相談から♪

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪
コメント欄