Android:视频(VideoView/MediaPlayer)
Android之视频播放
VideoView
if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){ //判断SDCard是否存在
SDExit = true;
} else{
SDExit = false;
Toast.makeText(VideoActivity.this, "SD卡不存在!", Toast.LENGTH_SHORT).show();
}
public class VideoActivity extends Activity{
private VideoView videoView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
videoView=(VideoView)findViewById(R.id.video);
String videoPath = "file:///sdcard/video/he.mp4";
videoView.setVideoURI(Uri.parse(videoPath));
videoView.setMediaController(new MediaController(this));// 设置播放器的控制条
videoView.requestFocus();
videoView.start(); // 开始播放视频
}
}
<!-- VideoView - 视频播放控件-->
<VideoView android:id="@+id/video" android:layout_width="fill_parent"
android:layout_height="360dp" />
MediaPlayer
<SurfaceView
android:id="@+id/surface"
android:layout_width="match_parent"
android:layout_height="360dp" > </SurfaceView>
public class VideoActivity extends Activity implements OnBufferingUpdateListener, OnCompletionListener,
OnPreparedListener,OnVideoSizeChangedListener, SurfaceHolder.Callback{
private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
private SurfaceHolder holder;
private Bundle bundle;
private String videoPath;
private int mVideoWidth, mVideoHeight;
private static final String MEDIA = "media";
private static final int LOCAL_AUDIO = 1, STREAM_AUDIO = 2, RESOURCES_AUDIO = 3, LOCAL_VIDEO = 4, STREAM_VIDEO = 5;
private boolean isVideoSizeKnown = false, isVideoReadyToBePlayed = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
surfaceView = (SurfaceView) findViewById(R.id.surface);
holder = surfaceView.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
bundle = getIntent().getExtras();
private void playVideo(){ //播放视频
cleanUp();
try {
videoPath = "file:///sdcard/video/he.mp4";
//videoPath = "http://192.168.0.180:8080/?action=stream";
if(videoPath == ""){
Toast.makeText(VideoActivity.this, "视频路径不正确!", Toast.LENGTH_SHORT).show();
}
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(videoPath);
mediaPlayer.setDisplay(holder);
mediaPlayer.prepare();
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnVideoSizeChangedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}catch (Exception e) {
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
playVideo();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
if (width == 0 || height == 0) {
return ;
}
isVideoSizeKnown = true;
mVideoWidth = width;
mVideoHeight = height;
if (isVideoReadyToBePlayed && isVideoSizeKnown) {
startVideoPlayback();
}
}
@Override
public void onPrepared(MediaPlayer mp) {
isVideoReadyToBePlayed = true;
if (isVideoReadyToBePlayed && isVideoSizeKnown) {
startVideoPlayback();
}
}
@Override
public void onCompletion(MediaPlayer mp) {
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
}
@Override
protected void onPause() {
super.onPause();
releaseMediaPlayer();
cleanUp();
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
cleanUp();
}
private void releaseMediaPlayer() {
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
private void cleanUp() {
mVideoWidth = 0;
mVideoHeight = 0;
isVideoReadyToBePlayed = false;
isVideoSizeKnown = false;
}
private void startVideoPlayback() {
holder.setFixedSize(mVideoWidth, mVideoHeight);
mediaPlayer.start();
}
}
官网参考链接:http://developer.android.com/reference/android/media/MediaPlayer.html
参考链接:
相关文章
- Android 使用意图播放本地视频
- Android多种样式的进度条
- android and javascript
- Android 字节码插桩全流程解析
- Android中对内存和外存的读写
- 基于Android实现短视频APP【100010136】
- Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite
- Android图片加载神器之Fresco, 基于各种使用场景的讲解
- 超级简单的Android Studio jni 实现(无需命令行)
- Android 自定义View (四) 视频音量调控
- Android学习小Demo一个显示行线的自定义EditText
- WebRTC 源码分析——Android 视频硬件编码
- android 图片选择,可选择图片,视频,音频,文件,方便扩展
- Facebook精简版可以让Android用户在连接速度欠佳的地方观看视频
- android视频播放心得体会
- Android Studio:Support Library依赖包的版本号
- Android事件总线(三)otto用法全解析
- android studio教学视频资源(点开即看)
- Android 高仿 频道管理----网易、今日头条、腾讯视频 (能够拖动的GridView)附源代码DEMO
- sdk 今日头条_字节跳动又一Android开源力作!全新视频动画特效SDK
- android -使用android studio环境新建一个工程——helloworld
- Android studio安装SDK和模拟器
- Android:截屏/视频截图
- Android 显示gif动画