我希望有人可以帮助我。播放视频时遇到问题。我不能播放任何视频格式。我有一个看起来像这样的片段:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<VideoView
android:id="@+id/video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
我的片段活动中的以下代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle savedInstanceState) {
MediaController media_Controller = new MediaController(getActivity());
View v = inflater.inflate(R.layout.fragment_video, parent, false);
final VideoView videoView = (VideoView)v.findViewById(R.id.video);
Uri uri = Uri.parse("android.resource//" + getActivity().getPackageName() + "/" + R.raw.videofile);
videoView.setMediaController(media_Controller);
videoView.setVideoURI(uri);
videoView.start();
return v;
}
对于每个文件,我的应用程序都会抛出以下消息:
Sorry, this video cannot be played.
这些是我日志中的消息:
03-26 14:48:10.024: D/OpenGLRenderer(2226): Flushing caches (mode 0)
03-26 14:48:10.034: E/MediaPlayer(2226): error (1, -2147483648)
03-26 14:48:10.054: E/MediaPlayer(2226): Error (1,-2147483648)
03-26 14:48:10.054: D/VideoView(2226): Error: 1,-2147483648
EDIT1:
好的,我发现了一个问题。问题出在这一行:
Uri uri = Uri.parse("android.resource//" + getActivity().getPackageName() + "/" + R.raw.videofile);
videoView.setVideoURI(uri);
它没有获得正确的资源,因此无法播放文件。硬编码解决方案有效:
videoView.setVideoPath("android.resource://my.package.name/raw/videofile");
我不明白这两者之间有什么区别。
答案 0 :(得分:0)
您正在尝试在VideoView中播放内部资源。不幸的是,VideoView是一个外部组件,它无法访问您的应用程序数据。 Here yoy得到了一个可以处理内部资源的VideoView的替代实现