Android PC投屏功能實(shí)現(xiàn)的示例代碼
本文介紹了Android PC投屏功能實(shí)現(xiàn)的示例代碼,分享給大家,具體如下:
代碼地址 :https://github.com/deepsadness/MediaProjectionDemo
效果預(yù)覽
投屏效果預(yù)覽
簡單說明:
- 使用Android MediaProjection Api來完成視頻的截圖
- 通過WebSocket進(jìn)行鏈接。將圖片傳遞給網(wǎng)頁
想法來源
看到vysor,覺得特別好玩,于是就想著自己能不能試著做一個類似的功能出來。搜索了相關(guān)實(shí)現(xiàn)。發(fā)現(xiàn)網(wǎng)上已經(jīng)有網(wǎng)友針對vysor做了分析。于是就照著思路,按圖索驥,當(dāng)作對MediaProjection Api的練習(xí),來完成這個小項(xiàng)目
主要思路
1. 獲取屏幕的截屏
Android在Api 21以上為我們已經(jīng)提供了系統(tǒng)的Api可以進(jìn)行操作。
主要是這幾個類的相互配合
MediaProjection和VirtualSurface,還有截圖的話,使用ImageReader,三個類配合使用。
配套使用示意圖.png
這里需要注意的是,需要通過這個回調(diào),每當(dāng)屏幕發(fā)生變化,就會回調(diào)這個接口,可以得到最新的截圖。
ImageReader::setOnImageAvailableListener
2. 搭建Socket連接,將圖片的數(shù)據(jù)進(jìn)行傳遞
node 部分的代碼在 https://github.com/deepsadness/MediaProjectionDemo/tree/master/sockt
因?yàn)槲覀兊哪繕?biāo)是在網(wǎng)頁內(nèi)打開,所以需要和網(wǎng)頁進(jìn)行通信??梢院唵蔚氖褂肳ebSocket進(jìn)行雙方通向
簡單示意圖Again.png
通過Socket.iosocket.io/ 就可以簡單的實(shí)現(xiàn)
3. 如何將圖片顯示出來
html中的src就可以直接對傳遞byte[]的進(jìn)行解析。
socket.on('image', function (msg) { var arrayBufferView = new Uint8Array(msg); var blob = new Blob([arrayBufferView], { type: "image/jpeg" }); var urlCreator = window.URL || window.webkitURL; var imageUrl = urlCreator.createObjectURL(blob); var img = document.getElementById("screen"); // var img = document.querySelector("#photo"); img.src = imageUrl;
4. 下一步
下一步,就是使用 錄制的Api,來做錄屏直播了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android實(shí)現(xiàn)驗(yàn)證碼按鈕
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)驗(yàn)證碼按鈕功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07解決Could not find com.android.tools.build:gradle:3.0.0
這篇文章主要介紹了在Android Studio升級時碰到Could not find com.android.tools.build:gradle:3.0.0問題的解決方法,需要的朋友跟隨小編一起看看吧2021-08-08Android編程下拉菜單spinner用法小結(jié)(附2則示例)
這篇文章主要介紹了Android編程下拉菜單spinner用法,結(jié)合實(shí)例較為詳細(xì)的總結(jié)分析了下拉菜單Spinner的具體實(shí)現(xiàn)步驟與相關(guān)技巧,并附帶兩個示例分析其具體用法,需要的朋友可以參考下2015-12-12Android開發(fā)之判斷有無虛擬按鍵(導(dǎo)航欄)的實(shí)例
下面小編就為大家分享一篇Android開發(fā)之判斷有無虛擬按鍵(導(dǎo)航欄)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Android自定義View實(shí)現(xiàn)水波紋效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)水波紋效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08Android實(shí)現(xiàn)系統(tǒng)語言切換功能
這篇文章主要為大家詳細(xì)介紹了Android系統(tǒng)語言切換功能的實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2016-03-03