Android 如何调用MediaPlayer播放视频[状态机]【图】

来源:互联网 发布:linux启动kde 编辑:程序博客网 时间:2024/06/06 18:34
Android 如何调用MediaPlayer播放视频
 
使用MediaPlayer播放音视频的最简单实例:
public class MediaPlayerDemo extends Activity {    private Button mBtnPlay, mBtnPause, mBtnStop;    private MediaPlayer mPlayer =  new MediaPlayer();       @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);               mBtnPlay= (Button)findViewById(R.id.play);        mBtnPause= (Button)findViewById(R.id.pause);        mBtnStop= (Button)findViewById(R.id.stop);        mBtnPlay.setOnClickListener(new OnClickListener(){        @Override        public void onClick(View v) {          try {             mPlayer.setDataSource("/mnt/sdcard/love.mp3");             mPlayer.prepare();             mPlayer.start();          }  catch (IOException e) {             e.printStackTrace();          }          mPlayer.setOnCompletionListener(new OnCompletionListener(){             @Override             public void onCompletion(MediaPlayer mp) {                mPlayer.release();             }          });        }        });               mBtnPause.setOnClickListener(new OnClickListener(){           @Override           public void onClick(View v) {                  if(mPlayer != null){                     mPlayer .pause();                  }           }        });            mBtnStop.setOnClickListener(new OnClickListener(){        @Override        public void onClick(View v) {             if(mPlayer != null){                mPlayer.stop();             }        }        });    }     @Override    protected void onDestroy() {       if(mPlayer != null)           mPlayer.release();       super.onDestroy();    }}


 
布局文件main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical" android:layout_width="fill_parent"        android:layout_height="fill_parent">        <TextView android:layout_width="fill_parent"        android:layout_height="wrap_content" android:text="@string/hello" />        <Button android:text="play" android:id="@+id/play"            android:layout_width="wrap_content"    android:layout_height="wrap_content"></Button>        <Button android:text="pause" android:id="@+id/pause"            android:layout_width="wrap_content"            android:layout_height="wrap_content"></Button>       <Button android:text="stop" android:id="@+id/stop"           android:layout_width="wrap_content"           android:layout_height="wrap_content"></Button></LinearLayout>

 
程序说明:
第一:MediaPlayer有多重构造函数,满足各种视频的播放

  • URI方式,URI可以使本地地址或网络地址
public static MediaPlayer create(Context context, Uri uri);
  • 类似URL方式,多一个SurfaceHolder
public static MediaPlayer create(Context context, Uri uri, SurfaceHolder holder) ;
  • 资源ID方式. 例如:MediaPlayer player = MediaPlayer.create(this, R.raw.test);
public static MediaPlayer create(Context context, int resid) ;
  • 空构造函数
public MediaPlayer();

第二:设置数据源,部分构造函数已经设置数据这一步可以跳过
  • setDataSource (String path);
  • setDataSource (FileDescriptor fd);
  • setDataSource (Context context, Uri uri);
  • setDataSource (FileDescriptor fd, long offset, long length);

第三:对播放器的主要控制方法:
  • Android通过控制播放器的状态的方式来控制媒体文件的播放,其中:
  • prepare() 播放器进入prepare状态;
  • start()   播放器进入play状态
  • pause()   播放器进入pause状态
  • stop()    播放器进入stop状态
  • seekTo()  播放器定位到某个播放位置是定位方法
  • release() 播放器释放占用的资源
  • reset()   播放器从Error状态恢复
 
第四:设置播放器的监听器:
MediaPlayer提供了播放完成监听和错误监听,以及时处理特殊逻辑。确保播放器的鲁棒性。
  • setOnCompletionListener(MediaPlayer.OnCompletionListener listener)
  • setOnErrorListener(MediaPlayer.OnErrorListener listener)