日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

如何实现监控手机屏幕?(附源码)

發布時間:2024/2/2 综合教程 52 生活家
生活随笔 收集整理的這篇文章主要介紹了 如何实现监控手机屏幕?(附源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  最近做了一個項目,里面有涉及到監控PC桌面和監視手機屏幕的功能,客戶需要在PC電腦上和安卓手機上都能夠觀看對方的屏幕,而對方的設備既可以是PC電腦,也可以是安卓手機。

為了便于以后復習,我把這個屏幕監控的功能單獨提出來做了個Demo名為ScreenMonitor來記錄備忘,順便也分享給大家。

該Demo一個包括3個項目:服務端、PC客戶端、安卓客戶端。

文末除了將ScreenMonitor整個項目的源碼提供下載,也專門給出了可以直接部署的版本,供大家直接部署測試。

接下來,我將給大家介紹整個功能的實現原理和代碼邏輯,大家可以從文末下載源碼后,對照源碼再來看下面的介紹就會更清晰些。  

一.服務端實現

  服務端主要用來轉發數據(被監控的屏幕圖像的編碼數據),并不涉及其它復雜的業務邏輯。

這個實現起來很簡單,只需要幾句代碼就OK,它主要做的就是將客戶端的消息的處理與數據的轉發。這里不做過多的介紹,其關鍵核心代碼只有一句,就是創建OMCS多媒體服務器實例。

Program.MultimediaServer = MultimediaServerFactory.CreateMultimediaServer(9900, userVerifier, config, bool.Parse(ConfigurationManager.AppSettings["SecurityLogEnabled"]));

第一個參數是提供服務的TCP端口,第二個參數用于驗證登錄的用戶帳號密碼。服務端運行界面如下所示:

  

二.PC客戶端實現

  客戶端中我們也分為了2種身份:控制端、被控端

  

  我們在登錄時,我們需要初始化多媒體管理器 來連接服務端進行通信,其實也很簡單,我們也只需要調用一句話就OK。

multimediaManager.Initialize(loginForm.CurrentUserID, "", ConfigurationManager.AppSettings["ServerIP"], int.Parse(ConfigurationManager.AppSettings["ServerPort"])); 

1.PC控制端:主要包括遠程觀看對方的桌面、監聽對方的麥克風 2個功能

  

  實現中主要是用到了DesktopConnector這個自定義控件,我們也只需簡單的調用一個BeginConnect 方法就可以直接連接到對方桌面。將控件還提供了2個事件 ConnectEnded、Disconnected 來知道當前連接的結果和狀態

     public DesktopForm(string friendID,bool audioEnabled)
        {
            InitializeComponent();
            
            this.ownerID = friendID;
            this.Text = string.Format("正在訪問{0}的桌面", this.ownerID);          
            this.desktopConnector1.ConnectEnded += new CbGeneric<ConnectResult>(desktopConnector1_ConnectEnded);
            this.desktopConnector1.Disconnected += DesktopConnector1_Disconnected;
            this.desktopConnector1.BeginConnect(this.ownerID);
            if (audioEnabled)
            {
                this.microphoneConnector1.BeginConnect(this.ownerID);
            }
        }

        private void DesktopConnector1_Disconnected(ConnectorDisconnectedType type)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new CbGeneric<ConnectorDisconnectedType>(this.DesktopConnector1_Disconnected), type);
            }
            else
            {
                if (type == ConnectorDisconnectedType.OwnerActiveDisconnect || type == ConnectorDisconnectedType.GuestActiveDisconnect)
                {
                    return;
                }
                MessageBox.Show("斷開連接!原因:" + type);
                this.Close();
            }
        }


        void desktopConnector1_ConnectEnded(ConnectResult result)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new CbGeneric<ConnectResult>(this.desktopConnector1_ConnectEnded), result);
            }
            else
            {
                if (result != ConnectResult.Succeed)
                {
                    MessageBox.Show("連接失敗!" + result.ToString());
                }    
            }
        }

  以下為在PC端遠程觀看手機屏幕的截圖: 

   

2.PC被控端:顯示正在被哪些用戶觀看

  

三.安卓端實現

   安卓客戶端就與PC客戶端的實現原理差不多了,只是其中一些細節不一樣而已

   安卓端同樣也是分為2種身份:監控端、被控端

  

  同PC客戶端一樣我們也要初始化多媒體管理器 來連接服務端進行通信

LogonResponse omcsResp = MultimediaManagerFactory.GetSingleton().initialize(id, password, ipaddStr, 9900, getApplication());//登錄OMCS服務器

