乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第121页

书籍名:《Android从入门到精通》    作者:明日科技




}

(10)为MediaPlayer对象添加完成事件监听器,在重写的onCompletion()方法中调用nextMusic()方法播放下一首音乐,具体代码如下:

mediaPlayer.setOnCompletionListener(new  OnCompletionListener()  {



@Override



public  void  onCompletion(MediaPlayer  mp)  {



nextMusic();  //播放下一首



}



});

(11)分别为“上一首”按钮、“播放”按钮、“暂停/继续”按钮、“停止”按钮和“下一首”按钮添加单击事件监听器,并在重写的onClick()方法中,实现播放上一首、播放、暂停/继续播放、停止播放和播放下一首音频等功能,具体代码如下:

//为“上一首”按钮添加单击事件监听器



pre.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



preMusic();  //播放上一首



}



});



//为“播放”按钮添加单击事件监听器



play.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



playMusic(audioList.get(currentItem));  //调用playMusic()方法播放音乐



}



});



//为“暂停”按钮添加单击事件监听器



pause.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



if  (mediaPlayer.isPlaying())  {



mediaPlayer.pause();  //暂停音频的播放



((Button)  v).setText("继续");



}  else  {



mediaPlayer.start();  //继续播放



((Button)  v).setText("暂停");



}



}



});



//为“停止”按钮添加单击事件监听器



stop.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



if  (mediaPlayer.isPlaying())  {



mediaPlayer.stop();  //停止播放音频



}



pause.setEnabled(false);  //设置“暂停”按钮不可用



}



});



//为“下一首”按钮添加单击事件监听器



next.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



nextMusic();  //播放下一首



}



});

(12)重写Activity的onDestroy()方法,用于在当前Activity销毁时,停止正在播放的音频,并释放MediaPlayer所占用的资源,具体代码如下:

@Override



protected  void  onDestroy()  {



if  (mediaPlayer.isPlaying())  {



mediaPlayer.stop();  //停止音乐的播放



}



mediaPlayer.release();  //释放资源



super.onDestroy();



}

运行本实例,在屏幕中将显示获取到的音频列表,单击各列表项,可以播放当前列表项所指定的音乐;单击“播放”按钮,将开始播放音乐,并且“暂停”按钮变为可用,如图10.5所示;单击“暂停”按钮,将暂停音乐的播放,同时该按钮变为“继续”按钮;单击“停止”按钮,将停止播放音乐;单击“上一首”按钮,将播放上一首音乐;单击“下一首”按钮,将播放下一首音乐。



图10.5 播放SD卡上的全部音频文件

10.1.6 范例2:带音量控制的音乐播放器

例10.6   在Eclipse中创建Android项目,名称为10.6,实现带音量控制功能的音乐播放器。(实例位置:光盘\TM\sl\10\10.6)

说明:  本实例是在10.1.1节中的例10.1的基础上开发的,所以与其相同的部分这里就不再赘述。

(1)将要播放的音频文件上传到SD卡的根目录中,这里要播放的音频文件为ninan.mp3。如果已经将ninan.mp3文件上传到SD卡的根目录中,就不需要再重新上传了。

(2)打开res\layout目录下的布局文件main.xml,在水平线性布局管理器的结尾处添加一个TextView组件和一个拖动条组件,分别用于显示当前音量值和调整音量的拖动条,关键代码如下:




android:id="@+id/volume"



android:layout_width="wrap_content"



android:layout_height="wrap_content"



android:padding="10px"



android:text="当前音量:"  />






android:id="@+id/seekBar1"



android:layout_width="match_parent"



android:layout_height="wrap_content"



android:layout_weight="1"  />

说明:  这里的拖动条不用指定最大值和当前值,在后面的Java代码中,我们会为其指定,这样可以让拖动条的值与音量相关联。

(3)在onCreate()方法中,添加使用拖动条控制音量大小的代码。

//获取音频管理器类的对象



final  AudioManager  am  =  (AudioManager)  MainActivity.this.getSystemService(Context.AUDIO_SERVICE);



//设置当前调整音量只是针对媒体音乐



MainActivity.this.setVolumeControlStream(AudioManager.STREAM_MUSIC);



SeekBar  seekbar  =  (SeekBar)  findViewById(R.id.seekBar1);  //获取拖动条



seekbar.setMax(am.getStreamMaxVolume(AudioManager.STREAM_MUSIC));  //设置拖动条的最大值



int  progress=am.getStreamVolume(AudioManager.STREAM_MUSIC);  //获取当前的音量