如何實現監控手機屏幕?(附源碼)

2021-01-18 DotNet

(給DotNet加星標,提升.Net技能)

cnblogs.com/justnow/p/13728946.html

最近做了一個項目,裡面有涉及到監控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、項目源碼下載

https://pan.baidu.com/s/1a1wYlge9vScUYe72S2q76A(提取碼: 1234) 


2、可直接部署版本下載https://pan.baidu.com/s/1b1hKp4gb0LJ54AIVrkO3WQ(提取碼: 1234) 


另外:GGTalk V7.0 已於2020.09.30發布,全新的 服務端+PC端+Android端 源碼,快來下載吧https://www.cnblogs.com/justnow/p/4990065.html!


- EOF -




看完本文有收穫?請轉發分享給更多人

關注「DotNet」加星標,提升.Net技能 

好文章,我在看❤️

相關焦點

  • 電腦如何實現屏幕錄像監控
    在某些企業因工作需要對業務的操作流程要進行監督,也有些公司電腦保存了重要文件要對其實時監控。在這科技發達的時代,市面上出現了很多電腦監控軟體,它們通過在後臺的定時截屏來實現屏幕監控還原一個個時間點電腦的操作界面,但缺點就是不能完整地展現出整個電腦從開機時操作的所有流程。
  • 監控另一個手機屏幕的軟體
    如今手機的使用場景越來越多,已經不僅限於接打電話發簡訊的簡單用途了,而是變成了我們生活中不可分開的一部分,生活中的各項服務在手機上就可以辦理完成,而不需要跑去營業廳和生活服務網點,除了生活以外,工作有的時候也會在手機上完成,這樣我們可能就有一部分人使用了兩部三部手機,工作一個手機生活一個手機來扮演者各個場景的角色
  • 如何實現公司對員工電腦屏幕實時監控?
    了解決這些問題的有效方法之一是選擇安企神信息安全管理軟體對員工電腦屏幕實時監控,提高員工的工作效率。下面我們來看看安企神信息安全管理軟體的使用安裝步驟1、我們到網上搜索「安企神軟體」下載,再將裡面的被控端軟體安裝到員工電腦上,管理端軟體安裝到老闆電腦中。2、安裝過程與普通程序一樣一步步安裝即可。
  • 手機同步顯示電腦屏幕怎樣實現?
    對於一些面積比較大的會議室來說,做到會議室後端的參會人員看清楚會議室中的投影或者液晶顯示屏會比較費力,而通過現有的手機與會議室連接投影儀的演示電腦屏幕同步則可以很好的解決這個問題。會議室後端的與會者只需要通過手機電腦屏幕同步軟體RHUB連通寶即可通過瀏覽器或客戶端實時觀看跟投影一樣的內容。
  • 監控多塊屏幕要顯示一樣的畫面,如何實現?
    寫字樓的監控項目,要求機房、前臺、會議室、保安室以及會客廳等8個不同的地方通過顯示器預覽攝像機的畫面,想在每個地方放一臺錄像機,有沒有攝像機可以被8臺錄像機同時添加?怎麼解決這個問題呢?可能不少朋友都遇到過這樣多屏幕同時顯示的需求,比如飯店的包廂、小區或公寓等場景,需要在不同的區域安裝顯示器輸出相同的監控畫面。根據需求的不同,本期我們一起來了解這方面的解決方案。
  • 區域網遠程監控如何實現?具體有哪些步驟?
    工作中網管有時候需要管理公司電腦,經常遇到區域網遠程監控、區域網遠程控制的問題。公司一般如何區域網遠程監控,有不少區域網監控軟體,是可以進行遠程監控和遠程控制,這兩個功能是結合起來的。如果公司要對每個員工上網行為進行監控,從員工的開機,上網,聊天,軟體運行,文件操作,屏幕監控等,這些都會被遠程監控。除此之外,公司有時候需要,還要進行遠程控制,比如需要傳文件,下載文件,關機,重啟,控制員工電腦等。那麼,區域網遠程監控如何實現?具體有哪些步驟?區域網遠程監控步驟1.以安裝好超級眼區域網監控軟體為例,管理員電腦安裝好管控端,員工電腦安裝員工端。
  • IP-guard屏幕監控
    IP-guard屏幕監控模塊可以實時查看用戶的桌面行為並記錄屏幕畫面,掌握企業內部真實的工作狀態。
  • 自己動手 實現手機APP對MCGS觸控螢幕的遠程監控l
    例如,在儀器儀表行業,企業使用EMCP物聯網雲平臺可免去複雜繁瑣的編程和伺服器部署工作,通過PC端就能快速便捷獲得水質、空氣汙染等遠程監控情況;在農業應用方面,智能大棚和養殖場只需要藉助EMCP物聯網雲平臺實現無線遠程監控,從而轉型成智慧農業行業標杆。
  • 如何監控區域網電腦屏幕
    很多企業管理人員想要實時監控區域網電腦屏幕內容,這樣可以實時查看其它電腦上的各軟體運行情況,也可以了解各員工的上班情況。另外一些計算機學校,機房老師通過區域網屏幕監控,可以實時了解學生上機的學習情況。視頻演示:1,首先在網上下載LSC區域網屏幕監控系統的安裝包,然後在管理人員的電腦上安裝上」LSC控制端(老闆端)」。2,運行軟體後,點擊「文件」,「添加員工」,然後在員工名稱處輸入使用該電腦的員工或學生的姓名,如張三,李四,王五,趙六,埠號則使用默認的23101。
  • 如何設置屏幕錄像來監控遠程控制電腦的操作
    家長怎麼監控孩子的電腦操作記錄?網管怎麼監控電腦使用記錄?公司老闆想監控員工上網記錄呢?有一個方法,就是當你的電腦被控制時,可以啟動屏幕錄像,來監控電腦的操作記錄、上網記錄等,以便查找問題和保護個人隱私。
  • 讓人恐懼的手機監控APP全體驗
    只需要上網搜索、就能找到併購買一款手機監控應用,然後將其安裝到目標手機中,就能實現輕鬆查看被監控手機的微信、QQ、位置、通話、簡訊、通訊錄、相冊,甚至還可以進行遠程拍照、監聽、錄音、實時截屏、實時語音、實時查看手機屏幕等的操作。這類手機應用很貼心,還分為了安卓版和蘋果版,不過由於ios的封閉性,需要越獄後才能進行安裝使用,這也就限制了其使用範圍。
  • 終於可以,遠程監控對方手機了
    他們是這樣問的:怎麼更改微信號……怎麼撤回2分鐘後的消息……怎麼悄無聲息的監控對方手機………… ……總之,就是用實現不了功能,來難為蛋弟。我太難了~不過,遠程監控幫助對方手機,小編還是能滿足一下滴。但想悄無生息,那是西遊記看多了……真把自己當神仙啦?
  • 基於IOCP的遠程屏幕監控系統
    摘要:利用Windows提供的完成埠(IOCP)模型,實現C/S模式下遠程屏幕監控伺服器同時對大量並發客戶進行屏幕監控的功能,可以根據需要決定是否開始遠程控制。用IOCP對多線程進行調度和管理,高效地利用系統資源。
  • 有了視頻監控為什麼還要屏幕監控?
    ,通過視頻監控進行人員的行為約束,直接高效。      今天,信息化的快速發展,大部分企業工廠已完全信息化電腦辦公和生產,而如何有效管理員工,上班時間只做與工作有關的事情,電腦不隨便互聯或者接入,以防造成網絡擁堵和帶來信息安全問題。
  • 如何對區域網內電腦屏幕進行監控?
    此刻,各企業更需要一個智能、易用的電腦監控軟體,比如:安企神電腦管理軟體,用軟體的方式來管控和牽制職工的行為,進而優化企業內控管理,同時也優化了企業績效考核指標,令企業可以在激烈的市場競爭中依然保持堅強不屈的活力。那麼如何對區域網內電腦屏幕進行監控呢?1、首先,你需要在百度上下載並且安裝「安企神電腦管理軟體」。
  • 如何實時監控查看同一WIFI下其它電腦桌面屏幕
    因為工作或生活的需要,有時我們想要實現同一WIFI下的電腦屏幕監控的功能,通過屏幕的實時監控,可以查看到其它電腦上的桌面變化,了解其電腦的使用情況。在一些工廠或製造企業中,通過屏幕的實時監控,可以遠程了解其它電腦上各軟體的運行情況。
  • 怎麼屏幕監控員工電腦?具體操作方法!
    怎麼屏幕監控員工電腦?具體操作方法!對於一些企業管理者來說,如何監控員工的電腦是頭等大事,很多時候對員工電腦監管的不力引發了一系列嚴重後果,甚至可能會影響企業的命運。大部分監控員工電腦的屏幕監控軟體都能夠對員工計算機端進行一系列全方位的管理,不僅僅能夠限制員工計算機端的硬體接口,同時還可以限制訪問的程序訪問時間等等,這就讓一些企業中的內鬼無法利用管理者的疏忽來盜取機密文件。
  • 如何通過電腦監控軟體對屏幕進行自動後臺錄像
    一些企業因為工作需要,需要對某些業務軟體的操作流程進行監控,一些家長需要對小孩使用電腦的過程進行監控,普通電腦監控軟體通過在後臺定時截屏來實現監控功能,但屏幕截圖只能真實還原一個一個時間點的操作畫面,而通過對屏幕自動在後臺進行錄像,則可以還原整個電腦開機期間所有時間點的操作畫面。
  • 如何監控並錄製電腦屏幕
    電腦上保存了公司機密文件要怎麼監控?等等問題全部一湧而上。其實只要一個簡單的方法,就是當你的電腦被開機使用時,啟動屏幕錄像系統來監控電腦開機操作的整個過程,這樣既可以督促孩子也可以保護好自己電腦上的重要文件。1:首先在你使用的電腦上安裝樓月屏幕自動錄像軟體,按照軟體提示步驟一步步完成軟體的安裝。2:在軟體的主界面上點擊「設置」、「選項」。
  • 向日葵3.1發布:手機遠程控制手機 可旋轉屏幕
    ­  向日葵遠程控制軟體是一款簡單易用的遠程協助工具,適配Windows、Mac、Linux、iOS、Android多個平臺相互遠程控制,包括電腦控制電腦、手機控制電腦、手機控制手機、電腦控制手機,具有遠程協助、遠程開機、桌面監控、桌面錄像、文件分發等功能。