初学android开发,视频播放有关问题

初学android开发,视频播放问题想在手机上播放一段视频,无奈一直报错,代码如下animation.xml:?xml version

初学android开发,视频播放问题
想在手机上播放一段视频,无奈一直报错,代码如下
animation.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <SurfaceView android:id = "@+id/surface"
  android:layout_width = "wrap_content"
  android:layout_height = "wrap_content"
  android:visibility="visible" 
  android:layout_centerVertical="true" 
  android:layout_centerHorizontal="true">
  </SurfaceView>
</RelativeLayout>





animation.java:

package wood.recorder.animation;

import java.io.IOException;

import android.app.Activity;
import android.os.Bundle;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class Animation extends Activity implements OnCompletionListener {
  /** Called when the activity is first created. */
SurfaceView mPreview;
SurfaceHolder holder;
String path;
MediaPlayer mPlayer;

  @Override 
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.animation);
mPreview = (SurfaceView)findViewById(R.id.surface);
holder = mPreview.getHolder();
path = "/sdcard/title.mp4";
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(path);
mPlayer.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
System.out.println("IOException");
e.printStackTrace();
}
mPlayer.setOnCompletionListener(this);
mPlayer.setDisplay(holder);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.start();


   
  }

@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.pause();
mp.stop();
mp.release();
//mp.reset();

}

@Override
public void onStop(){
mPlayer.stop();
super.onStop();
}
}
DDMS报错情况如下:
07-08 09:05:33.818: ERROR/PlayerDriver(31): Command PLAYER_PREPARE completed with an error or info PVMFErrResourceConfiguration
07-08 09:05:33.818: ERROR/MediaPlayer(242): error (1, -16)
07-08 09:05:33.829: INFO/System.out(242): IOException
07-08 09:05:33.829: WARN/System.err(242): java.io.IOException: Prepare failed.: status=0x1
07-08 09:05:33.838: WARN/PlayerDriver(31): PVMFInfoErrorHandlingComplete
07-08 09:05:33.848: WARN/System.err(242): at android.media.MediaPlayer.prepare(Native Method)
07-08 09:05:33.848: WARN/System.err(242): at wood.recorder.animation.Animation.onCreate(Animation.java:30)
07-08 09:05:33.848: WARN/System.err(242): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-08 09:05:33.848: WARN/System.err(242): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
07-08 09:05:33.848: WARN/System.err(242): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
07-08 09:05:33.848: WARN/System.err(242): at android.app.ActivityThread.access$2200(ActivityThread.java:119)


07-08 09:05:33.858: WARN/System.err(242): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
07-08 09:05:33.858: WARN/System.err(242): at android.os.Handler.dispatchMessage(Handler.java:99)
07-08 09:05:33.858: WARN/System.err(242): at android.os.Looper.loop(Looper.java:123)
07-08 09:05:33.858: WARN/System.err(242): at android.app.ActivityThread.main(ActivityThread.java:4363)
07-08 09:05:33.858: WARN/System.err(242): at java.lang.reflect.Method.invokeNative(Native Method)
07-08 09:05:33.858: WARN/System.err(242): at java.lang.reflect.Method.invoke(Method.java:521)
07-08 09:05:33.868: WARN/System.err(242): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-08 09:05:33.868: WARN/System.err(242): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-08 09:05:33.878: WARN/System.err(242): at dalvik.system.NativeStart.main(Native Method)

手机模拟器显示是黑的,除了一个标签


另外有一点要说明的是,当我把path = "/sdcard/title.mp4"改为path = "/sdcard/try.mp3时,可以播放,try.mp3是一个音频文件,title.mp4是一个很短的视频文件


在线等高手指点...

[解决办法]
public class test extends Activity

  {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState)

  {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  /* 创建VideoView对象 */

  final VideoView videoView = (VideoView) findViewById(R.id.VideoView01);

  /* 操作播放的三个按钮 */

  Button PauseButton = (Button) this.findViewById(R.id.PauseButton);

  Button LoadButton = (Button) this.findViewById(R.id.LoadButton);

  Button PlayButton = (Button) this.findViewById(R.id.PlayButton);

  /* 装载按钮事件 */

  LoadButton.setOnClickListener(new OnClickListener()

  {

  public void onClick(View arg0)

  {

  /* 设置路径 */

  videoView.setVideoPath(“/sdcard/test.mp4″);

  /* 设置模式-播放进度条 */

  videoView.setMediaController(new MediaController(test.this));

  videoView.requestFocus();

  }

  });

  /* 播放按钮事件 */

  PlayButton.setOnClickListener(new OnClickListener()

  {

  public void onClick(View arg0)

  {

  /* 开始播放 */

  videoView.start();

  }

  });

  /* 暂停按钮 */

  PauseButton.setOnClickListener(new OnClickListener()

  {

  public void onClick(View arg0)

  {

  /* 暂停 */

  videoView.pause();

  }

  });

  }

  }
[解决办法]
之前我也写过一个简单的播放器,貌似和楼主的差不多啊,只是数据放在系统里,而不是在sdcard里。当时我是在《Android SDK范例开发大全》里找到的代码,稍稍修改而成的。建议楼主查查。