Android擷取第三方音樂播放器的音樂資訊

來源:互聯網
上載者:User

最近在做Android手機擷取第三方音樂播放器的音樂資訊。一開始頭疼的很,採集第三方的資訊太難了,後面看了一遍博文是關於怎麼監聽系統的音樂播放資訊,發現在播放下一首音樂的時候會發送廣播,廣播會包含下一首資訊。

Android系統的音樂播放器會發送:

com.android.music.metachanged

那怎麼擷取第三方的音樂資訊?

先反編譯了QQ音樂的Apk, 找到它關於player的service,發現裡面用的就是“com.android.music.metachaged”


接下來是Kugou,天天動聽,千千靜聽

com.kugou.android.music.metachangedcom.ting.mp3.playinfo_changed

糾結的事出現是分析蝦米,多米,Kuwo時候

蝦米最新版本在反編譯時間報錯,人家做了防反編譯,雖然網上搜了怎麼破解,但有點麻煩,留著後面學習。高版本做了防反編譯,但你低版本的時候技術還沒這麼牛吧。我下了一個低版本,果然反編譯成功,找到了“com.xiami.meta_changed‘。可雖然能擷取到這個廣播,但人家並沒在廣播裡放資料,它在擷取到廣播的時候再去調用擷取音樂的方法,這個代碼就寫的糾結了,到了這一步就沒辦法搞了。


多米和kuwo兩者都沒有發送廣播,它們處理的方法都是回調,所以這兩個也沒辦法擷取。


下面代碼是採集第三方音樂資訊的代碼

       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");

最終上述擷取方法走不通,有些第三方的音樂資訊擷取不到。

還有一種實現方式,在播放音樂的時候,音樂播放器會發送一個notification,裡麵包含當前音樂的相關資訊。這種方式需要在systemUI裡面添加捕獲代碼,抓到特定的notification後,再螢幕取詞?需要繼續研究下。

這個分析後,發現廣播用多了也不是什麼好事,很容易被別人擷取到資料。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.