我编写了一些代码,使用camera2 API播放Android的快门声。代码是:

MediaActionSound mediaActionSound = new MediaActionSound();
mediaActionSound.play(MediaActionSound.SHUTTER_CLICK);


我已经在十多种设备上进行了测试。问题是:


实际播放的声音与内置相机不同。
实际上,不同的设备播放不同的声音。 (似乎每个设备制造商都安装了不同的声音。)


有关此文件的一些信息:
/system/media/audio/ui/camera_click.ogg
...但是我不确定这是否是使用的声音文件。如果是这样,为什么它们听起来都与内置摄像头不同而又不同。

我正在寻找的解决方案:

要么:

播放与内置相机完全相同的声音。我该怎么做呢?

要么

将自定义声音文件安装到我的应用中,然后在所有设备上播放相同的声音。 (但是,由于需要找到自定义声音文件,因此首选此方法。)

请指教。

最佳答案

如果默认的相机应用程序具有自己的快门声音,那么您不太可能使用它-它可能被烘焙到应用程序APK中,或者对非系统应用程序不可见的OEM设备声音集进行了一些自定义添加。

使用MediaActionSound符合某些国家/地区对照相机快门声音不可静音的期望的主要原因。即使在此类国家/地区使用完全静音的设备,MediaActionSound仍将播放快门声音,而无需开发人员担心。

否则,如果不严格执行快门声音,则可以在快门按下时播放任何声音,或者在不强制执行快门声音静音时可以使用自己的声音(可以通过canDisableShutterSound检查) ,然后在不应静音快门声音的地方退回到MediaActionSound。

10-04 11:39