我在eclipse上DDMS的File Explore对话框里把mj.mp4放到了/mnt/sdcard/目录下,JAVA代码如下:
就是个简单的播放媒体的Activitypublic class MyActivity extends Activity
{
private VideoView mVideo;
private MediaController mMediaController;
private String this.mUri ;
private int mPositionWhenPaused = -1; @Override
public void onCreate(Bundle savedInstanceState)
{
this.mUri = this.getExternalStoragePath() + "/mj.mp4";
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.mVideo = (VideoView)findViewById(R.id.videoView1);
this.mMediaController = new MediaController(this);
this.mVideo.setVideoURI(Uri.parse(this.mUri));
this.mVideo.setMediaController(mMediaController);
this.mMediaController.setAnchorView(this.mVideo);
this.mMediaController.requestFocus();
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Log.v("mplayer", ">>>create ok.");
}
@Override
public void onStart()
{
super.onStart();
this.mVideo.start();
}
public void onPause()
{
// Stop video when the activity is pause.
mPositionWhenPaused = this.mVideo.getCurrentPosition();
this.mVideo.stopPlayback();
super.onPause();
}
public void onResume()
{
// Resume video player
if(mPositionWhenPaused >= 0)
{
this.mVideo.seekTo(mPositionWhenPaused);
mPositionWhenPaused = -1;
}
super.onResume();
}
}可运行起来后LogCat报错:
06-22 06:50:33.503: INFO/StagefrightPlayer(33): setDataSource('/mnt/sdcard/mj.mp4')
06-22 06:50:34.433: INFO/ActivityManager(79): Displayed hls.m3u/.HttpLiveStreaming: +7s83ms
06-22 06:50:34.774: INFO/ARMAssembler(79): generated scanline__00000177:03515104_00001002_00000000 [ 87 ipp] (110 ins) at [0x477be520:0x477be6d8] in 1578134 ns
06-22 06:50:38.832: DEBUG/MediaPlayer(434): getMetadata
06-22 06:50:38.944: DEBUG/AudioSink(33): bufferCount (4) is too small and increased to 12
06-22 06:50:38.983: ERROR/MediaPlayer(434): error (1, -2147483648)
06-22 06:50:39.123: ERROR/MediaPlayer(434): Attempt to call getDuration without a valid mediaplayer
06-22 06:50:39.123: ERROR/MediaPlayer(434): error (-38, 0)
06-22 06:50:39.186: ERROR/MediaPlayer(434): Error (1,-2147483648)
06-22 06:50:39.186: DEBUG/VideoView(434): Error: 1,-2147483648虚拟机上弹出窗口显示:
Cannot play video请问我哪里写错了吗?还是哪里出问题了!谢谢!
就是个简单的播放媒体的Activitypublic class MyActivity extends Activity
{
private VideoView mVideo;
private MediaController mMediaController;
private String this.mUri ;
private int mPositionWhenPaused = -1; @Override
public void onCreate(Bundle savedInstanceState)
{
this.mUri = this.getExternalStoragePath() + "/mj.mp4";
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.mVideo = (VideoView)findViewById(R.id.videoView1);
this.mMediaController = new MediaController(this);
this.mVideo.setVideoURI(Uri.parse(this.mUri));
this.mVideo.setMediaController(mMediaController);
this.mMediaController.setAnchorView(this.mVideo);
this.mMediaController.requestFocus();
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Log.v("mplayer", ">>>create ok.");
}
@Override
public void onStart()
{
super.onStart();
this.mVideo.start();
}
public void onPause()
{
// Stop video when the activity is pause.
mPositionWhenPaused = this.mVideo.getCurrentPosition();
this.mVideo.stopPlayback();
super.onPause();
}
public void onResume()
{
// Resume video player
if(mPositionWhenPaused >= 0)
{
this.mVideo.seekTo(mPositionWhenPaused);
mPositionWhenPaused = -1;
}
super.onResume();
}
}可运行起来后LogCat报错:
06-22 06:50:33.503: INFO/StagefrightPlayer(33): setDataSource('/mnt/sdcard/mj.mp4')
06-22 06:50:34.433: INFO/ActivityManager(79): Displayed hls.m3u/.HttpLiveStreaming: +7s83ms
06-22 06:50:34.774: INFO/ARMAssembler(79): generated scanline__00000177:03515104_00001002_00000000 [ 87 ipp] (110 ins) at [0x477be520:0x477be6d8] in 1578134 ns
06-22 06:50:38.832: DEBUG/MediaPlayer(434): getMetadata
06-22 06:50:38.944: DEBUG/AudioSink(33): bufferCount (4) is too small and increased to 12
06-22 06:50:38.983: ERROR/MediaPlayer(434): error (1, -2147483648)
06-22 06:50:39.123: ERROR/MediaPlayer(434): Attempt to call getDuration without a valid mediaplayer
06-22 06:50:39.123: ERROR/MediaPlayer(434): error (-38, 0)
06-22 06:50:39.186: ERROR/MediaPlayer(434): Error (1,-2147483648)
06-22 06:50:39.186: DEBUG/VideoView(434): Error: 1,-2147483648虚拟机上弹出窗口显示:
Cannot play video请问我哪里写错了吗?还是哪里出问题了!谢谢!
* 播放视频
*
* @param fileName
* 指定具体的视频文件名称(要求是.mp4 Or .3gp 文件)
*/
public void play(String fileName) {
StringBuffer path = new StringBuffer(this.getSDPath());
path.append("/");
path.append(fileName);
videoView.setVideoURI(Uri.parse(path.toString()));
videoView.requestFocus(); // 继承View类别,将重贴放在特定的视讯资源档案
videoView.start(); // 开始播放视频
} /**
* 获取SD卡根路径
*
* @return 转换为一个字符串的形式返回
*/
public String getSDPath() {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();// 获取跟目录
} else {
new AlertDialog.Builder(video)
.setTitle(R.string.playError)
.setMessage(R.string.sdisNullWarning)
.setIcon(R.drawable.error)
.setNegativeButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
System.exit(1);
}
}).show();
}
return sdDir.toString();
}
最后,调用play();方法,里面传入mj.mp4即可播放;你写的太多了
.setTitle(R.string.playError)
.setMessage(R.string.sdisNullWarning)
.setIcon(R.drawable.error)
.setNegativeButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
System.exit(1);
}
}).show();这段是可以不要的。这些是我从我的项目中直接剪贴过来的,也没太注意;其实你加上也无所谓。 只要你懂得怎么使用AlertDialog.Builder()的话,那你应该就会知道怎么回事
祝你好运.
等散分。来自android.growprogress.com
改成this.mVideo.setVideoPath(Uri.parse(this.mUri));试一下
个人博客:www.girlcoding.com