徐艷菲,吳鐵峰
基于Android的音視頻播放器的研究與設(shè)計(jì)
徐艷菲,吳鐵峰
(佳木斯大學(xué)信息電子技術(shù)學(xué)院,佳木斯154007)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,利用計(jì)算機(jī)技術(shù)改善人民生活水平的需求越來(lái)越高。音視頻播放器研究的目的就是為了滿足用戶的精神生活需要,而開(kāi)發(fā)的一款基于Android平臺(tái)的便于人們使用的音、視頻播放器,通過(guò)在移動(dòng)端使用播放器,播放音樂(lè)或視頻文件,給用戶帶來(lái)藝術(shù)體驗(yàn),最終達(dá)到緩解用戶壓力的目的。從音視頻播放器開(kāi)發(fā)的意義和目的出發(fā),在對(duì)播放器的需求進(jìn)行分析的基礎(chǔ)上,以Java語(yǔ)言和Android SDK為開(kāi)發(fā)語(yǔ)言,以Android Studio為編寫工具進(jìn)行設(shè)計(jì)。播放器主要分為音樂(lè)播放和視頻播放兩大模塊。音、視頻播放器實(shí)現(xiàn)了調(diào)節(jié)音量、切換播放模式、歌詞顯示、上一曲或下一曲播放、播放進(jìn)度條的同步顯示等功能。
Android系統(tǒng);音樂(lè)播放器;視頻播放器;開(kāi)源系統(tǒng);消息傳遞機(jī)制
隨著社會(huì)的發(fā)展,人們的生活水平不斷提高,生活節(jié)奏也在不斷加快,隨之而來(lái)的是精神壓力越來(lái)越大,而欣賞音樂(lè)和觀看視頻是最好的舒緩壓力的方式之一,但目前市面上用戶使用的主流播放器還存在著一些弊端,例如:所需要占用的內(nèi)存過(guò)大、外觀花哨不實(shí)用、播放時(shí)損耗流量過(guò)多、軟件捆綁過(guò)于嚴(yán)重、操作過(guò)于繁瑣不適合老年和兒童使用、音樂(lè)播放和視頻播放之間的切換過(guò)于繁瑣,等等。
這些情況嚴(yán)重影響了用戶的良好體驗(yàn)和個(gè)人權(quán)益,針對(duì)以上各種弊端,將各項(xiàng)性能進(jìn)行優(yōu)化,同時(shí)繼承播放器的常用功能,便可滿足一般用戶聽(tīng)歌、看電影的需求。它能播放常見(jiàn)格式的音視頻文件,包括RMVB、AVI、3GB 等格式的視頻文件[1]。
以開(kāi)發(fā)一個(gè)可以播放主流音樂(lè)文件格式并且可以播放視頻的多功能播放器為目的,設(shè)計(jì)一款基于Android手機(jī)平臺(tái)的音視頻播放器。利用音視頻可以在同一個(gè)APP中播放的特點(diǎn),更好地提升用戶的體驗(yàn)。手機(jī)上裝有一個(gè)靈巧的音視頻播放器,用戶的操作將更加便捷[2]。
在搭建Android的開(kāi)發(fā)環(huán)境時(shí),首先要搭建Java的開(kāi)發(fā)環(huán)境,其搭建過(guò)程如下:安裝JDK,配置JDK的環(huán)境變量;下載Android開(kāi)發(fā)所需要的SDK;下載開(kāi)發(fā)工具,此處用到的開(kāi)發(fā)工具為Android Studio;下載完成Android Studio后,關(guān)聯(lián)一下SDK[3]。
當(dāng)設(shè)計(jì)師創(chuàng)建Android應(yīng)用程序的進(jìn)程之時(shí),系統(tǒng)就給此進(jìn)程提供了一個(gè)Looper。Looper是一個(gè)死循環(huán),它從內(nèi)部維護(hù)這個(gè)消息隊(duì)列。Looper不停地從消息隊(duì)列中取出消息(Message),取到消息就發(fā)送給Handler,最后Handler根據(jù)接收到的消息去修改UI。Handler的sendMessage方法就是將消息添加到消息隊(duì)列中[4]。Activity中提供了一個(gè)runOnUiThread方法,用于進(jìn)行消息處理。此方法是通過(guò)線程合并join來(lái)實(shí)現(xiàn)消息處理的。線程合并指的是:主線程將子線程的任務(wù)拿到自己這里來(lái)執(zhí)行并終止子線程[5]。消息機(jī)制原理圖如圖1所示。
圖1 消息機(jī)制圖
音、視頻播放器最主要的功能就是播放視頻和音頻。在播放音頻時(shí),要考慮它的播放模式,一共可設(shè)置三種播放模式,分別為:隨機(jī)播放、單曲循環(huán)和列表循環(huán)。音頻播放時(shí)需要實(shí)現(xiàn)音量控制功能,在播放時(shí)調(diào)節(jié)音量的大小。此外還要實(shí)現(xiàn)播放和暫停的功能,來(lái)提升用戶的體驗(yàn)。最終還需要實(shí)現(xiàn)歌詞顯示功能和播放上一曲/下一曲的功能。系統(tǒng)的用例圖如圖2所示。
圖2 系統(tǒng)用例圖
當(dāng)用戶打開(kāi)軟件時(shí)首先進(jìn)入的是主界面,當(dāng)進(jìn)入主界面時(shí)默認(rèn)的選擇界面為播放音頻的界面,進(jìn)入該界面時(shí)軟件會(huì)自動(dòng)查找手機(jī)SD卡中的音頻資料,通過(guò)這些音頻資料自動(dòng)生成播放列表。獲取完播放列表之后點(diǎn)擊播放列表上的音頻文件就可以跳轉(zhuǎn)到播放界面,如需退出應(yīng)用時(shí)按手機(jī)上的返回鍵即可。當(dāng)讀取音、視頻出錯(cuò),或執(zhí)行點(diǎn)擊播放操作出現(xiàn)錯(cuò)誤時(shí)會(huì)造成程序崩潰的情況。音、視頻播放流程圖如圖3所示。
音、視頻播放器的主體功能分為音樂(lè)播放和視頻播放,音樂(lè)播放界面的主要功能包括設(shè)定歌曲的播放模式、獲取音樂(lè)播放列表、點(diǎn)擊播放音樂(lè)和文件瀏覽。視頻播放器的主要功能為獲取視頻播放列表、點(diǎn)擊播放視頻和文件瀏覽。
圖3 音視頻播放流程圖
當(dāng)用戶進(jìn)入音樂(lè)播放界面時(shí)要實(shí)現(xiàn)對(duì)音樂(lè)播放模式的設(shè)定,完善播放列表上所顯示的信息,比如歌曲大小的顯示、歌曲名稱的顯示和歌唱家的顯示;此外還要實(shí)現(xiàn)播放界面的歌詞顯示和上一曲和下一曲的切換,以及增加和刪除歌曲等功能。
當(dāng)進(jìn)入視頻播放界面時(shí),用戶要完善播放列表上視頻的大小顯示、視頻的名稱顯示,實(shí)現(xiàn)播放界面的快進(jìn)和快退功能以及視頻上一集和下一集的切換,實(shí)現(xiàn)顯示視頻播放的進(jìn)度和進(jìn)度條所顯示的播放位置一致的功能,以及增加視頻和刪除視頻等功能。
Android中自帶SQLite數(shù)據(jù)庫(kù),這是一個(gè)十分小型的數(shù)據(jù)庫(kù),正適合于Android這種移動(dòng)平臺(tái)使用。SQLite是一個(gè)嵌入式數(shù)據(jù)庫(kù)引擎,針對(duì)內(nèi)存資源有限的設(shè)備SQLiteDatabase專門提供了對(duì)應(yīng)于添加(insert)、刪除(delete)、更新(update)、查詢(query)的操作方法[6]。
這些方法封裝了部分SQL語(yǔ)句,通過(guò)參數(shù)進(jìn)行拼接。這些方法實(shí)際上是給那些不太了解SQL語(yǔ)法的開(kāi)發(fā)者使用的。對(duì)于熟悉SQL語(yǔ)法的程序員而言,直接使用execSQL()和rawQuery()方法執(zhí)行SQL語(yǔ)句就能完成數(shù)據(jù)的添加、刪除、更新、查詢操作。
這四種操作方法主要是在使用內(nèi)容時(shí)使用,因?yàn)閏ontentprovider中提供的增、刪、改、查的方法,與這一套一樣,方便調(diào)用參數(shù)。具體的用法為:
insert("表名",nullColumnHack,"",contentValue)null,ColumnHack:如果寫 null,就無(wú)法插入一條空數(shù)據(jù),如果想插入空數(shù)據(jù),第二個(gè)參數(shù)必須寫一個(gè)列名(任意列),這個(gè)列名是用來(lái)拼接sql語(yǔ)句的,如果contentValue為空,則后臺(tái)不知道表的列名,無(wú)法構(gòu)建sql語(yǔ)句。
ContentValue為鍵值對(duì),鍵對(duì)應(yīng)列名,值對(duì)應(yīng)插入的值,返回值longid,插入的主鍵id,delete(“表名”,條件,條件值),返回受影響的行數(shù)。
update(“表名”,contentValues(更新列、值),條件,條件值),返回受影響的行數(shù)。
query(“表名”,查詢的字段,條件,條件值)[7]。
Android自帶一個(gè)MediaStore封閉類,專門來(lái)存儲(chǔ)媒體信息,通過(guò)Uri EXTERNAL_CONTENT_URI來(lái)訪問(wèn)SD卡中的歌曲詳細(xì)信息。
歌曲信息表存放媒體信息,字段包括曲目編號(hào)、曲目名字、曲目編碼、流派、歌詞本、歌唱家、曲目文件大小等。
視頻信息表存放視頻信息,字段包括視頻編號(hào)、視頻名字、視頻編碼、視頻制作人、視頻大小、劇集等信息。
軟件支持用戶通過(guò)播放列表來(lái)獲取各個(gè)音頻或者視頻的詳細(xì)信息,通過(guò)播放列表來(lái)操作音視頻。
軟件測(cè)試就是利用測(cè)試工具按照測(cè)試方案對(duì)應(yīng)用進(jìn)行功能測(cè)試和性能測(cè)試,發(fā)現(xiàn)程序中存在的問(wèn)題??梢愿鶕?jù)需要,確定不同的測(cè)試方案,設(shè)計(jì)和維護(hù)測(cè)試系統(tǒng),并對(duì)測(cè)試方案可能出現(xiàn)的問(wèn)題進(jìn)行分析。執(zhí)行測(cè)試用例后,需要跟蹤故障,以確保開(kāi)發(fā)的產(chǎn)品適合需求。軟件測(cè)試的過(guò)程也是程序功能運(yùn)行的過(guò)程。程序運(yùn)行需要數(shù)據(jù),為測(cè)試設(shè)計(jì)的數(shù)據(jù)也稱測(cè)試用例,其目的是找出軟件可能出現(xiàn)的問(wèn)題和潛在的錯(cuò)誤。
(1)測(cè)試工具
測(cè)試工具為Java開(kāi)發(fā)環(huán)境、安卓SDK和安卓虛擬機(jī)。Java是一種跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。安卓SDK是安卓開(kāi)發(fā)工具包。安卓虛擬機(jī)是由Google官方出廠,以方便開(kāi)發(fā)者使用的安卓環(huán)境,方便開(kāi)發(fā)。可以讓開(kāi)發(fā)者在PC端(電腦上)安裝運(yùn)行模擬Android系統(tǒng)[8]。
(2)測(cè)試結(jié)論
經(jīng)過(guò)測(cè)試,系統(tǒng)各模塊之間鏈接正常,各模塊功能都已經(jīng)實(shí)現(xiàn);系統(tǒng)功能完整、穩(wěn)定,性能良好。音、視頻播放器列表界面如圖4所示。播放列表界面是為了讓用戶可以直接在播放器上對(duì)音、視頻資源進(jìn)行操作。通過(guò)測(cè)試,系統(tǒng)達(dá)到了預(yù)期目標(biāo)。
圖4 播放列表界面圖
軟件采用的開(kāi)發(fā)工具是Android Studio 2.2.3、Android SDK 7.0,基于Java語(yǔ)言設(shè)計(jì)。系統(tǒng)經(jīng)過(guò)了需求分析、設(shè)計(jì)以及測(cè)試,在安卓手機(jī)上實(shí)現(xiàn)了播放器的功能且運(yùn)行流暢。經(jīng)用戶的體驗(yàn)證實(shí),該音、視頻播放器操作簡(jiǎn)單、使用方便且不占用過(guò)多的內(nèi)存。音視頻播放器系統(tǒng)實(shí)現(xiàn)了播放器的基本功能:正常播放音視頻、準(zhǔn)確顯示播放進(jìn)度、調(diào)節(jié)音量、點(diǎn)播上一曲/下一曲、顯示歌詞等。具體的功能經(jīng)過(guò)測(cè)試都達(dá)到了預(yù)期的效果。
[1]周雅翠.基于Android平臺(tái)的個(gè)人事務(wù)管理系統(tǒng)設(shè)計(jì)[J].吉林建筑大學(xué)學(xué)報(bào),2015(6):67-68.Zhou Yacui.Design of Personal Affairs Management System Based on Android Platform[J].Journal of Jilin Architecture And Civil Engineering Institute,2015(6):67-68.
[2] 鄧昌友,肖遙,馬小月.基于Android智能手機(jī)數(shù)據(jù)安全的研究[J].福建電腦,2015(12):5-6.Deng Changyou,Xiao Yao,Ma Xiaoyue.Research on Data Security of Smart Phone Based on Android[J].Fujian Computer,2015(12):5-6.
[3] 王毅.Android平臺(tái)并行計(jì)算研究[J].電子制作,2015(24):26-27.Wang Yi.Research on Parallel Computing of Android Platform[J].Electronic Production,2015(24):26-27.
[4] 王冬.基于Android的天氣預(yù)報(bào)軟件的設(shè)計(jì)與實(shí)現(xiàn) [J].電子制作,2015(24):32-33.Wang Dong.Design and Implementation of Weather Forecast Software Based on Android[J].Electronic Production,2015(24):32-33.
[5] 馬建設(shè),趙雪江,蘇萍,夏飛鵬.基于Android系統(tǒng)的視頻播放器開(kāi)發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2013(11):69-71.Ma Jianshe,Zhao Xuejiang,Su Ping,Xia Feipeng.Development of Video Player Based on Android System[J].Computer Applicationsand Software,2013(11):69-71.
[6] 吳新華,萬(wàn)強(qiáng).基于Android平臺(tái)的手機(jī)游戲開(kāi)發(fā)[J].萍鄉(xiāng)學(xué)院學(xué)報(bào),2015(6):66-69.Wu Xinhua,Wan Qiang.Mobile Game Development Based on Android Platform[J].Journal of Pingxiang College,2015(6):66-69.
[7] YANG Tianchang,CUI Haoliang,NIU Shaozhang.Dynamic Loading Vulnerability Detection for Android Applications Through Ensemble Learning[J].Chinese Journal of Electronics,2017(05):22-23.
[8] 董濤,李隱峰,范星光.基于Android的移動(dòng)校園客戶端的研究與實(shí)現(xiàn)[J].電子科技,2014(12):4-5.Dong Tao,Li Yinfeng,Fan Xingguang.Research and Implementation of Mobile Campus Client Based on Android[J].Electronic Scienceand Technology,2014(12):4-5.
Research and Design of Audio and Video Player Based on Android
With the development of computer technology,the use of computer technology to improve the needs of people's lives is getting higher and higher.The purpose of audio and video player research is to meet the user's spiritual life needs,which developed a Android-based platform for people to use audio and video player,through the use of players in the mobile terminal,music or video is played,bringing artistic experience to users,as to achieve the purpose of easing the pressure of users.Starting from the significance and purpose of audio and video player development,on the basis of the analysis of player requirements,Java language and Android SDK are used as the development language,and Android Studio is used as the writing tool for the design.The player is divided into two modules:music player and video player.The audio and video player realizes the functions of adjusting the volume,switching the play mode,displaying the lyrics,displaying the last song or the next song,displaying the synchronization of the progress bar and so on.
Android;music player;video player;open source system;message passing mechanism
10.3969/j.issn.1002-2279.2017.06.017
B
1002-2279-(2017)06-0074-04
徐艷菲(1996—),女,黑龍江省雙鴨山市人,本科在讀,主研方向:計(jì)算機(jī)應(yīng)用。
吳鐵峰(1981—),男,江蘇鎮(zhèn)江人,講師,主研方向:軟件工程,javaee網(wǎng)絡(luò)開(kāi)發(fā),數(shù)據(jù)庫(kù)應(yīng)用。
2017-10-31