程序的运行效果:
首先是布局文件:
<TextView
android:text="@string/music_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<SeekBar
android:id="@+id/sbar_mp_audio"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_mp_startAudio"
android:layout_width="wrap_content"
android:text="@string/startAudio"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_mp_pauseAudio"
android:layout_width="wrap_content"
android:text="@string/pauseAudio"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_mp_endAudio"
android:layout_width="wrap_content"
android:text="@string/endAudio"
android:layout_height="wrap_content" />
</LinearLayout>
然后是代码部分:
播放音频单击事件
if(!isPause){//如果不是暂停状态
mediaPlayer = new MediaPlayer();//初始化mediaPlayer
mediaPlayer.reset();//重置mediaPlayer播放状态为初始状态
mediaPlayer = MediaPlayer.create(this,R.raw.suanshenmenanren);//装载需要播放的音频文件
m_sbarAudio.setMax(mediaPlayer.getDuration());//设置SeekBar的长度为mediaPlayer的音频长度(获取的长度单位为毫秒)
}
mediaPlayer.start();
暂停音频事件:
mediaPlayer.pause();//暂停当前银屏
isPause = true;//设置为暂停状态
停止音频事件:
mediaPlayer.stop();//停止当前音频
isPause = false;//设置为不是暂停状态
SeekBar拖动播放音频事件:
setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
//停止滑动后触发
public void onStopTrackingTouch(SeekBar seekBar) {
mediaPlayer.seekTo(m_sbarAudio.getProgress());//从滑块的位置开始播放音频(具体步骤:音频-调到-滑块停止的位置-播放)
}
});
getDuration()方法:
/**
* Gets the duration of the file.
* 获取文件的持续时间
*
* @return the duration in milliseconds, if no duration is available
* 以毫秒为单位的时间,如果没有持续可用
* (for example, if streaming live content), -1 is returned.
* 将返回-1
*/
public native int getDuration();