其他分享
首页 > 其他分享> > android-MediaPlayer视频问题

android-MediaPlayer视频问题

作者:互联网

我花了大约2个小时来尝试使它生效.我从来没有让MediaPlayer播放视频很幸运.我在这里做错了什么?第一次播放时仅播放音频,不播放视频.然后,当我尝试重新设置setDataSource时,第二次出现IllegalStateException.我试过在onCompletion中不调用stop()和release(),而是在播放前尝试调用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");

}

解决方法:

如果要播放视频,可以使用VideoView.

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/VideoViewDemo.html

您可以使用MediaController来控制视频,例如播放,暂停,快进和快退.

例如,检查此链接.

http://android-coding.blogspot.in/2011/03/using-videoview-to-play-mp4-from-sdcard.html

标签:android-mediaplayer,android
来源: https://codeday.me/bug/20191201/2082690.html