Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android獲取第三方音樂播放器的音樂信息

Android獲取第三方音樂播放器的音樂信息

編輯:關於Android編程

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

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

com.android.music.metachanged

那怎麼獲取第三方的音樂信息?

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


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

com.kugou.android.music.metachanged
com.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後,再屏幕取詞?需要繼續研究下。

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



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved