Как реализовать следующую и предыдущую кнопку с этим кодом? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть код, который имеет реализацию переключателя для реализации требуемого вывода.Теперь мне нужно, чтобы эта реализация также имела кнопки «Следующая» и «Предыдущая»Но я не знаю простого решения, для начала.Вот мой код:

   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.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Если вам нужно реализовать удаленные кнопки, используйте код, приведенный ниже.

        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.

0 голосов
/ 03 октября 2018

Надеюсь, это поможет вам.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...