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

来源:互联网 发布:淘宝买手机 编辑:程序博客网 时间:2024/06/03 20:20
Android 如何调用MediaPlayer播放视频
 
使用MediaPlayer播放音视频的最简单实例:
[java] view plaincopy
  1. <span style="font-size:18px;">public class MediaPlayerDemo extends Activity {  
  2.     private Button mBtnPlay, mBtnPause, mBtnStop;  
  3.     private MediaPlayer mPlayer =  new MediaPlayer();  
  4.      
  5.     @Override  
  6.     public void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.main);  
  9.          
  10.         mBtnPlay= (Button)findViewById(R.id.play);  
  11.         mBtnPause= (Button)findViewById(R.id.pause);  
  12.         mBtnStop= (Button)findViewById(R.id.stop);  
  13.         mBtnPlay.setOnClickListener(new OnClickListener(){  
  14.         @Override  
  15.         public void onClick(View v) {  
  16.           try {  
  17.              mPlayer.setDataSource("/mnt/sdcard/love.mp3");  
  18.              mPlayer.prepare();  
  19.              mPlayer.start();  
  20.           }  catch (IOException e) {  
  21.              e.printStackTrace();  
  22.           }  
  23.           mPlayer.setOnCompletionListener(new OnCompletionListener(){  
  24.              @Override  
  25.              public void onCompletion(MediaPlayer mp) {  
  26.                 mPlayer.release();  
  27.              }  
  28.           });  
  29.         }  
  30.         });  
  31.          
  32.         mBtnPause.setOnClickListener(new OnClickListener(){  
  33.            @Override  
  34.            public void onClick(View v) {  
  35.                   if(mPlayer != null){  
  36.                      mPlayer .pause();  
  37.                   }  
  38.            }  
  39.         });  
  40.       
  41.         mBtnStop.setOnClickListener(new OnClickListener(){  
  42.         @Override  
  43.         public void onClick(View v) {  
  44.              if(mPlayer != null){  
  45.                 mPlayer.stop();  
  46.              }  
  47.         }  
  48.         });  
  49.     }  
  50.    
  51.     @Override  
  52.     protected void onDestroy() {  
  53.        if(mPlayer != null)  
  54.            mPlayer.release();  
  55.        super.onDestroy();  
  56.     }  
  57. }</span>  


 
布局文件main.xml:
[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.         android:orientation="vertical" android:layout_width="fill_parent"  
  4.         android:layout_height="fill_parent">  
  5.         <TextView android:layout_width="fill_parent"  
  6.         android:layout_height="wrap_content" android:text="@string/hello" />  
  7.         <Button android:text="play" android:id="@+id/play"  
  8.             android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content"></Button>  
  10.         <Button android:text="pause" android:id="@+id/pause"  
  11.             android:layout_width="wrap_content"  
  12.             android:layout_height="wrap_content"></Button>  
  13.        <Button android:text="stop" android:id="@+id/stop"  
  14.            android:layout_width="wrap_content"  
  15.            android:layout_height="wrap_content"></Button>  
  16. </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)


0 0