我正在使用以下代码在我的Android设备上播放.mp4视频。我有3个问题,
当我按下设备上的后退按钮时,使用此代码仍会继续播放声音
它不播放视频,只播放声音!
我不知道如何获取视频的控制器,以便用户可以停止视频,在视频上来回切换。
VideoView videoHolder = new VideoView(this);
videoHolder.setMediaController(new MediaController(this));
getWindow().setFormat(PixelFormat.TRANSLUCENT);
MediaPlayer mediaPlayer = new MediaPlayer();
Uri myUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.video);
videoHolder.setVideoURI(myUri);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
videoHolder.requestFocus();
videoHolder.start();
答案 0 :(得分:1)
1)在您的活动中覆盖onBackPressed:
@Override
public void onBackPressed() {
mediaPlayer.stopPlayback();
super.onBackPressed();
}
2)这是一种有效的视频格式吗?您使用的是模拟器还是真正的设备?如果您使用模拟器,请尝试使用真实设备。我之前记得类似的问题。 但我也注意到了:你把你的视频放在了可绘制的文件夹中吗?
R.drawable.video
我认为这不起作用,你不能从那里播放视频。请改用resources/raw
文件夹。顺便说一句:音频可以直接从资源文件夹播放,而视频则不能;视频只能从原始文件夹播放,或者如果您将其复制到apps文件夹(getFilesDir()
) - 或者当然是SD卡。
3)为什么使用VideoView和MediaPlayer而不仅仅是VideoView?你应该摆脱mediaPlayer,只需使用VideoView。这一行
videoHolder.setMediaController(new MediaController(this));
看起来正确并设置媒体控制器,用户可以在视频中查找。
以编程方式,您还可以使用seekTo()
在视频中来回播放。
答案 1 :(得分:0)
VideoView videoView =(VideoView)findViewById(R.id.vv01);
//specify the location of media file
Uri myUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.login_footage);
//Setting MediaController and URI, then starting the videoView
videoView.setVideoURI(myUri);
videoView.requestFocus();
videoView.start();
这对我有用