摘要: 介紹了一款基于“云”技術(shù)的音樂播放器,該播放器集播放本地音樂、播放網(wǎng)絡(luò)音樂、賬號(hào)云同步、資源云存儲(chǔ)于一體,使播放器的功能不局限于簡(jiǎn)單的本地播放或者單純的網(wǎng)站音樂下載,通過應(yīng)用了“云”技術(shù)的播放器使得任何一個(gè)用戶都可以通過“云”隨時(shí)隨地分享他們喜愛的歌曲,同時(shí)能搜索其他用戶分享的歌曲。在不同的地方,不同的平臺(tái),只要能接入互聯(lián)網(wǎng),就能夠輕松同步個(gè)人資源,免去了不斷拷貝與數(shù)據(jù)丟失之煩惱。所開發(fā)的程序基于Android平臺(tái),“云”存儲(chǔ)模塊采用了C/S模式,具有界面華麗美觀,操作簡(jiǎn)潔流暢等優(yōu)點(diǎn)。
關(guān)鍵詞: 云; 音樂播放器; 云計(jì)算; 共享
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2012)10-17-03
引言
近幾年來“云計(jì)算”概念非常的火爆,“云計(jì)算”核心是將大量的網(wǎng)絡(luò)資源統(tǒng)一起來,為用戶提供高效、便捷的軟件服務(wù)[1]?!霸朴?jì)算”倡導(dǎo)者希望的是:用戶使用軟件服務(wù)就像使用電和水一樣,可以便捷、隨時(shí)隨地、按需地使用服務(wù)。在“云計(jì)算”這個(gè)網(wǎng)絡(luò)應(yīng)用模式下,用戶可以通過各種“端”訪問“云”,“端”可以是任何能夠上網(wǎng)的電子設(shè)備,“云”就是提供的服務(wù),“云”可能是巨大的、連成一片的、無邊境的,也可能是渺小的、孤立的,總之它無處不在,能夠提供給用戶所需要的各種服務(wù)。云計(jì)算被視為科技業(yè)的下一次革命,它將帶來工作方式和商業(yè)模式的根本性改變[2]。我國(guó)政府十分重視云計(jì)算的發(fā)展,全國(guó)各地紛紛建起云計(jì)算基地,云計(jì)算已在我國(guó)顯示出了其強(qiáng)大的生命力。
音樂在我國(guó)已經(jīng)有幾千年的發(fā)展歷史,它對(duì)每個(gè)人來說已經(jīng)是一種不可或缺的產(chǎn)品。走在大街上,坐在餐廳中,呆在房間中,都能聽到很多悅耳的音樂,這些都?xì)w功于技術(shù)的發(fā)展,讓音樂生活更加豐富多彩。如今,人們聽音樂的方式也已經(jīng)有了很大的改變,從古老的樂器演奏,到后來的機(jī)器播放,再到現(xiàn)在的MP3,WMA等音樂文件的出現(xiàn),始終向著為方便人們享受這種美妙的感覺的方向前進(jìn)。而隨著“云“的發(fā)展,音樂可以更加快速的在社會(huì)中傳播,這一個(gè)時(shí)刻你正在聽的歌曲,也許下一個(gè)時(shí)刻正在被其他人聽。
正如文獻(xiàn)[3]中所提出的:在“云計(jì)算”時(shí)代,“云”會(huì)替我們做存儲(chǔ)和計(jì)算的工作,所以“云“的出現(xiàn)為我們的生活提供了極大的方便。假如要出差去一個(gè)很遠(yuǎn)的地方,不方便攜帶電腦,但是電腦中保存著一些重要的信息,那么,我們就可以把這些信息保存在”云“端,無論我們?cè)谀睦铮灰幸慌_(tái)電腦或者一部手機(jī),就可以下載到這些信息,而不需要攜帶電腦或者移動(dòng)硬盤等。音樂也可以通過”云“達(dá)到這種效果,例如,我們?cè)谀硞€(gè)地方聽到一首很好聽的歌曲,但是沒有辦法下載帶走,而通過”云“,我們就可以實(shí)現(xiàn)歌曲的上傳和下載,從而實(shí)現(xiàn)音樂共享。很久以前,上傳音樂只是一些音樂門戶網(wǎng)站或者會(huì)員的權(quán)力,一般用戶只能在線收聽或者下載,這種單一的方式不利于音樂的快速發(fā)展。如今,人們將自己喜愛的音樂,或者自己錄制的歌曲放置在”云“端后,可以告訴他的同學(xué)朋友們,這樣,他的朋友就可以馬上在”云“端找到這首歌,不僅可以將這首歌下載下來,還可以對(duì)這首歌曲添加評(píng)論。這種方式,讓音樂不再僅限于聽,而是更加注重于分享。
1 “云”音樂播放器設(shè)計(jì)思路
我們開發(fā)的是一款典型的Android娛樂應(yīng)用軟件——“云”音樂播放器,由于本軟件是基于Google App Engine,借助Google云進(jìn)行開發(fā)和編制的云端軟件,其中包括網(wǎng)絡(luò)音樂云同步,網(wǎng)絡(luò)音樂云下載等功能,所以也是一款地地道道的Google云應(yīng)用軟件、云終端。
1.1 播放器模塊
“云”音樂播放器引入了云存儲(chǔ)等技術(shù),設(shè)計(jì)包括兩個(gè)主要模塊:
⑴ 本地音樂播放模塊,支持傳統(tǒng)的音樂播放器模式,包括本地歌曲搜索,播放,設(shè)置鈴聲等功能。
⑵ “云”音樂播放模塊,將本地音樂上傳到“云”端,或者從云端下載到本地,包括上傳,下載和評(píng)論的功能。
1.1.1 本地音樂播放模塊功能
本地音樂搜索:
具有兩種搜索方法,一是選擇自己添加喜歡的歌曲或者歌曲文件夾,二是選擇讓程序自動(dòng)掃描內(nèi)存卡的所有歌曲文件。添加文件后,用戶只要輸入歌曲名,就可以查找在播放列表中的歌曲。
播放本地歌曲:
實(shí)現(xiàn)日常的播放功能,實(shí)現(xiàn)歌曲和歌詞的同步,提供了單曲循環(huán),列表循環(huán),隨機(jī)播放三個(gè)播放模式。一共有五個(gè)分類:全部歌曲,歌手,專輯,文件夾和我的最愛。用戶可以根據(jù)分類來查看歌曲信息,將喜愛的歌曲添加到“我的最愛”列表,也可以刪除歌曲,包括從列表中刪除和刪除內(nèi)存卡中的文件。添加桌面插件功能,用戶不需要打開程序,直接在桌面上就可以播放歌曲。
設(shè)置手機(jī)鈴聲:
⑴ 可以將自己喜歡的歌曲設(shè)置為來電鈴聲或短信鈴聲。
⑵ 有短信或者來電時(shí)會(huì)暫停播放歌曲,直到通話結(jié)束繼續(xù)播放,并可以監(jiān)聽耳機(jī)上的按鍵操作,比如接通或掛斷電話,音量的加減等。
1.1.2 “云”音樂播放模塊功能
上傳音樂:將本地音樂上傳到“云”端,提供給其他用戶下載使用。
下載音樂:查看并下載放置在“云”端的音樂,也可以在線播放,省去下載時(shí)間。
評(píng)論音樂:對(duì)放置在“云”端的音樂提供打分評(píng)論機(jī)制,所有用戶都可以看到,作為對(duì)音樂的一種評(píng)價(jià)。
1.2 云存儲(chǔ)
由于網(wǎng)絡(luò)資源豐富,加上現(xiàn)代人尤其是年青一代對(duì)個(gè)性化的追求,使得播放器所要處理的音樂量非常龐大,所以才有了云存儲(chǔ)的概念。
1.2.1 云存儲(chǔ)的概念
云存儲(chǔ)是在云計(jì)算概念上延伸和發(fā)展出來的一個(gè)新的概念,是計(jì)算機(jī)云領(lǐng)域比較成熟的一部分,可用于解決存儲(chǔ)的相關(guān)問題,在網(wǎng)絡(luò)時(shí)代可以用于解決個(gè)體用戶的設(shè)備維護(hù)、數(shù)據(jù)安全、存儲(chǔ)等一系列相關(guān)問題[3]。它是指通過集群應(yīng)用、網(wǎng)格技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類型的存儲(chǔ)設(shè)備通過應(yīng)用軟件集合起來協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問功能的一個(gè)系統(tǒng)[1]。當(dāng)云計(jì)算系統(tǒng)運(yùn)算和處理的核心是大量數(shù)據(jù)的存儲(chǔ)和管理時(shí),云計(jì)算系統(tǒng)中就需要配置大量的存儲(chǔ)設(shè)備,那么云計(jì)算系統(tǒng)就轉(zhuǎn)變成為一個(gè)云存儲(chǔ)系統(tǒng),所以云存儲(chǔ)是一個(gè)以數(shù)據(jù)存儲(chǔ)和管理為核心的云計(jì)算系統(tǒng)。
1.2.2 云存儲(chǔ)的模擬實(shí)現(xiàn)
本程序?qū)τ谝魳肺募拇鎯?chǔ)采用了云存儲(chǔ)的概念,其存儲(chǔ)設(shè)計(jì)如圖2所示。
每個(gè)移動(dòng)終端將自己的音樂文件存儲(chǔ)到“云”端,用分布式文件系統(tǒng)管理這些文件,方便用戶在需要的時(shí)候查看并下載,并可以共享給其他用戶。這樣不僅節(jié)省了很大的存儲(chǔ)設(shè)備開支,也方便用戶管理音樂文件。
本程序使用TOMCAT+SQLSERVER模擬了一個(gè)本地的“云”服務(wù)器,用戶通過本程序,將選擇的音樂保存到TOMCAT服務(wù)器中,同時(shí)將歌曲信息保存到SQLSERVER數(shù)據(jù)庫里,包括歌曲名,歌曲所有者,歌曲保存路徑,歌曲共享權(quán)限等。音樂文件上傳到“云”服務(wù)器之后,用戶可以在程序中看到保存在“云”端的歌曲列表,其他用戶可以看到“云”端共享的音樂文件,并且能夠下載這些文件。
2 系統(tǒng)開發(fā)的關(guān)鍵技術(shù)及驗(yàn)證性測(cè)試
2.1 系統(tǒng)的開發(fā)技術(shù)
根據(jù)Android的設(shè)計(jì)理念,在程序的開發(fā)過程中,盡量做到代碼的高效性和程序的快速性[2]。本程序采用多線程處理模式,并發(fā)控制多個(gè)任務(wù)的進(jìn)行,包括歌曲播放和歌曲下載,保證了程序的流暢性和高效性。云技術(shù)的發(fā)展讓多媒體技術(shù)有了更廣闊的發(fā)展空間。本程序的網(wǎng)絡(luò)歌曲部分將放置在云端的音樂鏈接獲取下來呈現(xiàn)給用戶,用戶可以隨時(shí)隨地收聽,下載。而且通過云計(jì)算,能夠保證用戶在聽音樂的同時(shí)完成其他任務(wù),比如看電子書,瀏覽網(wǎng)站等等,大大增加了用戶的體驗(yàn)感,也使得程序運(yùn)行更加流暢。
2.1.1 本地音樂播放的開發(fā)
⑴ 本程序在實(shí)現(xiàn)了監(jiān)聽手機(jī)按鍵(Listener)的同時(shí),還考慮到手機(jī)的外圍設(shè)備,增加了對(duì)耳機(jī)的監(jiān)聽功能,以使用戶能夠更加容易地使用。
⑵ 歌曲顯示和掃描方面,采用適配器的方法,將圖片和文字整合到ListView中,監(jiān)聽I(yíng)tem操作來實(shí)現(xiàn)歌曲播放和添加。
⑶ Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video兩個(gè)應(yīng)用程序都是調(diào)用MediaPlayer實(shí)現(xiàn)的。MediaPlayer在底層是基于OpenCore(PacketVideo)的庫實(shí)現(xiàn)的,為了構(gòu)建一個(gè)MediaPlayer程序,上層還包含了進(jìn)程間通訊等內(nèi)容,這種進(jìn)程間通訊的基礎(chǔ)是Android基本庫中的Binder機(jī)制。本程序使用了MediaPlayer類用來實(shí)現(xiàn)歌曲的本地播放和在線播放,并且用Java中的Stream類來控制歌曲下載,并支持?jǐn)帱c(diǎn)重連。歌曲顯示和掃描方面,采用適配器(Adapter)的方法,將圖片和文字整合到ListView中,監(jiān)聽I(yíng)tem操作來實(shí)現(xiàn)歌曲播放和添加。
⑷ 后臺(tái)處理方面,解析網(wǎng)絡(luò)歌曲信息采用SAX類來解析XML文件,使用SQLite數(shù)據(jù)庫來保存和處理歌曲和歌手信息,添加必要的觸發(fā)器來操作數(shù)據(jù)庫。將歌曲放在Service中操作,同時(shí)運(yùn)用多線程處理,將搜索歌曲和下載歌曲放在子線程中,保證了整個(gè)程序流暢。
⑸ 在Android里面有各種各樣的廣播,比如電池的使用狀態(tài),電話的接收和短信的接收都會(huì)產(chǎn)生一個(gè)廣播,應(yīng)用程序開發(fā)者也可以監(jiān)聽這些廣播并做出程序邏輯處理。如圖3所示。
本程序利用了BroadCastReceiver的機(jī)制,將所有按鈕的監(jiān)聽通過該機(jī)制來實(shí)現(xiàn),并且增加了對(duì)手機(jī)外圍設(shè)備的監(jiān)聽,比如來電時(shí)暫停歌曲播放,通話結(jié)束后繼續(xù)播放歌曲等。這樣一來不僅統(tǒng)一了所有按鈕的操作,也加快了程序運(yùn)行的速度,進(jìn)而提升了用戶體驗(yàn)感。
⑹ 數(shù)據(jù)處理方面,解析網(wǎng)絡(luò)歌曲信息采用SAX類來解析XML文件。采用XML文件存儲(chǔ)數(shù)據(jù)是Android程序常用的存儲(chǔ)方式。解析XML主要有DOM、SAX方式,DOM處理XML文檔是基于將XML文檔解析成樹狀模型,放入內(nèi)存進(jìn)行處理;而SAX則是采用基于事件驅(qū)動(dòng)的處理模式,它將XML文檔轉(zhuǎn)化成一系列的事件,由單獨(dú)的事件處理器來決定如何處理。SAX是一個(gè)解析速度快并且占用內(nèi)存少的XML解析器,非常適合用于Android等移動(dòng)設(shè)備。 本文給出部分使用SAX解析XML文件的代碼:
2.1.2 云音樂播放模塊的開發(fā)
根據(jù)云存儲(chǔ)的理念,我們?cè)诒镜啬M了一個(gè)云服務(wù)器。
在Android平臺(tái)上,集成了一個(gè)嵌入式關(guān)系型數(shù)據(jù)庫—SQLite,它是一款輕量級(jí)的關(guān)系型數(shù)據(jù)庫。由于SQLite占用的資源非常少,所以在很多嵌入式設(shè)備都是用它來存儲(chǔ)數(shù)據(jù)。SQLite目前支持Windows/Linux/Unix等主流的操作系統(tǒng),兼容性還不錯(cuò)。我們也可以用多種開發(fā)語言如C#、Java、PHP等來通過ODBC接口操作SQLite,十分方便。本程序就是采用SQLite數(shù)據(jù)庫來保存和處理歌曲和歌手信息,添加必要的觸發(fā)器來操作數(shù)據(jù)庫。將歌曲放在Service中操作,同時(shí)運(yùn)用多線程處理,將搜索歌曲和下載歌曲放在子線程中,保證了整個(gè)程序的流暢性。
2.2 驗(yàn)證性測(cè)試
為了驗(yàn)證程序的可行性與兼容性,我們?cè)诙鄠€(gè)平臺(tái)上對(duì)其進(jìn)行了測(cè)試,測(cè)試結(jié)果如表1所示。
3 “云”音樂播放器的特點(diǎn)
3.1 美觀華麗的界面
用戶評(píng)價(jià)一個(gè)軟件項(xiàng)目的好壞,首先就是看其界面的美觀程度,我們?cè)谶@方面上精心設(shè)計(jì),力爭(zhēng)精心設(shè)計(jì)每個(gè)控件,讓整個(gè)界面美觀華麗。在UI上采用Android系統(tǒng)中的經(jīng)典的布局結(jié)構(gòu)(Layout),整合多種控件和華麗的動(dòng)畫效果,保證了程序的簡(jiǎn)潔性和界面的美觀性,給予用戶強(qiáng)烈的視覺沖擊。
3.2 流暢簡(jiǎn)潔的操作
根據(jù)Android的設(shè)計(jì)理念,我們?cè)诔绦虻拈_發(fā)過程中,做到代碼的高效性和程序的快速性。本程序采用多線程處理模式,并發(fā)控制多個(gè)任務(wù)的進(jìn)行,包括歌曲播放和歌曲下載,保證了程序的流暢性和高效性。
3.3 “云”技術(shù)的應(yīng)用
用戶使用“云”技術(shù)時(shí),可以選擇公有云或私有云,即選擇上傳的音樂能否被其他用戶查找到,從而尊重用戶的隱私權(quán)。對(duì)上傳到“云”端的音樂文件采用分布式管理,進(jìn)行多個(gè)備份,防止數(shù)據(jù)丟失,并提供打分制度,提供一種對(duì)音樂文件的評(píng)價(jià)和用戶下載的參考依據(jù)。通過“云”技術(shù),還能優(yōu)化程序運(yùn)行的效率,提高運(yùn)行速度。文獻(xiàn)[2]指出:如果使用云計(jì)算服務(wù),絕大部分任務(wù)交給云端完成,只需讓電腦接入互聯(lián)網(wǎng)即可。由于應(yīng)用了“云”技術(shù),省去了大型的服務(wù)器,使得本軟件的運(yùn)行成本大幅降低。
4 結(jié)束語
如今,人們的生活已經(jīng)離不開音樂,如何能夠?qū)⒁魳犯玫貪B透到人們的日常生活中,已經(jīng)是一個(gè)極為重要的問題。人們更希望玩音樂,而不是拘束于簡(jiǎn)單地聽音樂。本項(xiàng)目的提出,對(duì)于傳統(tǒng)的音樂播放器來說是一個(gè)重大性的創(chuàng)新,即在音樂之中融入了“云”的概念,讓音樂能夠在“云”端飄來飄去,方便用戶隨時(shí)隨地享受音樂的魅力。當(dāng)然,不僅在音樂方面,社會(huì)生活中的方方面面,都可以用到“云”技術(shù)?!霸啤钡某霈F(xiàn),讓原來難以做到的事情都變成了可能,這就是“云”給我們帶來的寶貴財(cái)富。