欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-14 15:06:58
本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下 首先,在androidmanifest.xml中配置权限 ...

本文实例为大家分享了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;
    }
  }

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

上一篇:

下一篇: