1. Android四大组件之Service
相信大家对于身为四大组件之一的Service一定很熟悉。Service可以运行在后台来处理一些耗时操作,也可以用来维持一些需要长期运行的任务,甚至可以在用户退出程序是仍然运行在后台中。作为一个初学者,我可以联想到很多关于Service的应用场景。比如:闹钟、音乐播放器等等。
今天我就来给大家展示一个关于音乐播放器退出时后台播放的小Demo。
2.Android控件SeekBar
SeekBar相当与ProgressBar的一个扩展,SeekBar的主要应用场景是在多媒体播放器当中,用来控制播放的进度;也用作一些范围型参数的选择器,比如我们常见的音量调节和屏幕亮度调节。
3.Demo的具体实现
1.创建一个Service
首先进入到我们的工程,创建一个新的package为Service,再到其中创建一个MusicBindService类。
为了实现音乐播放的一些功能我们需要在这个类中新建一个MusicController方法,继承Binder类实现对内部组件的绑定。
下面就是MusicBindService的具体实现。
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import com.jinni.servicedemo.R;
public class MusicBindService extends Service {
private MediaPlayer mPlayer;
public MusicBindService() {
}
/*
* 绑定服务的实现流程:
* 1.服务 onCreate, onBind, onDestroy 方法
* 2.onBind 方法需要返回一个 IBinder 对象
* 3.如果 Activity 绑定,Activity 就可以取到 IBinder 对象,可以直接调用对象的方法
*/
// 相同应用内部不同组件绑定,可以使用内部类以及Binder对象来返回。
public class MusicController extends Binder {
public void play() {
mPlayer.start();//开启音乐
}
public void pause() {
mPlayer.pause();//暂停音乐
}
public long getMusicDuration() {
return mPlayer.getDuration();//获取文件的总长度
}
public long getPosition() {
return mPlayer.getCurrentPosition();//获取当前播放进度
}
public void setPosition (int position) {
mPlayer.seekTo(position);//重新设定播放进度
}
}
/**
* 当绑定服务的时候,自动回调这个方法
* 返回的对象可以直接操作Service内部的内容
* @param intent
* @return
*/
@Override
public IBinder onBind(Intent intent) {
return new MusicController();
}
@Override
public void onCreate() {
super.onCreate();
mPlayer =