2012-01-18 67 views
0

有什么方法可以取代Android中的相机快门声音?我想更换快门声音,相机拍摄照片时发出的声音,以及其他代码。如何更改Android中的默认快门音?

我用这个代码正确拍照,右后unsilencing前沉默电话:

AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
mgr.setStreamMute(AudioManager.STREAM_SYSTEM, true); 

我宁愿用另一个.mp3.ogg,可以动态地设置为更换声卡用户。

我明白,如果你有一个根深蒂固的手机,你可以替换文件。这不是我的应用程序的解决方案。

回答

2

声音从cameraservice播放到任何设备的本地层(libcameraservice.so)。因此,在演奏中的声音的任何修改都必须在这里完成。

在事后:

的声音播放部在上述库是从设备相机的快门回调的结果。这会检查音量索引,因此在将设备设置为静音时不会播放任何声音。当事件后来转移到应用层时,实现Camera.ShutterCallback(参考http://developer.android.com/reference/android/hardware/Camera.html#takePicture(android.hardware.Camera.ShutterCallback,android.hardware.Camera.PictureCallback,android.hardware.Camera.PictureCallback,android.hardware.Camera.PictureCallback)被调用,因此在这里可以取消音频管理器的静音并使用Android音频播放类(如音轨)播放音频文件。

+0

所以解决方法是将设备设置为在ShutterCallback上静音,并在其他回调功能中取消静音,然后播放其他声音? – user430926 2012-01-19 02:56:31

+1

将设备设置为静音,然后调用takePicture调用并在OnShutterCallback中取消静音。这会使内部声音静音,但是您可以在取消静音后重新启动。 – Deepak 2012-01-19 05:09:36

+0

我在我的应用程序之前调用camera.takePicture(shutterCallback,rawCallback,jpegCallback);静音设备AudioManager.STREAM_SYSTEM。并在快门回调方法中取消静音并从原始文件夹播放我的声音文件,但有时播放系统文件以及我的文件。如何处理这个? – Vikram 2012-01-19 06:27:16

相关问题