《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Android的手機(jī)多媒體應(yīng)用軟件的設(shè)計(jì)與實(shí)現(xiàn)
基于Android的手機(jī)多媒體應(yīng)用軟件的設(shè)計(jì)與實(shí)現(xiàn)
2015年微型機(jī)與應(yīng)用第10期
李婷婷,孟利民
(浙江工業(yè)大學(xué) 浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,浙江 杭州 310023)
摘要: 為了實(shí)現(xiàn)基于Android手機(jī)平臺的音頻會話和圖像上傳,設(shè)計(jì)了一個(gè)基于Android手機(jī)的多媒體應(yīng)用軟件。首先介紹了Android端的多媒體發(fā)展趨勢,然后介紹了如何設(shè)計(jì)并實(shí)現(xiàn)在手機(jī)端的VOIP以及利用FTP協(xié)議上傳圖像。測試結(jié)果表明,用戶可以通過軟件客戶端與PC客戶端進(jìn)行音頻會話,并有良好的通話體驗(yàn),登錄FTP服務(wù)器可以查看到通過軟件上傳的圖像。
關(guān)鍵詞: Android 多媒體應(yīng)用 VoIP ftp
Abstract:
Key words :

  摘  要: 為了實(shí)現(xiàn)基于Android手機(jī)平臺的音頻會話和圖像上傳,設(shè)計(jì)了一個(gè)基于Android手機(jī)的多媒體應(yīng)用軟件。首先介紹了Android端的多媒體發(fā)展趨勢,然后介紹了如何設(shè)計(jì)并實(shí)現(xiàn)在手機(jī)端的VOIP以及利用FTP協(xié)議上傳圖像。測試結(jié)果表明,用戶可以通過軟件客戶端與PC客戶端進(jìn)行音頻會話,并有良好的通話體驗(yàn),登錄FTP服務(wù)器可以查看到通過軟件上傳的圖像。

  關(guān)鍵詞: Android;多媒體應(yīng)用;VOIP;FTP

0 引言

  多媒體技術(shù)[1]是指包括對文字、圖像、聲音以及視頻等媒體數(shù)據(jù)進(jìn)行處理分析、傳輸以及應(yīng)用的技術(shù)。市場上出現(xiàn)的多種多媒體應(yīng)用不僅可以幫助人們進(jìn)行日常溝通,還有多種功能,包括了視頻監(jiān)控、IP電話[2]以及即時(shí)消息等。Android[3]是一個(gè)開放自由的移動(dòng)終端平臺,以其開源、免費(fèi)等特點(diǎn)吸引了大量開發(fā)研究人員和廠商,并獲得了用戶的喜歡,是目前市場上主流的移動(dòng)設(shè)備。隨著手機(jī)硬件性能的提高和移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)的發(fā)展,Android應(yīng)用程序?qū)碛袕?qiáng)大的多媒體數(shù)據(jù)處理能力,手機(jī)上的多媒體應(yīng)用將會成為手機(jī)用戶的焦點(diǎn),給人們帶來極大的便利性[4]。

1 多媒體系統(tǒng)框架設(shè)計(jì)

  多媒體交互系統(tǒng)主要包括Android手機(jī)客戶端、服務(wù)器端和PC平臺端。Android手機(jī)客戶端需要實(shí)現(xiàn)音頻的收發(fā),發(fā)送端需要實(shí)現(xiàn)的功能包括音頻的采集、編碼壓縮、RTP打包封裝以及發(fā)送,而接收端需要實(shí)現(xiàn)接收RTP包并且通過解碼來播放音頻。手機(jī)客戶端還需要向服務(wù)器發(fā)送SIP消息來邀請音頻通話,并建立FTP連接來傳送圖片和錄像。FTP服務(wù)器主要負(fù)責(zé)管理圖片和錄像;SIP消息作為整個(gè)系統(tǒng)的控制信令,SIP服務(wù)器負(fù)責(zé)管理登錄以及轉(zhuǎn)發(fā)SIP消息;媒體轉(zhuǎn)發(fā)服務(wù)器負(fù)責(zé)轉(zhuǎn)發(fā)手機(jī)客戶端和PC平臺端發(fā)送的音頻數(shù)據(jù)。多媒體系統(tǒng)的框架如圖1所示。

001.jpg

2 客戶端軟件設(shè)計(jì)

  客戶端功能主要包括語音通話模塊、圖像和本地錄像上傳功能模塊。其中,語音通話模塊實(shí)現(xiàn)邀請并建立語音通話實(shí)現(xiàn)實(shí)時(shí)通話。圖像和本地錄像上傳功能模塊實(shí)現(xiàn)FTP連接并將圖像和本地錄像上傳到服務(wù)器上。

  2.1 語音通話模塊的設(shè)計(jì)

  主叫用戶需要進(jìn)行語音聊天時(shí),需要向SIP服務(wù)器發(fā)送INVITE的SIP消息,其中SIP消息的消息體為XML文本數(shù)據(jù)。XML消息體內(nèi)容如下所示:

  <xml version="1.0"encoding="UTF-8"?>

  <speech>

  <audio>G.711</audio><!--音頻編解碼協(xié)議-->

  <kbps>8000</kbps><!--采樣率-->

  <self>192.168.1.112 UDP 5200</self>

  <!--地址與端口號-->

  <from_number>1000</from_number>

  <!--主叫號碼-->

  <to_number>1001</to_number><!--被叫號碼-->

  </speech>

  此消息體中包含了會話媒體格式、主叫用戶的號碼、被叫用戶的號碼等信息。SIP服務(wù)器接收到消息后,開始分配資源并且回復(fù)主叫用戶Tring消息。接著服務(wù)器將添加了分配好的資源消息的邀請消息轉(zhuǎn)發(fā)給被叫用戶。被叫用戶收到邀請消息后,如果同意進(jìn)行語音通話,則回復(fù)200 OK給SIP服務(wù)器。最后主叫用戶接收到SIP服務(wù)器轉(zhuǎn)發(fā)的200 OK消息,此時(shí)雙方就可以進(jìn)行音頻通話了。若此時(shí)Android手機(jī)客戶端是主叫用戶,則跳入主叫音頻會話界面;若為被叫用戶則跳轉(zhuǎn)到被叫音頻會話界面。當(dāng)通話中的任意一方想要結(jié)束通話時(shí),可以選擇掛斷,并向SIP服務(wù)器發(fā)送BYE SIP消息。SIP服務(wù)器收到掛斷消息后,轉(zhuǎn)發(fā)給另一方后開始釋放資源。被掛斷用戶收到掛斷消息后回復(fù)200 OK給服務(wù)器,由服務(wù)器轉(zhuǎn)發(fā)此消息給主掛斷用戶。語音通話建立和結(jié)束的過程如圖2所示。

002.jpg

  在Android手機(jī)端上實(shí)現(xiàn)與平臺語音通話,不僅包括發(fā)送端部分也包括接收端部分。發(fā)送端需要實(shí)現(xiàn)原始PCM音頻數(shù)據(jù)采集、音頻數(shù)據(jù)編碼和打包發(fā)送。接收端需要實(shí)現(xiàn)音頻數(shù)據(jù)包的接收以及解碼和PCM音頻數(shù)據(jù)的播放。音頻會話框架圖如圖3所示。

003.jpg

  從Android手機(jī)硬件麥克風(fēng)獲取原始的PCM音頻數(shù)據(jù),通過對其進(jìn)行G711壓縮編碼,使得減少發(fā)送到網(wǎng)絡(luò)上的碼率,調(diào)用jlibrtp庫用RTP格式數(shù)據(jù)包將壓縮后的G711數(shù)據(jù)打包發(fā)送到網(wǎng)絡(luò)上。RTP數(shù)據(jù)包的接收是通過新建一個(gè)RTPRecieve類實(shí)現(xiàn)jlibrtp中的RTPAppIntf回調(diào)接口實(shí)現(xiàn)的。接收的RTP數(shù)據(jù)包通過G711解碼還原成原始PCM數(shù)據(jù)流,此時(shí)經(jīng)過解碼得到的PCM數(shù)據(jù)流并不直接拿去播放,而是先放在緩存中,再由播放線程來播放,數(shù)據(jù)接收解碼和數(shù)據(jù)播放置于兩個(gè)不同的線程中,不僅可以提高網(wǎng)絡(luò)的容錯(cuò)能力,還可以增強(qiáng)系統(tǒng)的健壯性。音頻會話流程圖如圖4所示。

005.jpg

  軟件中的音頻采集和播放分別是根據(jù)Android平臺下的AudioRecorder和AudioTrack集合框架類實(shí)現(xiàn)的。經(jīng)過流程圖步驟,基于Android的音頻通話的實(shí)現(xiàn)基本完成。

  2.2  圖像和本地錄像上傳模塊的設(shè)計(jì)

  此模塊的主要功能是將Android手機(jī)拍照下來的圖像和錄像使用FTP協(xié)議上傳到服務(wù)器上。FTP會話主要包括獲取配置信息、請求連接服務(wù)器、登錄、數(shù)據(jù)上傳以及斷開連接釋放資源,具體流程圖如圖5所示。

005.jpg

  在上傳文件之前,軟件客戶端需要向SIP服務(wù)器發(fā)送NOTIFY消息來獲取FTP信息。NOTIFY消息的消息體內(nèi)容如下。

  <?xml version="1.0"encoding="UTF-8"?>

  <ftpinfo_query>

  <!--此節(jié)點(diǎn)標(biāo)識ftp信息獲取查詢-->

  </ftpinfo_query>

  SIP服務(wù)器接收到此NOTIFY消息后開始解析xml消息,當(dāng)解析出ftpinfo_query節(jié)點(diǎn)后,回復(fù)200OK和FTP連接信息。200 OK的SIP消息體的內(nèi)容如下。

  <?xml version="1.0"encoding="UTF-8"?>

  <ftpinfo_query_response>

  <!--此節(jié)點(diǎn)標(biāo)識ftp信息回應(yīng)-->

  <result>0 or 1</result>

  <server_ip>ftp服務(wù)器ip</server_ip>

  <!--FTP服務(wù)器的ip地址-->

  <username>用戶名</username>

  <pwd>密碼</pwd>

  </ftpinfo_query_response>

  當(dāng)Android軟件客戶端接收到此SIP消息,并解析出ftpinfo_query_response節(jié)點(diǎn)時(shí),將result值、server_ip、用戶名以及密碼解析出來并存到自定義的FtpInfo中。然后初始化FTP,并通過openConnect()函數(shù)來打開FTP服務(wù)。在openConnect()函數(shù)中,F(xiàn)TPClient為FTP連接,通過構(gòu)造函數(shù)傳進(jìn)來的參數(shù)建立,首先通過ftpClient.connect()來連接服務(wù)器,再通過ftpClient.login()登錄到服務(wù)器。FTP服務(wù)打開之后,就可以對圖像文件或者錄像文件進(jìn)行上傳操作。首先生成需要上傳的文件:File file=new File(localpath),參數(shù)localpath為本地文件的名稱,通過CreatFtpPath()函數(shù)生成遠(yuǎn)程FTP服務(wù)器的對應(yīng)路徑名稱,最后通過ftp.uploading()函數(shù)上傳文件,可通過返回值result來判斷上傳是否成功。在uploading()函數(shù)中,首先如果遠(yuǎn)程的服務(wù)器沒有上傳的目錄則需創(chuàng)建,則需對當(dāng)前FTP目錄初始化,并設(shè)置二進(jìn)制文件上傳和設(shè)置流傳輸模式,在改變FTP目錄后,需要判斷本地文件為多個(gè)還是單個(gè),如果是多個(gè)則調(diào)用上傳函數(shù)uploadingMany()來實(shí)現(xiàn)上傳,若是單個(gè)則調(diào)用uploadingSingle()來實(shí)現(xiàn)上傳。在uploadingMany()中反復(fù)調(diào)用uploadingSingle()來實(shí)現(xiàn)多個(gè)文件的上傳。在上傳函數(shù)中,首先需要?jiǎng)?chuàng)建輸入流inputStream,文件上傳完畢后關(guān)閉文件流。上傳結(jié)束后需要結(jié)束FTP服務(wù)來釋放對應(yīng)的資源。

