在 Android 操作系统中,我可以创建一个在后台运行并检测扬声器是打开还是关闭的服务吗?
Posted
技术标签:
【中文标题】在 Android 操作系统中,我可以创建一个在后台运行并检测扬声器是打开还是关闭的服务吗?【英文标题】:In Android OS, Can I create a service that runs in the background and detects if the Loud Speaker is ON or OFF? 【发布时间】:2013-02-26 08:40:04 【问题描述】:我需要创建一个在后台运行并检测电话扬声器是否正在使用的服务。我需要监听电话“扬声器事件”(打开或关闭)并根据扬声器的状态执行操作。
【问题讨论】:
你的意思是耳机插不插?? (插入耳机意味着关闭,反之亦然,拔下耳机意味着开启。) 每次使用扬声器(而不是振铃器)时,我都需要我的服务知道。假设正在进行对话并且用户将电话扬声器打开,我需要我的服务对其做出反应。 你可以..我需要知道你所说的Speaker是什么意思??媒体音量或耳机插头或其他一些东西?我想您是在提到用户通话时打开和关闭扬声器的问题吗? 是的,我指的是通话时的扬声器。 【参考方案1】:您可以使用AudioManager.RINGER_MODE_CHANGED
操作注册BroadcastReceiver
,该操作将在声音配置文件更改时触发。在onReceiver()
中,您可以调用AudioManager
的getRingerMode()
方法,该方法将返回RINGER_MODE_NORMAL
、RINGER_MODE_SILENT
或RINGER_MODE_VIBRATE
。希望这会有所帮助。
【讨论】:
无论哪个应用程序正在使用扬声器,AudioManager.RINGER_MODE_CHANGED 会被触发吗? 亲爱的 Egor,我想我被误解了.. 每次使用扬声器(而不是振铃器)时,我都需要我的服务人员知道。假设正在进行对话并且用户将电话扬声器打开,我需要我的服务对其做出反应。(以及关闭状态) @Rami,那么您可能需要编辑您的问题,让其他人更清楚。 我当然同意你的看法,但是你有我的问题的答案吗?以上是关于在 Android 操作系统中,我可以创建一个在后台运行并检测扬声器是打开还是关闭的服务吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 操作系统中,我可以创建一个在后台运行并检测扬声器是打开还是关闭的服务吗?