音楽情報をロックスクリーンへ表示する

音楽情報をロックスクリーンへ表示する

ロックスクリーンに音楽情報を表示するには
RemoteControlClient

LockScreenに表示する状態を設定し
AudioManagerクラスの
registerRemoteControlClient()
で登録すれば使える

まず LockScreenで押されたボタンのイベントを受け取るレシーバーのPendingIntentを生成

Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mComponentName);

PendingIntent mediaPendingIntent = PendingIntent.getBroadCast(getApplicationContext(), 0, mediaButtonIntent);

次に、RemoteControlClientを生成、PendingIntentを設定

remoteControlClient = new RemoteControlClient(mediaPendingIntent);
remoteControlClient.setTransportControlFlags(
  RemoteControlClient.FLAG_KEY_MEDIA_PLAY | 
  RemoteControlClient.FLAG_KEY_MEDIA_PAUSE |
  RemoteControlClient.FLAG_KEY_MEDIA_NEXT | 
  RemoteControlClient.FLAG_KEY_MEDIA_STOP
);

そして、RemoteControlClientの登録

mAudioManager.registerRemoteControlClient(remoteControlClient);

そして、AudioFocusの取得
mAudioManager.registerAudioFocus(new AudioFocusChangeListener(){

@Override
public void onAudioFocusChange(int focusChange){

Log.d(TAG,”Focus changed: ” + focusChange);
}
},
AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
[/java]

次に、ロックスクリーンに表示する曲情報やボタン状態を設定

//ロックスクリーンの状態を再生に設定
remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);

//ロックスクリーンに表示する音楽情報を設定
remoteControlClient
.editMetadata(true)
.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, "Sample Artist")
.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, "Sample Album")
.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, "Sample Music")
.apply();

そして、この設定を解除するには
AudioManagerクラスの
unregisterRemoteControlClient()
で解除する

mAudioManager.unregisterRemoteControlClient(remoteControlClient);
remoteControlClient = null;

ロックスクリーンに曲情報を表示するときの注意点は
registerMediaButtonEventReceiver()
によるBroadCastReceiverの登録
そして
AudioFocusの取得
を行うこと

これをやらないと、表示されないので注意

また、ロックスクリーンのボタンの状態は
MediaPlayerの再生とは
自動では連動しないので
状態に合わせて、プログラム側で
RemoteControlClientクラスの
setPlaybackState()で値を設定する必要がある

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です