一種實(shí)時(shí)語音的方法及裝置的制造方法
【專利摘要】本發(fā)明涉及交互技術(shù),特別涉及一種實(shí)時(shí)語音方法及裝置。所述實(shí)時(shí)語音方法包括以下步驟:當(dāng)實(shí)時(shí)語音應(yīng)用程序切換到后臺(tái)運(yùn)行時(shí),讀取當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序類型;判斷當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序是否為游戲應(yīng)用程序;如果當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序?yàn)橛螒驊?yīng)用程序,生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面上,以供用戶進(jìn)行相應(yīng)的操作。上述實(shí)時(shí)語音的方法及裝置,在語音應(yīng)用程序在后臺(tái)運(yùn)行且前臺(tái)運(yùn)行的游戲時(shí),顯示實(shí)時(shí)語音懸浮窗于游戲界面上,從而使用戶無須手動(dòng)操作退出游戲,就可以通過懸浮窗完成對(duì)實(shí)時(shí)語音功能的各種操作,因此給用戶帶來更多便利。
【專利說明】
一種實(shí)時(shí)語音的方法及裝置
技術(shù)領(lǐng)域
:
[0001]本發(fā)明涉及交互技術(shù),特別涉及一種實(shí)時(shí)語音方法及裝置。
【背景技術(shù)】
:
[0002]目前在移動(dòng)設(shè)備上,以Android操作系統(tǒng)為例,要實(shí)現(xiàn)在某個(gè)當(dāng)前執(zhí)行的應(yīng)用界面上操作其他應(yīng)用,一般采用懸浮窗的方案,利用系統(tǒng)接口,在當(dāng)前執(zhí)行的應(yīng)用上以占用一部分屏幕空間的浮動(dòng)按鈕的形式提供另一個(gè)應(yīng)用的操作界面,實(shí)現(xiàn)在當(dāng)前界面下進(jìn)行對(duì)另一個(gè)應(yīng)用的操作,如“百度手機(jī)衛(wèi)士”。而在移動(dòng)設(shè)備上,通過設(shè)備的揚(yáng)聲器、聽筒及麥克風(fēng)進(jìn)行語音的接收及播放,利用手機(jī)數(shù)據(jù)網(wǎng)絡(luò)或WIFI建立與服務(wù)器長(zhǎng)連接,能實(shí)現(xiàn)類似于多人通話的實(shí)時(shí)語音功能,如“QQ電話”。
[0003]雖然懸浮窗是一種移動(dòng)設(shè)備上應(yīng)用上展示與操作當(dāng)前應(yīng)用外的其他應(yīng)用的常見手段,但是目前市面上懸浮窗在移動(dòng)設(shè)備上實(shí)現(xiàn)的功能較為單一,無法滿足游戲用戶無需騰出雙手來操作的需求。移動(dòng)設(shè)備操作空間受限于屏幕大小,且游戲用戶在激烈游戲時(shí)無法騰出雙手對(duì)其余功能進(jìn)行操作,無法及時(shí)、有效的與其他游戲用戶進(jìn)行溝通;而市面上常用的移動(dòng)設(shè)備實(shí)時(shí)語音通訊軟件,無法在語音軟件外(如游戲進(jìn)行中)進(jìn)行語音相關(guān)功能的操作控制,如靜音、關(guān)閉或開啟麥克風(fēng)、組建群組等,甚至無法關(guān)閉實(shí)時(shí)語音功能。
【發(fā)明內(nèi)容】
:
[0004]本發(fā)明提供一種實(shí)時(shí)語音的方法及裝置,解決移動(dòng)設(shè)備上游戲中無縫切換使用實(shí)時(shí)語音的問題。
[0005]—種實(shí)時(shí)語音的方法,所述方法包括以下步驟:
[0006]當(dāng)實(shí)時(shí)語音應(yīng)用程序切換到后臺(tái)運(yùn)行時(shí),讀取當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序類型;
[0007]判斷當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序是否為游戲應(yīng)用程序;
[0008]如果當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序?yàn)橛螒驊?yīng)用程序,生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面上,以供用戶進(jìn)行相應(yīng)的操作。
[0009]進(jìn)一步地,所述相應(yīng)的懸浮窗包括主界面懸浮窗、子界面懸浮窗及圖標(biāo)懸浮窗,所述生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面上的步驟還包括如下步驟:
[0010]判斷所述實(shí)時(shí)語音應(yīng)用程序是否處于實(shí)時(shí)語音通話狀態(tài);
[0011 ]若所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),顯示相應(yīng)的圖標(biāo)懸浮窗于所述游戲應(yīng)用程序的界面上。
[0012]進(jìn)一步地,若所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài),顯示包括主操作界面的主界面懸浮窗于所述游戲應(yīng)用程序的界面上,以供用戶操作。
[0013]進(jìn)一步地,當(dāng)所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用硬件渲染所述主界面懸浮窗及子界面懸浮窗;當(dāng)所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用軟件渲染圖標(biāo)懸浮窗。
[0014]進(jìn)一步地,所述方法還包括如下步驟:當(dāng)所述游戲程序結(jié)束時(shí),關(guān)閉當(dāng)前顯示的懸浮窗O
[0015]本發(fā)明還提供一種實(shí)時(shí)語音的裝置,所述裝置包括:
[0016]讀取模塊,用于讀取當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序類型;
[0017]第一判斷模塊,用于判斷當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序是否為游戲應(yīng)用程序;
[0018]懸浮窗產(chǎn)生模塊,用于當(dāng)系統(tǒng)執(zhí)行的應(yīng)用程序?yàn)橛螒驊?yīng)用程序時(shí),生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面上,以供用戶進(jìn)行相應(yīng)的操作。
[0019]進(jìn)一步地,懸浮窗產(chǎn)生模塊顯示的所述相應(yīng)懸浮窗包括主界面懸浮窗、子界面懸浮窗及圖標(biāo)懸浮窗,所述懸浮窗產(chǎn)生模塊還包括:
[0020]語音判斷單元,用于判斷所述實(shí)時(shí)語音應(yīng)用程序是否處于實(shí)時(shí)語音通話狀態(tài);
[0021 ]顯示單元,用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),顯示相應(yīng)的圖標(biāo)懸浮窗于所述游戲應(yīng)用程序的界面上。
[0022]進(jìn)一步地,所述顯示單元還用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),顯示包括主操作界面的主界面懸浮窗于所述游戲應(yīng)用程序的界面上,以供用戶操作。
[0023]進(jìn)一步地,所述裝置還包括:
[0024]渲染模塊,用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用硬件渲染所述主界面懸浮窗及子界面懸浮窗;當(dāng)所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用軟件渲染圖標(biāo)懸浮窗。
[0025]進(jìn)一步地,所述裝置還包括:
[0026]控制模塊,用于當(dāng)所述游戲程序結(jié)束時(shí),關(guān)閉當(dāng)前顯示的懸浮窗。
[0027]上述實(shí)時(shí)語音的方法及裝置,在語音應(yīng)用程序在后臺(tái)運(yùn)行且前臺(tái)運(yùn)行的游戲時(shí),顯示實(shí)時(shí)語音懸浮窗于游戲界面上,從而使用戶無須手動(dòng)操作退出游戲,就可以通過懸浮窗完成對(duì)實(shí)時(shí)語音功能的各種操作,因此給用戶帶來更多便利。
【附圖說明】
:
[0028]圖1為第一較佳實(shí)施例的實(shí)時(shí)語音方法的流程圖。
[0029]圖2為第二較佳實(shí)施例的實(shí)時(shí)語音方法的流程圖。
[0030]圖3為較佳實(shí)施方式的實(shí)時(shí)語音裝置的結(jié)構(gòu)示意圖。
[0031 ]圖4為圖標(biāo)懸浮窗不意圖。
[0032]圖5為主界面懸浮窗不意圖。
[0033]圖6為實(shí)時(shí)語音相應(yīng)的子界面懸浮窗示意圖。
【具體實(shí)施方式】
:
[0034]為闡述本發(fā)明的思想及目的,下面將結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步的說明。實(shí)施例中移動(dòng)設(shè)備以手機(jī)為例進(jìn)行說明。
[0035]圖1為本發(fā)明提供的第一較佳實(shí)施例的實(shí)時(shí)語音方法的流程圖。所述實(shí)時(shí)語音方法包括以下步驟:
[0036]步驟Sll,當(dāng)實(shí)時(shí)語音應(yīng)用程序切換到后臺(tái)運(yùn)行時(shí),讀取當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序類型。
[0037]步驟S12,判斷當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序是否為游戲應(yīng)用程序。
[0038]步驟S13,如果當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序?yàn)橛螒驊?yīng)用程序,生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面上,以供用戶進(jìn)行相應(yīng)的操作。懸浮窗的尺寸遠(yuǎn)遠(yuǎn)小于游戲應(yīng)用程序的界面的尺寸,例如,僅占用游戲應(yīng)用界面的1/8面積。
[0039]當(dāng)在用戶界面點(diǎn)擊開啟一個(gè)游戲應(yīng)用程序時(shí),后臺(tái)運(yùn)行的實(shí)時(shí)語音應(yīng)用程序讀取并判斷當(dāng)前運(yùn)行的程序?yàn)橛螒?,將懸浮窗展示于游戲界面上,以供接受?shí)時(shí)語音操作。因此,在玩游戲時(shí),用戶僅需在懸浮窗上直接各種操作,就可以使用實(shí)時(shí)語音的功能。
[0040]步驟S14,當(dāng)所述游戲程序結(jié)束時(shí),關(guān)閉當(dāng)前顯示的懸浮窗。
[0041 ]圖2為第二較佳實(shí)施方式的實(shí)時(shí)語音方法的流程圖。所述優(yōu)選方法包括以下步驟:
[0042]步驟S21,當(dāng)實(shí)時(shí)語音應(yīng)用程序切換到后臺(tái)運(yùn)行時(shí),讀取當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序類型。
[0043]步驟S22,判斷當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序是否為游戲應(yīng)用程序。優(yōu)選地,根據(jù)所述當(dāng)前執(zhí)行的應(yīng)用程序是否具有游戲標(biāo)記進(jìn)行判斷。所述的游戲標(biāo)記可以為游戲的ID、版本號(hào)、識(shí)別碼。
[0044]若所述當(dāng)前執(zhí)行的應(yīng)用程序具有游戲標(biāo)記,判定當(dāng)前執(zhí)行的應(yīng)用程序?yàn)橛螒驊?yīng)用程序,并進(jìn)入步驟S23。
[0045]若所述當(dāng)前執(zhí)行的應(yīng)用程序不具有游戲標(biāo)記,判定當(dāng)前執(zhí)行的應(yīng)用程序?yàn)榉怯螒驊?yīng)用程序,返回步驟S21。
[0046]步驟S23,將實(shí)時(shí)語音應(yīng)用程序相應(yīng)的懸浮窗升級(jí)為前臺(tái)服務(wù)。由于游戲本身會(huì)占用大量手機(jī)內(nèi)存,而手機(jī)硬件、內(nèi)存容量不一,當(dāng)系統(tǒng)內(nèi)存不足時(shí),若懸浮窗處于后臺(tái)服務(wù),容易出現(xiàn)被系統(tǒng)回收的現(xiàn)象,造成實(shí)施語音通訊的中斷。升級(jí)懸浮窗為前臺(tái)服務(wù)后,能有效避免懸浮窗因系統(tǒng)資源不足而被回收,保證實(shí)時(shí)語音通訊穩(wěn)定運(yùn)行。
[0047]步驟S24,釋放實(shí)時(shí)語音應(yīng)用程序相應(yīng)的懸浮窗界面展示無需使用的資源。實(shí)時(shí)語音應(yīng)用程序在前臺(tái)獨(dú)立開啟時(shí),會(huì)調(diào)用很多圖片及文字資源,當(dāng)回到后臺(tái)運(yùn)行時(shí),所述資源都會(huì)占用內(nèi)存,影響系統(tǒng)運(yùn)行的速度。當(dāng)判斷出當(dāng)前運(yùn)行程序是游戲應(yīng)用程序后,會(huì)釋放所述資源,使系統(tǒng)運(yùn)行當(dāng)前程序的速度不受影響。
[0048]實(shí)時(shí)語音應(yīng)用程序相應(yīng)的懸浮窗包括圖標(biāo)懸浮窗Wl、主界面懸浮窗W2及子界面懸浮窗W3,主界面懸浮窗W2和子界面懸浮窗W3的尺寸遠(yuǎn)小于游戲應(yīng)用程序的界面WO的尺寸,例如,僅占用游戲應(yīng)用界面的1/8面積;圖標(biāo)懸浮窗Wl的尺寸遠(yuǎn)小于主界面懸浮窗W2和子界面懸浮窗W3,例如僅占1/20面積。且圖標(biāo)懸浮窗Wl的形狀可以為圓形、橢圓形、方形等幾何圖形,本實(shí)施例中,圖標(biāo)懸浮窗Wl為圓形。在別的實(shí)施例中,子界面懸浮窗W3的尺寸可小于主界面懸浮窗W2。
[0049]步驟S25,計(jì)算懸浮窗在游戲界面上顯示的位置及大小。通過重寫懸浮窗視圖組件的布局函數(shù)及測(cè)量函數(shù),得到懸浮窗內(nèi)的視圖組件的位置及大小,即得到懸浮窗在游戲界面上顯示的位置及大小。
[0050]所述懸浮窗可看做包含多個(gè)視圖組件的容器,通過重寫懸浮窗的布局函數(shù)及測(cè)量函數(shù),簡(jiǎn)化計(jì)算懸浮窗各視圖組件顯示時(shí)的位置及大小的過程。傳統(tǒng)的布局函數(shù)及測(cè)量函數(shù)是通過視圖組件之間的相互位置關(guān)系來計(jì)算懸浮窗內(nèi)視圖組件的位置與大小,這樣需要多次遍歷各個(gè)視圖組件才能完成計(jì)算。而重寫的布局函數(shù)及測(cè)量函數(shù)是采用計(jì)算懸浮窗內(nèi)各個(gè)視圖組件相對(duì)懸浮窗邊緣的位置,即只需遍歷一次各個(gè)視圖組件,就能得到每個(gè)視圖組件在懸浮窗內(nèi)的位置和大小,減少了遍歷的次數(shù),從而提高了渲染的效率。
[0051]步驟S26,判斷實(shí)時(shí)語音應(yīng)用程序是否處于實(shí)時(shí)語音通話狀態(tài)。若所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài),進(jìn)入步驟S27;反之執(zhí)行步驟步驟S28。
[0052]步驟S27,若所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用軟件渲染圖標(biāo)懸浮窗Wl。
[0053]由于圖標(biāo)懸浮窗Wl僅需保留展示功能,采用軟件渲染,不占用GPU資源,使游戲能充分利用GPU,保證游戲能順暢進(jìn)行。
[0054]懸浮窗渲染采用多層級(jí)設(shè)計(jì)。圖標(biāo)懸浮窗處于軟件渲染層,主界面懸浮窗及子界面懸浮窗處于硬件渲染層。軟件渲染層的寬高等于圖標(biāo)懸浮窗的寬高,此層采用軟件渲染;硬件渲染層的寬高為相應(yīng)的主界面懸浮窗或子界面懸浮窗的寬高,此層采用硬件渲染。
[0055]步驟S28,顯示相應(yīng)的圖標(biāo)懸浮窗Wl于所述游戲應(yīng)用程序界面WO上。用戶此時(shí)可直接與聊天對(duì)象進(jìn)行語音通話。圖4為圖標(biāo)懸浮窗示意圖。
[0056]本實(shí)施例中,實(shí)時(shí)語音通話相對(duì)應(yīng)的圖標(biāo)懸浮窗Wl,小于主界面懸浮窗W2和子界面懸浮窗W3,例如僅占游戲應(yīng)用界面的1/20面積,不影響游戲的操作,便于用戶在游戲不受影響的前提下同時(shí)進(jìn)行語音通話。
[0057]點(diǎn)擊圖標(biāo)懸浮窗Wl的特定位置或者空白處,圖標(biāo)懸浮窗Wl不再顯示的同時(shí),實(shí)時(shí)語音通話相應(yīng)的子界面懸浮窗W31被硬件渲染后顯示于游戲界面WO上,以供用戶進(jìn)行語音通話的暫停、退出、靜音、重啟的操作,還可以進(jìn)行加入聊天對(duì)象的操作。在其他實(shí)施例中,點(diǎn)擊包括操作界面的實(shí)時(shí)語音通話相對(duì)應(yīng)的的子界面懸浮窗W31特定位置或者空白處時(shí),實(shí)時(shí)語音通話相對(duì)應(yīng)的子界面懸浮窗W31不再顯示,與此同時(shí)圖標(biāo)懸浮窗Wl被軟件渲染后顯示與游戲界面上WO。
[0058]步驟S29,若所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用硬件渲染所述主界面懸浮窗。
[0059]當(dāng)實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用硬件渲染處于同層的主界面懸浮窗Wl或子界面懸浮窗W2,并將所有控件置于主界面懸浮窗上,此時(shí)充分利用GPU資源,提高懸浮窗渲染效果,保證用戶對(duì)懸浮窗進(jìn)行交互操作的流暢性,提高渲染效率。
[0060]步驟S210,顯示包括主操作界面的主界面懸浮窗W2于所述游戲程序的界面WO上,以供用戶操作。圖5為主界面懸浮窗示意圖。
[0061]主界面懸浮窗W2中包括操作界面,所述操作界面可以包括一系列的控制按鍵,分別接收不同的用戶指令。本實(shí)施例中,操作界面可接收到消息查看、單個(gè)聊天對(duì)象的選取、群組的選取及懸浮窗設(shè)置的指令。
[0062]步驟S211,判斷是否接受到用戶指令。該用戶指令可以是用戶操作實(shí)體按鍵、軟按鍵對(duì)主界面懸浮窗Wl和次界面懸浮窗W2進(jìn)行操作產(chǎn)生。
[0063]步驟S212,若接收到用戶指令時(shí),執(zhí)行與用戶指令相對(duì)應(yīng)的功能并顯示相應(yīng)的子界面懸浮窗W3。
[0064]請(qǐng)參見圖6,當(dāng)主界面懸浮窗W2接收到用戶輸入的進(jìn)入某個(gè)實(shí)時(shí)語音群組的指令后,顯示實(shí)時(shí)語音群組相對(duì)應(yīng)的子界面懸浮窗W31,所述子界面懸浮窗W31上提供多個(gè)功能按鍵,包括開啟麥克風(fēng)按鍵W311、靜音按鍵W312、關(guān)閉麥克風(fēng)按鍵W313及邀請(qǐng)其他用戶加入所在群組的按鍵W314。
[0065]當(dāng)主界面懸浮窗W2接收到用戶輸入的查看消息的指令后,顯示展示消息內(nèi)容的子界面懸浮窗。
[0066]當(dāng)主界面懸浮窗W2接收到選取個(gè)別特定用戶進(jìn)行聊天的指令后,顯示與特定用戶進(jìn)行聊天的子界面懸浮窗,在此子界面懸浮窗上可以通過相應(yīng)的功能按鍵接收用戶的發(fā)送文本消息、發(fā)送語音、開啟實(shí)時(shí)語音的指令,并完成相應(yīng)的操作。
[0067]當(dāng)主界面懸浮窗W2可接收懸浮窗設(shè)置的指令,可以對(duì)語音聊天的音量進(jìn)行設(shè)置,也可以關(guān)閉懸浮窗,還可以對(duì)消息提醒或者快捷鍵進(jìn)行設(shè)置。
[0068]步驟S213,判斷所述游戲應(yīng)用程序是否結(jié)束;若所述游戲應(yīng)用程序結(jié)束時(shí),進(jìn)入步驟S211,反之,則進(jìn)入步驟S212。
[0069]步驟S214,當(dāng)所述游戲應(yīng)用程序結(jié)束時(shí),關(guān)閉當(dāng)前顯示的懸浮窗。
[0070]步驟S215,判斷是否達(dá)到預(yù)設(shè)的心跳頻率或到達(dá)預(yù)設(shè)待機(jī)時(shí)間。若到達(dá)預(yù)設(shè)的心跳頻率,則進(jìn)入步驟S213;若達(dá)到達(dá)到預(yù)設(shè)的待機(jī)時(shí)間,進(jìn)入步驟S214。
[0071 ] 若未達(dá)到預(yù)設(shè)的心跳頻率或未到達(dá)預(yù)設(shè)待機(jī)時(shí)間,則返回到步驟S213。
[0072]步驟S216,若達(dá)到預(yù)設(shè)的心跳頻率,發(fā)送心跳包給服務(wù)器保證與服務(wù)器保持連接。包括以下步驟:
[0073]實(shí)時(shí)語音應(yīng)用程序是通過服務(wù)器轉(zhuǎn)發(fā)所有語音數(shù)據(jù),與服務(wù)器協(xié)定UDP協(xié)議,在固定時(shí)間Pl內(nèi)沒有收到客戶端的心跳,則認(rèn)為客戶端已經(jīng)掉線,不再轉(zhuǎn)發(fā)心跳包;實(shí)時(shí)語音應(yīng)用程序在UDP傳輸?shù)幕A(chǔ)上,使用一條TCP協(xié)議通道,以固定頻率P2(P2〈P1)向服務(wù)器發(fā)送心跳,刷新在線狀態(tài)。優(yōu)選地,Pl為10min,P2為3min。
[0074]在其他實(shí)施例中,也可通過其他方式發(fā)送心跳包給服務(wù)器保持在線狀態(tài)。
[0075]步驟S217,若達(dá)到預(yù)設(shè)的待機(jī)時(shí)間,制止待機(jī),保持與服務(wù)器連接??梢酝ㄟ^定時(shí)喚醒設(shè)備,本實(shí)施例中,使用系統(tǒng)鬧鐘機(jī)制(Alarm Manager),每S秒(S約等于P2)喚醒設(shè)備,防止設(shè)備在屏幕關(guān)閉后進(jìn)入休眠省電,斷開服務(wù)器連接,從而保證實(shí)時(shí)語音的流暢進(jìn)行。優(yōu)選地,S 為 4min30s。
[0076]步驟S216和S217之后,進(jìn)入步驟S213,判斷所述游戲應(yīng)用程序是否結(jié)束,并根據(jù)判斷結(jié)果,進(jìn)入相應(yīng)的步驟。
[0077]實(shí)時(shí)語音應(yīng)用程序回到后臺(tái)運(yùn)行,讀取系統(tǒng)當(dāng)前實(shí)行的程序類型,直到實(shí)時(shí)語音應(yīng)用程序接收到關(guān)閉指令,結(jié)束運(yùn)行。
[0078]上述實(shí)施例的步驟順序只是一種示意,在其他實(shí)施方式中,可以根據(jù)具體情況進(jìn)行調(diào)整。
[0079]圖3為本發(fā)明提供的較佳實(shí)施方式的實(shí)時(shí)語音裝置的結(jié)構(gòu)示意圖,所述裝置包括:讀取模塊31、第一判斷模塊32、調(diào)取模塊33、釋放模塊34、渲染模塊35、懸浮窗產(chǎn)生模塊36、第二判斷模塊37、第三判斷模塊38、心跳模塊39、喚醒模塊310、控制模塊311。
[0080]讀取模塊31,用于當(dāng)實(shí)時(shí)語音應(yīng)用程序切換到后臺(tái)運(yùn)行時(shí),讀取當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序類型。
[0081]第一判斷模塊32,用于判斷當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序是否為游戲應(yīng)用程序。根據(jù)所述當(dāng)前執(zhí)行的應(yīng)用程序是否具有游戲標(biāo)記進(jìn)行判斷。所述的游戲標(biāo)記可以為游戲的ID、版本號(hào)、識(shí)別碼。
[0082]調(diào)取模塊33,用于當(dāng)判定當(dāng)前執(zhí)行的應(yīng)用程序?yàn)橛螒驊?yīng)用程序時(shí),將懸浮窗升級(jí)為前臺(tái)服務(wù)。由于游戲本身需要占用大量手機(jī)內(nèi)存,而手機(jī)硬件、內(nèi)存容量不一,當(dāng)系統(tǒng)內(nèi)存不足時(shí),若懸浮窗處于后臺(tái)服務(wù),容易出現(xiàn)被系統(tǒng)回收的現(xiàn)象,造成實(shí)施語音通訊的中斷。升級(jí)懸浮窗為前臺(tái)服務(wù)后,能有效避免懸浮窗因系統(tǒng)資源不足而被回收,保證實(shí)時(shí)語音通訊能穩(wěn)定運(yùn)行。
[0083]釋放模塊34,用于當(dāng)實(shí)時(shí)語音應(yīng)用程序升級(jí)為前臺(tái)服務(wù)后,釋放懸浮窗界面展示無需使用的資源。實(shí)時(shí)語音應(yīng)用程序在前臺(tái)獨(dú)立開啟時(shí),會(huì)調(diào)用很多圖片及文字資源,當(dāng)回到后臺(tái)運(yùn)行時(shí),所述資源都會(huì)占用內(nèi)存,影響系統(tǒng)運(yùn)行的速度。當(dāng)判斷出當(dāng)前運(yùn)行程序是游戲應(yīng)用程序后,會(huì)釋放所述資源,使系統(tǒng)運(yùn)行當(dāng)前程序的速度不受到影響。
[0084]渲染模塊35,用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用硬件渲染所述主界面懸浮窗及子界面懸浮窗;當(dāng)所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用軟件渲染圖標(biāo)懸浮窗。
[0085]由于圖標(biāo)懸浮窗僅需保留展示功能,采用軟件進(jìn)行渲染,不占用GPU硬件資源,使游戲能充分利用GPU,保證游戲能順暢進(jìn)行。
[0086]而主界面懸浮窗及子界面懸浮窗是與用戶進(jìn)行交互作用的,采用GPU硬件渲染,提高懸浮窗渲染性能,保證用戶操作的流暢性,提高渲染效率。
[0087]渲染模塊35還可用于通過重寫懸浮窗視圖組件的布局函數(shù)及測(cè)量函數(shù),計(jì)算懸浮窗在游戲界面上顯示的位置及大小及懸浮窗內(nèi)的視圖組件的位置及大小。即只需遍歷一次各個(gè)視圖組件,就能得到每個(gè)視圖組件在懸浮窗內(nèi)的位置和大小,效率得到提高,減少了遍歷的次數(shù),從而優(yōu)化了渲染的效率。
[0088]懸浮窗產(chǎn)生模塊36,用于當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序?yàn)橛螒驊?yīng)用程序時(shí),生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面WO上,以供用戶進(jìn)行相應(yīng)的操作。
[0089]懸浮窗產(chǎn)生模塊36顯示的所述相應(yīng)懸浮窗包括主界面懸浮窗W2、子界面懸浮窗及圖標(biāo)懸浮窗W1。主界面懸浮窗W2和子界面懸浮窗的尺寸遠(yuǎn)小于游戲應(yīng)用程序的界面WO的尺寸,例如,僅占用游戲應(yīng)用界面的1/8面積;圖標(biāo)懸浮窗Wl的尺寸遠(yuǎn)小于主界面懸浮窗W2和子界面懸浮窗,例如僅占游戲應(yīng)用界面的1/20面積。在別的實(shí)施例中,子界面懸浮窗的尺寸可小于主界面懸浮窗W2。
[0090]懸浮窗產(chǎn)生模塊36包括語音判斷單元361、顯示單元362、指令判斷單元363、執(zhí)行單元364。
[0091]語音判斷單元361,用于判斷所述實(shí)時(shí)語音應(yīng)用程序是否處于實(shí)時(shí)語音通話狀態(tài)。
[0092]顯示單元362,用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),顯示相應(yīng)的圖標(biāo)懸浮窗Wl于所述游戲程序的界面WO上。
[0093]本實(shí)施例中,實(shí)時(shí)語音通話相對(duì)應(yīng)的圖標(biāo)懸浮窗Wl,小于主界面懸浮窗W2和子界面懸浮窗W3,例如僅占游戲應(yīng)用界面的1/20面積,不影響游戲的操作,便于用戶在游戲不受影響的前提下同時(shí)進(jìn)行語音通話。點(diǎn)擊圖標(biāo)懸浮窗Wl的特定位置或者空白處,圖標(biāo)懸浮窗町不再顯示,與此同時(shí)實(shí)時(shí)語音通話相對(duì)應(yīng)的的子界面懸浮窗W31顯示與游戲界面WO上,以供用戶進(jìn)行語音通話的暫停、退出、靜音、重啟的操作,還可以進(jìn)行加入聊天對(duì)象的操作。在其他實(shí)施例中,點(diǎn)擊包括操作界面的實(shí)時(shí)語音通話相對(duì)應(yīng)的的子界面懸浮窗特定位置或者空白處,子界面懸浮窗收縮成圖標(biāo)懸浮窗Wl。
[0094]顯示單元362,還用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),顯示包括主操作界面的主界面懸浮窗W2于所述游戲程序的界面WO上,以供用戶操作。
[0095]主界面懸浮窗W2中包括操作界面,所述操作界面可以包括一系列的控制按鍵,分別接收不同的用戶指令。本實(shí)施例中,操作界面可接收到消息查看、單個(gè)聊天對(duì)象的選取、群組的選取及懸浮窗設(shè)置的指令。
[0096]指令判斷單元363,用于判斷是否接受到用戶指令。該用戶指令可以是用戶操作實(shí)體按鍵、軟按鍵對(duì)主界面和次界面懸浮窗進(jìn)行操作產(chǎn)生。
[0097]執(zhí)行單元364,用于接收到用戶指令后,執(zhí)行與用戶指令相對(duì)應(yīng)的功能并顯示相應(yīng)的子界面懸浮窗W3,以供用戶進(jìn)一步操作。
[0098]請(qǐng)參看圖6,當(dāng)主界面懸浮窗W2接收到用戶輸入的進(jìn)入某個(gè)實(shí)時(shí)語音群組的指令后,顯示實(shí)時(shí)語音群組相對(duì)應(yīng)的子界面懸浮窗W31。子界面懸浮窗W31上提供多個(gè)功能按鍵,包括開啟麥克風(fēng)按鍵W311、靜音按鍵W312、關(guān)閉麥克風(fēng)按鍵W313及邀請(qǐng)其他用戶加入所在群組的按鍵W314。
[0099]當(dāng)主界面懸浮窗W2接收到用戶輸入的查看消息的指令后,顯示展示消息內(nèi)容的子界面懸浮窗。
[0100]當(dāng)主界面懸浮窗W2接收到選取個(gè)別特定用戶進(jìn)行聊天后,顯示與特定用戶進(jìn)行聊天的子界面懸浮窗,在此子界面懸浮窗上可以通過相應(yīng)的功能按鍵接收用戶的發(fā)送文本消息、發(fā)送語首、開啟實(shí)時(shí)語首的指令,并完成相應(yīng)的操作。
[0101]當(dāng)主界面懸浮窗W2可接收浮窗設(shè)置的指令,可以對(duì)語音聊天的音量進(jìn)行設(shè)置,也可以關(guān)閉懸浮窗,還可以對(duì)消息提醒或者快捷鍵進(jìn)行設(shè)置。
[0102]第二判斷模塊37,用于判斷所述游戲應(yīng)用程序是否結(jié)束。當(dāng)所述游戲應(yīng)用程序結(jié)束時(shí),啟動(dòng)控制模塊311;當(dāng)所述游戲應(yīng)用程序未結(jié)束時(shí),啟動(dòng)第三判斷模塊38運(yùn)行。
[0103]控制模塊311,用于當(dāng)游戲結(jié)束運(yùn)行時(shí),關(guān)閉當(dāng)前顯示的懸浮窗。實(shí)時(shí)語音應(yīng)用程序在后臺(tái)運(yùn)行,繼續(xù)讀取系統(tǒng)當(dāng)前運(yùn)行的應(yīng)用程序類型。
[0104]第三判斷模塊38,用于在進(jìn)行實(shí)時(shí)語音通話時(shí),判斷是否到達(dá)預(yù)設(shè)的心跳頻率或預(yù)設(shè)的待機(jī)時(shí)間。當(dāng)達(dá)到預(yù)設(shè)的心跳頻率時(shí),啟動(dòng)心跳模塊39;當(dāng)達(dá)到預(yù)設(shè)的待機(jī)時(shí)間,啟動(dòng)喚醒模塊310;若未到達(dá)預(yù)設(shè)的心跳頻率或預(yù)設(shè)的待機(jī)時(shí)間,則啟動(dòng)第二判斷模塊37,判斷所述游戲應(yīng)用程序是否結(jié)束。
[0105]心跳模塊39,用于當(dāng)達(dá)到預(yù)設(shè)的心跳頻率時(shí),發(fā)送心跳包給服務(wù)器保證與服務(wù)器保持連接。本實(shí)施例中,包括以下步驟:
[0106]實(shí)時(shí)語音應(yīng)用程序是通過服務(wù)器轉(zhuǎn)發(fā)所有語音數(shù)據(jù),與服務(wù)器協(xié)定UDP協(xié)議,在固定時(shí)間Pl內(nèi)沒有收到客戶端的心跳包,則認(rèn)為客戶端已經(jīng)掉線,不再轉(zhuǎn)發(fā)心跳包;實(shí)時(shí)語音應(yīng)用程序在UDP傳輸?shù)幕A(chǔ)上,使用一條TCP協(xié)議通道,以固定頻率P2(P2〈P1)向服務(wù)器發(fā)送心跳,刷新在線狀態(tài),保持語音通話的順暢。優(yōu)選地,Pl為10min,P2為3min。
[0107]喚醒模塊39,用于當(dāng)達(dá)到預(yù)設(shè)的待機(jī)時(shí)間時(shí),制止待機(jī),保持與服務(wù)器連接??梢酝ㄟ^定時(shí)喚醒設(shè)備。本實(shí)施例中,使用系統(tǒng)鬧鐘機(jī)制(Alarm Manager),每S秒(S約等于P2)喚醒設(shè)備,防止設(shè)備在屏幕關(guān)閉后進(jìn)入休眠省電,斷開服務(wù)器連接,從而保證實(shí)時(shí)語音的流暢進(jìn)行ο優(yōu)選地,S為4min30s。
[0108]第二判斷模塊310,還用于在發(fā)送心跳包給服務(wù)器或定時(shí)喚醒設(shè)備M,判斷所述游戲應(yīng)用程序是否結(jié)束,并根據(jù)判斷結(jié)果,進(jìn)入相應(yīng)的步驟。
[0109]本實(shí)施例中各模塊的工作順序只是一種示意,在其他實(shí)施方式中,可以根據(jù)具體情況進(jìn)行調(diào)整。
[0110]上述實(shí)時(shí)語音的方法及裝置,在語音應(yīng)用程序在后臺(tái)運(yùn)行且前臺(tái)運(yùn)行的游戲時(shí),顯示實(shí)時(shí)語音懸浮窗于游戲界面上,從而使用戶無須手動(dòng)操作退出游戲,就可以通過懸浮窗完成對(duì)實(shí)時(shí)語音功能的各種操作,因此給用戶帶來更多便利。此外,及時(shí)將自身升級(jí)為前臺(tái)服務(wù),有效避免懸浮窗因系統(tǒng)資源不足而被回收,保證實(shí)時(shí)語音通訊能穩(wěn)定運(yùn)行。通過釋放懸浮窗界面展示無需使用的資源,釋放更多內(nèi)存用于游戲及語音通話。通過以固定頻率向服務(wù)器發(fā)送心跳包及定時(shí)喚醒系統(tǒng),保證與服務(wù)器保持連接,使實(shí)時(shí)語音通話順暢進(jìn)行,避免由于掉線而導(dǎo)致語音通話的中斷。
[0111]以上是對(duì)本發(fā)明所提供的一種實(shí)時(shí)語音的方法及裝置進(jìn)行了詳細(xì)的介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的結(jié)構(gòu)原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【主權(quán)項(xiàng)】
1.一種實(shí)時(shí)語音的方法,其特征在于:包括以下步驟: 當(dāng)實(shí)時(shí)語音應(yīng)用程序切換到后臺(tái)運(yùn)行時(shí),讀取當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序類型; 判斷當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序是否為游戲應(yīng)用程序; 如果當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序?yàn)橛螒驊?yīng)用程序,生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面上,以供用戶進(jìn)行相應(yīng)的操作。2.根據(jù)權(quán)利要求1所述的實(shí)時(shí)語音的方法,其特征在于:所述相應(yīng)的懸浮窗包括主界面懸浮窗、子界面懸浮窗及圖標(biāo)懸浮窗,生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面上的步驟還包括如下步驟: 判斷所述實(shí)時(shí)語音應(yīng)用程序是否處于實(shí)時(shí)語音通話狀態(tài); 若所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),顯示相應(yīng)的圖標(biāo)懸浮窗于所述游戲程序的界面上。3.根據(jù)權(quán)利要求2所述的實(shí)時(shí)語音的方法,其特征在于:若所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài),顯示包括主操作界面的主界面懸浮窗于所述游戲應(yīng)用程序的界面上,以供用戶操作。4.根據(jù)權(quán)利要求2-3所述的實(shí)時(shí)語音的方法,其特征在于:當(dāng)所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用硬件渲染所述主界面懸浮窗及子界面懸浮窗;當(dāng)所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用軟件渲染圖標(biāo)懸浮窗。5.根據(jù)權(quán)利要求1所述的實(shí)時(shí)語音的方法,其特征在于:所述方法還包括如下步驟:當(dāng)所述游戲程序結(jié)束時(shí),關(guān)閉當(dāng)前顯示的懸浮窗。6.一種實(shí)時(shí)語音的裝置,其特征在于,包括: 讀取模塊,用于讀取當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序類型; 第一判斷模塊,用于判斷當(dāng)前系統(tǒng)執(zhí)行的應(yīng)用程序是否為游戲應(yīng)用程序; 懸浮窗產(chǎn)生模塊,用于生成與所述實(shí)時(shí)語音應(yīng)用程序相對(duì)應(yīng)的懸浮窗并顯示于所述游戲應(yīng)用程序的界面上,以供用戶進(jìn)行相應(yīng)的操作。7.根據(jù)權(quán)利要求6的實(shí)時(shí)語音的裝置,其特征在于,懸浮窗產(chǎn)生模塊顯示的所述相應(yīng)懸浮窗包括主界面懸浮窗、子界面懸浮窗及圖標(biāo)懸浮窗,所述懸浮窗產(chǎn)生模塊包括: 語音判斷單元,用于判斷所述實(shí)時(shí)語音應(yīng)用程序是否處于實(shí)時(shí)語音通話狀態(tài); 顯示單元,用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),顯示相應(yīng)的圖標(biāo)懸浮窗于所述游戲應(yīng)用程序的界面上。8.根據(jù)權(quán)利要求7的實(shí)時(shí)語音的裝置,其特征在于,所述顯示單元還用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),顯示包括主操作界面的主界面懸浮窗于所述游戲應(yīng)用程序的界面上,以供用戶操作。9.根據(jù)權(quán)利要求7-8的實(shí)時(shí)語音的裝置,其特征在于,還包括: 渲染模塊,用于當(dāng)所述實(shí)時(shí)語音應(yīng)用程序未處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用硬件渲染所述主界面懸浮窗及子界面懸浮窗;當(dāng)所述實(shí)時(shí)語音應(yīng)用程序處于實(shí)時(shí)語音通話狀態(tài)時(shí),采用軟件渲染圖標(biāo)懸浮窗。10.根據(jù)權(quán)利要求6的實(shí)時(shí)語音的裝置,其特征在于,還包括: 控制模塊,用于當(dāng)所述游戲程序結(jié)束時(shí),關(guān)閉當(dāng)前顯示的懸浮窗。
【文檔編號(hào)】G06F3/0481GK105843466SQ201610143662
【公開日】2016年8月10日
【申請(qǐng)日】2016年3月14日
【發(fā)明人】沈文喆
【申請(qǐng)人】廣州趣丸網(wǎng)絡(luò)科技有限公司