Как показать предупреждающее сообщение для пользователя, когда щелкает или касается панели поиска по умолчанию Mediacontroller с videoview?

Я реализовал VideoView с Mediacontroller, как показано ниже.

MediaController mediacontroller = new MediaController(VideoViewActivity.this);
mediacontroller.setAnchorView(mVideoView);
mVideoView.setMediaController(mediacontroller);

Теперь я хочу показать оповещение, когда пользователь нажимает на панель поиска. Я попытался с помощью следующего кода, добавив onclickListener искать панель, но не работает.

int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
SeekBar seekbar = (SeekBar) mediacontroller.findViewById(topContainerId);
seekbar.setOnClickListener(new View.OnClickListener() {
     @Override
       public void onClick(View v) {
            Log.i(TAG, "WE HAVE LIFT OFF");
            showAlertMesage();
           }
     });

Но событие не запускается, поэтому предупреждающее сообщение с опциями " ОК " и " Отмена " не отображается.

Также реализация должна показывать предупреждение, когда пользователь нажимает / касается панели поиска. Панель поиска не должна быть доступной до тех пор, пока пользователь не нажмет "ОК".

Если пользователь нажимает "Отмена", воспроизведение видео и поиск позиции не должны быть изменены. если щелкнуть "ОК", он должен быть доступен для этой позиции.

Так что будьте добры, поделитесь или предложите, как реализовать это поведение, заранее всем спасибо.

2 ответа

Решение

Ваш подход правильный. Но вам нужно сделать это после того, как ваше видео подготовлено. Используйте OnPreparedListener

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mVideoView.start();
                int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android");
                SeekBar seekbar = (SeekBar) mediacontroller.findViewById(topContainerId);
                 seekbar.setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                       Log.i(TAG, "WE HAVE LIFT OFF");
                         if(seekAllowed){ //declare seekAllowed as false globally
                             return false;
                          }
                        webView1.pause();
                        showAlertMesage();
                        return true;
                    }
                });
            }
        });

Диалог:

private void showAlertMesage() {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setPositiveButton("Ok",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
                        seekAllowed = true;
                        webView1.resume();
                    }
                });

        alertDialogBuilder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {

                        webView1.resume();
                    }
                });

        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }

Вам нужно использовать onSeekChangeListener

mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {                
                if(mMediaPlayer != null && fromUser){
                     Log.i(TAG, "WE HAVE LIFT OFF");
                    showAlertMesage();
                }
            }
    });
Другие вопросы по тегам