Android中实现一个简单音乐播放器

Android系统提供一个多媒体类:MediaPlay,可以用来播放音乐,视频.

一般我们的播放器是要求都是退出activity也会依然会继续播放,所以我们会选用在service里实现,可以在后台播放.

简单的音乐播放demo中的service代码:

public class MusicService extends Service {

 /**

  * 要播放的音乐文件的路径

  */

   privateString path;

   privateMediaPlayer mediaPlayer;

   /**

   * 音乐播放的状态

   */

   privateint PLAYING_STATUS;

   privateint STOP = 0;

   privateint PLAYING = 1;

   privateint PAUSE = 2;

    @Override

   publicIBinder onBind(Intent intent) {

       return new MyBinder();

   }

   private class MyBinder extends Binder implements IMusicService {

      @Override

      public MusicServicecallGetMusicService() {

         returngetMusicService();

      }

   }

   /**

    * 返回服务的对象

    *

    * @return

   */

    public MusicService getMusicService() {

        return this;

    }

    @Override

   public void onCreate() {

       System.t.println("服务被创建了。");

           super.onCreate();

   }

    @Override

   public void onDestroy() {

       System.out.println("服务被销毁了。");

          super.onDestroy();

    }

   /**

    * 设置要播放的音乐

    *

    * @param path

    * 音乐文件的路径

   */

   public void setMusic(String path) {

       this.path = path;

   }

   /**

   * 播放音乐,播放之前请设置音乐的路径

   */

   public boolean play() {

//这里的一if逻辑主要是为了避免重复播放

    if (mediaPlayer != null &&mediaPlayer.isPlaying()) {

      mediaPlayer.stop();

      mediaPlayer.release();

//每当stop后就release去释放下资源,避免内存泄漏

     mediaPlayer= null;

    }

    try {

      if(path == null) {

        return false;

      }

     mediaPlayer= new MediaPlayer();

     mediaPlayer.reset();//重置设置

                            

     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

     mediaPlayer.setDataSource(path);

     mediaPlayer.prepare();//start前先准备下

     mediaPlayer.start();

     PLAYING_STATUS= PLAYING;

       return true;

    } catch (Exception e) {

      e.printStackTrace();

      return false;

    }

 }

 /**

  * 暂停音乐

  */

 public void pause() {

    if (mediaPlayer != null && mediaPlayer.isPlaying()){

       mediaPlayer.pause();

       PLAYING_STATUS= PAUSE;

     }

  }

  /**

  * 继续开始

  */

  public void resume() {

    if (mediaPlayer != null &&PLAYING_STATUS == PAUSE) {

       mediaPlayer.start();

       PLAYING_STATUS= PLAYING;

    }

  }

  /**

   * 停止播放音乐

   */

  public void stop() {

    if (mediaPlayer != null &&mediaPlayer.isPlaying()) {

        mediaPlayer.stop();

        mediaPlayer.release();

        mediaPlayer= null;

        PLAYING_STATUS= STOP;

     }

  }

}


在avtivity中通过绑定服务bindService,就可以调用上面service中的方法,传入path进行音乐播放了.

如何绑定服务调用方法在前面的文章中有讲到,这里就不重复了.




猜你喜欢

转载自blog.csdn.net/Lulu_hsu/article/details/66973962