如何在相机快门关闭的同时播放声音?
在我的应用程序中,我有一个嵌入式相机预览。活动开始5秒后,它会自动拍摄3张照片。在此期间,应用程序通过蓝牙接收一系列值。每次值大于预设阈值时,应用程序都会播放一个音调,这是使用MediaPlayer完成的。
问题是,当相机关闭时,快门滴答声似乎占据了所有音频,正在播放的音调停止,只有在快门滴答声3次后才会恢复。我不想让相机快门静音,所以有没有办法让快门快门发出声音呢?这一切都发生在一个活动中。
谢谢
发布于 2012-12-11 14:51:30
一种可能的解决方案是对音调使用隐藏的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 if有线耳机,或者即使用户已将电话设置为静音模式,您也始终会在扬声器中听到您的音调。
发布于 2012-12-11 14:42:27
我认为这是您应该需要的。这应该包含您需要的内容。第一个链接可能比第二个更有用,因为你想仍然有其他的声音,尽管你可以禁用特定于相机穿梭声音的音频通道。
发布于 2012-12-11 14:29:11
好吧,因为我对编程还很陌生,我会在谷歌上搜索哪些文件会发出摄像头的声音,我会把你的应用程序放在哪里,它会用不同的扩展名来重命名这些文件,这样声音就不会响起,让它们重命名回原始文件。或者我会看看如何通过改变摄像头的值来使摄像头保持静音。我知道在我的三星Galaxy SIII上,我必须更改相机文件名。(sprint运营商)
https://stackoverflow.com/questions/13814179
复制相似问题