Android—在Activity中绑定service播放音乐
来源:互联网 发布:路面弯沉计算软件 编辑:程序博客网 时间:2024/05/29 09:32
摘要:本文用来介绍在Activity中绑定一个服务(service),在服务中播放音乐的方法。相信看完之后会对绑定service有个直观的认识和掌握基本用法,先看代码,再看解释。
public class MusicService extends Service { private MediaPlayer mediaPlayer = new MediaPlayer(); private final IBinder iBinder = new MusicBinder(); public MusicService() { } /** * MusicBinder 提供了getService方法来获得当前MusicService的实例 */ public class MusicBinder extends Binder{ public MusicService getService(){ return MusicService.this; } } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. return iBinder ; }
首先,自定义一个MusicService并继承Service类,然后在定义一个MusicBinder对象,这个对象是内部类并继承Binder类实现的,在类实现里面包含一个方法,此方法是用来返回当前这个Service对象用的,然后在重写的onBind方法中,返回这个MusicBinder对象。至此,MusicService部分就完成了,接下来看Activity中的实现。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(getActivity(),MusicService.class); getActivity().bindService(intent,connection,Context.BIND_AUTO_CREATE);//绑定播放音乐的服务 }
在Activity中onCreate的方法中创建一个intent对象,表示要绑定到哪个服务中去,然后调用 bindService方法绑定MusicService服务(因为我这是在fragment中写的播放器,所以要用getActivity()方法来获得Activity,不然的话直接用bindService就行了),bindService的第一个参数是Intent,第二个参数是表示一个服务连接对象,第四个参数是表示自动创建服务,如果服务不存在就创建服务,否则不创建。
private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { MusicService.MusicBinder binder = (MusicService.MusicBinder) service; musicService = binder.getService(); playMusic(audioList.get(currentItem)); bound=true; } @Override public void onServiceDisconnected(ComponentName name) { bound = false; } };
定义第二个参数的ServiceConnect对象,在里面重写它的方法onServiceConnected(),把参数IBinder转换成我们自定义的MusicBinder对象,再用MusicBinder中的getService获得MusicService服务,并把它赋值给声明好的MusicService对象(musicService),这样就建立起了程序和服务之间的联系。
/** * 播放音乐的方法 * @param currentPath 音乐文件路径 */ public void playMusic(String currentPath){ try { if(mediaPlayer.isPlaying()){//如果当前正在播放音乐,则先停止 mediaPlayer.stop(); } mediaPlayer.reset();//重置播放器z状态 mediaPlayer.setDataSource(currentPath); mediaPlayer.prepare(); mediaPlayer.start(); // updateSeekBar(); } catch (IOException e) { e.printStackTrace(); } }
然后在MusicService中写好播放音乐的playMusic()方法。
musicService.playMusic(currentPath);
在Activity中需要服务播放音乐时,就直接调用playMusic方法就行了,接下来介绍服务的解除绑定。
@Override public void onDestroy() { if(bound){ getActivity().unbindService(connection); bound = false; } super.onDestroy(); }
在Activity中的onDestroy()方法中,判断是不是绑定了服务,判断是否绑定就设置一个全局的布尔类型bound就行了。如果绑定了就调用unbindService()方法解除绑定,解除绑定后根据绑定service的生命周期,它会被系统自动销毁。
至此,一个绑定service的方法法就完成了,本人菜B一枚,不正之处,还望指出,不甚感激!
0 0
- Android—在Activity中绑定service播放音乐
- android在service中播放音乐
- 在Service中播放音乐
- android 音乐播放 启动方式 (1)利用内部类绑定service传送数据,只适用于单activity
- android 音乐播放service
- Android Service播放音乐
- 音乐播放器中activity 与service 交互
- Android音乐播放器—Service
- Android中通过BroadcastReceiver发送消息,在Service中播放音乐。
- Android四大组件之Service详解(二)——Service在音乐播放器中的使用
- android 之 Service 播放音乐
- android-service音乐播放器
- android,service实例,播放音乐
- 通过Service播放音乐【Android】
- Android Service 音乐播放器
- android Service后台播放音乐
- Android使用Service播放音乐
- Android在Service里播放与控制音乐
- 以json格式的解析FTP上的文件,10秒超时
- Android MediaPlayer播放prepareAsync called in state 8解决办法
- Linux环境安装google v8
- 网上一些关于renderMonkey的教程:
- android初学之四大组件
- Android—在Activity中绑定service播放音乐
- url
- git 提高技术
- jchardet
- Maven简介和使用说明
- ksoap调用webservice
- UIView
- cmake编译debug版本
- linux c 一些常用库函数以及部分原型