如何在OnCreate方法上播放视频?

时间:2011-07-26 07:38:25

标签: android

如何在OnCreate方法上播放视频?我使用了以下代码。但是没有播放视频。如果我在按钮的Click事件上使用此代码,那么这是工作。

我的OnCreate方法: -

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);      
    getWindow().setFormat(PixelFormat.UNKNOWN);
    surfaceView = (SurfaceView) findViewById(R.id.surfaceview);
    surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(this);
    surfaceHolder.setFixedSize(176, 144);
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    mediaPlayer = new MediaPlayer();
    mediaPlayer.isLooping();
    playvideo();
}

我的PlayVideo功能: -

public void playvideo() {
    String stringPath = "/sdcard/video.mp4";

    if (mediaPlayer.isPlaying()) {
        mediaPlayer.reset();
    }

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mediaPlayer.setDisplay(surfaceHolder);

    try {
        mediaPlayer.setDataSource(stringPath);
        mediaPlayer.prepare();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    mediaPlayer.start();
}

先谢谢。

2 个答案:

答案 0 :(得分:2)

您无法从onCreate播放视频通话playvideo()。将您的代码放在:

@Override
  public void onWindowFocusChanged(boolean hasFocus) 
  {
      if (hasFocus)
      {
          // play video call
      }
  }

只在onCreate中留下声明。

答案 1 :(得分:0)

您无法在onCreate中播放视频,因为要播放视频内容时需要使用曲面,并且在调用playVideo()时尚未创建Surface。

要使视频播放正常,您需要执行以下操作

  1. 在您的活动中实施SurfaceHolder回调。使用surfaceholder(surfaceHolder.addCallback(this);)
  2. 注册您的课程
  3. 创建曲面时,将调用surfaceCreated(),您将获得曲面实例的实例。现在你可以调用playVideo(使用surfaceHolder的实例)。在playVideo()中获取表面并将其设置在媒体播放器实例上。
  4. 词shash