音乐播放器+进度条 V2.0
来源:互联网 发布:python获取日期字符串 编辑:程序博客网 时间:2024/05/17 22:50
注意事项:
注意权限:
android.permission.INTERNET
publicclass MainActivity extends Activity {
static Handler handler= new Handler(){
public void handleMessage(android.os.Message msg) {
Bundle bundle = msg.getData();
int duration = bundle.getInt("duration" );
int CurrentPosition =bundle.getInt("CurrentPosition" );
//刷新进度的进度
sb.setMax(duration);
sb.setProgress(CurrentPosition);
}
};
private static SeekBar sb ;
private MyserviceConn conn;
private MusicIntface mi;
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
//获取seekbar
sb = (SeekBar) findViewById(R.id.sb);
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
//根据拖动的进度改变音乐进度
int progress =seekBar.getProgress();
//改变播放进度
mi.seekTo(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
}
});
intent = new Intent(this , MusicService.class);
startService( intent);
conn = new MyserviceConn();
bindService( intent, conn, BIND_AUTO_CREATE);
}
class MyserviceConn implements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
mi=(MusicIntface) service;
}
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
}
public void play(View v) {
mi.play();
}
public void pause(View v) {
mi.pause();
}
public void continueplay(View v) {
mi.continueplay();
}
public void exit(View v){
unbindService( conn);
stopService( intent);
}
}
------------------------------------------------------
服务:
public class MusicService extends Service {
MediaPlayer player;
Timer timer;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return new MusicController();
}
class MusicController extends Binder implements MusicIntface{
@Override
public void play() {
MusicService. this.play();
}
@Override
public void pause() {
MusicService. this.pause();
}
@Override
public void continueplay() {
MusicService. this.continueplay();
}
@Override
public void seekTo(int progress) {
// TODO Auto-generated method stub
MusicService. this.seekTo(progress);
}
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
//停止播放
player.stop();
//释放占用的资源,此时player对象已经废掉了
player.release();
player = null;
if(timer !=null){
timer.cancel();
timer= null;
}
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
player= new MediaPlayer();
}
public void play(){
//重置
player.reset();
try {
//加载多媒体文件
// player.setDataSource("XXXX");
player.setDataSource( "http://192.168.135.2:8080/mt.mp3" );
// player.prepare();
player.prepareAsync();
// player.start();
player.setOnPreparedListener( new OnPreparedListener() {
//准备完毕时,此方法调用
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
player.start();
addTimer();
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//暂停播放
public void pause(){
player.pause();
}
//继续播放
public void continueplay(){
player.start();
}
public void seekTo(int progress){
player.seekTo(progress);
}
public void addTimer(){
if(timer ==null){
timer = new Timer();
timer.schedule( new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
//获取歌曲总时长
int duration = player .getDuration();
//获取歌曲当前播放进度
int CurrentPosition = player.getCurrentPosition();
Message msg= MainActivity.handler .obtainMessage();
//把进度封装至消息对象中
Bundle bundle = new Bundle();
bundle.putInt( "duration", duration);
bundle.putInt( "CurrentPosition", CurrentPosition);
msg.setData(bundle);
MainActivity. handler.sendMessage(msg);
}
//开始计时任务后的5毫秒,第一次执行run方法,以后每500毫秒执行一次
}, 5, 500);
}
}
}
-----------------------------------------------------------------------------------
接口
public interface MusicIntface {
void play();
void pause();
void continueplay();
void seekTo( int progress);
}
0 0
- 音乐播放器+进度条 V2.0
- MediaPlayer 音乐播放器进度条
- Android音乐播放器设置播放进度条
- android实现音乐播放器(进度条)
- android音乐播放器进度条研究
- android音乐播放器,可进度条调节
- 实现音乐播放器,多线程处理进度条
- android实现音乐播放器(进度条)
- 57.音乐播放器的进度条
- 自定义音乐播放进度条
- android 播放音乐-进度条
- Android音乐播放器的播放进度条(转)
- 模拟音乐播放器进度条以及播放、暂停功能
- Android带播放进度条的音乐播放器
- 音乐播放器--简单实现播放、暂停、随机播放、音乐进度条(第一版)
- android 音乐播放 圆形进度条
- 带进度条的播放音乐
- html5 Audio音乐播放器(canvas圆形音乐播放进度条)(一)
- RecyclerView设置点击监听器OnClickListener
- 图片另存为找不到桌面
- 内容提供者事列描述的补充,当出现数据库多条时处理
- DataTable.Select方法
- Vitamio视频框架
- 音乐播放器+进度条 V2.0
- 音乐播放器
- 画画板
- 2016 百度之星 IP聚合
- 构图的特效,简单水准
- Git 基本操作
- 创建图片副本
- LeetCode 150. Evaluate Reverse Polish Notation
- 多媒体编程,加载大图片