Hello android开发者
我宣布广播接收者已注册android.media.RINGER_MODE_CHANGED
。这工作正常,它被称为每个振铃模式改变。
真正的问题是我需要知道振铃模式转换。即当振铃模式从正常模式变为静音模式时,我需要执行一些逻辑,反之亦然。如果铃声模式从静音变为振动,则不执行任何操作。
到目前为止,我所做的所有研究都指出了这样一个事实,即你收到RINGER_MDOE_CHANGED,正如它所说,它已被改变。在改变之前你不知道振铃模式是什么。
在API文档中,http://developer.android.com/reference/android/media/AudioManager.html#RINGER_MODE_CHANGED_ACTION声明意图在其附加内容中包含EXTRA_RINGER_MODE。但是,这没有任何帮助。这是当前设置,我可以从AudioManager.getRingerMode()
获得它。
您知道我可以查询最后一个振铃模式吗?希望你们能帮忙。你是我最后的希望。谢谢。
答案 0 :(得分:0)
无法从API获取先前的振铃模式,但您可以使用以下模式实现此目的。
RingerModeMonitorService
),这只是一个int
类型的变量。使用stopSelf()
保留persistInt()
之前的int值。onReceive()
上,发出启动RingerModeMonitorService
的意图。将意图标志设置为振铃模式。RingerModeMonitorService
。这是为了初始化存储在RingerModeMonitorService
。之后,当您的广播接收器收到铃声模式更改并且您想要知道之前的模式时,您可以绑定到RingerModeMonitorService并发送Message
。 RingerModeMonitorService读取持久的振铃模式并使用Message和Handler返回。
听起来很复杂,但这个想法很简单。在每次振铃模式改变时,我记下(持续)振铃模式值以供下次参考。但是,请确保在记下它之前读取该值或将其覆盖,然后每次读取的值是当前的振铃模式而不是前一个。
http://developer.android.com/guide/components/bound-services.html#Messenger 有关服务沟通的更多细节