專利名稱:一種實現(xiàn)Android手機語音對講的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊技術(shù)領(lǐng)域,主要適用于實現(xiàn)Android手機語音對講的方法。
背景技術(shù):
在程控電話布線不方便的區(qū)域及惡劣的環(huán)境中,IP語音通話顯得尤為重要,而現(xiàn)有的手機自帶的功能一般只能進(jìn)行錄音播放,實時性非常差。在這種情況下,利用3G網(wǎng)絡(luò)進(jìn)行實時IP語音通話,不失為一種簡單有效的方法?,F(xiàn)階段,Android系統(tǒng)日趨完善和穩(wěn)定,在此基礎(chǔ)上進(jìn)行的應(yīng)用軟件的開發(fā),已經(jīng)成為一種可能,并不斷推出新的應(yīng)用。為我們在此平臺上進(jìn)行I P語音的應(yīng)用開發(fā)提供了可靠的支持。另外,在3G網(wǎng)絡(luò)方面,國家已投入大量的人力物力進(jìn)行支持,普及性已比較高。同時,WIFI熱點的布置已經(jīng)相當(dāng)容易,無線路由器等硬件的發(fā)展也比較成熟,在網(wǎng)絡(luò)方面為我們的應(yīng)用提供了必要的條件。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種實實現(xiàn)Android手機語音對講的方法,它解決了程控電話需要布置線路才能通話的問題。為解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)Android手機語音對講的方法包括在發(fā)送端手機,獲取音頻采樣數(shù)據(jù),將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端;在服務(wù)端,建立接入端地址數(shù)據(jù)表,將接收的音頻采樣數(shù)據(jù)存入接入端地址數(shù)據(jù)表中,并將音頻數(shù)據(jù)發(fā)送到接收端手機;在接收端手機,對由服務(wù)端發(fā)送過來的音頻數(shù)據(jù)進(jìn)行解析播放;通過多線程技術(shù)在手機端同時實現(xiàn)發(fā)送端與接收端的服務(wù)。進(jìn)一步的,所述在發(fā)送端手機,獲取音頻采樣數(shù)據(jù)包括在發(fā)送端手機,通過調(diào)用Android平臺的多媒體組件Audio Record,完成音頻數(shù)據(jù)的捕捉。進(jìn)一步的,還包括在發(fā)送端手機,設(shè)定音頻的采樣大小,并按設(shè)定的采樣大小獲取音頻數(shù)據(jù)。進(jìn)一步的,所述在發(fā)送端手機,設(shè)定音頻的采樣大小,并按設(shè)定的采樣大小獲取音頻數(shù)據(jù)包括在發(fā)送端手機,通過Android平臺的Audio Record組件設(shè)定音頻通道為CHANNEL_C0NFI⑶RATI0N_M0N,編碼方式為ENC0DING_PCM_16BIT后獲得音頻的采樣大小,并按設(shè)定采樣大小獲取音頻數(shù)據(jù)。進(jìn)一步的,所述在發(fā)送端手機,將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端包括建立基于TCP協(xié)議的服務(wù)器,通過套接字將發(fā)送端手機取得的采樣音頻數(shù)據(jù)發(fā)送到服務(wù)端。進(jìn)一步的,所述在服務(wù)端,建立接入端地址數(shù)據(jù)表,將接收的音頻采樣數(shù)據(jù)存入接入端地址數(shù)據(jù)表中,并將音頻數(shù)據(jù)發(fā)送到接收端手機,包括在服務(wù)端內(nèi)存中建立接入端地址數(shù)據(jù)表,將發(fā)送端手機的地址、接收端手機的地址存入接入端地址數(shù)據(jù)表中,通過比對服務(wù)器中發(fā)送端和接收端的地址識別出發(fā)送端手機,并將發(fā)送端手機的音頻數(shù)據(jù)發(fā)送給接收夂而手機。進(jìn)一步的,所述在接收端手機,對由服務(wù)端發(fā)送過來的音頻數(shù)據(jù)進(jìn)行解析播放,包括在接收端手機,首先構(gòu)建Audio Track組件,再構(gòu)建音頻解碼緩沖區(qū);當(dāng)有音頻數(shù)據(jù)由服務(wù)端推送過來時,將接收到的音頻數(shù)據(jù)存入解碼緩沖區(qū),通過Audio Track組件對緩沖區(qū)音頻進(jìn)行解碼播放。進(jìn)一步的,在發(fā)送端手機,將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端后,判斷音頻數(shù)據(jù)是否采樣完畢;若沒有采樣完畢,則繼續(xù)按設(shè)定的采樣大小獲取音頻數(shù)據(jù),并將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端; 若采樣完畢,則停止采樣。進(jìn)一步的,所述在服務(wù)端,建立接入端地址數(shù)據(jù)表,將接收的音頻采樣數(shù)據(jù)存入接入端地址數(shù)據(jù)表中,并將音頻數(shù)據(jù)發(fā)送到接收端手機后,判斷是否還有音頻數(shù)據(jù)待轉(zhuǎn)送到接收手機;若還有音頻數(shù)據(jù)轉(zhuǎn)送到接收端手機,則繼續(xù)在接入端地址數(shù)據(jù)表中,通過比對服務(wù)器中發(fā)送端和接收端的地址識別出發(fā)送端手機,并將發(fā)送端手機的音頻數(shù)據(jù)發(fā)送給接收夂而手機。若沒有音頻數(shù)據(jù)轉(zhuǎn)送到接收端手機,則終止轉(zhuǎn)發(fā)數(shù)據(jù)。進(jìn)一步的,所述手機接收端對由服務(wù)端發(fā)送過來的音頻數(shù)據(jù)進(jìn)行解析播放后,判斷是否中止接收;若不中止接收數(shù)據(jù),則繼續(xù)將接收到的音頻數(shù)據(jù)存入解碼緩沖區(qū),并通過AudioTrack組件對緩沖區(qū)音頻進(jìn)行解碼播放;若中止接收數(shù)據(jù),則停止接收數(shù)據(jù)。本發(fā)明的有益效果在于本發(fā)明實現(xiàn)了移動手機之間的非布線式的IP語音通話,可實現(xiàn)由手機語音采集端得到的語音數(shù)據(jù)到接收端手機的實時傳送,并由接收端手機進(jìn)行實時解碼播放。通過多線程技術(shù)實現(xiàn)了手機端同時具有發(fā)送端與接收端的服務(wù),從而實現(xiàn)了移動手機IP語音通話的雙方互為發(fā)送端及接收端的雙工對講。
圖I為本發(fā)明實施例提供的實現(xiàn)Android手機語音對講的方法的流程圖。圖2為本發(fā)明實施例提供的實現(xiàn)Android手機語音對講的方法的在發(fā)送端的流程圖。圖3為本發(fā)明實施例提供的實現(xiàn)Android手機語音對講的方法的在服務(wù)端的流程圖。圖4為本發(fā)明實施例提供的實現(xiàn)Android手機語音對講的方法的在接收端的流程圖。
具體實施例方式為進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實施例,對依據(jù)本發(fā)明提出的實現(xiàn)Android手機語音對講的方法的具體實施方式
及原理進(jìn)行詳細(xì)說明。由圖I可知,本發(fā)明提供的實現(xiàn)Android手機語音對講的方法,包括在發(fā)送端手機,獲取音頻采樣數(shù)據(jù);在發(fā)送端手機,設(shè)定音頻的采樣大小,并按設(shè)·定的采樣大小獲取音頻數(shù)據(jù);在發(fā)送端手機,將音頻采樣數(shù)據(jù)實時發(fā)送到服務(wù)端;在服務(wù)端,建立接入端地址數(shù)據(jù)表,將接收的音頻采樣數(shù)據(jù)存入接入端地址數(shù)據(jù)表中,并將音頻數(shù)據(jù)實時發(fā)送到接收端手機;在接收端手機,對由服務(wù)端發(fā)送過來的音頻數(shù)據(jù)進(jìn)行實時解析播放;通過多線程技術(shù)在手機端同時實現(xiàn)發(fā)送端與接收端的服務(wù)。由圖2可知,在本發(fā)明提供的實現(xiàn)Android手機語音對講的方法的發(fā)送端,先通過調(diào)用Android平臺的多媒體組件Audio Record,完成手機發(fā)送端音頻數(shù)據(jù)的捕捉。再通過Android平臺的Audio Record組件設(shè)定音頻通道為CHANNEL_C0NFI⑶RATI0N_M0N,編碼方式為ENC0DING_PCM_16BIT后獲得音頻的采樣大小,按設(shè)定采樣大小獲取音頻數(shù)據(jù)。接著建立基于TCP協(xié)議的服務(wù)器,通過套接字將發(fā)送端手機取得的采樣音頻數(shù)據(jù)實時發(fā)送到服務(wù)端。再判斷音頻數(shù)據(jù)是否采樣完畢;若沒有采樣完畢,則繼續(xù)按設(shè)定的采樣大小獲取音頻數(shù)據(jù),并將音頻采樣數(shù)據(jù)實時發(fā)送到服務(wù)端;若采樣完畢,則停止采樣。這樣能通過連續(xù)不斷的對發(fā)送端MIC的音頻采樣將發(fā)送端的音頻數(shù)據(jù)實時發(fā)送給服務(wù)端,從而生成實時流暢的音頻數(shù)據(jù)流。由圖3可知,在本發(fā)明提供的實現(xiàn)Android手機語音對講的方法的服務(wù)端,在服務(wù)端內(nèi)存中建立接入端地址數(shù)據(jù)表,將發(fā)送端手機的地址、接收端手機的地址存入接入端地址數(shù)據(jù)表中,通過比對服務(wù)器中發(fā)送端和接收端的地址識別出發(fā)送端手機,并將發(fā)送端手機的音頻數(shù)據(jù)實時發(fā)送給接收端手機;接著建立基于TCP協(xié)議的服務(wù)器,通過套接字將音頻數(shù)據(jù)實時發(fā)送給接收端手機。再判斷是否還有音頻數(shù)據(jù)待轉(zhuǎn)送到接收端手機;若還有音頻數(shù)據(jù)轉(zhuǎn)送到接收端手機,則繼續(xù)在接入端地址數(shù)據(jù)表中,通過比對服務(wù)器中發(fā)送端和接收端的地址識別出發(fā)送端手機,并將發(fā)送端手機的音頻數(shù)據(jù)實時發(fā)送給接收端手機;接著建立基于TCP協(xié)議的服務(wù)器,通過套接字將音頻數(shù)據(jù)實時發(fā)送給接收端手機;若沒有音頻數(shù)據(jù)轉(zhuǎn)送到接收端手機,則終止轉(zhuǎn)發(fā)數(shù)據(jù)。這樣就能連續(xù)不斷的將發(fā)送端的IP音頻數(shù)據(jù)轉(zhuǎn)送到接收端。由圖4可知,在本發(fā)明提供的實現(xiàn)Android手機語音對講的方法的接收端,首先構(gòu)建Audio Track組件,再構(gòu)建音頻解碼緩沖區(qū);當(dāng)有音頻數(shù)據(jù)由服務(wù)端推送過來時,將接收到的音頻數(shù)據(jù)存入解碼緩沖區(qū),通過AudioTrack組件對緩沖區(qū)音頻進(jìn)行解碼播放。再判斷是否中止接收;若不中止接收數(shù)據(jù),則繼續(xù)將接收到的音頻數(shù)據(jù)存入解碼緩沖區(qū),并通過AudioTrack組件對緩沖區(qū)音頻進(jìn)行解碼播放;若中止接收數(shù)據(jù),則停止接收數(shù)據(jù)。
這樣在沒有中止接收處理之前會不斷將由服務(wù)器端推送過來的實時音頻數(shù)據(jù)進(jìn)行解碼播放處理,從而能在接收端聽到發(fā)送端的實時語音了。利用本發(fā)明提供的實現(xiàn)Android手機語音對講的方法實現(xiàn)手機A與手機B之間的對講,本實施例中,手機A和手機B均為基于Android系統(tǒng)的手機。當(dāng)手機A向手機B通話時,先通過手機A的多媒體組件Audio Record,完成手機A的音頻數(shù)據(jù)的捕捉,再通過手機A的Audio Record組件設(shè)定音頻通道為CHANNEL_C0NFI⑶RATI0N_M0N,編碼方式為ENC0DING_PCM_16BIT后獲得音頻的采樣大小,按設(shè)定采樣大小獲取音頻數(shù)據(jù)。接著建立基于TCP協(xié)議的服務(wù)器,通過套接字將手機A取得的采樣音頻數(shù)據(jù)實時發(fā)送到服務(wù)端。在服務(wù)端內(nèi)存中建立接入端地址數(shù)據(jù)表,將手機A的地址、手機B的地址均存入接入端地址數(shù)據(jù)表中,通過比對手機A和手機B的地址信息得出手機A為發(fā)送端手機,并將手機A的音頻數(shù)據(jù)實時轉(zhuǎn)發(fā)給手機B。手機B將接收到的音頻數(shù)據(jù)存入解碼緩沖區(qū),通過Audio Track組件對緩沖區(qū)音頻進(jìn)行解碼播放。從而實現(xiàn)了手機A到手機B的通話。 當(dāng)手機B向手機A回話時,在另一個線程中,先通過手機B的多媒體組件AudioRecord,完成手機B的音頻數(shù)據(jù)的捕捉,再通過手機B的Audio Record組件設(shè)定音頻通道為CHANNEL_C0NFIGURATI0N_M0N,編碼方式為ENC0DING_PCM_16BIT后獲得音頻的采樣大小,按設(shè)定采樣大小獲取音頻數(shù)據(jù)。接著建立基于TCP協(xié)議的服務(wù)器,通過套接字將手機B取得的采樣音頻數(shù)據(jù)實時發(fā)送給服務(wù)端。在接入端地址數(shù)據(jù)表中,通過比對手機A和手機B的地址信息得出手機B為發(fā)送端手機,并將手機B的音頻數(shù)據(jù)實時轉(zhuǎn)發(fā)給手機A。手機A將接收到的音頻數(shù)據(jù)存入解碼緩沖區(qū),通過Audio Track組件對緩沖區(qū)音頻進(jìn)行解碼播放。從而實現(xiàn)了手機B到手機A的通話,即實現(xiàn)了手機A與手機B的雙工對講。本發(fā)明實現(xiàn)了 Android手機之間的非布線式的IP語音通話,可實現(xiàn)由手機語音采集端Audio Record組件得到的語音數(shù)據(jù)到接收端的實時傳送,并由接收端手機通過AudioTrack組件進(jìn)行實時解碼播放。通過多線程技術(shù)實現(xiàn)了手機端同時具有發(fā)送端與接收端的服務(wù),從而實現(xiàn)了移動手機IP語音通話的雙方互為發(fā)送端及接收端的雙工對講。最后所應(yīng)說明的是,以上具體實施方式
僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照實例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種實現(xiàn)Android手機語音對講的方法,其特征在于,包括 在發(fā)送端手機,獲取音頻采樣數(shù)據(jù),將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端; 在服務(wù)端,建立接入端地址數(shù)據(jù)表,將接收的音頻采樣數(shù)據(jù)存入接入端地址數(shù)據(jù)表中,并將音頻數(shù)據(jù)發(fā)送到接收端手機; 在接收端手機,對由服務(wù)端發(fā)送過來的音頻數(shù)據(jù)進(jìn)行解析播放; 通過多線程技術(shù)在手機端同時實現(xiàn)發(fā)送端與接收端的服務(wù)。
2.如權(quán)利要求I所述的實現(xiàn)Android手機語音對講的方法,其特征在于,所述在發(fā)送端手機,獲取音頻采樣數(shù)據(jù)包括在發(fā)送端手機,通過調(diào)用Android平臺的多媒體組件AudioRecord,完成音頻數(shù)據(jù)的捕捉。
3.如權(quán)利要求I所述的實現(xiàn)Android手機語音對講的方法,其特征在于,還包括在發(fā)送端手機,設(shè)定音頻的采樣大小,并按設(shè)定的采樣大小獲取音頻數(shù)據(jù)。
4.如權(quán)利要求3所述的實現(xiàn)Android手機語音對講的方法,其特征在于,所述在發(fā)送端手機,設(shè)定音頻的采樣大小,并按設(shè)定的采樣大小獲取音頻數(shù)據(jù)包括在發(fā)送端手機,通過Android平臺的Audio Record組件設(shè)定音頻通道為CHANNEL_CONFI⑶RATI0N_M0N,編碼方式為ENC0DING_PCM_16BIT后獲得音頻的采樣大小,并按設(shè)定采樣大小獲取音頻數(shù)據(jù)。
5.如權(quán)利要求I所述的實現(xiàn)Android手機語音對講的方法,其特征在于,所述在發(fā)送端手機,將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端包括建立基于TCP協(xié)議的服務(wù)器,通過套接字將發(fā)送端手機取得的采樣音頻數(shù)據(jù)發(fā)送到服務(wù)端。
6.如權(quán)利要求I所述的實現(xiàn)Android手機語音對講的方法,其特征在于,所述在服務(wù)端,建立接入端地址數(shù)據(jù)表,將接收的音頻采樣數(shù)據(jù)存入接入端地址數(shù)據(jù)表中,并將音頻數(shù)據(jù)發(fā)送到接收端手機,包括在服務(wù)端內(nèi)存中建立接入端地址數(shù)據(jù)表,將發(fā)送端手機的地址、接收端手機的地址存入接入端地址數(shù)據(jù)表中,通過比對服務(wù)器中發(fā)送端和接收端的地址識別出發(fā)送端手機,并將發(fā)送端手機的音頻數(shù)據(jù)發(fā)送給接收端手機。
7.如權(quán)利要求I所述的實現(xiàn)Android手機語音對講的方法,其特征在于,所述在接收端手機,對由服務(wù)端發(fā)送過來的音頻數(shù)據(jù)進(jìn)行解析播放,包括在接收端手機,首先構(gòu)建AudioTrack組件,再構(gòu)建音頻解碼緩沖區(qū);當(dāng)有音頻數(shù)據(jù)由服務(wù)端推送過來時,將接收到的音頻數(shù)據(jù)存入解碼緩沖區(qū),通過Audio Track組件對緩沖區(qū)音頻進(jìn)行解碼播放。
8.如權(quán)利要求I所述的實現(xiàn)Android手機語音對講的方法,其特征在于,在發(fā)送端手機,將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端后,判斷音頻數(shù)據(jù)是否采樣完畢; 若沒有采樣完畢,則繼續(xù)按設(shè)定的采樣大小獲取音頻數(shù)據(jù),并將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端; 若采樣完畢,則停止采樣。
9.如權(quán)利要求6所述的實現(xiàn)Android手機語音對講的方法,其特征在于,所述在服務(wù)端,建立接入端地址數(shù)據(jù)表,將接收的音頻采樣數(shù)據(jù)存入接入端地址數(shù)據(jù)表中,并將音頻數(shù)據(jù)發(fā)送到接收端手機后,判斷是否還有音頻數(shù)據(jù)待轉(zhuǎn)送到接收端手機; 若還有音頻數(shù)據(jù)轉(zhuǎn)送到接收端手機,則繼續(xù)在接入端地址數(shù)據(jù)表中,通過比對服務(wù)器中發(fā)送端和接收端的地址識別出發(fā)送端手機,并將發(fā)送端手機的音頻數(shù)據(jù)發(fā)送給接收端手機。
若沒有音頻數(shù)據(jù)轉(zhuǎn)送到接收端手機,則終止轉(zhuǎn)發(fā)數(shù)據(jù)。
10.如權(quán)利要求7所述的實現(xiàn)Android手機語音對講的方法,其特征在于,所述手機接收端對由服務(wù)端發(fā)送過來的音頻數(shù)據(jù)進(jìn)行解析播放后,判斷是否中止接收; 若不中止接收數(shù)據(jù),則繼續(xù)將接收到的音頻數(shù)據(jù)存入解碼緩沖區(qū),并通過Audio Track組件對緩沖區(qū)音頻進(jìn)行解碼播放; 若中止接收數(shù)據(jù),則停止接收數(shù)據(jù)。
全文摘要
本發(fā)明涉及通訊技術(shù)領(lǐng)域,公開了一種實現(xiàn)Android手機語音對講的方法,包括在發(fā)送端手機,獲取音頻數(shù)據(jù);在發(fā)送端手機,設(shè)定音頻的采樣大小,并按設(shè)定的采樣大小獲取音頻數(shù)據(jù);在發(fā)送端手機,將音頻采樣數(shù)據(jù)發(fā)送到服務(wù)端;在服務(wù)端,建立接入端地址數(shù)據(jù)表,將接收的音頻采樣數(shù)據(jù)存入接入端地址數(shù)據(jù)表中,并將音頻數(shù)據(jù)發(fā)送到接收端手機;在接收端手機,對由服務(wù)端發(fā)送過來的音頻數(shù)據(jù)進(jìn)行解析播放;通過多線程技術(shù)在手機端同時實現(xiàn)發(fā)送端與接收端的服務(wù)。本發(fā)明實現(xiàn)了移動手機之間的非布線式的IP語音通話。
文檔編號H04L29/06GK102752431SQ20121022306
公開日2012年10月24日 申請日期2012年6月29日 優(yōu)先權(quán)日2012年6月29日
發(fā)明者張新, 王榮 申請人:武漢鋼鐵(集團)公司