与相机快门声音同时播放音频



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

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

问题是,当相机关闭时,快门咔嗒声似乎接管了所有音频,并且正在播放的音调停止,只有在 3 次快门点击后才会恢复。我不想使相机快门静音,那么有没有办法让快门点击时播放音调?这一切都发生在一项活动中。

谢谢

一种可能的解决方案是为您的音调使用隐藏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 毫米有线耳机,即使用户已将他/她的手机置于静音模式,您也将始终在扬声器中听到您的音调。

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

  • 有没有办法在安卓中替换或静音相机快门声音?
  • 在安卓中以编程方式停止相机点击声音

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

最新更新