2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  基于Android智能手機(jī)的多媒體遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)</p><p>  摘要:多媒體遠(yuǎn)程監(jiān)控是指通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)遠(yuǎn)程場(chǎng)景的音視頻監(jiān)控。本文主要介紹一種以Android智能手機(jī)為控制端,以個(gè)人電腦為服務(wù)器端,以攝像頭與話筒為主的多媒體設(shè)備為被控端的三點(diǎn)一線的遠(yuǎn)程監(jiān)控系統(tǒng);控制端和服務(wù)器端的網(wǎng)絡(luò)傳輸采用TCP協(xié)議,控制端和服務(wù)器端分別采用Android,Java實(shí)現(xiàn)。</p><

2、;p>  關(guān)鍵字:Android智能手機(jī),多媒體遠(yuǎn)程監(jiān)控,Socket管理器,Java多媒體框架</p><p><b>  中圖分類號(hào):</b></p><p><b>  一.背景</b></p><p>  遠(yuǎn)程監(jiān)控是指本地計(jì)算機(jī)通過(guò)遠(yuǎn)程監(jiān)控軟件發(fā)送指令給遠(yuǎn)程計(jì)算機(jī),從而控制遠(yuǎn)程的監(jiān)控設(shè)備采集當(dāng)?shù)匦畔ⅲ⒉粩鄬?/p>

3、信息返回給本地計(jì)算機(jī)的過(guò)程。</p><p>  遠(yuǎn)程監(jiān)控必須通過(guò)網(wǎng)絡(luò)才能實(shí)現(xiàn),位于本地的計(jì)算機(jī)是操縱指令的發(fā)出端,一般稱為控制端或客戶端,而非本地的計(jì)算機(jī)則通常叫做被控端或服務(wù)器端。因而現(xiàn)在的遠(yuǎn)程監(jiān)控軟件一般分為兩部分:一部分是客戶端程序(Client),另一部分是服務(wù)器端程序(Server),通常在使用前需要將客戶端程序安裝到控制端載體上,將服務(wù)器端程序安裝在被控端載體上,通過(guò)客戶端程序向服務(wù)器端程序發(fā)出訪問(wèn)

4、信號(hào),建立遠(yuǎn)程連接,然后通過(guò)這個(gè)遠(yuǎn)程連接雙方傳遞信息,實(shí)現(xiàn)遠(yuǎn)程控制。</p><p>  現(xiàn)今使用的遠(yuǎn)程控制軟件大都基于以上原理。而本文將介紹一種以Android智能手機(jī)為控制端,以個(gè)人電腦為服務(wù)器端,同時(shí)將多媒體設(shè)備控制程序從服務(wù)器端程序分離出來(lái)形成獨(dú)立程序的C/S+M(Media)架構(gòu)的多媒體遠(yuǎn)程監(jiān)控系統(tǒng)。</p><p><b>  系統(tǒng)結(jié)構(gòu)與實(shí)現(xiàn)</b><

5、;/p><p>  上文介紹了本文的背景,現(xiàn)在將從系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì),服務(wù)器端設(shè)計(jì),手機(jī)端設(shè)計(jì),多媒體設(shè)備控制程序設(shè)計(jì)四個(gè)方面介紹一下本系統(tǒng)的結(jié)構(gòu)與實(shí)現(xiàn)。下面先介紹一下系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)。</p><p>  1.系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)</p><p>  本系統(tǒng)采用的是一種在傳統(tǒng)的C/S架構(gòu)的基礎(chǔ)上改進(jìn)的C/S+M架構(gòu)。Android智能手機(jī)為客戶端(Client)即控制端,個(gè)

6、人電腦為服務(wù)器端(Server);本系統(tǒng)的改進(jìn)是將音視頻設(shè)備程序從傳統(tǒng)的服務(wù)器端程序分離出來(lái)獨(dú)立為多媒體設(shè)備控制程序(Media)。這樣改進(jìn)的好處是增強(qiáng)了系統(tǒng)各模塊的獨(dú)立性,便于系統(tǒng)的移植和維護(hù),同時(shí)也大大增加了代碼的可重用性。下面先看一下本系統(tǒng)的總體架構(gòu)圖:</p><p>  圖2-1 系統(tǒng)總體架構(gòu)圖</p><p>  如上圖2-1所示,本系統(tǒng)分三個(gè)大模塊,現(xiàn)在從總體上看個(gè)模塊的運(yùn)作

