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

时间:2012-12-11 05:28:52

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

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

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

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

由于

3 个答案:

答案 0 :(得分: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毫米有线耳机,即使用户已将他/她的手机置于静音模式。

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

好吧,因为我还不熟悉编程,我会在谷歌搜索哪些文件发出相机声音,我会把你的应用程序放到哪里,它会重命名那些具有不同扩展名的文件,所以声音不会去关闭并让他们重命名回原始文件。或者我会看看如何通过更改相机值使相机保持静音。我知道在我的三星Galaxy SIII上我必须更改相机文件名。 (冲刺运营商)