背景:
stf是一個非常優秀的安卓真機管理平台,近期團隊同學在看安卓真機适配方面的事情,想到如果采用stf來進行多機同屏控制那将是一件非常nice的事情。
動手:
初步看了一下stf的代碼,前端主要是采用websocket與後端進行通信,那我們隻要找到通信類,在他原來的send上面加上foreach,那麼就完美了。
簡單嘗試,周末用ubuntu裝了個開發環境,初步實作了多台安卓機的同屏控制,但有些細節方面還需要優化,比如不同分辨率需要做縮放。
1. 找到前後端通信子產品, stf/control, 将整個檔案夾複制一份,生成:stf/batch-control, 其中control-service.js 改名為:batch-control-service.js

2. 打開stf/batch-control/index.js,修改原來的control為batchcontrol:
3. 打開改名後的:batch-control-service.js, 同樣修改原來的controlservice為batchcontrolservice.
4. 定義devicecontrolarray,用來存放多機同屏的機器清單,注意這裡為了簡單實作,僅僅用了api擷取了全部機器,實際操作建議按裝置list選擇後存入array。
5. 繼續修改batch-control-service.js,可以看到發送ws消息方法為:sendoneway,就在這裡給他套個foreach
要做不同分辨率适配的,可以考慮在這裡的data做點手腳。
6.做個多機同屏操作界面吧,同樣把control-panes檔案夾複制一份,自行修改為其他名字,然後把其中原來應用stf/control的地方全部修改為我們的 stf/batch-control,這樣在這裡操作的任何指令将群發到所有機器。
7.添加多機螢幕顯示
上面已經實作了指令群發,接下來就可以把其他手機的螢幕嵌入頁面顯示了,最簡單的方法當然是standalone了。這樣我們在頁面上面隻要嵌入standalone的iframe就一切都搞定了。
進入standalone模式隻要在url最後加上?standalone 即可
比如原來的單機控制url是:
http://192.168.1.100:7100/#!/control/06157df6a99bc02e
那麼standalone模式的url就是:
http://192.168.1.100:7100/#!/control/06157df6a99bc02e?standalone
把這個url嵌入iframe就好啦。
最後:
實際找了4台安卓手機,再修改後的代碼上面進行運作,發現同屏操作幾乎無延遲,改造完成。