Mobile/Android

[Android] RemoteControlClient의 폐기로 인한 Notification

out of coding 2016. 7. 26. 16:00

5.0에서 RemoteControlClient의 폐기가 되었다.

그래서 분기가 필요하게 되고, Notification에 노출할 경우에는 다음과 같은 방식으로 처리하여야 한다.


Notification.Builder builder = new Notification.Builder(this)

    .setSmallIcon(R.drawable.ic_launcher)

    .setContentTitle("TITLE")

    .setContentText("MESSAGE")

    .setDeleteIntent(pendingIntent)

    .setStyle(new Notification.MediaStyle());


이후에 다음과 같이 구현을 하여준다.


mManager = (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE);

mSession = mManager.createSession("test session");

mController = MediaController.fromToken(mSession.getSessionToken());


세션의 TransportControlsCallback을 등록하고, 각 상황에 따라 다른 노티피케이션을 생성하도록 onPlay, onPause 등의 메소드를 오버라이드한다.

오버라이딩할 메소드마다 개별적으로 노티피케이션을 설정하고 띄워야 한다. 

예를 들어 onPlay 메소드는 재생과 관련된 노티피케이션을 띄워야 한다.


mSession.addTransportControlsCallback(new MediaSession.TransportControlsCallback() {

    @Override

    public void onPlay() {}


    @Override

    public void onPause() {}

}


노티피케이션의 액션을 다른 서비스로 연결시키고 해당 서비스에서 mController.getTransportControls().play() 등을 호출한다.