HoloLensは既定の設定範囲だとスリープタイマーは最大30分ですが、それでもやっぱり煩わしいのでスリープしないようにしました
(参考)
forums.hololens.com
本来デバイスポータルの値は、REST API (https://developer.microsoft.com/en-us/windows/mixed-reality/device_portal_api_reference)を叩いて操作するのですが、電源周りはAPIから呼び出すことができません。
では何をPOSTしたら変更が加わるのか、少し見てみましょう。ChromeならF12でデベロッパーツールを立ち上げてください。
そして設定を変更してみます。
すると、どのようなRequestがとんできているか分かるはずです。
つまり、ここにあるRequestと同じようにPOSTしてやれば変更できるということですね。
なぜ僕はUnity側でこれを実装しようと思ったのか謎なのですが、まあ手軽に試せるという意味ではいいのかな(適当)
■ ヤり方
1.InspectorからデバイスポータルにアクセスするURL、ユーザー名、パスワードを入れる
2.シーン起動
3."S"ボタンを押す
4.デバイスポータルを更新し、次のようになっていたら成功
[Tooltip("DevicePortal URL")] public string url = "127.0.0.1:10080"; [Tooltip("DevicePortal UserName")] public string usr = "USR"; [Tooltip("DevicePortal Password")] public string pass = "PASS"; void Update () { if (Input.GetKeyDown(KeyCode.S)) { StartCoroutine(OnSetVideoIdle()); StartCoroutine(OnSetStanbyIdle()); } } IEnumerator OnSetVideoIdle() { WWWForm form = new WWWForm(); var req = UnityWebRequest.Post("http://" + url + "/api/power/cfg/SCHEME_CURRENT/SUB_SLEEP/VIDEOIDLE?ValueAC=0&ValueDC=0", form); req.SetRequestHeader("AUTHORIZATION", Authenticate(usr, pass)); yield return req.Send(); } IEnumerator OnSetStanbyIdle() { WWWForm form = new WWWForm(); var req = UnityWebRequest.Post("http://" + url + "/api/power/cfg/SCHEME_CURRENT/SUB_SLEEP/STANDBYIDLE?ValueAC=0&ValueDC=0", form); req.SetRequestHeader("AUTHORIZATION", Authenticate(usr, pass)); yield return req.Send(); } string Authenticate(string username, string password) { string auth = username + ":" + password; auth = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(auth)); auth = "Basic " + auth; return auth; }