【发布时间】:2012-06-05 04:50:52
【问题描述】:
我正在使用 Camera 类中的 takePicture() 方法。它拍了照片,但它没有声音!我的客户想要 Android 发出的默认点击声音。
我看过其他线程,似乎问题在于禁用声音,而不是相反!为什么我的应用没有发出点击声??
【问题讨论】:
我正在使用 Camera 类中的 takePicture() 方法。它拍了照片,但它没有声音!我的客户想要 Android 发出的默认点击声音。
我看过其他线程,似乎问题在于禁用声音,而不是相反!为什么我的应用没有发出点击声??
【问题讨论】:
我也有这个问题。我通过使用以下代码解决了它: 下面是用来调用takePicture的:
clickButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
mCamera.takePicture(shutterCallback, null, onPicTaken);
}
});
现在ShutterCallBack:
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) {
}
这将在单击捕获按钮时播放声音。
谢谢你:)
【讨论】:
如果你想让相机播放默认的android声音,你必须给它一个empty快门回调。
ShutterCallback shutterCallback = new ShutterCallback() {
@Override
public void onShutter() {
/* Empty Callbacks play a sound! */
}
};
mCamera.takePicture(shutterCallback , null, onPicTaken);
在 HTC One SV 和三星 Galaxy XCover 2 上测试。
你给回调一个空的快门回调,然后它播放默认声音。
如果您使用空的ShutterCallback 调用takePicture,相机将不会播放任何声音。
Shrikant 的答案有效,但可能会出现意外行为,因为 mgr.playSoundEffect(); 不打算与 AudioManager.FLAG_PLAY_SOUND 一起调用,因为 the doc 状态。
【讨论】: