STF簡單修改實現安卓多機同屏控制
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:
module.exports = angular.module(`stf/batch-control`, [
require(`stf/socket`).name,
require(`stf/transaction`).name,
require(`stf/keycodes`).name
])
.factory(`BatchControlService`, require(`./batch-control-service`))
3. 開啟改名後的:batch-control-service.js, 同樣修改原來的controlService為batchControlService.
4. 定義deviceControlArray,用來存放多機同屏的機器列表,注意這裡為了簡單實現,僅僅用了API獲取了全部機器,實際操作建議按裝置List選擇後存入Array。
var deviceControlArray = new Array()
if (deviceControlArray.length == 0)
{
var devices = "";
devices = oboe(`/api/v1/devices`)
devices.node(`devices[*]`, function(device) {
if (device.present) //僅將線上的裝置加入Array
{
deviceControlArray.push(device.channel)
}
})
}
5. 繼續修改batch-control-service.js,可以看到傳送WS訊息方法為:sendOneWay,就在這裡給他套個foreach
function sendOneWay(action, data) {
deviceControlArray.forEach(function(channel)
{
socket.emit(action, channel, data)
})
}
要做不同解析度適配的,可以考慮在這裡的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檯安卓手機,再修改後的程式碼上面進行執行,發現同屏操作幾乎無延遲,改造完成。
相關文章
- 如何實現內網多電腦同屏協同?內網
- 安卓手機投屏到電視,簡單又快捷安卓
- 使用Scrcpy實現電腦控制安卓手機安卓
- 感知機簡單實現
- 簡單實現安卓app自動更新功能安卓APP
- 簡單實現一個全面屏切換效果
- pc端控制安卓如何實現安卓
- Android實現錄屏直播(一)ScreenRecorder的簡單分析Android
- 剖析C++多型:用C實現簡單多型C++多型
- 簡單修改Linux主機名Linux
- stf+appium app 真機自動化平臺實現APP
- MySQL簡單實現多欄位模糊查詢MySql
- Python簡單實現多執行緒例子Python執行緒
- 實現簡單的輪播圖(單張圖片、多張圖片)
- 單例避免多執行緒同時修改同個值從而造成髒資料單例執行緒
- spring aop實現簡單的許可權控制功能Spring
- RecyclerView 列表控制元件中簡單實現時間線View控制元件
- [Android手機]教程:修改安卓手機…Android安卓
- Promise 簡單實現Promise
- FastClick簡單實現AST
- Express 簡單實現Express
- AspectJ簡單實現
- getElementsByClassName簡單實現
- [python]有限狀態機(FSM)簡單實現Python
- 基於 WebSocket 的 PPT 遠端控制器簡單實現Web
- BCB:TEdit控制元件右對齊的簡單實現 (轉)控制元件
- 多語言版vfp程式設計簡單實現 (轉)程式設計
- socketserver實現多使用者連線簡單程式碼Server
- HarmonyOS Next 版同屏(web 簡易版)Web
- 用單連結串列實現多項式加,減,乘,簡單微分
- 單執行緒的JS如何實現多個互動同時進行執行緒JS
- 精簡版 koa 簡單實現
- 用JS實現簡單的螢幕錄影機JS
- redission-tomcat:快速實現從單機部署到多機部署RedisTomcat
- 最簡單的C實現控制檯掃雷1+1=2
- 簡單版Promise實現Promise
- 實現簡單的BitMap
- ArrayList的簡單實現