Android初学者需要MediaPlayer的帮助

时间:2014-02-14 22:28:52

标签: android android-mediaplayer

我是Android Dev的新用户,但我正在尝试在应用首次启动时运行视频。我将.mp4文件放在'res'目录下的'raw'文件夹中。到目前为止我有这个......

public class MainActivity extends Activity {

MediaPlayer videotime;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    videotime = MediaPlayer.create(this, R.raw.lessonslearned);
    videotime.start();

}


protected void onResume() {
    Log.e("Pickle", "onResume");
    videotime = MediaPlayer.create(this, R.raw.lessonslearned);
    videotime.start();
    super.onResume();
}

任何帮助将不胜感激。视频应该在应用程序启动时开始,一直播放,然后停止。

谢谢!

编辑:我收到MEDIAPLAYER错误(1,-2147483648) 基本上视频不播放,音频不在后台。

2 个答案:

答案 0 :(得分:0)

您不应该在videotime.start()中致电onCreate。这将在活动处于最前端之前启动MediaPlayer。你打电话给videotime.start()两次。只能在onResume()方法中调用它。

在启动之前,您还需要在prepare上致电MediaPlayer

有关如何正确启动MediaPlayer

的示例,请参阅here
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();

对于视频,这应该是相同的,但具有不同的选项。

答案 1 :(得分:0)

绝对一个更好的方法是使用VideoView。我不完全确定,但是如果您想要使用MediaPlayer播放视频,则需要SurfaceView来观看视频,我使用的是Phoenixblade9解决方案,但仅使用.mp3文件。

您可以使用VideoView

@Override
protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
VideoView v = (VideoView) findViewById(R.id.myVideoView);
v.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video));
v.start();

}

只需将VideoView添加到您的布局中即可。

 <VideoView 
         android:id="@+id/myVideoView"
         android:layout_height="fill_parent"
         android:layout_width="fill_parent" 
         />

更新:要在MediaPlayer SurfaceView内播放视频。