SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

.NET nanoFrameworkとESP32でIoTプログラミング

スマホアプリで環境データを可視化しよう! .NET nanoFrameworkとESP32でIoTプログラミング

.NET nanoFrameworkとESP32でIoTプログラミング 第8回

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

 .NET nanoFrameworkは、組み込みデバイス向けの.NET実装です。.NET nanoFrameworkを用いれば、ハードウェア的な制約のあるマイコンボードでも、C#でのプログラミングが可能になります。この連載では、.NET nanoFrameworkと、ESP32マイコンモジュール(ESP32-WROVERなど)を使い、C#によるIoTプログラミングを解説します。

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

対象読者

 IoTに興味があり、C#と電子工作の基本的な知識がある方を対象とします。C#や電子工作のごく初歩的な説明は割愛していますので、「C#ではじめるラズパイIoTプログラミング」の記事なども併せて参照してください。

はじめに

 前々回から、Bluetoothを利用して環境データをモニタリングするプログラムを作成しています。今回は、ESP32でBluetoothで受信した値を表示するスマホアプリを解説します。

MAUIでのAndroid対応アプリの作成(1)

 環境センサーの値をモニタリングするAndroidアプリを、MAUIを利用して作成します。

図1
環境センサーの値をモニタリングするAndroidアプリ

.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のコードを少し変更します。

[リスト1]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()メソッドを呼び出すと、次のような権限ダイアログが表示され、許可することでアプリが実行できます。

権限ダイアログの表示
権限ダイアログの表示

次のページ
MAUIでのAndroid対応アプリの作成(2)

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
.NET nanoFrameworkとESP32でIoTプログラミング連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21424 2025/04/28 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング