Android中通過(guò)MediaStore獲取音樂(lè)文件信息方法
Android系統(tǒng)提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套數(shù)據(jù)庫(kù)表格,通過(guò)Content Provider的方式提供給用戶(hù)。當(dāng)手機(jī)開(kāi)機(jī)或者有SD卡插拔等事件發(fā)生時(shí),系統(tǒng)將會(huì)自動(dòng)掃描SD卡和手機(jī)內(nèi)存上的媒體文件,如audio,video,圖片等,將相應(yīng)的信息放到定義好的數(shù)據(jù)庫(kù)表格中。在這個(gè)程序中,我們不需要關(guān)心如何去掃描手機(jī)中的文件,只要了解如何查詢(xún)和使用這些信息就可以了。
MediaStore中定義了一系列的數(shù)據(jù)表格,通過(guò)ContentResolver提供的查詢(xún)接口,我們可以得到各種需要的信息。下面我們重點(diǎn)介紹查詢(xún)SD卡上的音樂(lè)文件信息。
先來(lái)了解一下ContentResolver的查詢(xún)接口:
Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
Uri:指明要查詢(xún)的數(shù)據(jù)庫(kù)名稱(chēng)加上表的名稱(chēng),從MediaStore中我們可以找到相應(yīng)信息的參數(shù),具體請(qǐng)參考開(kāi)發(fā)文檔。
Projection: 指定查詢(xún)數(shù)據(jù)庫(kù)表中的哪幾列,返回的游標(biāo)中將包括相應(yīng)的信息。Null則返回所有信息。
selection: 指定查詢(xún)條件
selectionArgs:參數(shù)selection里有 ?這個(gè)符號(hào)是,這里可以以實(shí)際值代替這個(gè)問(wèn)號(hào)。如果selection這個(gè)沒(méi)有?的話,那么這個(gè)String數(shù)組可以為null。
SortOrder:指定查詢(xún)結(jié)果的排列順序
下面的命令將返回所有在外部存儲(chǔ)卡上的音樂(lè)文件的信息:
Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
得到cursor后,我們可以調(diào)用Cursor的相關(guān)方法具體的音樂(lè)信息:
歌曲ID:MediaStore.Audio.Media._ID
Int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
歌曲的名稱(chēng) :MediaStore.Audio.Media.TITL
String tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
歌曲的專(zhuān)輯名: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));
歌曲文件的名稱(chēng):MediaStroe.Audio.Media.DISPLAY_NAME
String display_name = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));
歌曲文件的發(fā)行日期:MediaStore.Audio.Media.YEAR
String year = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.YEAR));
歌曲的總播放時(shí)長(zhǎng) :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));
- Android通過(guò)aapt命令獲取apk詳細(xì)信息(包括:文件包名,版本號(hào),SDK等信息)
- Android獲取手機(jī)文件夾及文件列表的方法
- Android中Java根據(jù)文件頭獲取文件類(lèi)型的方法
- Android中如何獲取視頻文件的截圖、縮略圖
- Android編程獲取sdcard音樂(lè)文件的方法
- Android獲取assets文件夾中的數(shù)據(jù)并寫(xiě)入SD卡示例
- android開(kāi)發(fā)教程之獲取power_profile.xml文件的方法(android運(yùn)行時(shí)能耗值)
- android獲取音樂(lè)文件的內(nèi)置專(zhuān)輯圖片實(shí)現(xiàn)思路及代碼
- android 獲取文件的擴(kuò)展名和去掉文件擴(kuò)展名的小例子
- Android獲取本機(jī)各種類(lèi)型文件的方法
相關(guān)文章
詳解Android App中使用VideoView來(lái)實(shí)現(xiàn)視頻播放的方法
這篇文章主要介紹了Android App中使用VideoView來(lái)實(shí)現(xiàn)視頻播放的方法,舉例講解了VideoView組件中setVidePath(String path)和setVideoURI(Uri uri)的用法,需要的朋友可以參考下2016-04-04
Android多進(jìn)程間采用AIDL方式進(jìn)行通信
這篇文章主要為大家詳細(xì)介紹了Android多進(jìn)程間采用AIDL方式進(jìn)行通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Android 封裝Okhttp+Retrofit+RxJava,外加攔截器實(shí)例
下面小編就為大家分享一篇Android封裝Okhttp+Retrofit+RxJava,外加攔截器實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
ViewFlipper實(shí)現(xiàn)文字輪播效果
這篇文章主要為大家詳細(xì)介紹了ViewFlipper實(shí)現(xiàn)文字輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
Android 7.0以上版本實(shí)現(xiàn)應(yīng)用內(nèi)語(yǔ)言切換的方法
本篇文章主要介紹了Android 7.0以上版本實(shí)現(xiàn)應(yīng)用內(nèi)語(yǔ)言切換的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Android實(shí)現(xiàn)文字滾動(dòng)播放效果的代碼
這篇文章主要介紹了Android實(shí)現(xiàn)文字滾動(dòng)播放效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Android使用Service實(shí)現(xiàn)IPC通信的2種方式
這篇文章主要介紹了Android使用Service實(shí)現(xiàn)IPC通信的2種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Android中AndroidStudio&Kotlin安裝到運(yùn)行過(guò)程及常見(jiàn)問(wèn)題匯總
這篇文章主要介紹了Android(AndroidStudio&Kotlin)安裝到運(yùn)行過(guò)程及常見(jiàn)問(wèn)題匯總,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Android 深入探究自定義view之流式布局FlowLayout的使用
FlowLayout(int align, int hgap, int vgap)創(chuàng)建一個(gè)新的流布局管理器,它具有指定的對(duì)齊方式以及指定的水平和垂直間隙,意思就是說(shuō)從左上角開(kāi)始添加原件,依次往后排,第一行擠滿(mǎn)了就換一行接著排2021-11-11

