首页 > 系统 > Android > 正文

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

2019-12-12 03:35:48
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表