2016-09-14 103 views
1

This is my VideoplayerActivity点击两次videoview的播放按钮用于恢复视频

public class VideoPlayerActivity extends Activity { 
    CustomVideoView video_player_view; 
    DisplayMetrics dm; 
    SurfaceView sur_View; 
    MediaController media_Controller; 
    AlertDialog alertDialog; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.video_view); 
     if (getIntent().getData() != null && getIntent().getData().getPath() != null) { 
      getInit(getIntent().getData().getPath()); 
     } 
     if (getIntent().hasExtra("file_path")) { 
      getInit(getIntent().getStringExtra("file_path")); 
     } 
    } 

    public void getInit(String file_path) { 
     video_player_view = (CustomVideoView) findViewById(R.id.video_player_view); 
     media_Controller = new MediaController(this); 
     video_player_view.setPlayPauseListener(new CustomVideoView.PlayPauseListener() { 

      @Override 
      public void onPlay() { 
       if (alertDialog != null) { 
        alertDialog.dismiss(); 
       } 
      } 

      @Override 
      public void onPause() { 
       alertDialog = new AlertDialog.Builder(VideoPlayerActivity.this).create(); 
       alertDialog.setMessage("Video has been paused"); 
       alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         alertDialog.dismiss(); 

        } 
       }); 
       alertDialog.show(); 
      } 
     }); 

     video_player_view.setMediaController(media_Controller); 
     video_player_view.setVideoPath(file_path); 
     video_player_view.start(); 
    } 
} 

,这里是我的CustomVideoView

public class CustomVideoView extends VideoView { 

    private PlayPauseListener mListener; 

    public CustomVideoView(Context context) { 
     super(context); 
    } 

    public CustomVideoView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomVideoView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    public void setPlayPauseListener(PlayPauseListener listener) { 
     mListener = listener; 
    } 

    @Override 
    public void pause() { 
     super.pause(); 
     if (mListener != null) { 
      mListener.onPause(); 
     } 
    } 

    @Override 
    public void resume() { 
     super.resume(); 
     if (mListener != null) { 
      mListener.onPlay(); 
     } 
    } 

    @Override 
    public void start() { 
     super.start(); 
     if (mListener != null) { 
      mListener.onPlay(); 
     } 
    } 

    public static interface PlayPauseListener { 
     void onPlay(); 
     void onPause(); 
    } 

} 

的问题是,当我点击恢复视频首先它关闭提醒对话框并在第二次点击后恢复我的视频。 我希望它发生在一次点击,请帮助我通过这一点。

回答

0

这我测试过,似乎工作!从this post

public void getInit(String file_path) { 
    video_player_view = (CustomVideoView) findViewById(R.id.video_player_view); 
    media_Controller = new MediaController(this); 
    video_player_view.setPlayPauseListener(new CustomVideoView.PlayPauseListener() { 

     @Override 
     public void onPlay() { 
      if (alertDialog != null) { 
       alertDialog.dismiss(); 
      } 
     } 

     @Override 
     public void onPause() { 
      alertDialog = new AlertDialog.Builder(VideoPlayerActivity.this).create(); 
      alertDialog.setMessage("Video has been paused"); 
      alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        alertDialog.dismiss(); 
       } 
      }); 

      alertDialog.getWindow() 
        .setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
          WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); 
      alertDialog.getWindow() 
        .clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
      alertDialog.show(); 
     } 
    }); 

    video_player_view.setMediaController(media_Controller); 
    video_player_view.setVideoPath(file_path); 
    video_player_view.start(); 
} 
+0

这是现在完美的工作..谢谢很多 –

0

所以我不确定一种方法来显示一个警告对话框,并允许用户点击不在前台的UI元素。你可以做的是添加一个解雇监听器,如果用户在外部触摸屏上解除对话并从那里开始播放,将会被调用。

public void getInit(String file_path) { 
    video_player_view = (CustomVideoView) findViewById(R.id.video_player_view); 
    media_Controller = new MediaController(this); 
    video_player_view.setPlayPauseListener(new CustomVideoView.PlayPauseListener() { 

     @Override 
     public void onPlay() { 
      if (alertDialog != null) { 
       alertDialog.dismiss(); 
      } 
     } 

     @Override 
     public void onPause() { 
      alertDialog = new AlertDialog.Builder(VideoPlayerActivity.this).create(); 
      alertDialog.setMessage("Video has been paused"); 
      alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        alertDialog.dismiss(); 
        video_player_view.start(); 
       } 
      }); 
      .setOnCancelListener(new DialogInterface.OnCancelListener() { 
       @Override 
       public void onCancel(DialogInterface dialog) { 
        video_player_view.start(); 
       } 
      }); 
      alertDialog.show(); 
     } 
    }); 

    video_player_view.setMediaController(media_Controller); 
    video_player_view.setVideoPath(file_path); 
    video_player_view.start(); 
} 
+0

谢谢主席先生,但我只是希望它的播放按钮,点击发生的,有没有办法为这个 –

+0

@puneetkumar所以你希望用户能够点击播放媒体控制器上,而有前景中的对话框? – Jon

+0

是的,先生这正是我想要的 –