音楽情報をロックスクリーンへ表示する
ロックスクリーンに音楽情報を表示するには
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()で値を設定する必要がある