Android 的简单应用(MusicPlayer) 以及 Soundpool池

来源:互联网 发布:淘宝我的评价怎么删除 编辑:程序博客网 时间:2024/06/15 08:39

一.首先模仿的是一个简单的音乐播放器。音乐播放器分三种情况

     1.播放项目内本有的音乐

     2.播放手机内存卡中的音乐(需要得到播放音乐的绝对路径)

     3.播放网络路径的音乐

 下面是具体代码 

public class MainActivity extends AppCompatActivity {    private SeekBar seekbar;    private ImageButton play_pause_btn;    private MediaPlayer mediaPlayer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化控件        initview();    }    //初始化控件    private void initview(){        seekbar = (SeekBar) findViewById(R.id.Seekbar);        play_pause_btn = (ImageButton) findViewById(R.id.play_pause_btn);        //seekbar拖动        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);            }        });        //开始播放 或  暂停        play_pause_btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {              //判断 mediaPlayer 是不是第一次点击播放              if(mediaPlayer==null){               //一.读取项目内 音乐//                  mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.a);//                  //设置类型//                  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);              //二.读取内存卡中的音乐//                     mediaPlayer = new MediaPlayer();////                    //设置类型//                      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);////                   //设置音源//                     try{//                         mediaPlayer.setDataSource(MainActivity.this, Uri.parse("file://mnt/sdcard/Music/Sugar.mp3"));////                         //准备一下//                         mediaPlayer.prepare();////                        }catch (Exception e){//                           e.printStackTrace();//                     }               //三.读取网络音乐                  mediaPlayer=new MediaPlayer();                  //设置类型                  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);                  //设置音源                     try{                         //播放网络音乐                         mediaPlayer.setDataSource(MainActivity.this, Uri.parse("http://192.168.56.169/Sugar.mp3"));                         //异步准备一下                         mediaPlayer.prepareAsync();                        }catch (Exception e){                           e.printStackTrace();                     }                  //准备完成的监听                  mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {                      @Override                      public void onPrepared(MediaPlayer mediaPlayer) {                          mediaPlayer.start();                          //修改图标                          play_pause_btn.setImageResource(android.R.drawable.ic_media_pause);                          //获取音乐总时长                          int duration=mediaPlayer.getDuration();                          //设置seekbar                          seekbar.setMax(duration);                          new MyThread().start();                      }                  });              }else if(mediaPlayer.isPlaying()){                  //暂停                  mediaPlayer.pause();                  //修改图标                  play_pause_btn.setImageResource(android.R.drawable.ic_media_play);              }else{                  //播放                  mediaPlayer.start();                  //修改图标                  play_pause_btn.setImageResource(android.R.drawable.ic_media_pause);              }            }        });    }   //使seekbar 动起来的线程    class MyThread extends Thread{       @Override       public void run() {           super.run();           //获取当前歌曲的时间           int currentposition=mediaPlayer.getCurrentPosition();           //给seekbar设置值           seekbar.setProgress(currentposition);       }   }    //销毁程序时 清空mediaPlayer    @Override    protected void onDestroy() {        super.onDestroy();        mediaPlayer.release();    }}

以及xml

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.android_26_musicplayer.MainActivity">    <SeekBar        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/Seekbar"        />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        >        <ImageButton            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@android:drawable/ic_media_play"            android:id="@+id/play_pause_btn"            />    </LinearLayout></LinearLayout>

二.实现的是一个Soudpool池实现多种声音一起播放的效果

 

public class SandPollActivity extends AppCompatActivity {    private SoundPool soundPool;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sand_poll);        //初始化控件        initview();    }    //初始化控件    private void initview(){        //实例化 音频池        soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0);        //soundPool 加载完成监听        soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {            @Override            public void onLoadComplete(SoundPool soundPool, int i, int i1) {                   //播放                soundPool.play(i,1,1,1,-1,1);            }        });        //加载声音        findViewById(R.id.music1_btn).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                 soundPool.load(SandPollActivity.this,R.raw.chimp,1);            }        });        findViewById(R.id.music2_btn).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                soundPool.load(SandPollActivity.this,R.raw.crickets,1);            }        });       findViewById(R.id.music3_btn).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                soundPool.load(SandPollActivity.this,R.raw.dogbark,1);            }        });       findViewById(R.id.music4_btn).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {               soundPool.load(SandPollActivity.this,R.raw.love,1);            }        });        findViewById(R.id.music5_btn).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                soundPool.load(SandPollActivity.this,R.raw.roar,1);            }        });    }    @Override    protected void onDestroy() {        super.onDestroy();        if(soundPool!=null){            soundPool.release();            soundPool=null;        }    }}

以及xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_sand_poll"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.android_26_musicplayer.SandPollActivity">    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="声音1"        android:id="@+id/music1_btn"        />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="声音2"        android:id="@+id/music2_btn"        />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="声音3"        android:id="@+id/music3_btn"        />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="声音4"        android:id="@+id/music4_btn"        />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="声音5"        android:id="@+id/music5_btn"        /></LinearLayout>



 

0 0
原创粉丝点击