7、,服務(wù)器端程序啟動(dòng)后,初始化服務(wù)器端程序,等待手機(jī)端訪問(wèn)。手機(jī)端程序啟動(dòng)后,向服務(wù)器端發(fā)出訪問(wèn)信號(hào),服務(wù)器端收到信號(hào)核實(shí)信號(hào)后,雙方建立連接。手機(jī)端向服務(wù)器端發(fā)出操作指令;服務(wù)器端收到指令后解析處理指令,然后將處理后的指令傳給多媒體設(shè)備控制程序;多媒體設(shè)備控制程序根據(jù)收到的指令,初始化相關(guān)設(shè)備,執(zhí)行相關(guān)操作指令,采集信息,然后將信息傳給服務(wù)器端;服務(wù)器端將采集到的信息壓縮處理發(fā)送給手機(jī)端;手機(jī)端將信息讀取。從上面敘述中可大致看出本系統(tǒng)的

8、結(jié)構(gòu)。下面從每個(gè)模塊分別介紹其結(jié)構(gòu)與設(shè)計(jì)。</p><p><b>  服務(wù)器端設(shè)計(jì)</b></p><p>  服務(wù)器端程序?qū)⑦\(yùn)行在個(gè)人電腦上,用Java實(shí)現(xiàn)。下面從服務(wù)器端程序的架構(gòu)分析,各模塊的功能描述,接口定義三方面具體介紹服務(wù)器端程序設(shè)計(jì)。然后重點(diǎn)介紹一下指令處理模塊及其自定義的編解碼協(xié)議。</p><p>  現(xiàn)在先看一下服務(wù)器端程

9、序框架:</p><p>  圖2-2 服務(wù)器端功能模塊圖</p><p>  結(jié)合上圖,在這逐項(xiàng)描述各個(gè)模塊的功能:</p><p>  (1)初始化模塊:?jiǎn)?dòng)應(yīng)用程序后第一個(gè)運(yùn)行的模塊。它負(fù)責(zé)初始化應(yīng)用程序的運(yùn)行狀態(tài),獲取網(wǎng)絡(luò)IP地址/端口,用戶登入密碼等。</p><p> ?。?)連接監(jiān)聽(tīng)模塊:程序初始化后,開(kāi)始在指定端口進(jìn)行TCP監(jiān)

10、聽(tīng),等待遠(yuǎn)程連接。</p><p> ?。?)遠(yuǎn)程連接模塊:負(fù)責(zé)進(jìn)行實(shí)際的TCP連接和數(shù)據(jù)收發(fā)。當(dāng)手機(jī)端發(fā)出訪問(wèn)信號(hào),一旦服務(wù)器端核實(shí)接受,就分配新的Socket套接字完成TCP連接進(jìn)行數(shù)據(jù)通信。</p><p>  (4)指令處理模塊:將接收到的操作指令,進(jìn)行解析處理,分析出要操作的對(duì)象及對(duì)其相關(guān)操作。</p><p> ?。?)數(shù)據(jù)處理模塊:負(fù)責(zé)將要傳輸?shù)男畔⑦M(jìn)

11、行壓縮并根據(jù)自定義的編解碼協(xié)議封裝處理,然后交給遠(yuǎn)程連接模塊進(jìn)行傳輸。</p><p>  為了近一步理解各模塊間的協(xié)作關(guān)系,下面描述一下服務(wù)器端程序主要功能模塊問(wèn)的接口定義:</p><p>  表2-l 電腦端應(yīng)用程序模塊接口定義</p><p>  介紹完各個(gè)模塊的設(shè)計(jì)后,下面重點(diǎn)介紹一下指令處理模塊及其自定義的編解碼協(xié)議。 </p><p

12、>  指令處理模塊的主要功能是將接收到的操作指令,進(jìn)行解析處理,分析出要操作的對(duì)象及對(duì)其相關(guān)操作。它是先將數(shù)據(jù)流轉(zhuǎn)化成字符串,然后用indexOf()和substring()方法根據(jù)自定義的編解碼協(xié)議,將字符串分割,提取字符串中的信息?,F(xiàn)在先介紹一下自定義的編解碼協(xié)議的主要內(nèi)容。</p><p>  本編解碼協(xié)議定義了兩種信息類型:一種是指令型,用o表示(order);另一種是數(shù)據(jù)型,用d 表示(data)

13、。下面主要介紹第一種類型的結(jié)構(gòu)。 </p><p>  例如:o\\camera\\picture\\end 這段表示攝像機(jī)拍照指令,</p><p>  o\\camera\\picture\\save\\end 這段表示將拍的照片保存指令。</p><p>  下面給出編碼端和解碼端的主要代碼:</p><p><b>  編

14、碼端 </b></p><p>  String send = null;</p><p>  String type = null;</p><p>  String equipment = equipmentnull;</p><p>  String firstoperate = null;</p><p

15、>  String secondoperate = null;</p><p><b>  .</b></p><p><b>  .</b></p><p><b>  .</b></p><p>  send=send+type

16、 +"\\"+equipment+"\\"+firstoperate+"\\"+secondoperate+"\\"+"end";</p><p><b>  .</b><

17、;/p><p><b>  .</b></p><p><b>  .</b></p><p><b>  解碼端</b></p><p>  String incom = null;</p><p>  String[] cutcom=new String

18、[10];</p><p><b>  .</b></p><p><b>  .</b></p><p><b>  .</b></p><p>  BufferedReader reader =</p><p>  new BufferedReade

19、r(new InputStreamReader</p><p>  (socket.getInputStream()));</p><p>  incom=reader.readLine();</p><p>  incom.indexOf("\\");</p><p>  cutcom[0] =incom.substri

20、ng(0, incom.indexOf("\\"));</p><p>  incom=incom.substring(incom.indexOf("\\")+1);</p><p><b>  .</b></p><p><b>  .</b></p><p&g

21、t;<b>  .</b></p><p>  以上便是服務(wù)器端程序的結(jié)構(gòu)與設(shè)計(jì),下面將介紹一下手機(jī)端設(shè)計(jì)。</p><p><b>  3.手機(jī)端設(shè)計(jì)</b></p><p>  手機(jī)端程序?qū)⑦\(yùn)行在Android智能手機(jī)上,用Android自己的編程語(yǔ)言實(shí)現(xiàn)。與服務(wù)器端介紹方式相似,下面從手機(jī)端程序的架構(gòu)分析,各模塊的功

22、能描述,接口定義三方面具體介紹手機(jī)端程序設(shè)計(jì)。然后重點(diǎn)介紹一下Socket管理器的實(shí)現(xiàn)和應(yīng)用。 </p><p>  同樣先看一下手機(jī)端程序框架:</p><p>  圖2-3 手機(jī)端功能模塊圖</p><p>  結(jié)合上圖,在這逐項(xiàng)描述各個(gè)模塊的功能:</p><p> ?。?)初始化模塊:?jiǎn)?dòng)應(yīng)用程序后第一個(gè)運(yùn)行的模塊。它負(fù)責(zé)初

23、始化應(yīng)用程序的運(yùn)行狀態(tài),獲取環(huán)境參數(shù),設(shè)置全局變量。</p><p> ?。?)連接設(shè)置模塊:用戶設(shè)置連接IP地址、端口、登入密碼等。</p><p> ?。?)套接字管理器:管理套接字的狀態(tài)和使用。</p><p> ?。?)遠(yuǎn)程連接模塊:它負(fù)責(zé)進(jìn)行實(shí)際的網(wǎng)絡(luò)連接和與服務(wù)器端通信。</p><p>  (5)指令生成模塊:負(fù)責(zé)根據(jù)用戶的界面

24、操作,產(chǎn)生相應(yīng)的操作指令并根據(jù)自定義的編解碼協(xié)議封裝。</p><p> ?。?)媒體數(shù)據(jù)顯示模塊:將處理好的媒體信息在手機(jī)上進(jìn)行顯示或播放。</p><p> ?。?)數(shù)據(jù)處理模塊:將遠(yuǎn)程連接模塊收到的信息,進(jìn)行相應(yīng)處理將其轉(zhuǎn)化成手機(jī)上能顯示的信息。</p><p>  與服務(wù)器端介紹方式一樣,下面同樣描述一下手機(jī)端程序主要功能模塊間的接口定義:</p>

25、;<p>  表2-2 手機(jī)端模塊接口定義</p><p>  介紹完各個(gè)模塊的設(shè)計(jì)后,下面重點(diǎn)介紹一下Socket管理器的實(shí)現(xiàn)和應(yīng)用。 套接字管理器主要功能是管理套接字的狀態(tài)和使用。由于Android平臺(tái)中沒(méi)有Socket管理器的功能,為了便于Socket管理,我們自行實(shí)現(xiàn)了Socket管理器功能。其中的主要代碼如下:</p><p>  public class Sock

