我正在使用takePicture()
课程中的Camera
方法。拍照,但它没有声音!我的客户想要Android制作的默认点击声。
我见过其他线程,似乎问题在于禁用声音,而不是相反!为什么我的应用程序没有发出咔嗒声?
答案 0 :(得分:51)
我也有这个问题。我通过使用以下代码解决了它: 以下内容用于调用takePicture:
clickButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
mCamera.takePicture(shutterCallback, null, onPicTaken);
}
});
现在shutteerCallBack:
private final ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
AudioManager mgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mgr.playSoundEffect(AudioManager.FLAG_PLAY_SOUND);
}
};
现在从相机拍照后做任何事情:
/**
* This will be called after taking picture from camera.
*/
final transient private PictureCallback onPicTaken = new PictureCallback() {
/**
* After taking picture, onPictureTaken() will be called where image
* will be saved.
*
*/
@Override
public void onPictureTaken(final byte[] data, final Camera camera) {
}
这将在点击捕获按钮时播放声音。
谢谢:)
答案 1 :(得分:17)
如果你想让相机播放默认的Android声音,你必须给它一个空快门回调。
ShutterCallback shutterCallback = new ShutterCallback() {
@Override
public void onShutter() {
/* Empty Callbacks play a sound! */
}
};
mCamera.takePicture(shutterCallback , null, onPicTaken);
在HTC One SV和三星Galaxy XCover 2上测试。
你给回调一个空快门回叫,然后它播放默认声音。
如果您使用空takePicture
致电ShutterCallback
,相机将无法播放任何声音。
Shrikant的答案正在发挥作用,但可能会出现意外情况,因为mgr.playSoundEffect();
并非打算使用AudioManager.FLAG_PLAY_SOUND
作为the doc州进行调用。