Android获取第三方音乐播放器的音乐信息
最近在做Android手機(jī)獲取第三方音樂播放器的音樂信息。一開始頭疼的很,采集第三方的信息太難了,后面看了一遍博文是關(guān)于怎么監(jiān)聽系統(tǒng)的音樂播放信息,發(fā)現(xiàn)在播放下一首音樂的時候會發(fā)送廣播,廣播會包含下一首信息。
Android系統(tǒng)的音樂播放器會發(fā)送:
com.android.music.metachanged
那怎么獲取第三方的音樂信息?
先反編譯了QQ音樂的Apk, 找到它關(guān)于player的service,發(fā)現(xiàn)里面用的就是“com.android.music.metachaged”
接下來是Kugou,天天動聽,千千靜聽
com.kugou.android.music.metachanged com.ting.mp3.playinfo_changed糾結(jié)的事出現(xiàn)是分析蝦米,多米,Kuwo時候
蝦米最新版本在反編譯時報錯,人家做了防反編譯,雖然網(wǎng)上搜了怎么破解,但有點麻煩,留著后面學(xué)習(xí)。高版本做了防反編譯,但你低版本的時候技術(shù)還沒這么牛吧。我下了一個低版本,果然反編譯成功,找到了“com.xiami.meta_changed‘。可雖然能獲取到這個廣播,但人家并沒在廣播里放數(shù)據(jù),它在獲取到廣播的時候再去調(diào)用獲取音樂的方法,這個代碼就寫的糾結(jié)了,到了這一步就沒辦法搞了。
多米和kuwo兩者都沒有發(fā)送廣播,它們處理的方法都是回調(diào),所以這兩個也沒辦法獲取。
下面代碼是采集第三方音樂信息的代碼
IntentFilter iF = new IntentFilter();iF.addAction("com.android.music.metachanged");iF.addAction("com.android.music.playstatechanged");iF.addAction("com.android.music.playbackcomplete");iF.addAction("com.android.music.queuechanged");iF.addAction("com.htc.music.metachanged");iF.addAction("fm.last.android.metachanged");iF.addAction("com.sec.android.app.music.metachanged");iF.addAction("com.nullsoft.winamp.metachanged");iF.addAction("com.amazon.mp3.metachanged");iF.addAction("com.miui.player.metachanged");iF.addAction("com.real.IMP.metachanged");iF.addAction("com.sonyericsson.music.metachanged");iF.addAction("com.rdio.android.metachanged");iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged");iF.addAction("com.andrew.apollo.metachanged");iF.addAction("com.kugou.android.music.metachanged");iF.addAction("com.ting.mp3.playinfo_changed");registerReceiver(new PlayerReceiver(), iF);你需要在playerReceiver里面在加上處理廣播里的信息 String albumName = intent.getStringExtra("album");String artist = intent.getStringExtra("artist");String trackName = intent.getStringExtra("track");String xiaMiName=intent.getStringExtra("widget_song_name");System.out.println("The playing album name: " + albumName + " artist: "+ artist + " Track:" + trackName+" xiaMiName:"+xiaMiName);String artistName = intent.getStringExtra("notify_artistname");String audioName = intent.getStringExtra("notify_audioname");最終上述獲取方法走不通,有些第三方的音樂信息獲取不到。
還有一種實現(xiàn)方式,在播放音樂的時候,音樂播放器會發(fā)送一個notification,里面包含當(dāng)前音樂的相關(guān)信息。這種方式需要在systemUI里面添加捕獲代碼,抓到特定的notification后,再屏幕取詞?需要繼續(xù)研究下。
這個分析后,發(fā)現(xiàn)廣播用多了也不是什么好事,很容易被別人獲取到數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的Android获取第三方音乐播放器的音乐信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机机房方面的职业资格证,【国家标准】
- 下一篇: Avanquest Architect