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;
}