如何使用videoview点击或触摸默认Mediacontroller的搜索栏时向用户显示警告消息?

时间:2016-03-14 06:53:35

标签: android android-videoview seekbar mediacontroller

我使用 Mediacontroller 实施 VideoView ,如下所示。

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 个答案:

答案 0 :(得分:0)

您需要使用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();
                }
            }
    });

答案 1 :(得分:0)

你的方法是正确的。但是,您需要在准备好视频后再进行此操作。请使用-Xmx1024m -XX:MaxPermSize=1024m

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