我花了大约2个小时试图让它发挥作用。我用MediaPlayer
来播放视频时从来没有太多运气。我在这做错了什么?它第一次播放音频,没有视频。然后在我尝试重新IllegalStateException
时第二次得到setDataSource
。我在stop()
中尝试不调用release()
和onCompletion
我在播放之前尝试过调用reset()
。我只是得到了不同的StateExceptions(0,64,128)我已经没有想法了。
private void playVideo() {
mMediaPlaying = true;
sv.setVisibility(View.VISIBLE); //surfaceview
try {
if(mp.isPlaying()) {
mp.stop();
mp.reset();
}
mp.setDisplay(sh); //surfaceholder
mp.setOnCompletionListener(this);
mp.setOnPreparedListener(this);
mp.setDataSource(getBaseContext(), Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.test));
mp.prepare();
//mp.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onPrepared(MediaPlayer mp) {
Log.d("", "mp prepared");
mp.start();
}
@Override
public void onCompletion(MediaPlayer arg0) {
sv.setVisibility(View.GONE);
mp.stop();
mp.release();
mMediaPlaying = false;
Log.d("", "Done playing media");
}
答案 0 :(得分:3)
如果您想播放视频,可以使用VideoView。
您可以使用MediaController控制视频,如播放,暂停,前进和后退。
例如,请查看此链接。
http://android-coding.blogspot.in/2011/03/using-videoview-to-play-mp4-from-sdcard.html
答案 1 :(得分:0)
答案 2 :(得分:0)
好吧,我基本上复制/粘贴this here并且它似乎正在工作......除了第一次播放之外仍然没有视频......但我摆脱了错误:)
答案 3 :(得分:0)
试试这个:
private void playVideo() {
mMediaPlaying = true;
sv.setVisibility(View.VISIBLE); //surfaceview
try {
if(mp != null) {
mp.stop();
mp.release();
}
mp = new MediaPlayer();
mp.setDisplay(sh); //surfaceholder
mp.setOnCompletionListener(this);
mp.setOnPreparedListener(this);
mp.setDataSource(getBaseContext(), Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.test));
mp.prepare();
mp.start();