1. 程式人生 > >Android獲取系統播放音樂資訊

Android獲取系統播放音樂資訊

如題,需要獲取播放的音樂資訊,原理是播放音樂的時候會發送四種廣播,因此可以使用廣播接收器攔截一下廣播……
但是!!!!當系統正在播放音樂的時候,我還不知道怎麼獲取音樂資訊QAQ
要是哪位知道怎麼獲取,求告知QAQ

MusicBroadcastReceiver mbr = null;

class MusicBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        artistName = intent.getStringExtra("artist");
        musicName = intent.getStringExtra("track");
        Log.d(TAG, "onReceive:    " + intent.toString());
        tvMainMusicArtist.setText("—  " + artistName + "  —");
        tvMainMusicName.setText(musicName);

        //此處是用來檢視intent中包含的key
        Bundle bundle = intent.getExtras();
        Set<String> set = bundle.keySet();
        for (Iterator iterator = set.iterator(); iterator.hasNext(); ) {
            String key = (String) iterator.next();
            Object value = bundle.get(key);
            Log.i("IntentActivity", "key:" + key + " value:" + value);
        }
    }
}

註冊一下廣播

 @Override
    protected void onResume() {

        mbr = new MusicBroadcastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.android.music.metachanged");
        intentFilter.addAction("com.android.music.queuechanged");
        intentFilter.addAction("com.android.music.playbackcomplete");
        intentFilter.addAction("com.android.music.playstatechanged");

        registerReceiver(mbr, intentFilter);


}

最後別忘了登出

protected void onDestroy() {
        if (mbr != null) {
            unregisterReceiver(mbr);
        }
        super.onDestroy();
}

最後,附intent中的jian鍵值對: