21

Android(root化された電話ではない)でカメラのシャッター音をミュートする方法はありますか?

このコードを使用して、写真を撮るときにオーディオサウンドをミュートします。

  AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    int streamType = AudioManager.STREAM_SYSTEM;
    mgr.setStreamSolo(streamType, true);
    mgr.setRingerMode(AudioManager.RINGER_MODE_SILENT);
    mgr.setStreamMute(streamType, true);

音を消して電話を静かにします。

mCamera.takePicture(null, null, photoCallback); 

その後、写真を撮ります

に取り組んでいHTC HERO, HTC Desire, Motorola ME860, MotoA953ます。しかし、私がそれをテストしたときSamsung Tab p1000Sony Experia R800iそれは機能していません。他に回避策はありますか?

4

5 に答える 5

8

このコードを試してください:

AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(TextUtils.equals(muteMode, "mute")){
    manager.setStreamVolume(AudioManager.STREAM_SYSTEM, 0 , AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
}else{
    manager.setStreamVolume(AudioManager.STREAM_SYSTEM, manager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM) , AudioManager.FLAG_ALLOW_RINGER_MODES);
}
//here continue to take picture...

バージョン 2.3 未満の Android には既知の問題があるため、AudioManager.setStreamMute() メソッドは使用しないでください。

于 2012-05-23T17:10:21.913 に答える
7

APIレベル17(4.2)以降、電話メーカーがサポートしている場合、これを行うための適切で信頼できる方法があります。

まず、プログラムでシャッター音を無効にできるかどうかを検出してから、無効にします

Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(id, info);
if (info.canDisableShutterSound) {
    mCamera.enableShutterSound(false)
}

の呼び出しでidを適切なカメラIDに設定するCamera.getCameraInfoか、0から-1までのループでそれらすべてを無効にする必要がありますCamera.getNumberOfCameras()

開発者向けドキュメントでは、シャッター音の代わりに別の音を再生することを推奨していますが、義務ではありません。

于 2013-01-03T14:42:57.157 に答える
4

あなたがすでに投稿した方法は、実際に私が見つけたり考えたりできる最高の方法です。それが機能しない理由は、それが機能するはずがないからです。実際、多くの場所(ヨーロッパのほとんど、日本、米国の一部など)では、シャッター音を無効にすることは違法です。これは、本来なら想定外の場所で写真を撮ることができないようにするため、また、許可なく人の写真を撮らないようにするためです。製造業者が意図的にそれを実行できないようにしようとしたのは暗闇の中でのショットです(技術的には常に方法がありますが)が、それについて考えると、論理的にはコードがすべきでない理由はありません正しく動作しますか?シンプルで基本的で、理にかなっています。いずれかの方法、

于 2012-05-16T14:50:26.637 に答える
3

自分でシャッター音を鳴らす携帯電話があります。この場合、シャッター音を無効にすることはできないようです。

于 2012-05-13T21:32:31.343 に答える
2

私が考えることができる1つのクレイジーな方法は、電話をミュートする許可を取得することです。

于 2012-05-14T21:12:39.120 に答える