반응형
안드로이드 4.0 (ICS) API LEVEL 14 부터 RemoteControlClient 를 지원한다.
RemoteControlClient는 음악의 메타정보와 앨범아트 뿐만 아니라 재생컨트롤을 할 수 있는 정보를 락스크린에 노출 해준다.
이런식의 UI로 락스크린에 노출 되게 된다. UI는 변경 할 수없다.
4.2부터 지원되는 락스크린의 위젯으로도 추가 할 수 있다.
구현 방법은 간단하다. AudioManager의 registerRemoteControlClient로 RemoteControlClient를 등록만 해주면 된다.
여기 주의 할점은 registerMediaButtonEventReceiver를 등록 해줘야 하며 AudioFocus를 받도록 해야 UI가 나타난다.
registerRemoteControlClient를 등록 하기전 registerMediaButtonEventReceiver를 해야된다.
ComponentName myEventReceiver = new ComponentName(getPackageName(), MyRemoteControlEventReceiver.class.getName()); AudioManager myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); myAudioManager.registerMediaButtonEventReceiver(myEventReceiver); // build the PendingIntent for the remote control client Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); mediaButtonIntent.setComponent(myEventReceiver); PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0); // create and register the remote control client RemoteControlClient myRemoteControlClient = new RemoteControlClient(mediaPendingIntent); myAudioManager.registerRemoteControlClient(myRemoteControlClient);
myRemoteControlClient의 setTransportControlFlags메소드로 사용할 컨트롤을 지정한다.
그리고 myRemoteControlClient.editMetadata(boolean)으로 메타데이터를 넘겨준다.
미디어 플레이어의 상황에 따라 setPlaybackState메소드로 상태를 변경 해주면 끝이다.
여기 까지 RemoteControlClient를 알아 보았다.
myRemoteControlClient.setTransportControlFlags( RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE | RemoteControlClient.FLAG_KEY_MEDIA_STOP | RemoteControlClient.FLAG_KEY_MEDIA_NEXT | RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS); MetadataEditor metadataEditor = myRemoteControlClient.editMetadata(true); metadataEditor.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, mArtistNm); metadataEditor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, mAlbumTitle); metadataEditor.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, mTrackTitle); metadataEditor.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, mDuration); metadataEditor.putBitmap(MetadataEditor.BITMAP_KEY_ARTWORK, mAlbumArt); metadataEditor.apply();
미디어 플레이어의 상황에 따라 setPlaybackState메소드로 상태를 변경 해주면 끝이다.
myRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_BUFFERING); myRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING); myRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED); myRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);
여기 까지 RemoteControlClient를 알아 보았다.
주의할 점은 AudioFocus를 받고 있어야 UI가 나타나므로 재생시 AudioFocus를 가져오도록 하는 별도의 작업이 필요 한다.
반응형
'안드로이드 개발 > View' 카테고리의 다른 글
Notification Bar 아이콘 숨기기 (0) | 2013.02.25 |
---|---|
StatusBar Disable (0) | 2013.01.19 |
TextView 설정에 따른 폰트 크기 지정법 (1) | 2012.07.10 |