我正在使用课堂上的takePicture()
方法Camera
。它拍了照片,但它没有声音!我的客户想要 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) {
}
这将在单击捕获按钮时播放声音。
谢谢 :)
如果你想让相机播放默认的安卓声音,你必须给它一个空的快门回调。
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
使用 null调用,ShutterCallback
相机将不会播放任何声音。
Shrikant 的答案是有效的,但可能会出现意想不到的行为,因为mgr.playSoundEffect();
它不打算AudioManager.FLAG_PLAY_SOUND
像文档所述的那样被调用。