Android MediaPlayer详解视屏播放之SurfaceView(四)

来源:互联网 发布:python 2.7.x下载官网 编辑:程序博客网 时间:2024/06/01 10:16
Android MediaPlayer详解视屏播放之SurfaceView(四)
效果图


Android MediaPlayer详解(一)
Android MediaPlayer音频播放(二)
Android MediaPlayer视频播放之VideoView(三)


MediaPlayer 视屏播放之SurfaceView
1.XML布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout    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:orientation="vertical"    tools:context="com.example.cxy.mediaplayer.MainActivity">    <SurfaceView        android:id="@+id/sfv_show"        android:layout_width="match_parent"        android:layout_height="300dp"/>    <Button        android:id="@+id/btn_start"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="开始"/>    <Button        android:id="@+id/btn_pause"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="暂停 "/>    <Button        android:id="@+id/btn_stop"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="终止"/></LinearLayout>
2.主类MainActivity
package com.example.cxy.mediaplayer;import android.media.AudioManager;import android.media.MediaPlayer;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity implements View.OnClickListener, SurfaceHolder.Callback {    private MediaPlayer mPlayer = null;    private SurfaceView sfv_show;    private SurfaceHolder surfaceHolder;    private Button btn_start;    private Button btn_pause;    private Button btn_stop;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        sfv_show = (SurfaceView) findViewById(R.id.sfv_show);        btn_start = (Button) findViewById(R.id.btn_start);        btn_pause = (Button) findViewById(R.id.btn_pause);        btn_stop = (Button) findViewById(R.id.btn_stop);        btn_start.setOnClickListener(this);        btn_pause.setOnClickListener(this);        btn_stop.setOnClickListener(this);        //初始化SurfaceHolder类,SurfaceView的控制器        surfaceHolder = sfv_show.getHolder();        surfaceHolder.addCallback(this);        //显示的分辨率,不设置为视频默认        surfaceHolder.setFixedSize(320, 220);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_start:                mPlayer.start();                break;            case R.id.btn_pause:                mPlayer.pause();                break;            case R.id.btn_stop:                mPlayer.stop();                break;        }    }    @Override    public void surfaceCreated(SurfaceHolder holder) {        mPlayer = MediaPlayer.create(MainActivity.this, R.raw.oppo);        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);        //设置显示视频显示在SurfaceView上        mPlayer.setDisplay(surfaceHolder);    }    @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {    }    @Override    public void surfaceDestroyed(SurfaceHolder holder) {    }    @Override    protected void onDestroy() {        super.onDestroy();        if (mPlayer.isPlaying()) {            mPlayer.stop();        }        mPlayer.release();    }}
0 0