Android PC投屏功能實現(xiàn)的示例代碼
本文介紹了Android PC投屏功能實現(xiàn)的示例代碼,分享給大家,具體如下:
代碼地址 :https://github.com/deepsadness/MediaProjectionDemo
效果預(yù)覽

投屏效果預(yù)覽
簡單說明:
- 使用Android MediaProjection Api來完成視頻的截圖
- 通過WebSocket進(jìn)行鏈接。將圖片傳遞給網(wǎng)頁
想法來源
看到vysor,覺得特別好玩,于是就想著自己能不能試著做一個類似的功能出來。搜索了相關(guān)實現(xiàn)。發(fā)現(xiàn)網(wǎng)上已經(jīng)有網(wǎng)友針對vysor做了分析。于是就照著思路,按圖索驥,當(dāng)作對MediaProjection Api的練習(xí),來完成這個小項目
主要思路
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
因為我們的目標(biāo)是在網(wǎng)頁內(nèi)打開,所以需要和網(wǎng)頁進(jìn)行通信??梢院唵蔚氖褂肳ebSocket進(jìn)行雙方通向

簡單示意圖Again.png
通過Socket.iosocket.io/ 就可以簡單的實現(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è)計(APP設(shè)計趨勢 左側(cè)隱藏菜單右邊顯示content)
這文章講述了2013年未來的移動APP設(shè)計趨勢,感覺挺有道理的:Android界面設(shè)計實現(xiàn)左側(cè)隱藏菜單右邊顯示content,感興趣的你可以了解下啊,希望本文對你的APP設(shè)計提高有所幫助哦2013-01-01
Android編程實現(xiàn)開機(jī)自動運行的方法
這篇文章主要介紹了Android編程實現(xiàn)開機(jī)自動運行的方法,分析了Android開機(jī)運行的原理并結(jié)合實例形式給出了Android基于廣播實現(xiàn)開機(jī)運行的技巧,需要的朋友可以參考下2016-10-10
kotlin android extensions 插件實現(xiàn)示例詳解
這篇文章主要為大家介紹了kotlin android extensions 插件實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Android應(yīng)用中設(shè)置alpha值來制作透明與漸變效果的實例
這篇文章主要介紹了Android應(yīng)用中設(shè)置alpha值來制作透明與漸變效果的實例,展示了基礎(chǔ)的透明漸變動畫的編寫方法,需要的朋友可以參考下2016-04-04
android實現(xiàn)掃描網(wǎng)頁二維碼進(jìn)行網(wǎng)頁登錄功能
這篇文章主要介紹了android掃描網(wǎng)頁二維碼進(jìn)行網(wǎng)頁登錄效果,掃描成功之后跳轉(zhuǎn)進(jìn)入主頁,具體實現(xiàn)代碼大家參考下本文2017-12-12
Android 實現(xiàn)沉浸式狀態(tài)欄的方法
沉浸式狀態(tài)欄的來源就是很多手機(jī)用的是實體按鍵,沒有虛擬鍵,于是開了沉浸模式就只有狀態(tài)欄消失了。下面腳本之家小編給大家介紹Android 實現(xiàn)沉浸式狀態(tài)欄,需要的朋友可以參考下2015-09-09
android studio生成aar包并在其他工程引用aar包的方法
本篇文章主要介紹了android studio生成aar包并在其他工程引用aar包的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

