溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android PC投屏功能實(shí)現(xiàn)的示例代碼

發(fā)布時(shí)間:2020-09-23 12:40:09 來源:腳本之家 閱讀:212 作者:deep_sadness 欄目:移動(dòng)開發(fā)

本文介紹了Android PC投屏功能實(shí)現(xiàn)的示例代碼,分享給大家,具體如下:

代碼地址 :https://github.com/deepsadness/MediaProjectionDemo

效果預(yù)覽

Android PC投屏功能實(shí)現(xiàn)的示例代碼

投屏效果預(yù)覽

簡單說明:

  1. 使用Android MediaProjection Api來完成視頻的截圖
  2. 通過WebSocket進(jìn)行鏈接。將圖片傳遞給網(wǎng)頁

想法來源

看到vysor,覺得特別好玩,于是就想著自己能不能試著做一個(gè)類似的功能出來。搜索了相關(guān)實(shí)現(xiàn)。發(fā)現(xiàn)網(wǎng)上已經(jīng)有網(wǎng)友針對vysor做了分析。于是就照著思路,按圖索驥,當(dāng)作對MediaProjection Api的練習(xí),來完成這個(gè)小項(xiàng)目

主要思路

1. 獲取屏幕的截屏

Android在Api 21以上為我們已經(jīng)提供了系統(tǒng)的Api可以進(jìn)行操作。

主要是這幾個(gè)類的相互配合

MediaProjection和VirtualSurface,還有截圖的話,使用ImageReader,三個(gè)類配合使用。

Android PC投屏功能實(shí)現(xiàn)的示例代碼

配套使用示意圖.png

這里需要注意的是,需要通過這個(gè)回調(diào),每當(dāng)屏幕發(fā)生變化,就會(huì)回調(diào)這個(gè)接口,可以得到最新的截圖。

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)行雙方通向

Android PC投屏功能實(shí)現(xià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í)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI