package github.daneren2005.dsub.util.compat; import android.annotation.TargetApi; import android.content.ComponentName; import android.content.Context; import android.media.RemoteControlClient; import github.daneren2005.dsub.util.SilentBackgroundTask; @TargetApi(18) public class RemoteControlClientJB extends RemoteControlClientICS { @Override public void register(final Context context, final ComponentName mediaButtonReceiverComponent) { super.register(context, mediaButtonReceiverComponent); mRemoteControl.setOnGetPlaybackPositionListener(new RemoteControlClient.OnGetPlaybackPositionListener() { @Override public long onGetPlaybackPosition() { return downloadService.getPlayerPosition(); } }); mRemoteControl.setPlaybackPositionUpdateListener(new RemoteControlClient.OnPlaybackPositionUpdateListener() { @Override public void onPlaybackPositionUpdate(final long newPosition) { new SilentBackgroundTask<Void>(context) { @Override protected Void doInBackground() throws Throwable { downloadService.seekTo((int) newPosition); return null; } }.execute(); setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING, 0, 0); } }); } @Override public void setPlaybackState(final int state, int index, int queueSize) { if(mRemoteControl == null) { return; } long position = -1; if(state == RemoteControlClient.PLAYSTATE_PLAYING || state == RemoteControlClient.PLAYSTATE_PAUSED) { position = downloadService.getPlayerPosition(); } mRemoteControl.setPlaybackState(state, position, 1.0f); } @Override protected int getTransportFlags() { return super.getTransportFlags() | RemoteControlClient.FLAG_KEY_MEDIA_POSITION_UPDATE; } }