見出し画像

Magic Leap2 の 外部アプリにテキスト情報を送信する方法について

はじめに

この記事は、Magic Leap2 Advent Calendar 2022 の7日目です。
Magic Leap2 の 外部アプリの起動方法とテキスト情報を送信する方法 について説明します。


OnePlanet XR について

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

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

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


Magic Leap2 の 外部アプリにテキスト情報を送信する方法

Magic Leap2 では他のアプリケーションの起動とテキストデータの送信を行うことが可能です。

今回はTwitterアプリを起動して、つぶやくメッセージを送信する方法について説明します。


開発環境 / 動作環境

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)


ヒエラルキー

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


ExplicitIntentExample

ExplicitIntentExampleというスクリプトを作成します。

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

using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.XR.MagicLeap;
using static MagicLeapInputs;
using TMPro;

public class ExplicitIntentExample : MonoBehaviour
{
    private MagicLeapInputs mlInputs;
    private MagicLeapInputs.ControllerActions controllerActions;
    private string messageToSend = "IntentでTextをSendしてTwitterでTweet!! #LEAPERSJAPAN";

    // Start is called before the first frame update
    void Start()
    {
        mlInputs = new MagicLeapInputs();
        mlInputs.Enable();
        controllerActions = new MagicLeapInputs.ControllerActions(mlInputs);
        controllerActions.Trigger.performed += HandleOnTrigger;
    }

    // Update is called once per frame
    void Destroy()
    {
        controllerActions.Trigger.performed -= HandleOnTrigger;
        mlInputs.Dispose();
    }

    private void HandleOnTrigger(InputAction.CallbackContext obj)
    {
        using AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", "android.intent.action.SEND");
        intent.Call<AndroidJavaObject>("putExtra", new object[] { "android.intent.extra.TEXT", messageToSend });
        intent.Call<AndroidJavaObject>("setType", "text/plain");
        activity.Call("startActivity", intent);
    }
}

トリガーボタンを押したタイミングでテキスト送信するインテント フィルタを作成しstartActivityを呼び出します。


実行

Magic Leap2 にインストールしているアプリでテキスト送信に対応したアプリの一覧が表示されます。ここではTwitterアプリを選択。プログラムで設定したテキストがつぶやきの入力欄に設定されます。


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技術全般をブログマガジンを連載しています。