1

I am implemented VideoView with Mediacontroller like below.

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

Now I want to show an Alert When user clicks on seekbar. I have tried with following code by adding onclickListener to seekbar, but not working.

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();
           }
     });

But the event is not firing hence alert message with 'Ok' and 'Cancel' options not showing.

Also implementation should be showing an alert when user clicks/touches the seekbar.The seekbar need not to be seekable till user clicks 'OK'.

If user clicks 'Cancel' Video playing and seeking position should not be change. if clicks on 'Ok' it should be seekable to that postion.

So kindly please share or suggest How to implement this behaviour, Thank you all in advance.

Ganesh
  • 924
  • 2
  • 12
  • 34

2 Answers2

0

You need to use 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();
                }
            }
    });
Anuj Sharma
  • 4,294
  • 2
  • 37
  • 53
0

Your approach is correct. But you need to do it after your video is prepared.Make use of 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;
                    }
                });
            }
        });

Dialog:

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();
    }
Dhinakaran Thennarasu
  • 3,336
  • 4
  • 26
  • 39