我编写了一个简单的应用程序,用户可以在其中:
有没有办法从我的代码中禁用相机的快门声? 我目前持有一款带有Android 4.1.2版本的Orange Nivo手机。
我的代码的一部分是:
public void onClick(View v) {
try {
f = createImageFile();
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(cameraIntent, CAMERA_REQUEST);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Bitmap photo = BitmapFactory.decodeFile(f.getAbsolutePath());
Bitmap newphoto = Bitmap.createScaledBitmap(photo, 200, 200, false);
imageView.setImageBitmap(newphoto);
我很感激有关如何实现这种效果的任何建议。 我知道Android商店中的应用程序在没有快门声的情况下拍照,所以我想必须有一种方法可以在不使用手机的情况下执行此操作。
答案 0 :(得分:1)
简单的答案是:你做不到!
原因是在没有快门制作声音的情况下拍照是违法的,这是出于隐私问题。此外,正如您将注意到的,即使出于隐私原因,即使未正确设置相机预览,也无法拍照。 此时您有四个选择:
找到一种破解API的方法
拔出手机并禁用快门声
为相机编写您自己的本机代码......但这可能高度依赖于您正在使用它的设备
使用最简洁的方式,这也是大多数(如果不是全部)静音相机使用的方式
市场上的应用。只需通过onClickListener中的onPreviewFrame回调拦截预览帧,然后将其另存为图像。这里的主要缺点是最大预览分辨率远小于最大图像分辨率,因此您采用这种方式拍摄的照片分辨率相当低。事实上,如果您阅读市场上关于静音相机应用程序的评论,您会看到很多人抱怨图像的分辨率不是那么高。这就是为什么:他们使用我在上面开辟了你的技巧。
总而言之,没有简单的方法可以达到你想要的效果!