REST APIの動作確認をしていて思いついたので作成しました。
昨日のREST API触ってた時に思いついたiPhoneからHoloLensの録画制御するやつできた。停止時にブラウザ操作したり、ブルームの手が見えたり、コルタナにお願いしたりしなくていいので便利だと思う。 pic.twitter.com/zUiWkklZUv
— キャット (@hi_rom_) 2017年8月16日
まじめにiPhoneアプリを作ろうとするとXcode開いてSwiftで~とかになりますが、おおげさなのでPythonistaというアプリで作りました。
このアプリかなりすごくてiPhoneだけでPythonのプログラミングができます。2系も3系も対応しており、環境構築とかそういうものも必要ありません。電卓や簡単なゲームのサンプル等もついており、またグラフも簡単にかけたりします。
Pythonista3すげー!
— キャット (@hi_rom_) 2016年11月26日
「ゼロから作るDeep Learning」に載ってるサンプル普通に動いた。
これ、iPhoneだけでディープラーニング出来るんでないの? pic.twitter.com/ufmEsP0nuM
今回のソースは(タイムアウト処理とかはしていませんが)以下になります。
ヘッダー情報は昨日のAdvanced REST clientに表示されていたものをコピぺしただけなので適当ですが、XXXXXとしている認証情報とIPアドレスを適宜設定すれば動くと思います。
import ui
import console
import requests
isRecording = False
def button_tapped(sender):
h = {"accept":"application/json", "accept-encoding":"gzip, deflate", "accept-language":"en-US,en;q=0.8", "content-type":"application/json", "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36", "Authorization":"Basic XXXXX", "X-CSRF-Token":"XXXXX"}
if isRecording == False:
global isRecording
isRecording = True
u = "https://192.168.0.19/api/holographic/mrc/video/control/start?holo=true&pv=true&mic=true&loopback=true"
btn = sender.superview['button1']
btn.title = "Stop"
else:
global isRecording
isRecording = False
u = "https://192.168.0.19/api/holographic/mrc/video/control/stop"
btn = sender.superview['button1']
btn.title = "Record"
res = requests.post(url=u, headers=h, verify=False)
view = sender.superview['textview1']
if res.text == "":
view.text = "The response was empty."
else:
view.text = res.text
v = ui.load_view()
v.present('sheet')
UIの制御については電卓のサンプルが参考になると思いますが、以下にキャプチャ画像と簡単な説明をつけておきます。
UI付きでスクリプトを生成。
ファイル名を指定してDone。
ボタンは画面したにフィットするようにしました。
ボタンのラベル名とタップしたときのアクションを指定します。
全体のレイアウトはこのような感じ。
textview1の詳細は省略していますがレスポンスが表示されるようになっています。