需求
想在自己實現(xiàn)的一個輔助 Android 測試團(tuán)隊使用的小工具里完善抓屏幕錄像的功能患民。做到一鍵啟動錄屏缩举,一鍵停止錄屏功能,文件自動保存下來匹颤。
這個需求我用批處理做的仅孩,考慮到團(tuán)隊成員用的都是 windows 系統(tǒng),并且希望達(dá)到快速開發(fā)工具的效果印蓖。實現(xiàn)過程也很簡單辽慕,
但這里面有個問題,Ctrl + C 操作起來比較麻煩赦肃,如果我把 .bat 打包成 .exe 后溅蛉,Ctrl + C 就直接退出程序了,達(dá)不到效果他宛。經(jīng)過思考船侧,采用了下面的辦法來實現(xiàn)
實現(xiàn)
-
實現(xiàn)效果1:
將 adb shell screenrecord 指令單獨保存到一個 .bat 中,在主程序里調(diào)用這個子程序厅各,兩個獨立系統(tǒng)互不干擾镜撩,通過終止 Android 里的錄屏進(jìn)程來終止錄屏。
main.bat
這樣就可以實現(xiàn)一鍵啟動錄制讯检,再按任意鍵結(jié)束錄制并取出視頻文件了琐鲁。
但仍然出現(xiàn)了問題,就是視頻文件有大小人灼,但播放黑屏围段。懷疑是強(qiáng)制結(jié)束進(jìn)程后視頻文件的基礎(chǔ)信息沒有在最后寫入導(dǎo)致的。于是有了下面的第二種思路 -
實現(xiàn)效果2
通過分析后投放,決定對結(jié)束的方法加以修改奈泪,在 windows 端結(jié)束進(jìn)程。于是,在 screenrecord.bat 中最開始設(shè)置一個 title 涝桅,通過 taskkill /f /fi "windowtitle eq xxx" 的方式就能夠結(jié)束
screenrecord.bat
main.bat
這樣取出來的視頻文件就能正常播放了拜姿。
不過,在團(tuán)隊里試用后冯遂,仍然出現(xiàn)了問題:有的電腦不能正常終止錄屏進(jìn)程蕊肥。分析后發(fā)現(xiàn),如果是以管理員方式啟動 .bat 時蛤肌,會出現(xiàn)這樣的情況壁却。試過在過濾器里加通配符也不好使。最后只能用折中的辦法裸准,結(jié)束掉 adb.exe 進(jìn)程( screenrecord.bat 啟動后的進(jìn)程名)展东,修改后的實現(xiàn)如下
main.bat
壞處是在執(zhí)行 adb pull 時會重新啟動本地 adb 服務(wù),不過也沒什么太大的影響了炒俱。
by henryWoo
2017-11-23