如何用这段代码实现下一个和上一个按钮?
How to implement next and previous button with this code?
我的代码有一个开关实现来实现所需的输出。现在我需要这个实现也有下一个和上一个按钮。但我不知道简单的解决方案,为此起步。这是我的代码:
private MediaPlayer clipSetup(int i){
switch (i){
case 1:
mediaPlayer = MediaPlayer.create(this, R.raw.al01);
mediaPlayer.start();
break;
case 2:
mediaPlayer = MediaPlayer.create(this, R.raw.al02);
mediaPlayer.start();
break;
case 3:
mediaPlayer = MediaPlayer.create(this, R.raw.al02);
mediaPlayer.start();
break;
}
return mediaPlayer;
}
现在查看这段代码,我希望实现 OnClick 按钮。
希望对您有所帮助。
int current=0;
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_back:
current++;
break;
case R.id.btn_next:
if(current<=0)
current=2;
else
current--;
break;
}
clipSetup(current%3+1);
}
如果您需要实现远程按钮,请使用下面的代码。
int keycode = event.getKeyCode();
if(event.getAction() != KeyEvent.ACTION_DOWN){
return true;
}
switch (keycode){
case KeyEvent.KEYCODE_DPAD_LEFT :
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
rewindSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
fastForwardSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_DPAD_UP:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
showSurfaceControls();
}
}
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(!vidPaused){
pauseSurfacePlayer();
}else {
playSurfacePlayer();
}
}
}
break;
case KeyEvent.KEYCODE_PROG_RED://rewind
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
rewindSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_PROG_GREEN://forward
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
fastForwardSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(!vidPaused){
pauseSurfacePlayer();
}else {
playSurfacePlayer();
}
}
}
break;
case KeyEvent.KEYCODE_MEDIA_STOP:
stopVideo();
break;
case 23://play/pause
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(!vidPaused){
pauseSurfacePlayer();
}else {
playSurfacePlayer();
}
}
}
break;
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
fastForwardSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_MEDIA_REWIND:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
rewindSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
if(event.getAction() == KeyEvent.ACTION_DOWN){
pauseSurfacePlayer();
}
break;
case KeyEvent.KEYCODE_MEDIA_PLAY:
if(event.getAction() == KeyEvent.ACTION_DOWN){
playSurfacePlayer();
}
break;
}
顺便说一句,这需要继续执行 dispatchKeyEvent 方法。你也可以在那里做后退按钮的句柄。无需使用 onBackPressed 方法。如果您已经在使用 onBackPressed 并想使用 dispatchKeyEvent,请删除您的 onBackPressed 方法。
我的代码有一个开关实现来实现所需的输出。现在我需要这个实现也有下一个和上一个按钮。但我不知道简单的解决方案,为此起步。这是我的代码:
private MediaPlayer clipSetup(int i){
switch (i){
case 1:
mediaPlayer = MediaPlayer.create(this, R.raw.al01);
mediaPlayer.start();
break;
case 2:
mediaPlayer = MediaPlayer.create(this, R.raw.al02);
mediaPlayer.start();
break;
case 3:
mediaPlayer = MediaPlayer.create(this, R.raw.al02);
mediaPlayer.start();
break;
}
return mediaPlayer;
}
现在查看这段代码,我希望实现 OnClick 按钮。
希望对您有所帮助。
int current=0;
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_back:
current++;
break;
case R.id.btn_next:
if(current<=0)
current=2;
else
current--;
break;
}
clipSetup(current%3+1);
}
如果您需要实现远程按钮,请使用下面的代码。
int keycode = event.getKeyCode();
if(event.getAction() != KeyEvent.ACTION_DOWN){
return true;
}
switch (keycode){
case KeyEvent.KEYCODE_DPAD_LEFT :
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
rewindSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
fastForwardSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_DPAD_UP:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
showSurfaceControls();
}
}
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(!vidPaused){
pauseSurfacePlayer();
}else {
playSurfacePlayer();
}
}
}
break;
case KeyEvent.KEYCODE_PROG_RED://rewind
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
rewindSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_PROG_GREEN://forward
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
fastForwardSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(!vidPaused){
pauseSurfacePlayer();
}else {
playSurfacePlayer();
}
}
}
break;
case KeyEvent.KEYCODE_MEDIA_STOP:
stopVideo();
break;
case 23://play/pause
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(!vidPaused){
pauseSurfacePlayer();
}else {
playSurfacePlayer();
}
}
}
break;
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
fastForwardSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_MEDIA_REWIND:
if(videoType.equals(GENERAL)){
if(event.getAction() == KeyEvent.ACTION_DOWN){
rewindSurfacePlayer();
}
}
break;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
if(event.getAction() == KeyEvent.ACTION_DOWN){
pauseSurfacePlayer();
}
break;
case KeyEvent.KEYCODE_MEDIA_PLAY:
if(event.getAction() == KeyEvent.ACTION_DOWN){
playSurfacePlayer();
}
break;
}
顺便说一句,这需要继续执行 dispatchKeyEvent 方法。你也可以在那里做后退按钮的句柄。无需使用 onBackPressed 方法。如果您已经在使用 onBackPressed 并想使用 dispatchKeyEvent,请删除您的 onBackPressed 方法。