0

我编写了一个简单的应用程序,用户可以在其中:

  • 按下按钮打开相机应用程序
  • 使用相机应用程序拍照

有什么方法可以从我的代码中禁用相机的快门声音?我目前持有一台装有 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商店中有应用程序可以在没有快门声的情况下拍照,所以我想必须有一种方法可以在不root手机的情况下做到这一点。

4

1 回答 1

1

简单的答案是:你不能!

原因是在没有快门声音的情况下拍照是违法的,这是出于隐私考虑。此外,您会注意到,即使您的相机预览设置不正确,您也无法拍照,仍然出于隐私原因。此时,您有四个选择:

  • 找到破解 API 的方法

  • Root手机并禁用快门声音

  • 为相机编写自己的本机代码......但这可能高度依赖于您使用它的设备

  • 使用最简单的方式,这也是大多数(如果不是全部)静音相机使用的方式

市场上的应用。只需通过 onClickListener 的 onPreviewFrame 回调拦截预览帧,然后将其保存为图像。这里的主要缺点是最大预览分辨率远低于最大图片分辨率,因此您将以这种方式拍摄的照片的分辨率相当低。事实上,如果您阅读市场上关于静音相机应用程序的评论,您会看到很多人抱怨图像的分辨率不那么高。这就是原因:他们使用了我在上面解释过的技巧。

总而言之,没有简单的方法可以实现您想要的!

于 2013-07-13T13:52:18.273 回答