设为首页 加入收藏

TOP

Android中MediaButtonReceiver广播监听器的机制分析
2014-11-24 14:41:21 来源: 作者: 【 】 浏览:9
Tags:Android MediaButtonReceiver 广播 监听 机制 分析

顾名思义:它显然是一个广播接收器类(BroadbcastReceiver),那么它就具备了BroadbcastReceiver类的使用方式,但是,因为它需要通过AudioManager对象注册,所以它有着自己的独特之处(否则我也不会单独拿出来分析,- -),后面我们会慢慢的讲解。


点击MEDIA_BUTTON发送的Intent Action 为:


ACTION_MEDIA_BUTTON ="android.intent.action.MEDIA_BUTTON"


Intent 附加值为(Extra)点击MEDIA_BUTTON的按键码 :


//获得KeyEvent对象


KeyEvent keyEvent = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);


//获得Action


String intentAction = intent.getAction() ;



AudioManager对象注册MEDIA_BUTTON广播的方法原型为:



public voidregisterMediaButtonEventReceiver(ComponentNameeventReceiver)


Register a component to be the sole receiverof MEDIA_BUTTON intents


Parameters


eventReceiver : identifier of a BroadcastReceiver that will receive the media button intent. This broadcast receiver


must be declared in the application manifest.



从注释可知以下两点:


1、 在AudioManager对象注册一个MediaoButtonRecevie,使它成为MEDIA_BUTTON的唯一接收器(这很重要,


我们会放在后面讲解) 也就是说只有我能收到,其他的都收不到这个广播了,否则的话大家都收到会照成一定的混乱;


2、 该广播必须在AndroidManifest.xml文件中进行声明,否则就监听不到该MEDIA_BUTTON广播了。



下面我们就简单的写一个MediaButtonReceiver类,并且在AndroidManifest.xml定义



1、 自定义的MediaButtonReceiver 广播类



2、 在AndroidManifest.xml声明我们定义的广播类。




在模拟器上,我们可以手动构造MEDA_BUTTON的广播,并且将它发送出去(后面会介绍)。


如果有真机测试的话,按下MEDIA_BUTTON是可以接受到MEDIA_BUTTON广播的,如果没有接受到,请关闭所有应用


程序,在观察效果。



继续我们的下一步分析:


前面我们说明通过registerMediaButtonEventReceiver(eventReceiver)方法注册时使它成为MEDIA_BUTTON的


唯一 接收器这个唯一是怎么实现的呢? 我们在源码中,一步步追本溯源,相信一定可以找到答案,知道这“唯一“是


怎么来的。



第一步、 为AudioManager注册一个MediaButtonReceiver() ;



MediaButtonReceiver就是我们用来接收MEDIA_BUTTON的广播类,下面为了叙述方便和直观上得体验,我直接使用


ComponentName类来替代真正的MediaoButtonReceiver广播类。



说明 接下来分析的文件路径全部在 frameworks/base/media/java/android/media/ 下


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Andriod中绘(画)图----Canvas的使.. 下一篇Android中内容观察者的使用---- C..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: