本日は hololens の技術調査枠です。
前回、アプリの設定を外部テキストファイルとして読み込む方法を調査しました。
bluebirdofoz.hatenablog.com
今回はこの設定ファイルからIPアドレスを読み込み、アクセスするSharingサーバを切り替える処理を実装します。
参考にしたのは以下のサイトです。
dhero.hatenablog.com
前回の設定ファイルを変更して、SharingサーバのIPアドレスを設定できるようにします。
・AppSettingManager.cs
/// <summary> /// アプリ設定フォーマットクラス /// </summary> public class AppSettings { public string SharingServerAddress; }
・settings.xml
<?xml version="1.0" encoding="utf-8"?> <AppSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SharingServerAddress>192.168.2.100</SharingServerAddress> </AppSettings>
次に「接続」ボタン押下時に、設定を参照してSharingサーバに再接続するメソッドを呼び出します。
/// <summary> /// Sharing接続ボタンの押下イベント /// </summary> public void EventConnectSharingButtonCliled() { ViewerTest.UtilLog.DebugLog(this, "EventConnectSharingButtonCliled"); string address = AppSettingManager.Instance.GetAppSettings().SharingServerAddress; int port = HoloToolkit.Sharing.SharingStage.Instance.ServerPort; HoloToolkit.Sharing.SharingStage.Instance.ConnectToServer(address, port); }
SharingAddress に localhost、Sharingサーバのアドレスを設定したXMLファイルを用意してアプリを起動します。
localhost でSharingサービスは起動していないため、実行直後は接続が成功しません。
「接続」ボタンを押してSharingサービスを起動したサーバにアクセスすると……。
接続に成功しました。
設定ファイルを差し替えることで、アプリの再ビルド無しにSharingサーバのアドレスを変更可能です。
因みに以下のメソッドでSharingサーバに再接続する方法ですが……現在、私は何故、これで再接続可能かは理解できていません。
・HoloToolkit.Sharing.SharingStage.Instance.ConnectToServer(address, port);
起動時にデフォルト設定で自動接続してしまうのは不便に感じていたため、これまでも起動後にサーバを切り替える方法は調べていました。
しかし以下のように、シーン切り替えやオブジェクトのActiveを駆使して、起動時の仕組みを流用する方法しか見つからず。
littlewing.hatenablog.com
mtholoblog.hatenablog.com
今回、設定ファイルについて調査したところ、棚ぼた的にこちらのメソッドを用いる方法にたどり着いたという訳です。
しかし元記事に、本メソッドを用いるに至った詳細がなかったため、内部的な動きは分からないままです。
この辺りの理解は今後の学習課題とします。
因みにhololensでの実動作はお試し済みです。複数台のhololens実機確認でも位置合わせなどの動作に問題ありませんでした。