対象読者
IoTに興味があり、C#と電子工作の基本的な知識がある方を対象とします。C#や電子工作のごく初歩的な説明は割愛していますので、「C#ではじめるラズパイIoTプログラミング」の記事なども併せて参照してください。
はじめに
前々回から、Bluetoothを利用して環境データをモニタリングするプログラムを作成しています。今回は、ESP32でBluetoothで受信した値を表示するスマホアプリを解説します。
MAUIでのAndroid対応アプリの作成(1)
環境センサーの値をモニタリングするAndroidアプリを、MAUIを利用して作成します。

.NET MAUI
.NET MAUI(.NET Multi-platform App UI)は、クロスプラットフォームのフレームワークです。C#とXAMLを使用して、AndroidやiOSのネイティブアプリや、Windowsなどのデスクトップアプリが作成できます。
ただ今回のアプリでは、Androidの実機のみで動作確認を行っています。Windowsでは、筆者の環境ではうまく動作しませんでした。
新規プロジェクト
Visual Studioの新規プロジェクトでは、 テンプレートとして.NET MAUIアプリを選択します。.NETのバージョンは、9.0のままで問題ありません。
まずは、テンプレートの初期状態のままビルドし、アプリが起動できることを確認します。

.NET MAUIで初めてアプリを作成する場合は、次のマイクロソフトのドキュメント「Microsoft Learn 初めてのアプリを構築する」を参照してください。詳細な説明があります。
今回の開発では、Android 13と14の実機を用いました。実機を用いた開発が初めての場合は、ドキュメント「Microsoft Learn デバッグ用に Android デバイスを設定する」を参照してください。
今回の記事では、テンプレートの初期状態のアプリが実機で起動できる状態を前提として解説することにします。
BLEを利用するための設定
今回のアプリでは、BLE通信のライブラリである、Bluetooth LE plugin for Xamarin & MAUIのPlugin.BLEパッケージを利用しました。NuGetパッケージマネージャなどで、Plugin.BLEとして検索し、インストールしておきます。
またAndroidアプリでBluetoothを利用する場合、アプリの権限を適切に設定する必要があります。アプリの権限とは、カメラや位置情報といった端末の機能や情報にアプリがアクセスできる権限のことです。今回は、Bluetoothを利用するための権限の設定が必要です。
Visual Studioのソリューションエクスプローラーから、プロジェクト配下にあるPlatforms-AndroidフォルダのAndroidManifest.xmlを開きます。AndroidManifest.xmlは、アプリの実行に必要な情報が含まれているファイルで、アプリの権限の設定もこのファイルで行います。AndroidManifest.xmlを開くと、デフォルトで、GUIで編集できるエディターが開きます。このエディター画面で、Required permissionsの欄で、次の項目にチェックしておきます。
- BLUETOOTH_SCAN
- BLUETOOTH_CONNECT
さらに、Android 12以降では、ランタイムパーミッションと呼ばれる、アプリ実行時の権限設定も必要です。MauiProgram.csのコードを少し変更します。
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); }) .ConfigureLifecycleEvents(events => { #if ANDROID events.AddAndroid(android => android .OnCreate((activity, bundle) => { // Android 12以上ではランタイムパーミッションが必要 if (OperatingSystem.IsAndroidVersionAtLeast(31)) { activity.RequestPermissions( [ Android.Manifest.Permission.BluetoothScan, Android.Manifest.Permission.BluetoothConnect, ], 0); } }) ); #endif }); ~中略~ }
アプリの実行時にRequestPermissions()メソッドを呼び出すと、次のような権限ダイアログが表示され、許可することでアプリが実行できます。
