摘 要:本文對(duì)Android中K歌系統(tǒng)的設(shè)計(jì)進(jìn)行分析,通過(guò)底層服務(wù)模塊、錄歌模塊和動(dòng)畫組件三方面對(duì)輔助Android在K歌系統(tǒng)中的實(shí)現(xiàn)進(jìn)行深入探究。希望能為有關(guān)人員提供幫助。
關(guān)鍵詞:UI框架;服務(wù)模塊;動(dòng)畫組件
引言:隨著時(shí)代的進(jìn)步,移動(dòng)終端市場(chǎng)需求呈上升趨勢(shì),人們對(duì)移動(dòng)終端的娛樂(lè)要求越來(lái)越高,在此大環(huán)境下,Android的K歌系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)迫在眉睫。
1.Android中K歌系統(tǒng)的設(shè)計(jì)
1.UI框架設(shè)計(jì)
因?yàn)閼?yīng)用的需求量大,UI數(shù)量多,在手機(jī)交互頁(yè)面會(huì)有多次的跳轉(zhuǎn),所以造成頁(yè)面變化數(shù)量增多,此時(shí)就需要能支撐整個(gè)系統(tǒng)的UI框架。安卓系統(tǒng)主要設(shè)計(jì)單一的Activity和多種Fragment的模式,其關(guān)鍵性在于只能有一個(gè)最為主要的功能模塊來(lái)充當(dāng)頁(yè)面容器的Activity,在此基礎(chǔ)上,Activity只能被當(dāng)做容器,其內(nèi)在不存在實(shí)際的UI元素和動(dòng)作。但是在此Activity中可以支撐兩個(gè)及兩個(gè)以上的頁(yè)面,每個(gè)頁(yè)面中都占據(jù)著主Fragment。然而單一的頁(yè)面可以對(duì)需要顯示頻率高的和內(nèi)在結(jié)構(gòu)性強(qiáng)的頁(yè)面模塊進(jìn)行區(qū)分,將子Fragment增添到根Fragment之上,并且需要依據(jù)實(shí)際中對(duì)子Fragment進(jìn)行顯示或者隱藏。這樣的安排共有兩點(diǎn)好處,第一點(diǎn),能將UI充分的表現(xiàn)出來(lái),因?yàn)镕ragment能根據(jù)實(shí)際的需要隨意添加隱藏和刪除功能,促使UI的等次劃分更加明確,能夠靈活的實(shí)現(xiàn)。第二點(diǎn),頁(yè)面模塊借助Fragment來(lái)實(shí)現(xiàn),并且能在任意頁(yè)面上重復(fù)使用,將系統(tǒng)進(jìn)行精簡(jiǎn)。
1.2底層服務(wù)設(shè)計(jì)
底層服務(wù)設(shè)計(jì)共有三個(gè)方面,分別在音樂(lè)播放器、錄音和合成。錄音器中以錄音功能和進(jìn)度控制功能為主,錄音模塊有開(kāi)始、結(jié)束、暫停三種操作借口供外界使用,實(shí)現(xiàn)外界對(duì)其進(jìn)行操作。錄音器需要用戶能夠根據(jù)所需隨意的調(diào)整歌曲進(jìn)度,所以錄音器需要添加進(jìn)度控制作用,一旦錄歌時(shí)的進(jìn)度被更改時(shí),應(yīng)第一時(shí)間對(duì)錄音的新合成地點(diǎn)進(jìn)行記錄。播放器則為用戶提供了播放功能,首先最原始的本地播放器為Android系統(tǒng)中的MediaPlayer,雖然可以作為播放媒介,但是無(wú)法對(duì)原有的文件進(jìn)行存儲(chǔ),因此需要借助額外的播放媒介。最后,在錄音重播功能中,主要在錄音素材進(jìn)行存儲(chǔ)之后,在音頻的合成前進(jìn)行應(yīng)用,但是此時(shí)聲音和伴奏仍然是兩個(gè)不同的軌道,運(yùn)用錄音重播功能可將兩個(gè)文件合二為一,為用戶提供預(yù)覽。合成器是將錄音以及伴奏合成一個(gè)單獨(dú)的音頻,對(duì)其進(jìn)行編號(hào),最后得到一個(gè)完整的音頻文件。
2.輔助Android在K歌系統(tǒng)中的實(shí)現(xiàn)
2.1底層服務(wù)模塊
底層模塊主要分為三個(gè)方面,分別為錄音、播放和編碼合成。第一,錄音功能需要實(shí)現(xiàn)對(duì)錄音器進(jìn)行初始化,但是一旦發(fā)生初始化不成功的現(xiàn)象就會(huì)直接釋放素材,并回到監(jiān)聽(tīng)器中對(duì)用戶進(jìn)行告知。當(dāng)初始化成功時(shí)也會(huì)第一時(shí)間通知用戶,并準(zhǔn)備錄音。在錄音時(shí),可以對(duì)錄音狀態(tài)進(jìn)行主觀調(diào)整,任意操作暫停、播放等功能,錄音器會(huì)及時(shí)儲(chǔ)存緩沖中的素材。第二,對(duì)于播放雙音頻文件和播放器的應(yīng)用,由于PcmM4aPlayer會(huì)將PCM文件中的素材直接載入AudioTrack,會(huì)造成播放和實(shí)際的操作存在不契合的情況。第三,合成器的應(yīng)用。因?yàn)橐獙⒆铋_(kāi)始的錄音PCM素材和伴奏音頻數(shù)據(jù)進(jìn)行合并,所以需原先的M4A文件轉(zhuǎn)換成PCM數(shù)據(jù),并且在展開(kāi)解碼之前,按照時(shí)間軸將兩個(gè)文件進(jìn)行對(duì)齊。
2.2動(dòng)畫組件
組成動(dòng)畫效果的每一個(gè)圖層中,外部業(yè)務(wù)會(huì)將自身合成完成后交接至動(dòng)畫組件,動(dòng)畫效果由動(dòng)畫組件來(lái)完成,外部業(yè)務(wù)可以任意對(duì)動(dòng)畫進(jìn)行操控。首先,設(shè)置畫筆的顏色和文字屬性為原始狀態(tài),然后對(duì)該線程的活躍情況進(jìn)行事先了解,以預(yù)防由于外界的啟動(dòng)頻繁而造成動(dòng)畫線程失誤。在進(jìn)入線程之后應(yīng)當(dāng)首要判斷暫停繪制動(dòng)畫的必要性,暫停繪制時(shí)系統(tǒng)會(huì)進(jìn)入一種等候狀態(tài),如果不需要的話就開(kāi)始進(jìn)行繪制工作,繪制過(guò)程會(huì)設(shè)計(jì)到有關(guān)的全部圖層,所有的圖層中所繪制的動(dòng)畫組件都顯示在canvas上。在繪制完畢之后,系統(tǒng)會(huì)有20ms的間歇等候狀態(tài),此狀態(tài)過(guò)后便可進(jìn)行再一次的繪制,以此實(shí)現(xiàn)一秒中畫面數(shù)量高達(dá)50幀的效果。在進(jìn)入系統(tǒng)休眠等待之后,外界仍然可以對(duì)動(dòng)畫繪制進(jìn)行操控,并且可以暫停動(dòng)畫或清空全部圖層[1]。
2.3錄歌模塊
一開(kāi)始將所需的所有文件進(jìn)行下載存儲(chǔ)之后,會(huì)直接進(jìn)入到主頁(yè)面,把下載的歌詞文件移交至系統(tǒng)中的歌詞組件,并將頁(yè)面和服務(wù)與用戶進(jìn)行綁定,登錄所需要的監(jiān)聽(tīng)器,進(jìn)行錄音和播放。對(duì)著伴奏的播放進(jìn)行錄音,并對(duì)齊時(shí)間軸進(jìn)行歌詞的匹配,歌詞將隨著伴奏進(jìn)行滾動(dòng)。登錄狀態(tài)的服務(wù)器會(huì)不停的接受底層的回調(diào),及時(shí)獲得播放的時(shí)間進(jìn)度和評(píng)分情況,并第一時(shí)間對(duì)數(shù)據(jù)的更新?tīng)顩r顯示到UI頁(yè)面上。在錄制的過(guò)程,伴奏、歌詞、錄音狀況和評(píng)分標(biāo)準(zhǔn)都是同步的,都是以伴奏為標(biāo)準(zhǔn)。
結(jié)論:綜上所述,本文依據(jù)K歌軟件系統(tǒng)內(nèi)部的實(shí)際需求和總體設(shè)計(jì)進(jìn)行分析,對(duì)系統(tǒng)內(nèi)部的素材設(shè)計(jì),包括底層服務(wù)、動(dòng)畫組件等框架設(shè)計(jì)進(jìn)行詳細(xì)闡述,為實(shí)際的應(yīng)用提供幫助。
參考文獻(xiàn):
[1]陳平.UI自適應(yīng)的Android軟件自動(dòng)化測(cè)試框架研究[J].安徽冶金科技職業(yè)學(xué)院學(xué)報(bào),2017,27(02):43-45.
作者簡(jiǎn)介:
遲俁鑫(1996),男,籍貫:吉林省遼源市,職稱和學(xué)歷:學(xué)生,大學(xué)本科,研究方向或?qū)I(yè):計(jì)算機(jī)工程系、軟件工程。