我将视频MP4放到了我的域名空间。我有它的公共URL,现在我想在我的Android应用程序中播放它;但不知道我怎么能这样做。我使用了以下无效的代码。轨道控制器正在移动,但我在屏幕上看不到任何视频。
public class MPlayer extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playvideo);
VideoView videoView = new VideoView(MPlayer.this);
videoView.setMediaController(new MediaController(this));
videoView.setVideoURI(Uri.parse("http://www.semanticdevlab.com/abc.mp4"));
videoView.requestFocus();
videoView.start();
LinearLayout l = (LinearLayout)findViewById(R.id.mplayer);
l.addView(videoView);
}
}
大多数时候,我使用以下代码:
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(PATH_TO_FILE);
mp.prepare();
mp.start();
有关更多信息,请查看此页面:http://developer.android.com/guide/topics/media/index.html和http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html
VideoView类可以从各种来源(例如资源或内容提供商)加载图像,负责从视频计算其测量值,以便可以在任何布局管理器中使用,并提供各种显示选项,如缩放和着色。
码:
videoView = (VideoView)findViewById(R.id.ViewVideo);
videoView.setVideoURI(Uri.parse(“android.resource://” + getPackageName() +”/”+R.raw.video));
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();
videoView.start();
我想这可能会帮助您找到解决方案。
mp=new MediaPlayer();
mp.setDataSource(path);
mp.setScreenOnWhilePlaying(true);
mp.setDisplay(holder);
mp.prepare();
mp.start();
如果您在模拟器中尝试此操作,则可能必须在真实设备中尝试此操作,因为有时我也会使用相同的问题。我将无法在模拟器中查看视频,但视频将在移动设备中播放没有任何问题。问题是,我认为使用模拟器,而不是使用您的代码。
你应该在onResume
做,因为在onCreate
VideoView
不知道它的大小,不能创建适当的表面来显示视频。
public class MPlayer extends Activity{
VideoView videoView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playvideo);
videoView = new VideoView(MPlayer.this);
videoView.setMediaController(new MediaController(this));
LinearLayout l = (LinearLayout)findViewById(R.id.mplayer);
l.addView(videoView);
}
@Override
protected void onResume() {
super.onResume();
videoView.setVideoURI(Uri.parse("http://www.semanticdevlab.com/abc.mp4"));
videoView.start();
}