2012-04-30 21 views
19

Czy jest jakikolwiek sposób, aby wyciszyć dźwięk migawki aparatu w systemie Android (nie zrootowany telefon)?Jak wyciszyć dźwięk migawki aparatu na telefonie z Androidem

używam tego kodu, aby wyciszyć dźwięk mojego dźwięku podczas robienia zdjęć:

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); 

wyciszyć dźwięk i milczący telefon.

mCamera.takePicture(null, null, photoCallback); 

następnie wykonać zdjęcie

To działa na HTC HERO, HTC Desire, Motorola ME860, MotoA953. Ale kiedy przetestowałem to na Samsung Tab p1000 i Sony Experia R800i, to nie działa. Czy jest jakaś inna praca?

+0

zobaczyć http://wiki.dandascalescu.com/howtos/android#How_do_I_disable_the_camera_shutter_sound.3F – MAC

+3

Wykonaj te dwa linki: http://stackoverflow.com/questions/8906909/how-do-i- zmienić domyślny-migawki-dźwięk-in-android http://stackoverflow.com/questions/9106939/android-camera-takepicture-possible-to-disable-shutter-sound-and-preview-surfa –

+1

Czy spróbuj ustawić wywołanie zwrotne migawki na wartość null? Jak robisz zdjęcie? – styler1972

Odpowiedz

2

Istnieją telefony, które odtwarzają dźwięk migawki na własną rękę. W takim przypadku wydaje się, że nie można wyłączyć dźwięku migawki.

1

Jednym zwariowanym sposobem, jaki mogę sobie wyobrazić, jest uzyskanie pozwolenia na wyciszenie telefonu.

+0

Jak to zrobić? Już wyciszyłem telefon, ale nadal nie działa. – user430926

3

Opublikowana przez ciebie metoda jest w rzeczywistości najlepsza, jaką mogę znaleźć/pomyśleć. Powodem, dla którego nie działa, jest to, że nie powinno. W rzeczywistości w wielu miejscach (w większości w Europie, Japonii, częściach USA itp.) Niedozwolone jest wyłączanie dźwięku migawki. Jest tak, że nie możesz robić zdjęć w miejscach, w których nie powinieneś, a więc nie robić zdjęć ludzi bez ich pozwolenia i tak dalej. To tylko strzał w ciemno, że producent celowo próbował upewnić się, że nie możesz tego zrobić bez względu na wszystko (choć technicznie zawsze jest jakiś sposób), ale kiedy myślisz o tym, logicznie nie ma powodu, dla którego twój kod nie powinien działa dobrze? To proste, podstawowe, ma sens. Tak czy inaczej, istnieje wiele cichych aplikacji na aparat, a kamera + ICS jest rzeczywiście wbudowana w domyślną kamerę ICS, ale ma opcję cichej migawki, więc musi być to możliwe.

+0

Znalazłem [odniesienie do wymaganych dźwięków migawki] (https://www.privacyinternational.org/reports/south-korea/ii-surveillance-policy) w Korei Południowej, ale nic o USA. Czy możesz wskazać mi dokument wyjaśniający status prawny tego w USA? AFAICT [ten projekt ustawy] (http://www.govtrack.us/congress/bills/111/hr414) nigdy nie przeszedł. – cberzan

7

wypróbować ten kod:

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... 

nie używać AudioManager.setStreamMute() metoda, ponieważ nie jest to znany problem Android poniżej wersji 2.3 ..

+0

to nie działa dla mnie z 2.3.3 – wired00

+0

działa z 2.3.3, ale musisz wykonać wywołanie wyciszenia przed wywołaniem takePicture() i wyłączenie wyciszenia w trybie ShutterCallback.onShutter() –

+1

co to jest muteMode? –

5

Ponieważ poziom API 17 (4,2) jest odpowiedni, niezawodny sposób, aby to zrobić, jeśli producent telefonu obsługuje go.

pierwsze, stwierdzić, czy można wyłączyć dźwięk migawki programowo, a następnie wyłączyć go

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

Musisz ustawić identyfikator do odpowiedniego identyfikatora kamery w zaproszeniu do Camera.getCameraInfo lub wyłączyć je wszystkie w Pętla od 0 do Camera.getNumberOfCameras() - 1.

developer documentation zaleca, aby odtworzyć inny dźwięk zamiast dźwięku migawki, ale nie jesteś do tego zobowiązany.

Powiązane problemy