当前位置: 移动技术网 > 移动技术>移动开发>Android > android多媒体音乐(MediaPlayer)播放器制作代码

android多媒体音乐(MediaPlayer)播放器制作代码

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下

首先,在androidmanifest.xml中配置权限 

<!-- 读取手机中的音乐 -->
  <uses-permission android:name="android.permission.read_external_storage" />

注释:android多媒体音乐的几种来源

1.在andriod的应用中

mediaplayer.create(this, r.raw.roar);
//mnt/sdcard/手机内存卡

2.放在自己的sd卡中(内存卡)

mediaplayer.setdatasource(this, uri.parse("file://mnt/sdcard/1/123.mp3"));

3.在网络上(要知道哪个路径)

 mediaplayer.setdatasource(this, uri.parse("http://192.168.43.202:8080/sister.mp3"));

接下来,在java代码中写

在oncreate方法中写全局变量:

 private mediaplayer mediaplayer;
  private seekbar seekbar;
private surfaceview sv_main_suffce;



 public void onplay(view view) throws ioexception {
    imagebutton = (imagebutton) view;
    if (mediaplayer==null){
      //播放应用的音频文件
//      mediaplayer = mediaplayer.create(this, r.raw.roar);

      //播放内存卡中的音频文件
      mediaplayer=new mediaplayer();
      //音频流的类型
      mediaplayer.setaudiostreamtype(audiomanager.stream_music);
      //设置音频的来源
//      mediaplayer.setdatasource(this, uri.parse("file://mnt/sdcard/1/roar.mp3"));
//      mediaplayer.prepare();//准备一下

      //播放网络音乐
      mediaplayer.setdatasource(this, uri.parse("http://192.168.43.202:8080/crickets.mp3"));
      //一步准备
      mediaplayer.prepareasync();
      //设置准备完的监听
      mediaplayer.setonpreparedlistener(new mediaplayer.onpreparedlistener() {
        @override
        public void onprepared(mediaplayer mediaplayer) {
          //开始播放
          mediaplayer.start();
          //点击播放改变图标
          imagebutton.setimageresource(android.r.drawable.ic_media_pause);
          //获取音乐的播放最大时间
          int durtion=mediaplayer.getduration();
          //设置进度条的最大值为音乐的播放最大时间
          seekbar.setmax(durtion);
          new mythred().start();
        }
      });
       //给进度条设置一个事件
      seekbar.setonseekbarchangelistener(new seekbar.onseekbarchangelistener() {
        @override
        public void onprogresschanged(seekbar seekbar, int i, boolean b) {
        }

        @override
        public void onstarttrackingtouch(seekbar seekbar) {
        }

        @override
        public void onstoptrackingtouch(seekbar seekbar) {
          //获取拖动的进度
          int progress=seekbar.getprogress();
          //到那个位置播放
          mediaplayer.seekto(progress);
        }
      });
    }
    else if (mediaplayer.isplaying()){
      mediaplayer.pause();
      imagebutton.setimageresource(android.r.drawable.ic_media_play);
    }
    else {
      mediaplayer.start();
      imagebutton.setimageresource(android.r.drawable.ic_media_pause);
    }

  }

写了一个子线程 extends thread(seekbar进度条):

class mythrod extends thread{
    @override
    public void run() {
      super.run();
      while (seekbar.getprogress()<=seekbar.getmax()){
       //获取音乐的当前播放位置
        int currentposition=mediaplayer.getcurrentposition();
        seekbar.setprogress(currentposition);
      }
    }
  }

另建一个类soundactivity,通过soundpool例化音频池可以实现多种声音一起播放

//实例化音频池
    soundpool = new soundpool(4, audiomanager.stream_music,0);
  soundpool.setonloadcompletelistener(new soundpool.onloadcompletelistener() {
    @override
    public void onloadcomplete(soundpool soundpool, int i, int status) {
     //播放
      soundpool.play(i,1,1,1,-1,1);
    }
  });

//写声音按钮的方法
 public void playkfc(view view){
 //音频池的路径
    soundpool.load(this,r.raw.rooster,1);
  }
  public void playtwo(view view){
    soundpool.load(this,r.raw.chimp,1);
  }
  public void playthree(view view){
    soundpool.load(this,r.raw.crickets,1);
  }
  public void playfour(view view){
    soundpool.load(this,r.raw.roar,1);
  }
  public void playdog(view view){
    soundpool.load(this,r.raw.dogbark,1);
  }

//销毁音频池soundpool
  @override
  protected void ondestroy() {
    super.ondestroy();
    if(soundpool!=null){
     //释放内存
      soundpool.release();
      soundpool=null;
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网