Commit 1855a5a9 by aquilescanta Committed by Andrew Lewis

Fixed FFWD/RWD keys support in DemoPlayer

Overrided the dispatchKeyEvent of MediaController to allow FFWD and RWD through
remote control keys.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=108989028
parent 6570ef0e
...@@ -177,7 +177,7 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback, ...@@ -177,7 +177,7 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback,
playerStateTextView = (TextView) findViewById(R.id.player_state_view); playerStateTextView = (TextView) findViewById(R.id.player_state_view);
subtitleLayout = (SubtitleLayout) findViewById(R.id.subtitles); subtitleLayout = (SubtitleLayout) findViewById(R.id.subtitles);
mediaController = new MediaController(this); mediaController = new KeyCompatibleMediaController(this);
mediaController.setAnchorView(root); mediaController.setAnchorView(root);
retryButton = (Button) findViewById(R.id.retry_button); retryButton = (Button) findViewById(R.id.retry_button);
retryButton.setOnClickListener(this); retryButton.setOnClickListener(this);
...@@ -706,4 +706,38 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback, ...@@ -706,4 +706,38 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback,
} }
} }
private static final class KeyCompatibleMediaController extends MediaController {
private MediaController.MediaPlayerControl playerControl;
public KeyCompatibleMediaController(Context context) {
super(context);
}
@Override
public void setMediaPlayer(MediaController.MediaPlayerControl playerControl) {
super.setMediaPlayer(playerControl);
this.playerControl = playerControl;
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
if (playerControl.canSeekForward() && keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
playerControl.seekTo(playerControl.getCurrentPosition() + 15000); // milliseconds
show();
}
return true;
} else if (playerControl.canSeekBackward() && keyCode == KeyEvent.KEYCODE_MEDIA_REWIND) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
playerControl.seekTo(playerControl.getCurrentPosition() - 5000); // milliseconds
show();
}
return true;
}
return super.dispatchKeyEvent(event);
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment