見出し画像

Magic Leap2 の WiFi 情報の取得について

はじめに

この記事は、Magic Leap2 Advent Calendar 2022 の13日目です。
Magic Leap2 のWiFi の SSIDなどの情報を取得する方法 について説明します。


OnePlanet XR について

https://1planet.co.jp/xrconsulting.html

このブログ記事は OnePlanet XR によるものです。
OnePlanet XR は、AR/MR/VPS技術に専門特化したコンサルティングサービスです。豊富な実績を元に、AR/MR技術を活用した新たな事業の立ち上げ支援や、社内業務のデジタル化/DX推進など、貴社の必要とするイノベーションを実現いたします。

ご相談から受け付けております。ご興味ございましたらお問い合わせください。


Magic Leap 2 の WiFi 情報の取得について

Magic Leap 2 でWiFi のスキャンやSSIDなどの情報を取得するAPIは提供していません。今回はAndroid用に提供しているアセットを使用します。


開発環境 / 動作環境

Unity Editor 2022.2.0b8.3023
Magic Leap SDK 1.1.0-dev1
Magic Leap XR Plugin 7.0.0.pre.1
Magic Leap2 OS 1.1.0-dev1 (B3E.221020.13-R.039_40)


事前準備

アセットの導入

今回は、Android Wifi Manager のアセットを使用しました。
アセットをダウンロードしてインポートするとWifiのパーミッションをマニフェストに追加要否のダイアログが表示されます。全てOKとします。


ヒエラルキー

シーンを新規作成します。Main Cameraは削除し、XR Rigのプレファブをヒエラルキーに配置します。
Game Objectを作成し、名前を Wifi Example にします。


WifiExample

Wifi Example の Game Object にアタッチするWifiExampleというスクリプトを作成します。

スクリプトは以下になります。

using FSG.Android.Wifi;
using System.Collections;
using UnityEngine;
using TMPro;
using System.Text;

public class WifiExample : MonoBehaviour
{
    [SerializeField]
    private TextMeshProUGUI info;

    void Start()
    {
        StartCoroutine(PrintWifiNetworks());
    }

    private IEnumerator PrintWifiNetworks()
    {
        if (AndroidWifiManager.IsWifiEnabled() == false)
        {
            AndroidWifiManager.SetWifiEnabled(true);
        }
        AndroidWifiManager.StartScan();
        yield return new WaitForSeconds(1);

        var results = AndroidWifiManager.GetScanResults();
        StringBuilder sb = new StringBuilder();
        foreach (AndroidWifiScanResults result in results)
        {
           sb.Append(string.Format("SSID: {0} Signal: {1}dBm Security Type: {2}\n", result.SSID, result.level, result.securityType));
        }
        info.text = sb.ToString();
    }
}



WiFi情報のテキスト表示

WiFIのスキャン結果のテキスト表示用のUIを作成します。以下の記事に従って構築してください。

上記の記事で作成したText(TMP)を WifiExample の infoフィールドに設定してください。


マニフェストの修正

Assets\Plugins\Android\AndroidManifest.xml に 以下を追記します。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

AndroidManifest.xml は以下のようになります。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools">
  <application>
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
  </application>
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="com.magicleap.permission.HAND_TRACKING" />
  <uses-permission android:name="com.magicleap.permission.VOICE_INPUT" />
  <uses-permission android:name="com.magicleap.permission.SPATIAL_ANCHOR" />
  <uses-permission android:name="com.magicleap.permission.WEBVIEW" />
  <uses-permission android:name="com.magicleap.permission.WORLD_RECONSTRUCTION" />
  <uses-permission android:name="com.magicleap.permission.MARKER_TRACKING" />
  <uses-permission android:name="com.magicleap.permission.SPATIAL_MAPPING" />
  <uses-permission android:name="com.magicleap.permission.EYE_TRACKING" />
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

実行

WiFIでスキャンして返ってきた情報のうち、SSID、Level、Security Type をテキストに表示されます。


OnePlanet XR

https://1planet.co.jp/xrconsulting.html

AR/MR/VPS技術に専門特化したコンサルティングサービス

Magic Leap2 を使ったソリューションのご検討の方からのお問い合わせ、お待ちしております。


お問い合わせ先

https://1planet.co.jp/xrconsulting.html#op_form


OnePlanet Tech Magazine

Magic Leap 1 、Magic Leap2 、スマホAR(Niantic Lightship ARDK、WebAR、VPSなど)といったAR技術全般をブログマガジンを連載しています。