【问题标题】:Playing audio simultaneously with camera shutter sound与相机快门声音同时播放音频
【发布时间】:2012-12-11 21:42:44
【问题描述】:

如何在相机快门关闭的同时播放声音?

在我的应用程序中,我有一个嵌入的相机预览。活动开始 5 秒后自动拍摄 3 张照片。在此期间,应用程序通过蓝牙接收一系列值。每次值大于预设阈值时,应用程序都会播放音调,这是使用 MediaPlayer 完成的。

问题在于,当相机关闭时,快门声似乎接管了所有音频,并且正在播放的音调停止并仅在 3 次快门单击后恢复。我不想让相机快门静音,那么有没有办法让我通过点击快门来播放音调?这一切都发生在一个活动中。

谢谢

【问题讨论】:

    标签: android android-camera android-mediaplayer android-audiomanager


    【解决方案1】:

    一种可能的解决方案是为您的音调使用隐藏的ENFORCED_AUDIBLE 流类型。这是相机快门声音最有可能使用的流类型,因此除非快门声音已静音,否则它不会被静音。

    请注意,这种流类型直到 ICS 才引入(或者它可能是 GB/HC,我不能肯定地说出来),所以它不会与每个版本的 Android 兼容存在。此流类型标识符的整数值为 7,但如果您想检查是否存在/以编程方式获取其值,您可以使用 AudioSystem 类上的反射来实现。

    这是一个如何做到这一点的示例:

    public static boolean mHasEnforcedStream = true;
    public static int STREAM_SYSTEM_ENFORCED = 0;
    
    ...
    
    static
    {        
        try
        {
            Class asClass = Class.forName("android.media.AudioSystem");
            Field sseField = asClass.getDeclaredField("STREAM_SYSTEM_ENFORCED");
            STREAM_SYSTEM_ENFORCED = sseField.getInt(null);
        }
        catch (Exception e)
        {
            mHasEnforcedStream = false;
        }
    }
    


    请记住,如果您使用这种流类型,您将始终在扬声器中获得音调,即使用户有例如连接 3.5 毫米有线耳机,即使用户已将他/她的手机置于静音模式。

    【讨论】:

    • 我在标准 Android 文档中找不到有关 ENFORCED_AUDIO 的信息。看起来 AudioSystem 不再是一个开放的类了。
    • 这是一个隐藏的流类型,这就是为什么我建议使用反射来检查它的存在。请参阅上面的代码示例以了解如何完成此操作。
    • 谢谢迈克尔!我现在开始工作了。但看起来强制它会将音量设置为最大,并且音调会全力以赴。我无法拒绝它,我怀疑它忽略了这一点。
    • 是的,它将始终以最大音量播放,因为此流主要用于在有法律要求的市场中用于相机快门声音,即人们不应该能够静音/减弱快门声音和在别人不知情的情况下到处乱拍。
    【解决方案2】:

    我认为这是您应该需要的。这应该包含您需要的内容。第一个链接可能比第二个链接更有用,因为您还想拥有其他声音,尽管您可以禁用特定于相机穿梭声音的音频通道。

    【讨论】:

    • 我不想播放另一个声音来代替快门声音。我希望它在音调上播放。音调可以随时开始播放。如果在相机关闭之前声音开始播放,那么我想在相机快门点击它时听到仍在播放的声音。
    【解决方案3】:

    好吧,因为我还是编程新手,所以我会在谷歌上搜索哪些文件会发出相机声音,然后我会将你的应用程序放到它会用不同的扩展名重命名这些文件的位置,这样声音就不会消失关闭并让它们重命名回原始文件。或者我会研究如何通过更改相机值使相机静音。我知道在我的三星 Galaxy SIII 上我必须更改相机文件名。 (冲刺载体)

    【讨论】:

      猜你喜欢
      • 2020-01-20
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      相关资源
      最近更新 更多