在 MusicActivity.java 添加组件 private Button startButton ; private Button pauseButton ; private SeekBar seekbar ; private boolean isBound = false ; private PlayService playService ; private static final String TAG = ” MusicActivity ” ; private final int MUSICDURATION = 0x1 ; //获 取 歌 曲 播 放 时 间 标 志 private final int UPDATE = 0x2 ; //更 新 进 度 条 标 志 • 让 MusicActivity 实现 View.OnClickListener,SeekBar.OnSeekBarChangeListener 两个接口,这样 该 Activity 同时也变成了监听类 • 创建后台 PlayService.java, 并让它继承 Service 类,实现 MediaPlayer.OnCompletionListener 接口, 并添加成员 MediaPlayer mediaPlayer; • 在 PlayService 类添加几个方法以控制 MediaPlayer 的状态转移 public void play ( ) { try { mediaPlayer . r e s e t ( ) ; mediaPlayer . prepare ( ) ; mediaPlayer . s t a r t ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } } public void pause ( ) { mediaPlayer . pause ( ) ; i s P l a y i n g = false ; } public void s t a r t ( ) { mediaPlayer . s t a r t ( ) ; i s P l a y i n g = true ; } public void setTo ( int msec ) { mediaPlayer . seekTo ( msec ) ; } public int getDuration ( ) { return duration ; } public MediaPlayer getMediaPlayer ( ) { return mediaPlayer ; } @Override public void onCompletion ( MediaPlayer mp) { i s P l a y i n g = false ; } • 重构 onBind 方法,并添加一个 Binder 内部类能够在外部获取 Service 的实例 @Override public IBinder onBind ( Intent i n t e n t ) { return new PlayBinder ( ) ; 3 4.1 实训步骤 《Android 应用程序开发》广西职业师范学院实验教学指导书 } class PlayBinder extends Binder { public PlayService getPlayService ( ) { return PlayService . this ; } } • 其他方法一览 @Override public void onCreate ( ) { super . onCreate ( ) ; try { mediaPlayer = MediaPlayer . c r e a t e ( this , R. raw . sleepaway ) ; mediaPlayer . setOnCompletionListener ( this ) ; duration = mediaPlayer . getDuration ( ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; } } private Runnable runnable = new Runnable ( ) { @Override public void run ( ) { mediaPlayer . seekTo ( mediaPlayer . getCurrentPosition ( ) ) ; } } ; • 将 MusicActivity 与 PlayService 进行整合 //连 接 A c t i v i t y 和
时间: 2024-04-28 20:24:32 浏览: 152
事件处理作业(作业-java事件处理
PlayService,在 MusicActivity 中添加以下代码:
private ServiceConnection connection = new ServiceConnection( ) {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
PlayBinder binder = (PlayBinder) service;
playService = binder.getPlayService( );
isBound = true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
playService = null;
isBound = false;
}
};
@Override
protected void onStart( ) {
super.onStart( );
Intent intent = new Intent(this, PlayService.class);
bindService(intent, connection, BIND_AUTO_CREATE);
}
@Override
protected void onStop( ) {
super.onStop( );
if(isBound) {
unbindService(connection);
isBound = false;
}
}
最后,你需要在 MusicActivity 中实现 View.OnClickListener 和 SeekBar.OnSeekBarChangeListener 接口,并在相应的方法中调用 PlayService 中的方法来控制 MediaPlayer 的状态。
阅读全文