软件编程
位置:首页>> 软件编程>> Android编程>> android多媒体音乐(MediaPlayer)播放器制作代码

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

作者:Strange_yy  发布时间:2022-01-06 01:13:20 

标签:android,MediaPlayer,音乐播放器

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

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com