張小琴,張 庚
?
基于Android平臺的音樂播放器設計與實現
張小琴,張 庚
(南京航空航天大學金城學院 信息工程學院,江蘇 南京 210000)
音樂是在高壓力的環(huán)境下進行放松的有效途徑,隨著Android終端設備的普及,使用Android平臺播放音樂也是大部分人群的選擇。文中詳細講述了一個Android應用程序開發(fā)平臺的構建過程,并在此平臺上開發(fā)了一款功能全面的音樂播放器。所設計的播放器可以搜索終端存儲的音樂文件,按照關鍵詞對音樂文件分類展示;該播放器可以按照需求對音樂文件進行播放、暫停、設置等功能操作。
Android;音樂播放器;模塊設計
隨著社會的進步與發(fā)展,人們開始不止?jié)M足于物質生活,而更加注重于精神生活。在如今的高壓力的生活、學習、工作中,音樂是放松精神,增加生活趣味的不二選擇[1]。隨著Android終端設備的普及,越來越多的人們開始使用Android平臺播放音樂等[2]。本文設計了一款基于Android平臺的音樂播放器,該播放器具有很強的實用性,其主要功能是搜索終端設備里所存儲的音樂文件信息,并具有對音樂進行分類展示、播放、暫停、上下首切換以及添加喜歡的音樂等功能。
Android是由Google公司推出的一種以Linux為基礎的開放源碼的操作系統(tǒng),主要適用于移動設備中,例如手機、平板電腦等終端設備。對于Android系統(tǒng)來說,最大的特點就是其開放的源碼[3,4,5]。這一點使得更多的軟件供應商和開發(fā)商能分享共同利益,同時它和互聯網緊密相聯,這使得開發(fā)人員移植互聯網應用變得更加容易。
Android系統(tǒng)架構分為四層,包括:Linux核心層、系統(tǒng)運行庫層、應用程序架構層、應用程序 層[3-5]。Linux核心層實現安全性、內存管理、進程管理和驅動模型等功能;系統(tǒng)運行庫層提供各種程序庫給Android系統(tǒng)中不同的組件使用;應用程序架構層主要提供API接口供上層調用;應用程序層是面對用戶的,提供各種應用程序,如Email客戶端、日歷等。
開源的代碼、完整的架構,使得Android系統(tǒng)得到了飛速的發(fā)展和應用。
本次設計的基于Android平臺的音樂播放器,主要功能是由一個開始等待的Loading界面轉跳到音樂播放器的主界面,在主界面實現歌曲的播放、暫停、設置等功能;主界面有“我的音樂”、“我的最愛”、“文件夾”、“歌手”、“專輯”等模塊按鈕[2,6]。點擊對應的模塊按鈕可以跳轉到各自的子模塊板塊。具體架構如圖1所示。
圖1 音樂播放器架構
本次設計使用Eclipse作為Java集成開發(fā)環(huán)境,并在原本Java的程序開發(fā)環(huán)境中裝載ADT(Android Development Tools)以及SDK(Software Development Kit)來使它達到可以進行Android平臺應用程序開發(fā)的環(huán)境配置[7-10]。ADT和SDK的加載配置如圖2、圖3所示。
圖2 ADT的加載和配置
圖3 SDK的加載和配置
音樂播放器的設計步驟為,從等待界面進入所連接的主界面,再由主界面上的各個按鈕進入每一子模塊分別進行功能設計,模塊有:
(1)專輯模塊:此功能主要是檢索本地歌曲并把歌曲的專輯信息給提取出來,轉換成列表的形式展示出來,點擊每一個專輯,即可進入該專輯的歌曲列表,點擊對應歌曲可以進行播放、暫停等。
(2)歌手模塊:此功能可以將本地歌曲里的所有歌曲的歌手作為列表顯示出來,點擊歌手名就能進入此歌手所唱的歌曲列表,點擊對應歌曲可以進行播放、暫停等。
(3)文件夾模塊:此功能可以選擇本地存放歌曲的文件夾,點擊進入某文件夾可以顯示該文件夾中所有歌曲列表,點擊對應歌曲可以進行播放、暫停等。
(4)我的音樂模塊:該模塊包括了本地歌曲的列表、搜索歌曲、播放設置、添加喜歡等功能,如果添加了喜歡,則歌曲對應圖標進行改變,并將歌曲添加到我的最愛列表里。
(5)我的最愛模塊:在我的音樂模塊中可以選擇歌曲為我的最愛,并進行特殊標志同時展示到該模塊中,同時在該模塊中可以看到所有我的最愛列表,也可以取消某首歌曲我的最愛標志并從列表中清除。
(6)底部設置模塊等:該模塊具有播放、暫停、歌曲設置等功能,且固定在播放器界面底部,其他模塊切換時該部分位置、功能保持不變。
由于程序設計篇幅較長,選取其中關鍵部分進行介紹。音樂播放器首先要搜索本地存儲器中所有音樂文件,將音樂文件信息按照專輯、歌手、文件夾等關鍵詞進行提取并展示到各個對應子模塊的列表中。
(1)存放音樂文件信息
將獲取到的音樂文件信息逐個輸入到數據庫里,并進行數據庫的插入語句操作。
public void saveMusicInfo(List
SQLiteDatabase db = DatabaseHelper.(mContext);
for (MusicInfo music : list) {
ContentValues cv = new ContentValues();
cv.put("songid", music.songId);
cv.put("albumid", music.albumId);
cv.put("duration", music.duration);
cv.put("musicname", music.music-Name);
cv.put("artist", music.artist);
cv.put("data",music.data);
cv.put("folder", music.folder);
cv.put("musicnamekey", music.mu-sicNameKey);
cv.put("artistkey", music.artistKey);
cv.put("favorite", music.favorite);
db.insert(, null, cv);
}
}
(2)獲取音樂文件信息
根據數據庫中的各個表里的信息,將信息一一對應的提取出來。
private List
List
while(cursor.moveToNext()) {
MusicInfo music = new MusicInfo();
music._id = cursor.getInt(cursor. getColumnIndex("_id"));
music.songId = cursor.getInt(cursor. getColumnIndex("songid"));
music.albumId = cursor.getInt(cursor. getColumnIndex("albumid"));
music.duration = cursor.getInt(cursor. getColumnIndex("duration"));
music.musicName = cursor.getString (cursor.getColumnIndex("musicname"));
music.artist = cursor.getString(cursor. getColumnIndex("artist"));
music.data = cursor.getString(cursor. getColumnIndex("data"));
music.folder = cursor.getString(cursor. getColumnIndex("folder"));
music.musicNameKey = cursor. getString(cursor.getColumnIndex("musicnamekey"));
music.artistKey = cursor.getString (cursor.getColumnIndex("artistkey"));
music.favorite = cursor.getInt(cursor. getColumnIndex("favorite"));
產后出血是在分娩胎兒后的24小時內陰道出血超過500ml情況,產后宮縮乏力患者子宮無法正常的收縮,胎盤附著面血竇無法正常關閉,導致了產后出血,是比較嚴重的產科并發(fā)癥,也是產婦死亡的主要因素。臨床中使用科學的產后處理能夠止血,如果不及時處理則會引起后遺癥,導致患者的死亡。產后出血中的宮縮乏力是比較多見的類型,患者失血速度快,失血量大,產后出血對產婦的危害性非常大。
list.add(music);
}
cursor.close();
return list;
}
圖4 音樂播放器主界面
由主界面點擊按鈕進入“我的音樂”功能,該模塊包括了本地歌曲的列表、搜索歌曲、播放設置、添加喜歡等功能。如果添加了喜歡,則歌曲左側的愛心會變成紅色,并添加到我的最愛列表里。我的音樂界面如圖5所示。點擊列表中的對應歌曲可以進行播放,在界面底部有播放、暫停、設置等按鈕,可以通過點擊按鈕對當前歌曲進行相應的操作。
圖5 我的音樂界面
其它功能由于篇幅原因不再一一展示。
本次基于Android平臺的音樂播放器的設計與實現,主要工作就是建立Android應用程序開發(fā)平臺、音樂播放器功能模塊劃分、界面的設計以及歌曲的存儲、讀取、播放等功能設計;并通過按鈕進入功能子模塊,將子模塊所需要的數據調用出來形成列表展示。此音樂播放器功能齊全、簡單實用、能夠滿足日常需求,且在后續(xù)使用中可以進一步進行功能的擴展。
[1] 呂尚偉. 隨身聽與隨身看[J]. 數碼影像時代, 2012, (12): 2.
[2] 張小雨. 基于Android平臺音頻播放器的設計與實現[D]. 西安: 西安電子科技大學, 2015.
[3] 蓋索林編. Google Android開發(fā)入門指南(第2版)[M]. 北京: 人民郵電出版社, 2009: 2-6.
[4] 李佐彬. Android開發(fā)入門與實戰(zhàn)體驗[M]. 北京: 機械工業(yè)出版社, 2011: 5-45.
[5] 李剛. 瘋狂Android講義(第3版)[M]. 北京: 電子工業(yè)出版社, 2017: 1-29.
[6] 馮建元. 音頻播放器的架構分析與關鍵技術的實現[J]. 計算機與網絡, 2009, (20): 53-56.
[7] 何孟翰. Google Android SDK開發(fā)實戰(zhàn)演練(第2版)[M]. 北京: 人民郵電出版社, 2016: 7-16.
[8] 薛顯亮. 解析Google Android SDK——智能手機開發(fā)范例手冊[M]. 北京: 中國鐵道出版社, 2012: 2-15.
[9] 佘志龍等.Google Android SDK開發(fā)范例大全(第3版)[M]. 北京: 人民郵電出版社, 2011: 1-19.
[10] 黃宏程, 胡敏, 陳如松. Android移動應用設計與開發(fā)[M]. 北京: 人民郵電出版社, 2012: 1-9.
The Design and Implementation of Music Player Based on Android
ZHANG Xiao-qin, ZHANG Geng
(Nanjing University of Aeronautics and Astronautics Jincheng College College of Information Engineering, Nanjing Jiangsu 210000)
Listening to music is an effective way to relax in the high pressure environment. With the popularity of Android terminal device, playing music on the Android platform is a choice for most people. In this paper, one Android application development platform was built, and a full-featured music player was developed on this platform. This music player can search all the music files stored by the terminal device and classify them according to the key words. Music can be played, paused, and set up according to the requirements by this music player.
Android; Music Player; Modular design
TP311.52
A
10.3969/j.issn.1003-6970.2018.09.023
張小琴(1984-),女,碩士,南京航空航天大學金城學院,講師,研究方向:信號與信息處理;張庚(1994-),男,學士,南京航空航天大學金城學院,本科生,研究方向:信息工程。
本文著錄格式:張小琴,張庚. 基于Android平臺的音樂播放器設計與實現[J]. 軟件,2018,39(9):113-116