首先可以通过这幅图来了解一下写音乐播放器要用到的属性,然后我们先创建一个raw文件夹,把我所需要的音乐放进去,
之后的话写一个布局main.xml
<SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/seekBar" android:layout_weight="1" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="isPlayOrPause" />然后在Activity.mian.java
PRivate MediaPlayer mediaPlayer; private SeekBar seekBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); seekBar = (SeekBar) findViewById(R.id.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); } }); } public void isPlayOrPause(View view) throws IOException { ImageButton imageButton = (ImageButton) view; if (mediaPlayer == null) { //播放应用内的音频文件// mediaPlayer = MediaPlayer.create(this, R.raw.duo); //播放内存卡中的音频文件 mediaPlayer = new MediaPlayer(); //设置音频流的类型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //播放内存卡中的音频文件 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/music1/yy.mp3"));// 播放网络音乐// mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.135/love.mp3"));// 播放网络需要异步准备// mediaPlayer.prepareAsync();//// 设置准备完成的监听// mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {// @Override// public void onPrepared(MediaPlayer mediaPlayer) {//// }// }); //准备一下 mediaPlayer.prepare(); mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的播放最大时长 int duration = mediaPlayer.getDuration(); //设置进度条的最大值为:音乐播放的时长 seekBar.setMax(duration); new MyThread().start(); } 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); } } class MyThread extends Thread { @Override public void run() { super.run(); while (seekBar.getProgress() <= seekBar.getMax()) { //循环一次就获取音乐的当前播放位置 int currertposition = mediaPlayer.getCurrentPosition(); seekBar.setProgress(currertposition); } } }然后再写一个音池
private SoundPool soundPool; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sound_pool); //实例化音频池 soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0); //设置一个监听 soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int i, int i1) { //播放 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.crickets,1); } public void playthree(View view){ soundPool.load(this,R.raw.roar,1); } public void playfour(View view){ soundPool.load(this,R.raw.chimp,1); } public void playfive(View view){ soundPool.load(this,R.raw.dogbark,1); } @Override protected void onDestroy() { super.onDestroy(); if (soundPool!=null){ soundPool.release(); soundPool=null; } }谢谢观看
新闻热点
疑难解答