【问题标题】:How to receive volume changed events for the voice (in-call) stream type?如何接收语音(通话中)流类型的音量更改事件?
【发布时间】:2012-02-16 20:41:48
【问题描述】:

我正在尝试注册一个广播接收器来处理VOLUME_CHANGED_ACTION 事件,仅适用于volume_voice 流类型(根据经验,我认为它是Settings.System.VOLUME_SETTINGS 中的索引0)。

标签EXTRA_VOLUME_STREAM_TYPE 是隐藏的,所以我改用了显式字符串"android.media.EXTRA_VOLUME_STREAM_TYPE"。在 Android 2.3.4 上一切正常(如预期的那样,volume_voice 的值 0),但在 2.3.5 上,这个额外持有的值是 10,它在 Settings.System.VOLUME_SETTINGS 上给出了 ArrayIndexOutOfBoundsException。 此外,我看到volume_voiceSettings.System.VOLUME_SETTINGS 中仍然是索引0

对于volume_voice 流类型,是否有更强大的方法来处理VOLUME_CHANGED_ACTION

编辑或任何其他方式来执行标题要求的操作?

【问题讨论】:

    标签: android


    【解决方案1】:

    我正在尝试注册一个广播接收器来处理 VOLUME_CHANGED_ACTION 事件

    There is no VOLUME_CHANGED_ACTION in the Android SDK.

    标签 EXTRA_VOLUME_STREAM_TYPE 是隐藏的,所以我使用了显式字符串“android.media.EXTRA_VOLUME_STREAM_TYPE”。

    Android SDK 中没有EXTRA_VOLUME_STREAM_TYPE

    是否有更强大的方法来处理 volume_voice 流类型的 VOLUME_CHANGED_ACTION?

    Android SDK 中没有VOLUME_CHANGED_ACTION

    无论您尝试做什么都是无证的、不受支持的,可能无法在任何给定的 Android 版本(过去/现在/未来)上运行,并且可能无法在任何给定的设备上运行(因为制造商可以更改任何不在开发工具包)。根据定义,它永远不会是“健壮的”。

    【讨论】:

      【解决方案2】:

      我的临时(可能是坏的)解决方法是捕获ArrayIndexOutOfBoundsException,并在捕获块中测试流类型的值为Settings.System.VOLUME_SETTINGS.length

      这是我迄今为止最好的。我不知道它是否也可以捕获其他流类型,以及它是否可以在 2.3.3-2.3.5 以外的其他 Android 版本上运行。

      【讨论】:

        猜你喜欢
        • 2018-05-29
        • 1970-01-01
        • 2015-01-27
        • 1970-01-01
        • 2014-06-26
        • 2012-10-20
        • 2015-09-18
        • 2011-08-23
        相关资源
        最近更新 更多