2013-06-24 44 views
0

我寫了一個簡單的應用程序中,用戶可以:禁用快門聲

  • ,按下按鈕,打開攝像頭應用
  • 拍照與攝像頭應用

有什麼辦法可以從我的代碼中禁用相機的快門聲音嗎? 我目前手持Android 4.1.2版本的Orange Nivo手機。

的我的代碼secion是:

  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商店中有應用程序可以在沒有快門聲的情況下拍攝照片,所以我想必須有一種方法可以在不使用電話的情況下進行此操作。

回答

1

簡單的答案是:你不能!

原因是在沒有快門發出聲音的情況下拍攝照片是違法的,這是出於隱私問題。此外,正如您會注意到的,即使您的相機預覽設置不正確,仍然出於隱私原因,您無法拍攝照片。 此時,您有四個選項:

  • 找到一個方法來破解API

  • 根的電話,並禁用快門聲

  • 寫自己的本機代碼的相機。 ..但這可能高度依賴於您正在使用的設備

  • 使用最簡單的方式也是大多數(如果不是全部的話)無聲攝像機使用的方式

在市場上的應用。只需通過onClickListener中的onPreviewFrame回調截取預覽幀,然後將其保存爲圖像。這裏的主要缺點是最大預覽分辨率遠遠小於最大圖片分辨率,因此您以這種方式拍攝的照片將具有相當低的分辨率。事實上,如果您閱讀市場上無聲相機應用的評論,您會看到很多人抱怨圖像的分辨率不高。這就是爲什麼:他們使用我在上面對你進行分析的技巧。

總之,沒有簡單的方法來實現你想要的!