Microsoft Hololens開發上手(2)


昨天的那篇文章引起了不小的追捧,主要追捧的同學都感嘆這個東西太貴,當然對未來孜孜不倦的追求是it民工的人生目標。還有一些同事說既然都開頭了,怎么也不寫個hello world。其實hello world的程序在最后一張截圖里,我加了名字,時間,內嵌廣告,這樣就算被抄了也能看出是幾幾年寫的,不會讓某些神經脆弱的同學又感慨人生。

廢話不表,昨天那個Hello World的程序很簡單,打開Visual Studio 創建一個UWP程序,創建完了以后拖幾個Control上去,我這里放了一個text box,一個web view。textbox里面說了幾句廢話,webview訪問了鄙公司拳頭產品雲舶:www.yunboard.net

編譯部署的流程是這樣的。選擇Release,x86,編譯目標可以是模擬器,也可以是真機。真機調試需要首先打開Hololens的開發模式,在設置->更新->開發者里面,首先打開開發模式,然后打開設備管理器,這樣就可以用瀏覽器來監控hololens的狀態了。

在Visual Studio里面可以選擇Remote Machine,開始部署。輸入127.0.0.1,如果是第一次部署,還需要輸入Pin,到剛才那個打開hololens開發模式的地方獲取。

然后你的程序就愉快地跑起來了,是這個樣子的。

注意到工具欄上有滾動,拖動,放大縮小等功能,還有調整位置,基本上就是windows上的窗口拖拽,放大縮小,不過比windows多了一個角度宣傳,誰讓他是3d的呢。窗口會自動附着在一個平面上,也就是我面前的牆壁上。整個窗口沒有最大化的按鈕,所有的操作都可以用語音來控制,非常簡單。

我們有2種方式來看Hololens的Device Portal, 一種是直接Wifi模式,用https://hololens的ip,另外一種是通過usb,訪問https://127.0.0.1:10080。可以打開配置頁面,了解hololens的各種信息,比如視角,性能,系統等等,包括可以設置訪問證書,密碼,當前運行的進程,日志。具體可以訪問https://developer.microsoft.com/en-us/windows/holographic/using_the_windows_device_portal了解詳情。

 

值得一提的是Hololens Device Portal里所有的功能都支持Rest API,可以通過代碼的方式管理Hololens,這對開發而言方便了很多,具體說明在https://developer.microsoft.com/en-us/windows/holographic/device_portal_api_reference。不過認證部分完全沒提到,不加認證的話會拿到一個403錯誤。我給hololens設置了密碼,所以HTTP的請求需要加認證頭,但是這個認證頭怎么拿到卻沒有說明。不過這難不倒IT老屌絲,用Fiddler抓一個簡單的HTTP包,就可以發現某個http request有一個Authorization頭,使用Basic驗證模式和一串credential。要復習一下http協議的同學可以參考http協議1.1 (RFC2616) 14.8節Authorization的部分 https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html ,具體加密方式和方法請參考HTTP Authentication: Basic and Digest Access Authentication(http://www.ietf.org/rfc/rfc2617.txt)。

Authorization: Basic aG90Y2FuOlVzZXJAMTIz

 

市面上有很多用來測試Rest API的工具,我在Chrome里面直接用了一個叫Insomania的東西,比如說我調用這個http://127.0.0.1:10080/api/networking/ipconfig來獲取hololens的網絡信息。返回就是一串Json格式的信息:

{
    "Adapters": [
        {
            "Description": "Bluetooth Device (Personal Area Network)",
            "HardwareAddress": "b4-ae-2b-be-ff-97",
            "Index": 4,
            "Name": "{39A74CEF-9AFF-46D4-AF65-5E25DED69711}",
            "Type": "Ethernet",
            "DHCP": {
                "LeaseExpires": 0,
                "LeaseObtained": 0,
                "Address": {
                    "IpAddress": "",
                    "Mask": ""
                }
            },
            "Gateways": [
                {
                    "IpAddress": "0.0.0.0",
                    "Mask": "255.255.255.255"
                }
            ],
            "IpAddresses": [
                {
                    "IpAddress": "0.0.0.0",
                    "Mask": "0.0.0.0"
                }
            ]
        },
        {
            "Description": "Broadcom 802.11ac Wireless PCIE Full Dongle Adapter",
            "HardwareAddress": "b4-ae-2b-be-ff-96",
            "Index": 6,
            "Name": "{5F3FDFA6-C33B-40D2-913F-4E191047A138}",
            "Type": "IEEE 802.11",
            "DHCP": {
                "LeaseExpires": 1466732947,
                "LeaseObtained": 1466722147,
                "Address": {
                    "IpAddress": "192.168.12.1",
                    "Mask": "255.255.255.255"
                }
            },
            "Gateways": [
                {
                    "IpAddress": "192.168.12.1",
                    "Mask": "255.255.255.255"
                }
            ],
            "IpAddresses": [
                {
                    "IpAddress": "192.168.13.148",
                    "Mask": "255.255.252.0"
                }
            ]
        }
    ]
}

在API里面看到一個很有趣的方法,叫做/api/holographic/stream/live.mp4 (GET),可以把hololens上看到的東西streaming到電腦上來。調試方法很簡單, 直接打開chrome,輸入http://127.0.0.1:10080/api/holographic/stream/live_high.mp4,直接可以在電腦上看到hololens里面看到的東西。

還可以去讀一些硬件信息,例如電池信息:

http://127.0.0.1:10080/api/power/battery(GET)

返回結果是電池信息,總共16208mWh,還能運行

{
"AcOnline": 1,
"BatteryPresent": 1,
"Charging": 0,
"DefaultAlert1": 0,
"DefaultAlert2": 1620,
"EstimatedTime": 4294967295,
"MaximumCapacity": 16208,
"RemainingCapacity": 15701
}

有了Rest API,就意味着這個硬件設備是完全可編程的,可以全自動進行管理,這和IoT的概念也是完全一樣的,並且可以遠程設置和管理。昨天和今天的內容都是hololen的基礎理解,開發和傳統Windows 開發並沒有什么不同,明天我們開始針對Hololens的一些傳感器,利用Unity進行編程。這種交互的變化導致了程序設計思路的大幅改變,也能夠把計算機應用帶到一個全新的階段。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM