夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLensアプリ内でWebブラウザを立ち上げる。

本日はHoloLensのアプリ内でwebブラウザを立ち上げます。

HoloLensではアプリケーション内で、ウェブブラウザを立ち上げることができます。

 これによってスマートフォンや一般的なWindowsPC同様、参考サイトに飛ばすことやショッピングページに飛ばすことなど様々なことができるようになりました。

 例えば、[HoloGuiter]というジャムセッション練習用のアプリではアプリ内でYoutubeを開きユーザーのお気に入りの曲を流しながらギターの練習を行うことができます。

 今回はこの仕組みをアプリ内に組み込んでいきます。

Webブラウザを組みこむ。

Webブラウザをアプリ内で立ち上げるサンプルは[MixedRealityToolkit.Examples]の[HandInteractionExamples]シーンで提供されています。

f:id:Holomoto-Sumire:20210505194838j:plain

シーン内の向かって右側に存在するボタンを押すことでブラウザが立ち上がります。

f:id:Holomoto-Sumire:20210505195307j:plain

このボタンの[Interactable]コンポーネントを見ていきます。

f:id:Holomoto-Sumire:20210505195518j:plain

この[OnClick()]のイベントには[LaunchUri]コンポーネントの[Launch]が呼び出されています。

また引数として[https://aka.ms/mrdocs]が指定されています。

これは次のリンクでMRTKのドキュメントになります。

aka.ms

[LaunchUri]コンポーネントは次のようになっています。

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using UnityEngine;

namespace Microsoft.MixedReality.Toolkit.Examples.Demos
{
    [AddComponentMenu("Scripts/MRTK/Examples/LaunchUri")]
    public class LaunchUri : MonoBehaviour
    {
        /// <summary>
        /// Launch a UWP slate app. In most cases, your experience can continue running while the
        /// launched app renders on top.
        /// </summary>
        /// <param name="uri">Url of the web page or app to launch. See https://docs.microsoft.com/windows/uwp/launch-resume/launch-default-app
        /// for more information about the protocols that can be used when launching apps.</param>
        public void Launch(string uri)
        {
            Debug.Log($"LaunchUri: Launching {uri}");

#if UNITY_WSA
            UnityEngine.WSA.Launcher.LaunchUri(uri, false);
#else
            Application.OpenURL(uri);
#endif
        }
    }
}

Unityエディタ上とアプリ上でプリプロセッサによって挙動が変えられています。

Hololensでは次の処理が行われます。

            Application.OpenURL(uri);

Application.OpenURLメソッドはUnityで提供されているAPIで指定されたURLを開きます。

この時にプラットフォームごとの環境や許可に従い開くためHoloLensではEdgeのウィンドウが開くようです。

docs.unity3d.com

実記ではうまく動かなかったので後日取り組みます。