gpt4 book ai didi

java - 我正在使用VideoView在我的应用程序中显示视频,但我不明白如何使pause()和resume()函数正常工作

转载 作者:行者123 更新时间:2023-12-01 22:20:10 26 4
gpt4 key购买 nike

我正在使用片段来控制我的VideoView。这是我到目前为止的内容:

public class AudioPlayerFragment extends Fragment {
private int intMediaType;

GestureDetector gestureDetector;
MediaPlayer mediaPlayer = null;
VideoView videoView = null;
Button playBtn;
Button videoBtn;
View v;


public static String APF_CODE = "APF_CODE";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

if(v == null){
v = inflater.inflate(R.layout.fragment_audio_player, container, false);

gestureDetector = new GestureDetector(getActivity(), simpleGestureListener);

videoView = (VideoView)v.findViewById(R.id.video_view);

videoView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return gestureDetector.onTouchEvent(motionEvent);
}
});
}
return v;
}


我想让用户使用doubpleTap事件停止,播放,暂停或resume()。这是此事件的代码,但是除了pause()之外,我什么都无法工作。

private GestureDetector.SimpleOnGestureListener simpleGestureListener = new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
float diff = e2.getX() - e1.getX();
seekMedia(diff);
return super.onScroll(e1, e2, distanceX, distanceY);
}

@Override
public boolean onDown(MotionEvent e) {

return true;
}

@Override
public boolean onDoubleTap(MotionEvent e) {
if(videoView.isPlaying()) {
mediaPlayer.pause();
}

if(!videoView.isPlaying()){
//Cannot resume() here
//It just overrides the pause() function above and starts the video from the beginning
}
return super.onDoubleTap(e);
}
};


我使用过onClickListener来调用setVideoPath()函数,该函数设置路径,启动视频并停止我的mediaPlayer对象。

private View.OnClickListener videoSetClickedListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
setVideoPath();
}
};

private void setVideoPath(){
String path = "android.resource://" + this.getActivity().getPackageName() + "/raw/samp";
videoView.setVideoPath(path);
videoView.start();
if(mediaPlayer == null){

}else if(mediaPlayer.isPlaying()){
stopMedia();
}
}


我希望这足以使我的问题重现。最后,我希望用户双击视频以播放,停止,暂停或继续播放视频。谢谢。

最佳答案

我的API级别过低,因此我在onDoubleTap MotionEvent函数中的Gesture Listener中完成了此工作:

    @Override
public boolean onDoubleTap(MotionEvent e) {
String VIDEO_POSITION = "VIDEO_POSITION";
if(videoView.isPlaying()) {
videoView.pause();
videoViewPos = videoView.getCurrentPosition();
}else {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
//videoView.seekTo(videoViewPos, SEEK_CLOSEST);
}else {
videoView.seekTo(videoViewPos);
}
videoView.start(); // The onSeekComplete handler will start the video
}
return super.onDoubleTap(e);
}


请注意:如果您使用的API级别低于Oreo,则注释掉的行必须不加注释。由于其他原因,我最终在奥利奥(Oreo)进行重建,因此我需要对此部分进行评论。

关于java - 我正在使用VideoView在我的应用程序中显示视频,但我不明白如何使pause()和resume()函数正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58596814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com