3 效果演示

006.jpg

  在實(shí)驗(yàn)室WIFI條件下,軟件客戶端在摩托羅拉XT910(Android 4.1.2)和HTC One V(Android 4.0.3)設(shè)備上測試通過,成功實(shí)現(xiàn)了音頻通話以及圖像的上傳。如圖6所示,其中圖6(a)為手機(jī)客戶端音頻被呼叫界面,圖6(b)為Android手機(jī)端語音通話界面,圖6(c)為PC端音頻會話界面,語音會話過程中通話流暢,延時(shí)較小。圖6(d)為手機(jī)軟件端圖像上傳界面,上傳成功后可以登錄FTP服務(wù)器看到上傳的圖像,如圖6(e)所示。

4 結(jié)論

  隨著Android智能手機(jī)的普遍使用和移動(dòng)互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,在Android手機(jī)上開發(fā)越來越廣泛。在Android手機(jī)上開發(fā)音頻通話,不僅有較好的通話體驗(yàn),并且不會產(chǎn)生通信費(fèi)用,只是消耗一定的流量。通過Android手機(jī)拍照和錄像的便利性,能夠存儲于手機(jī)中并且根據(jù)需求實(shí)現(xiàn)上傳圖像和錄像。軟件客戶端能夠滿足人們對多媒體應(yīng)用軟件的需求。

參考文獻(xiàn)

  [1] 史元春,徐光祐,高原.中國多媒體技術(shù)研究:2011[J].中國圖象圖形學(xué)報(bào),2012,17(7):741-747.

  [2] 賀丹丹,施展.基于Android的VoIP系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2011,34(6):28-31.

  [3] BURNETTE E. Hello, Android: introducing Google′s mobile development platform[M]. Pragmatic Bookshelf, 2009.

  [4] 朱雷堅(jiān).基于Android的實(shí)時(shí)語音通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2013.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 五月激情六月 | 五月天婷婷在线观看 | 色婷婷久久综合中文网站 | 国产精品综合 | 国产亚洲欧美日韩综合另类 | 韩国av片永久免费 | 狠狠久| 日本不卡一区二区三区四区 | 中文字幕天天躁夜夜狠狠综合 | 九九视频只有精品六 | 精品视频免费播放 | 黄色成人小视频 | 九九久久精品国产免费看小说 | 福利小视频在线播放 | 久久国内精品视频 | 欧美a在线看| 天天操狠狠干 | 试看120秒非会员体险区一二 | 欧美成人一区二区三区不卡 | 久99久精品视频免费观看v | 97在线碰| 久久99影院| 婷婷丁香花麻豆 | 成人国产一区二区 | 激情影院网站 | 国产一区视频在线免费观看 | 久久999视频 | 国产高清成人mv在线观看 | 99pao成人国产永久免费视频 | 国产精品一区二区国产 | a级毛片免费观看视频 | 亚洲欧美日产综合在线网 | 国产亚洲精品片a77777 | 99国产精品九九视频免费看 | 国产女人久久精品 | 国内a级毛片免费··· | 六月激情婷婷 | 国产精品推荐天天看天天爽 | 欧美在线观看一区 | 老熟人老女人国产老太 | 婷婷开心六月久久综合丁香 |