2016-09-14 106 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

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