Java camera2 API快门声音不同于内置摄像头';在不同的设备之间不一致

Java camera2 API快门声音不同于内置摄像头';在不同的设备之间不一致,java,android,android-camera,android-sound,Java,Android,Android Camera,Android Sound,我编写了一些代码,使用Camera2API为Android播放shuttersound。代码是: MediaActionSound mediaActionSound = new MediaActionSound(); mediaActionSound.play(MediaActionSound.SHUTTER_CLICK); 我已经在十多台设备上进行了测试。问题是: 实际播放的声音与内置摄像头不同 不同的设备实际上播放不同的声音。(似乎设备制造商各自安装了不同的声音罚款。) 有一些关于此文件的

我编写了一些代码,使用Camera2API为Android播放shuttersound。代码是:

MediaActionSound mediaActionSound = new MediaActionSound();
mediaActionSound.play(MediaActionSound.SHUTTER_CLICK);
我已经在十多台设备上进行了测试。问题是:

  • 实际播放的声音与内置摄像头不同
  • 不同的设备实际上播放不同的声音。(似乎设备制造商各自安装了不同的声音罚款。)
  • 有一些关于此文件的信息: /系统/媒体/音频/ui/camera\u click.ogg ... 但我不确定这是否是使用的声音文件。如果是这样的话,为什么它们听起来都不一样,与内置摄像头不一样呢

    我寻求的解决方案是:

    要么:

    播放与内置摄像头完全相同的声音。我该怎么做

    将自定义声音文件安装到我的应用程序中,并在所有设备上播放相同的声音。(但是,这种方法是第二个首选方法,因为我们必须找到一个自定义声音文件。)

    请告知。

    这取决于你的决定。 如果你想打造应用的品牌,只需使用你喜欢的品牌,或者用用户熟悉的声音来对待用户。你不必把事情复杂化,这取决于你的决定。
    如果你想打造应用的品牌,只需使用你喜欢的品牌,或者用用户熟悉的声音来对待用户。如果默认的相机应用程序有自己的快门声音,您不必将其复杂化,您不太可能获得它-它可能会被烘焙到应用程序APK中,或者在OEM的一组设备声音中添加一些非系统应用程序看不到的自定义声音

    使用MediaActionSound的主要原因是为了符合某些国家的期望,即相机快门声音不可静音。在这些国家,即使在完全静音的设备上,MediaActionSound仍将播放快门声音,开发者无需担心


    否则,您可以在按下快门时播放您想要的任何声音,如果遵守快门声音强制并不重要-或者您可以在未强制执行快门声音静音时使用自己的声音(您可以通过检查),在快门声音不应该被静音的地方,回到MediaActionSound。

    如果默认的相机应用程序有自己的快门声音,你就不太可能找到它——它可能被烘焙到应用程序APK中,或者在OEM的一组设备声音中添加一些非系统应用程序看不到的自定义声音

    使用MediaActionSound的主要原因是为了符合某些国家的期望,即相机快门声音不可静音。在这些国家,即使在完全静音的设备上,MediaActionSound仍将播放快门声音,开发者无需担心


    否则,您可以在按下快门时播放您想要的任何声音,如果遵守快门声音强制并不重要-或者您可以在未强制执行快门声音静音时使用自己的声音(您可以通过检查),在快门声音不应静音的地方,请回到MediaActionSound。

    Camera2 API中没有canDisableShutterSound方法,仅在不推荐使用的Camera1 API上可用。那么,我们如何在不参考旧API的情况下测试快门声音的执行呢?只需使用不推荐的API进行测试;是的,需要将其移动到未弃用的API,但可以通过Camera1正常工作。Camera2 API中没有canDisableShutterSound方法,仅在弃用的Camera1 API上可用。那么,我们如何在不参考旧API的情况下测试快门声音的执行呢?只需使用不推荐的API进行测试;是的,这需要移动到一个非弃用的API,但通过Camera1可以正常工作。