使用surfaceView实现视频播放

来源:互联网 发布:php mysql web 编辑:程序博客网 时间:2024/05/23 13:13

1.添加权限

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2.mainactivity布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >  <SurfaceView       android:id="@+id/surfaceview"      android:layout_width="match_parent"      android:layout_height="match_parent"/></RelativeLayout>

3.mainactivity

public class MainActivity extends Activity {    private SurfaceView surfaceView;    private SurfaceHolder holder;    private MediaPlayer mediaPlayer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        surfaceView = (SurfaceView) findViewById(R.id.surfaceview);        // 获取一个surfaceholdr对象,当surfaceview状态改变的时候可以对meidaplayer进行设置        holder = surfaceView.getHolder();        holder.addCallback(new Callback() {            /**             * 当surfaceview创建的时候会调用这个方法             * */            public void surfaceCreated(final SurfaceHolder holder) {                // 当surfaceview创建的时候创建一个mediaplayer                if (mediaPlayer == null) {                    mediaPlayer = new MediaPlayer();                }                // 重置mediaplayer                mediaPlayer.reset();                try {                    // 设置资源                    mediaPlayer.setDataSource("sdcard/zuixuan.flv");                    // 异步准备播放资源                    mediaPlayer.prepareAsync();                    // 监听是否准备好了资源                    mediaPlayer.setOnPreparedListener(new OnPreparedListener() {                        // 当资源准备好的时候会调用这个方法                        public void onPrepared(MediaPlayer mp) {                            // 当准备好资源的时候,将                            mediaPlayer.setDisplay(holder);                            // 开始播放视频                            mediaPlayer.start();                        }                    });                } catch (IllegalArgumentException e) {                    e.printStackTrace();                } catch (SecurityException e) {                    e.printStackTrace();                } catch (IllegalStateException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }            }            /**             * 当surfaceview状态改变的时候会调用这个方             * */            public void surfaceChanged(SurfaceHolder holder, int format,                    int width, int height) {            }            /**             * 当surfaceview销毁的时候会调用这个方法             * */            public void surfaceDestroyed(SurfaceHolder holder) {                // 当surfaceview销毁的时候停止播放                mediaPlayer.stop();                // 将播放器置于闲置状态                mediaPlayer.release();                // 把播放器对象置null                mediaPlayer = null;            }        });    }}

这里写图片描述

0 0
原创粉丝点击