RemoteControlClient可以用来显示远程Music播放控制界面,可以显示Music album. 前提条件: 1. 要有AudioFocus , 2. 要注册MediaButton receiver, 3. 更重要的是要注册RemoteControlClient, 此步要用到2的receiver 4.通过RemoteControlClient来提交Music Metadata,包括Album bitmap. Metadata提交要用到MetadataEditor, 最后需要apply() MetadataEditor md = mRemoteControlClient.editMetadata(true);
int playMusic(){ Log.v(TAG, "mediaPlayer playMusic"); //get AudioFocus firstly
// Request audio focus for playback int result = mAudioManager.requestAudioFocus(afChangeListener, // Use the music stream. AudioManager.STREAM_MUSIC, // Request permanent focus. AudioManager.AUDIOFOCUS_GAIN); if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { //mAudioManager.unregisterMediaButtonEventReceiver(RemoteControlReceiver); // Start playback. Log.v(TAG, "Ok to get Audio Focus!"); } else{ Log.v(TAG, "Failed to get Audio Focus, return!"); return 0; } // Log.v(TAG, "registerMediaButtonEventReceiver before"); mAudioManager.registerMediaButtonEventReceiver(mbCN); Log.v(TAG, "registerMediaButtonEventReceiver after"); // build the PendingIntent for the remote control client Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); mediaButtonIntent.setComponent(mbCN); PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0); // create and register the remote control client if(mRemoteControlClient == null){ mRemoteControlClient = new RemoteControlClient(mediaPendingIntent); } mAudioManager.registerRemoteControlClient(mRemoteControlClient); Log.v(TAG, "registerRemoteControlClient after"); //to play music mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.w1374911); mMediaPlayer.start(); // no need to call prepare(); create() does that for you Log.v(TAG, "mediaPlayer.start"); //prepare Album mRemoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS |RemoteControlClient.FLAG_KEY_MEDIA_PLAY |RemoteControlClient.FLAG_KEY_MEDIA_NEXT |RemoteControlClient.FLAG_KEY_MEDIA_PAUSE); mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING); MetadataEditor md = mRemoteControlClient.editMetadata(true); md.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, "HellowWorld.mp3"); md.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, "JackLee"); md.putString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, "JackLee"); md.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, "JackLee"); //md.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, 10000); Log.v(TAG, "mediaPlayer before getBitmap album"); Resources res=getResources(); Drawable drawable = res.getDrawable(R.drawable.album); BitmapDrawable bitmapDrawable=(BitmapDrawable)drawable; Bitmap bitmap=bitmapDrawable.getBitmap(); md.putBitmap(MetadataEditor.BITMAP_KEY_ARTWORK, bitmap); md.apply(); Log.v(TAG, "mediaPlayer Album apply"); btn_playpause.setText("Stop"); playstate = 1; return 1;}