MainActivity 代码
package cn.tedu.music_player_2.activity;
import java.util.List;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;
import cn.tedu.music_player_2.R;
import cn.tedu.music_player_2.adapter.MusicAdapter;
import cn.tedu.music_player_2.app.MusicPlayerApplication;
import cn.tedu.music_player_2.entity.Music;
import cn.tedu.music_player_2.service.PlayMusicService;
import cn.tedu.music_player_2.util.CommonUtils;
import cn.tedu.music_player_2.util.IMusicPlayer;
/**
* MainActivity
*
* @author chengheng
* @version 2.0
*/
public class MainActivity extends Activity implements View.OnClickListener,
OnItemClickListener, OnSeekBarChangeListener {
/**
* ListView:歌曲列表
*/
private ListView lvMusics;
/**
* ImageButton:播放或暂停
*/
private ImageButton ibPlayOrPause;
/**
* ImageButton:播放上一首
*/
private ImageButton ibPrevious;
/**
* ImageButton:播放下一首
*/
private ImageButton ibNext;
/**
* TextView:显示当前播放的歌曲的名称
*/
private TextView tvMusicTitle;
/**
* SeekBar:歌曲的播放进度
*/
private SeekBar sbMusicProgress;
/**
* TextView:歌曲当前播放到的时间
*/
private TextView tvMusicCurrentPosition;
/**
* TextView:当前播放的歌曲的时长
*/
private TextView tvMusicDuration;
/**
* 歌曲数据的List集合
*/
private List musics;
/**
* 歌曲列表的Adapter
*/
private MusicAdapter musicAdapter;
/**
* Application
*/
private MusicPlayerApplication app;
/**
* ServiceConnection:Activity与Service建立的连接
*/
private InnerServiceConnection conn;
/**
* 当Activity与Service连接后,调用Service方法的工具
*/
private IMusicPlayer player;
/**
* 更新歌曲播放信息的线程
*/
private UpdateProgressThread updateProgressThread;
/**
* 播放器是否已经开始运行
*/
private boolean isPlayerWorking;
/**
* 用户是否正在拖拽进度条
*/
private boolean isUserTrackingTouch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 绑定Service
Intent intent = new Intent(this, PlayMusicService.class);
conn = new InnerServiceConnection();
bindService(intent, conn, BIND_AUTO_CREATE);
// 初始化控件
lvMusics = (ListView) findViewById(R.id.lv_musics);
ibPlayOrPause = (ImageButton) findViewById
(R.id.ib_play_or_pause);
ibPrevious = (ImageButton) findViewById(R.id.ib_previous);
ibNext = (ImageButton) findViewById(R.id.ib_next);
tvMusicTitle = (TextView) findViewById(R.id.tv_music_title);
sbMusicProgress = (SeekBar) findViewById(R.id.sb_music_progress);
tvMusicCurrentPosition = (TextView) findViewById
(R.id.tv_music_current_position);
tvMusicDuration = (TextView) findViewById
(R.id.tv_music_duration);
// 获取歌曲列表的数据
app = (MusicPlayerApplication) getApplication();
musics = app.getMusics();
// 显示歌曲列表的ListView
musicAdapter = new MusicAdapter(this, musics);
lvMusics.setAdapter(musicAdapter);
// 为按钮配置监听器
ibPlayOrPause.setOnClickListener(this);
ibPrevious.setOnClickListener(this);
ibNext.setOnClickListener(this);
// 为ListView配置监听器
lvMusics.setOnItemClickListener(this);
// 为SeekBar配置监听器
sbMusicProgress.setOnSeekBarChangeListener(this);
}
@Override
protected void onRestart() {
// 判断是否正在播放
if(player.callIsPlaying()) {
// 开启线程更新播放信息
startUpdateProgressThread();
}
super.onRestart();
}
@Override
protected void onStop() {
// 停止更新播放信息
stopUpdateProgressThread();
super.onStop();
}
@Override
protected void onDestroy() {
// 解除与Service的绑定
if (conn != null) {
unbindService(conn);
}
super.onDestroy();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ib_play_or_pause:
// 判断当前的状态
if (player.callIsPlaying()) {
// 正在播放,则暂停