正如标题所说,已经两天了,我在stackoverflow上尝试了所有的解决方案,我正式卡住了。
我确信视频扩展和编码是正确的我使用xml部分在2个linearlayouts中在一个scrollview中在一个constraintlayout中,视图是一个fragment
这是我的XML:
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_marginTop="50dip" >
<VideoView
android:id="@+id/video_view"
android:layout_width="fill_parent"
android:layout_height="172dip"
android:layout_gravity="top|center"
android:visibility="visible"/>
</FrameLayout>
这是片段代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_settings_general, container, false);
intro = (VideoView) rootView.findViewById(R.id.video_view);
MediaController mediaController= new MediaController(getContext());
intro.setMediaController(mediaController);
Uri uri = Uri.parse("android.resource://" + getContext().getPackageName() + "/" + R.raw.video);
intro.setVideoURI(uri);
intro.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
intro.setZOrderOnTop(true);
intro.start();
}
});
return super.onCreateView(inflater, container, savedInstanceState);
}
在我的清单中添加了internet前提:
<uses-permission android:name="android.permission.INTERNET" />
打印URI将显示带有"/"的正确项目名称。和一些数字在最后。
添加此方法而不是您的代码
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_settings_general,
container, false);
intro = (VideoView) rootView.findViewById(R.id.video_view);
MediaController mediaController= new MediaController(getContext());
intro.setMediaController(mediaController);
Uri uri = Uri.parse("android.resource://" + getContext().getPackageName() + "/" + R.raw.video);
intro.setVideoURI(uri);
intro.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
intro.setZOrderOnTop(true);
intro.start();
}
});
return rootView ;
}