我有一個聽音樂廣播的android應用程序。它接收使用以下ApplicationManifest.xml(段)軌道變更通知:Android「Google Play音樂」廣播意圖中的「ID」字段對應的是什麼?
<receiver android:name=".music.AndroidMusicBroadcastReceiver">
<intent-filter>
<action android:name="com.android.music.metachanged"/>
<action android:name="com.android.music.playbackcomplete"/>
<action android:name="com.android.music.playstatechanged"/>
<action android:name="com.htc.music.metachanged"/>
<action android:name="com.htc.music.playbackcomplete"/>
<action android:name="com.htc.music.playstatechanged"/>
</intent-filter>
</receiver>
當我從我的Nexus 4運行默認(內置)這個廣播意圖谷歌播放音樂應用,捆綁有一些有用的信息關於當前正在播放的曲目,包括「藝術家」和「標題」。它不有一個文件路徑,我想。但它確實有一個「id」字段(long
),這讓我覺得我可以使用該ID作爲關鍵字來查找附加信息。但我無法弄清楚:什麼數據庫/內容提供者是這個ID的關鍵?
事情我試過到目前爲止:
1)我本來期望這對應於內容解析器的_ID領域之一:
- MediaStore.Audio。 Media.INTERNAL_CONTENT_URI
- MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
但我可試圖查詢這兩個,並且ID不在同一個球場。我目前的例子是,我得到了3399
的「id」(在廣播中)。但是,查詢EXTERNAL_CONTENT_URI中的所有曲目會給我提供20865-23051範圍內的ID以及幾個小ID(20和24,對應於由Google +應用程序安裝的通知和鈴聲)。
對於這個來源,當前正在播放的曲目的ID將是21373
(我根據路徑查找ID,這可以通過手動檢查得出)。
INTERNAL_CONTENT_URI只是給我內置的東西(如鈴聲等) - 所有的ID都是< 100,所以這也沒有用。
2)我做了與所有媒體對象相同的查詢 - 使用MediaStore.Files.getContentUri("external")
。我收到了很多結果,但ID 3399
是由newsrob(一個RSS閱讀器)緩存的隨機文件,所以這顯然不相關。
使用gmusic-playlist(這是一個將Google Play音樂(網絡服務)播放列表信息導出爲CSV的Tampermonkey腳本,請在此處獲取:https://github.com/soulfx/gmusic-playlist.js)。我看到ID重複播放不同的歌曲。很奇怪。似乎還有七種不同的「idtype」,並且這些在某些情況下對應於不同的ID格式。這些可能與那些用於Google Play音樂的Android應用程序中的應用程序相對應嗎? – Jon 2016-05-07 16:51:54
更正:它們對每個軌道都是唯一的。我的排序有一個錯誤。 – Jon 2016-05-07 17:01:28