歌曲的切换和进度条的拖动
大家新年快乐~~~~~~,2015年的第一天哦,前两天偷了点懒,木有继续完成我的博客,话说这博客写的时间也真够长的啊,写了一年了都还没有弄完,,今天我就是来兑现上一次的承诺,将进度条的拖动和切歌的功能加入到播放器中.
首先是进度条的拖动,其实现的原理就是拖动进度条松手之后,将当前进度条处于的位置用Broadcast的方式发送给service,让service从当前位置开始播放.在网上找了哈,按钮有onClickListener,那么我们自然可以联想到,进度条是否有个类似的东西呢?果然就有个东西叫OnSeekBarChangeListener,需要重写其中的三个方法,onProgressChanged,onStartTrackingTouch,onStopTrackingTouch,小达在这里实现的是最后一个方法,前面两个都没管,从命名来看,三个函数的意思很容易理解了,第一个是进度条的值每变动一哈,就要调用(有没有感觉进度条这个样子好累好累的,,,100块都不给别人),第二个就是刚开始改变就调用,我们需要的是在放手的那一刻,进度条的数值,所以第三个还是很不错的..
实现的代码如下所示,在MainActivity给进度条加上把:
private Intent progress_change_intent_to_service; //先来一个发送广播的Intent
progress_change_intent_to_service = new Intent("com.example.communication.PROGRESS_BAR");
</pre><pre name="code" class="java">
seek_bar.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) {
current_position_bar = seekBar.getProgress();
progress_change_intent_to_service.putExtra("current_position",current_position_bar);
sendBroadcast(progress_change_intent_to_service);
}
});
再切换到PlayerService.java中,创建广播的接收器:
private ProgressChangeReceiver progressChangeReceiver;
progressChangeReceiver = new ProgressChangeReceiver();
private class ProgressChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
current_position = intent.getIntExtra("current_position", 0);
playMusic(current_position);
}
}
IntentFilter intentProgressChangeFilter = new IntentFilter();
intentProgressChangeFilter.addAction("com.example.communication.PROGRESS_BAR");
registerReceiver(progressChangeReceiver, intentProgressChangeFilter);
到这里,进度条就可以随心而动