26、etConnectionManagement {</p><p>  protected static Socket socket = null;</p><p>  public static boolean establishConnection(String ipAddress, int port) {</p><p><b>  try {<

27、/b></p><p>  socket = new Socket(InetAddress.getByName(ipAddress), port);</p><p>  } catch (UnknownHostException e) {</p><p>  // TODO Auto-generated catch block</p><p

28、>  e.printStackTrace();</p><p>  } catch (IOException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p><b>  }</b><

29、;/p><p>  return socket.isConnected();</p><p><b>  }</b></p><p>  public static boolean isConnected() {</p><p>  if (socket != null)</p><p>  retu

30、rn socket.isConnected();</p><p><b>  else</b></p><p>  return false;</p><p><b>  }</b></p><p>  public static Socket getInstance() {</p>

31、<p>  return socket;</p><p><b>  }</b></p><p><b>  }</b></p><p>  下面給出一段Socket管理器應(yīng)用的實(shí)例的代碼:</p><p><b>  .</b></p><p&g

32、t;<b>  .</b></p><p><b>  .</b></p><p>  public Socket socket = null;</p><p><b>  .</b></p><p><b>  .</b></p><

33、p><b>  .</b></p><p>  if(SocketConnectionManagement.isConnected()){</p><p>  socket = SocketConnectionManagement.getInstance();</p><p>  }else{SocketConnectionMa

34、nagement.establishConnection(name, port);</p><p>  socket = SocketConnectionManagement.getInstance();</p><p><b>  }</b></p><p><b>  .</b></p><p>

35、;<b>  .</b></p><p><b>  .</b></p><p>  以上便是手機(jī)端程序的結(jié)構(gòu)與設(shè)計(jì),下面將介紹一下本文在架構(gòu)上改進(jìn)出的模塊——音視頻設(shè)備控制程序的設(shè)計(jì)。</p><p>  4.獨(dú)立的多媒體設(shè)備控制程序的設(shè)計(jì)</p><p>  本系統(tǒng)中多媒體設(shè)備控制程序是基于Ja

36、va多媒體框架實(shí)現(xiàn)的,故在介紹多媒體設(shè)備控制程序的設(shè)計(jì)之前,先介紹一下Java多媒體框架(JMF)。Java媒體架構(gòu)(JMF)是一個(gè)令人激動(dòng)的通用的API,它允許Java開(kāi)發(fā)者用許多不同的方法處理媒體。 JMF的組件結(jié)構(gòu)非常的靈活,它的組件一般可以分成三個(gè)部分: (1)Input描述某種被用于在進(jìn)程休息的時(shí)候作為一個(gè)輸入的媒體。 (2)process執(zhí)行某些輸入上的活動(dòng)。一個(gè)過(guò)程有一個(gè)明確的輸入和輸出。大量的過(guò)程可用

37、, 能被用于一個(gè)輸入或者一批輸入。這些過(guò)程能被聯(lián)系起來(lái),一個(gè)過(guò)程的輸出被用于另外一個(gè)過(guò)程的輸入。在這種風(fēng)格中,大量的過(guò)程可能被應(yīng)用于一個(gè)輸入。</p><p>  (3)Output 描述了媒體的某些目的地。</p><p>  了解了JMF的基本內(nèi)容后,現(xiàn)在介紹一下本系統(tǒng)多媒體設(shè)備控制程序的設(shè)計(jì)。首先看一下本模塊的結(jié)構(gòu)框架:</p><p>  圖2-4 多媒體設(shè)

38、備控制程序框架圖</p><p>  如上圖,多媒體設(shè)備控制程序分為兩個(gè)小模塊:一個(gè)是音頻程序,另一個(gè)是視頻程序。而且每個(gè)程序里都有獨(dú)立的操作指令線貫穿程序始終。因?yàn)檫@兩個(gè)程序?qū)崿F(xiàn)起來(lái)相似,現(xiàn)以視頻程序?yàn)槔?,介紹一下具體實(shí)現(xiàn)。</p><p><b>  .</b></p><p><b>  .</b></p>

39、;<p><b>  .</b></p><p>  public MainFrame(int n,String[] cutcom) //cutcom存儲(chǔ)操作指令</p><p><b>  { </b></p><p>  super("攝像頭程序");</p><

