編輯:關於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
蝦米最新版本在反編譯時報錯,人家做了防反編譯,雖然網上搜了怎麼破解,但有點麻煩,留著後面學習。高版本做了防反編譯,但你低版本的時候技術還沒這麼牛吧。我下了一個低版本,果然反編譯成功,找到了“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後,再屏幕取詞?需要繼續研究下。
這個分析後,發現廣播用多了也不是什麼好事,很容易被別人獲取到數據。
一、查看自己的證書簽名信息如上一篇文章《我的Android進階之旅------>Android中制作和查看自定義的Debug版本Android簽名證書 》地址:ht
2.4.1適配器組件適配器的作用適配器充當適配器控件和該視圖數據之間的橋梁。適配器提供訪問的數據項,並負責產生數據組中的每個項的視圖。常用的適配器BaseAdapter:
一.概述代理模式也是平時比較常用的設計模式之一,代理模式其實就是提供了一個新的對象,實現了對真實對象的操作,或成為真實對象的替身.在日常生活中也是很常見的.例如A要租房,
一、什麼是加殼?加殼是在二進制的程序中植入一段代碼,在運行的時候優先取得程序的控制權,做一些額外的工作。大多數病毒就是基於此原理。二、加殼作用加殼的程序可以有效阻止對程序