音乐播放器-MainFragment分析2

最近一直被签工作整的头晕脑胀,也许当你要毕业的时候也会有这种感慨,在此奉劝哪些有弟弟妹妹将来要报志愿的同学,千万要告诉弟弟妹妹们别去那些工作机会少的城市,到时候你要么老老实实的参加校园招聘(没有好的选择你也只能认命),要么就是奔波劳碌的到其他城市参加各种招聘,起码如果我有弟弟妹妹就一定会告诉他们不要 来偏远地区。最近聊天的时候听一个哥们说,他们校园招聘很少(一个只在历史上留过名的城市),原来找工作都这么难啊,还好,我们这只是好单位很少。

MainFragment里面有好多类,第一个首先要说的就是ServiceManager

通过startService的方法启动service很简单只需要传入一个intent,跟startActivity差不多,当然也可以通过隐式意图来启动,传入一个Action

startService1:Intent intent=new Intent(context,TargetClass);

                        startService(intent);

startService2:Intent intent=new Intent(ACTION);//需要在manifest里面设置filter,在filter里面填写该action

                        startService(intent);

android5.0(Lollipop棒棒糖)以后如果是在其他应用里面startService必须通过component  指定packagename,这里是在本应用里面
该例子中开启服务用的是bindService
Intent intent = new Intent("com.ldw.music.service.MediaService");
mContext.bindService(intent, mConn, Context.BIND_AUTO_CREATE);

mConn是ServiceConnection对象
通过
mConn = new ServiceConnection() {

			@Override
			public void onServiceDisconnected(ComponentName name) {
			}

			@Override
			public void onServiceConnected(ComponentName name, IBinder service) {
				mService = IMediaService.Stub.asInterface(service);
				if (mService != null) {
					mIOnServiceConnectComplete
							.onServiceConnectComplete(mService);
				}
			}
		};
构造。在构造该方法的时候同时初始化了一个该manager的核心IMediaService 即mService
剩下的任务就是用该mService控制音乐的播放暂停切换快进等,
这里需要注意IMediaService是一个接口,mService通过在构造ServiceConnection的时候传入IBinder的时候通过
	mService = IMediaService.Stub.asInterface(service);
构造的,启动的服务是隐式服务MediaService,传入的Action在manifest里面注册过了
<service android:name=".service.MediaService" >
            <intent-filter>
                <action android:name="com.ldw.music.service.MediaService" />
            </intent-filter>
        </service>

于是我们找到了该service,就是“.service.MediaService"
该Service由于是bind启动所以有onBind方法的返回值不为null
public IBinder onBind(Intent intent) {
		return mBinder;
	}
该mBinder为:
private final IBinder mBinder = new ServerStub();

ServerStub为继承该IMideaService.Stub的局部类:
private class ServerStub extends IMediaService.Stub {

		@Override
		public boolean pause() throws RemoteException {
//			MediaService.this.stopForeground(true);
			return mMc.pause();
		}

.
..
...
....
这里需要注意的是service是通过一个MusicControl实现的
比如上面的mMc.pause()就是例子,具体的就不贴了,关于音乐是如何播放的,任何一本android入门书籍里面都有(并且也千篇一律)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值