40、;p>  contentPane = (JPanel) this.getContentPane();</p><p>  this.captureDevice = getCaptureDeviceInfo();</p><p><b>  try {</b></p><p>  DataSource source=Manager.cre

41、ateDataSource</p><p>  (captureDevice.getLocator());</p><p>  DataSource cloneableSource = Manager.</p><p>  createCloneableDataSource(source);</p><p>  player = Manage

42、r.createRealizedPlayer</p><p>  (((SourceCloneable)cloneableSource).createClone());</p><p><b>  //獲取默認(rèn)格式</b></p><p>  formatControl = (FormatControl) player.</p>

43、<p>  getControl("javax.media.control.FormatControl");</p><p>  Format defaultFormat = formatControl.getFormat();</p><p><b>  //</b></p><p>  FileTypeDesc

44、riptor outputType = new FileTypeDescriptor</p><p>  (FileTypeDescriptor.MSVIDEO);</p><p>  ProcessorModel processorModel = new ProcessorModel(cloneableSource, new Format[]{ defaultFormat }, outp

45、utType);</p><p>  processor = Manager.createRealizedProcessor(processorModel);</p><p>  } catch (Exception e) {</p><p>  processException(e);</p><p><b>  }</b&

46、gt;</p><p>  visualComponent = player.getVisualComponent();</p><p>  File file = new File("F:/Myrecord/");</p><p>  m=System.currentTimeMillis();</p><p>  loc

47、atorString=String.valueOf(m)+".avi";</p><p>  locatorString = "file://" + locatorString;</p><p>  DataSource source = processor.getDataOutput();</p><p>  MediaLo

48、cator dest = new MediaLocator( locatorString );</p><p><b>  try {</b></p><p><b>  //本地文件傳輸</b></p><p>  fileWriter = Manager.createDataSink(source, dest);<

49、;/p><p>  fileWriter.open();</p><p>  fileWriter.start();</p><p>  } catch (Exception e) {</p><p>  processException(e);</p><p><b>  }</b></p&g

50、t;<p>  processor.start();</p><p>  player.start();</p><p><b>  .</b></p><p><b>  .</b></p><p><b>  .</b></p><p>

51、;<b>  }</b></p><p>  以上就是本系統(tǒng)的結(jié)構(gòu)與設(shè)計(jì),下面看一下系統(tǒng)的測(cè)試過(guò)程和結(jié)果。</p><p><b>  測(cè)試</b></p><p>  軟件測(cè)試是軟件設(shè)計(jì)、實(shí)現(xiàn)中一個(gè)非常重要的工作階段。通過(guò)完整的測(cè)試,系統(tǒng)驗(yàn)證正確實(shí)現(xiàn)了必需的功能,同時(shí)保證了軟件在各種邊界條件下的證確性、強(qiáng)壯性和高效性。這

52、里我們采用黑盒測(cè)試和白盒測(cè)試相結(jié)合的方式對(duì)系統(tǒng)進(jìn)行測(cè)試。下面是系統(tǒng)運(yùn)行時(shí)的兩張圖片:</p><p>  圖3-1攝像頭采集到的信息在服務(wù)器端播放 圖3-2 手機(jī)端播放的遠(yuǎn)程服務(wù)器端的信息</p><p><b>  四.總結(jié)</b></p><p>  本文介紹了基于Android智能手機(jī)的多媒體遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì),

53、提出了一種新的架構(gòu)C/S+M架構(gòu),大大提升了系統(tǒng)的性能,同時(shí)增加了系統(tǒng)的移植性和代碼的可重用性。并比較詳細(xì)的介紹了系統(tǒng)的整體與各模塊的結(jié)構(gòu)與實(shí)現(xiàn)。在此期間重點(diǎn)介紹了服務(wù)器端指令處理模塊及其自定義的編解碼協(xié)議,手機(jī)端Socket管理器的實(shí)現(xiàn)與應(yīng)用,還有Java多媒體框架的基本內(nèi)容與應(yīng)用。希望本文能對(duì)致力于遠(yuǎn)程監(jiān)控行業(yè)的同行,有一些啟發(fā)和幫助。</p><p><b>  參考文獻(xiàn):</b>&l

54、t;/p><p>  [1]秦耕,程克非,張亞奎 基于智能手機(jī)的電腦遠(yuǎn)程控制系統(tǒng)設(shè)計(jì) 微計(jì)算機(jī)信息 2009.1.7 P22-24</p><p>  [2]熊利祥,呂鋒 基于JMF的遠(yuǎn)程視頻監(jiān)控系統(tǒng) 中國(guó)科技論文在線 P1-6</p><p>  [3]郭春雷,李祥 基于J2ME平臺(tái)的手機(jī)遠(yuǎn)程監(jiān)控軟件的分析與實(shí)現(xiàn) 計(jì)算機(jī)系統(tǒng)應(yīng)用 2005年第11期 P86-88&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論