使用以下方法,我会播放列表中的视频。
videoItem.setVideoPath(filePaths.get(position));
videoItem.setClickable(true);
videoItem.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
player.playVideo(videoItem);
return true;
}
});
videoItem
变量是VideoView
类的一个实例,player
变量及其方法来自自定义VideoPlayer
类。
这是VideoPlayer
类。
public class VideoPlayer {
private Context context;
private Uri uri;
private boolean isVideoPlaying = false;
public VideoPlayer(Context context) {
this.context = context;
}
public void getVideoUri(VideoView video) {
try {
Field field = VideoView.class.getDeclaredField("uri");
field.setAccessible(true);
uri = (Uri) field.get(video);
} catch (Exception e) {
Toast.makeText(context, "Exception caught: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
public void playVideo(VideoView video) {
getVideoUri(video);
MediaController mediaController = new MediaController(context);
mediaController.setAnchorView(video);
mediaController.setMediaPlayer(video);
video.setMediaController(mediaController);
video.setVideoURI(uri);
video.start();
isVideoPlaying = true;
}
}
当我点按视频视图时,它会开始播放。那不是问题。但同时还显示了捕获异常时抛出的Toast消息。为什么代码中会发生异常?
答案 0 :(得分:0)
您的错误说"uri"
不是VideoView类的字段,请检查VideoView类并更正您尝试访问的字段的名称。