android mediaplayer 1

来源:互联网 发布:java 所有数据类型 编辑:程序博客网 时间:2024/05/17 04:03


启动一个服务的方法:
1: startService(new Intent(this,MusicPlayerService.class));
2:
bindService(new Intent(this,MusicPlayerService.class), mPlaybackConnection, Context.BIND_AUTO_CREATE);
注意它的第二个参数:ServiceConnection 的对象创建的同时,需要实现其onServiceConnected,onServiceDisconnected来判断与服

务的成功连接或者断开连接。
 private ServiceConnection mPlaybackConnection = new ServiceConnection()
    {
        public void onServiceConnected(ComponentName className, IBinder service)
        { 
//走到这里,表示成功连接
         mMusicPlayerService = ((MusicPlayerService.LocalBinder)service).getService();
        }
        public void onServiceDisconnected(ComponentName className)
        {
//走到这里,断开连接
         mMusicPlayerService = null;
        }
    };

这里MusicPlayerService 的内部类这样实现:
 public class LocalBinder extends Binder
 {
  public MusicPlayerService getService()
  {
   return MusicPlayerService.this;
  }
 }

下面是实现MusicPlayerService:
在MusicPlayerService 的onCreate()方法实例化mMediaPlayer = new MediaPlayer();
  mMediaPlayer.setOnPreparedListener(mPrepareListener);//准备好,就发广播
  mMediaPlayer.setOnCompletionListener(mCompleteListener);//播放完也广播
    MediaPlayer.OnCompletionListener mCompleteListener = new MediaPlayer.OnCompletionListener()
    {
        public void onCompletion(MediaPlayer mp)
        {
            broadcastEvent(PLAY_COMPLETED);
        }
    };
   
    MediaPlayer.OnPreparedListener mPrepareListener = new MediaPlayer.OnPreparedListener()
    {
        public void onPrepared(MediaPlayer mp)
        {  
            broadcastEvent(PLAYER_PREPARE_END);
        }
    };
同时封装MediaPlayer的方法 
            public void setDataSource(String path)
 {

  try
  {
   mMediaPlayer.reset();
   mMediaPlayer.setDataSource(path);
   mMediaPlayer.prepare();
  }
  catch (IOException e)
  {
   return;
  }
  catch (IllegalArgumentException e)
  {
   return;
  }
 }

原创粉丝点击