歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 使用Android獲取的音樂文件數據庫

使用Android獲取的音樂文件數據庫

日期:2017/3/1 9:55:09   编辑:Linux編程

鑒於前面寫的數據庫知識【見http://www.linuxidc.com/Linux/2013-07/87234.htm】,今天我們就開始怎麼調用數據庫。因為最近在學習音樂播放器的項目,因此,就寫一下怎麼調用數據庫的音樂文件信息吧!

這裡簡單先說下理論知識哦:
Android系統提供了MediaScanner,MediaProvider,MediaStore等接口,並且提供了一套數據庫表格,通過Content Provider的方式提供給用戶。當手機開機或者有SD卡插拔等事件發生時,系統將會自動掃描SD卡和手機內存上的媒體文件,如audio,video,圖片等,將相應的信息放到定義好的數據庫表格中。在這個程序中,我們不需要關心如何去掃描手機中的文件,只要了解如何查詢和使用這些信息就可以了。
  MediaStore中定義了一系列的數據表格,通過ContentResolver提供的查詢接口,我們可以得到各種需要的信息。下面我們重點介紹查詢SD卡上的音樂文件信息。
  先來了解一下ContentResolver的查詢接口:
Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,
null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);


復制代碼

Uri:指明要查詢的數據庫名稱加上表的名稱,從MediaStore中我們可以找到相應信息的參數,具體請參考開發文檔。
Projection: 指定查詢數據庫表中的哪幾列,返回的游標中將包括相應的信息。Null則返回所有信息。
selection: 指定查詢條件
selectionArgs:參數selection裡有 ?這個符號是,這裡可以以實際值代替這個問號。如果selection這個沒有?的話,那麼這個String數組可以為null。
SortOrder:指定查詢結果的排列順序

下面的命令將返回所有在外部存儲卡上的音樂文件的信息:
2. 得到cursor後,我們可以調用Cursor的相關方法具體的音樂信息:

//歌曲ID:MediaStore.Audio.Media._ID
Int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
//歌曲的名稱 :MediaStore.Audio.Media.TITLE
String tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
歌曲的專輯名:MediaStore.Audio.Media.ALBUM
String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
//歌曲的歌手名: MediaStore.Audio.Media.ARTIST
String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
//歌曲文件的路徑 :MediaStore.Audio.Media.DATA
String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
//歌曲的總播放時長 :MediaStore.Audio.Media.DURATION
Int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
//歌曲文件的大小 :MediaStore.Audio.Media.SIZE
Int size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));

這就用一個demo一邊演示一邊介紹下:
1、往模擬器放入音樂文件,我往sd卡裡放了5個MP3音樂文件

2、運行項目,查看效果

已經有了數據庫的音樂文件了


這中間是一個怎樣的過程呢?
1.將MP3文件放入安卓sd卡裡,因為這裡用的是模擬器,所以,放置的位置在mnt/sdcard,直接拖拽就可以放入了。
2.重啟模擬器,記住不要從快照啟動,否則系統無法更新你放入MP3文件的數據信息,數據庫沒有更新,你當然提取不到音樂文件的信息啦
3.檢查系統數據庫文件是否已經有了音樂文件的信息。安卓系統的多媒體數據庫文件位置在:/data/data/com.andorid.providers.media/external.db
放入數據庫軟件查看,是否已經有了上面5首歌的信息,確定有了之後才進行下一步
4.運行項目,項目調用系統的數據庫文件,顯示在應用中。

Copyright © Linux教程網 All Rights Reserved