1.安卓控制端:功能同PC一樣,可觀看目標用戶的屏幕和監聽麥克風

  

  這里我們用到了一個自定義組件DesktopSurfaceView 用來顯示對方桌面的圖像 ,我們通過桌面連接器DesktopConnector 去連接對方的桌面將獲取的桌面圖像數據用于該組件來顯示

     //顯示對方數據view  
       DesktopSurfaceView otherView = (DesktopSurfaceView) findViewById(R.id.Desk_surface_remote);
        desktopConnector.setOtherVideoPlayerSurfaceView(otherView);
        desktopConnector.setConnectorEventListener(new IConnectorEventListener() {
            @Override
            public void connectEnded(ConnectResult connectResult) {
                if( connectResult!= ConnectResult.Succeed){
                    Message msg = Message.obtain(); // 實例化消息對象
                    msg.what = 1; // 消息標識
                    msg.obj = "遠程桌面連接失敗:" + connectResult.toString(); // 消息內容存放
                    myHandler.sendMessage(msg);
                }
            }
            @Override
            public void disconnected(ConnectorDisconnectedType connectorDisconnectedType) {
                if(connectorDisconnectedType==ConnectorDisconnectedType.OwnerActiveDisconnect||connectorDisconnectedType==ConnectorDisconnectedType.GuestActiveDisconnect)
                {
                    return;
                }
                Message msg = Message.obtain(); // 實例化消息對象
                msg.what = 2; // 消息標識
                msg.obj = "遠程桌面連接斷開:" + connectorDisconnectedType.toString();// 消息內容存放
                myHandler.sendMessage(msg);
            }
        });

        desktopConnector.beginConnect(targetUid);

  下圖為手機監控PC桌面 

  

2.安卓被控端:需要采集本手機的桌面圖像、麥克風聲音發送給控制方

  核心點在采集本手機的整個桌面的圖像,這一點在OMCS框架中已經為我們處理好了,我們只是需要設置一下相關權限來允許錄制屏幕即可,剩下的事情都可以交給omcs內部去處理了。

    MultimediaManagerFactory.GetSingleton().setDesktopRecordActivity(this);//this 為當前Activity
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        MultimediaManagerFactory.GetSingleton().setDesktopRecordActivityResult(requestCode, resultCode, data);//設置授權結果給多媒體管理器

    }

  當控制方請求觀看安卓的桌面時,被控端會彈出如下權限申請提示,點擊“立即開始”對方就可以開始采集屏幕并將數據發送給 控制方用于顯示。(若勾選了始終允許分享屏幕 的選項,之后控制端請求訪問該被控端時就不會再次彈出權限的對話框了,可直接看得到該屏幕)

  

四、ScreenMonitor 源碼下載

1. 項目源碼下載ScreenMonitor.rar

2. 部署版本下載ScreenMonitor_Deploy.rar

另外:GGTalk V7.0 已于2020.09.30發布,全新的 服務端+PC端+Android端 源碼,快來下載吧!

總結

以上是生活随笔為你收集整理的如何实现监控手机屏幕?(附源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人免费短视频 | www..com国产| 成人av在线一区二区 | 中文字幕二区 | 免费一区视频 | 亚洲高清一区二区三区 | 陪读偷伦初尝小说 | 日韩视频在线观看二区 | 久久a级片 | 精品久久久久成人码免费动漫 | 伊人草草| 欧美高清大白屁股ass18 | 国产欧美一区二区在线 | 亚洲综合图片网 | 伊人网亚洲 | 日韩成人在线观看视频 | 精品丰满人妻无套内射 | 国产欧美日韩另类 | 日韩中出 | 毛片天天看 | 日韩人妻精品无码一区二区三区 | 少妇的性事hd | 91色噜噜| 小视频在线观看 | 国产精品18 | av免费看网址 | 久久久天天 | 亚洲精品动漫在线观看 | 青青插| 强行侵犯视频在线观看 | 一级特黄性色生活片 | 潘金莲黄色一级片 | 激情av综合 | 国产ts在线观看 | 永久黄色网址 | 中文字幕亚洲色图 | 日韩精品久久 | 一区二区三区黄 | 99国产精品99 | 91一区二区在线观看 | 日本一区二区三区成人 | 粉嫩aⅴ一区二区三区四区五区 | 爆乳熟妇一区二区三区霸乳 | 91理论片午午伦夜理片久久 | 午夜极品视频 | 一起射导航| 亚洲最黄视频 | 国产无遮挡又黄又爽又色 | 日本欧美一级 | 亚洲网站免费观看 | 国产3p露脸普通话对白 | 日日干av | 人人干干| 久久偷看各类女兵18女厕嘘嘘 | 玖玖在线免费视频 | 91桃色视频| 九九热精品视频在线观看 | 美女的隐私免费看 | 在线免费激情视频 | 中出视频在线观看 | 精品国产鲁一鲁一区二区张丽 | 懂色av蜜臀av粉嫩av分享吧 | 久草资源网站 | 国产污视频在线播放 | 久久久av网站 | 午夜三级网站 | 亚洲av综合色区无码另类小说 | www.日韩在线观看 | 精品久久成人 | 99re国产| 国产久草视频 | 蜜色av| 亚洲一级黄色大片 | 国产三区在线成人av | av色站 | 午夜影院免费体验区 | 亚洲欧美在线一区二区 | 在线成人影视 | 亚洲插 | 西西人体www大胆高清 | 99re热视频| 福利电影在线播放 | 性色av网| 亚洲精品一区二区三区四区 | 国产不卡视频一区二区三区 | 特级西西444www高清大胆免费看 | 老师上课夹震蛋高潮了 | av色图| 黑人巨大猛烈捣出白浆 | 欧美激情网 | 成人久色 | 国模婷婷 | 亚洲精品一二三四区 | 欧美日韩一区二区区别是什么 | 97人人模人人爽人人少妇 | 在线免费视频一区 | 日韩在线观看视频一区二区三区 | 在线看的网站 | 日韩专区一区二区三区 |