日韩性视频-久久久蜜桃-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端 源碼,快來下載吧!

總結

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

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

主站蜘蛛池模板: 日本老小玩hd老少配 | 国产夫妻在线观看 | 精品一区二区三区在线观看视频 | 免费成人深夜小野草 | 精品国产一区二区三区性色av | 国产精品成人aaaa在线 | 五月天在线| 中文字幕在线观看一区二区三区 | 91资源在线观看 | 中文字幕在线观看视频网站 | 少妇福利视频 | 日韩av激情 | 麻豆传媒一区二区三区 | 午夜一级免费 | 福利一区二区在线观看 | 国产二区视频 | 久久传媒| 性生活免费网站 | 久久精品视频在线免费观看 | 久久国产精品免费 | 一区二区三区免费播放 | 中文字幕人妻一区 | 国产人与禽zoz0性伦 | 免费福利影院 | 在线不卡一区二区 | 中日韩欧美在线观看 | 蝌蚪av| 欧美日韩中文字幕一区二区 | 欧美偷拍视频 | 蜜桃av噜噜一区二区三区小说 | 亚洲三级国产 | 免费中文字幕视频 | 国产亚洲色婷婷久久99精品91 | 日本视频不卡 | 熟妇人妻无码xxx视频 | 日本高清视频免费看 | 色一区二区三区四区 | 亚洲精品视频观看 | 国产欧美久久久精品免费 | 在线免费观看黄视频 | 深爱五月激情网 | 在线观看欧美 | 丰满岳乱妇国产精品一区 | 中文国产视频 | 成年人免费视频观看 | 亚洲综合免费观看高清完整版在线 | 伊人影院综合 | 亚洲国产精品视频一区二区 | 九九热精品 | 亚洲最大的网站 | 日本一区视频在线播放 | 国产精品传媒一区二区 | 两性囗交做爰视频 | 亚洲综合日韩 | 欧美毛片基地 | 久久神马影院 | 国产黑丝av| 三级在线观看网站 | 天天色天天干天天色 | 成人av影视在线观看 | 精品久久福利 | 久一区二区三区 | 黄a大片 | 欧美精品xx | 高跟鞋av| 黄色三级大片 | 午夜不卡av免费 | 不卡视频一区二区三区 | 亚洲网站免费 | 成人a级免费视频 | 成人亚洲精品777777ww | 国产区精品视频 | 国产在线视频91 | 成人做爰66片免费看网站 | av手机观看 | 午夜影院在线观看18 | 欧美老女人性生活视频 | 少妇愉情理伦片bd | 国产精品三级av | 国产激情一区二区三区四区 | 亚洲国产毛片 | 国产免费脚交足视频在线观看 | 亚洲色图13p| 日韩视频免费观看 | 法国伦理少妇愉情 | 手机看片1024国产 | 人妻少妇无码精品视频区 | 伊人av网站 | 成熟人妻av无码专区 | 在线免费观看视频你懂的 | 亚州av成人| 岛国a视频| 成人免费自拍视频 | 色多多黄色 | 女同久久另类69精品国产 | 国产亚洲电影 | 成人免费网站在线观看 | 极品女神无套呻吟啪啪 | 校霸被c到爽夹震蛋上课高潮 |