Wie zum absperren der sound MediaRecorder spielt, wenn der Status ändert
Meinem Android-Anwendung verwendet MediaRecorder auf ein SurfaceHolder zeigen eine live-Vorschau von dem, was die Kamera einfängt. Jedes mal, wenn der Benutzer drückt die REC-Taste auf der app, die app startet, aufnehmen.
Jedes mal, wenn der Zustand der MediaRecorder Schalter an/aus 'start', Android automatisch (?) löst einen Signalton aus. Dieses PIEPEN klingt anders, von Handy zu Handy, die lässt mich denken, dass dieses PIEPEN ist grundsätzlich angebracht, um den Zustand zu ändern, der MediaRecorder.
Der Signalton wird nicht gespielt, wenn die Lautstärke des Telefons ist stumm geschaltet.
Ich google es und Tat etwas Forschung, aber ich konnte nicht einen Weg finden, um diesen Signalton aus. Ist es möglich? Wenn ja, wie?
Die app wurde getestet auf: Nexus One 2.3.4, Desire HD 2.3.3
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen
Mute all sounds.
MediaRecorder
mit einer späten version von android?Ok akzeptiert die Antwort nicht für mich arbeiten. Auf einem Galaxy Nexus Läuft 4.2.1 (Jelly Bean), wenn die Aufnahme über MediaRecorder ich brauchte, um
AudioManager.STREAM_RING
weilAudiManager.STREAM_SYSTEM
hat nicht funktioniert. Es würde immer spielen "chime" - sound am Anfang jeder Aufnahme.Hier ist meine Lösung mit "STREAM_RING" und andere.
Als auch die Dokumentation Staaten sicher sein zu re-aktivieren von audio in der
onPause()
Methode.Ich hoffe, das jemand hilft, reißen sich die Haare, über dieses problem. Dies deaktiviert alle sound-streams. Sie können durch zu gehen und herauszufinden, welche diejenigen, die Sie speziell brauchen. Ich fand, dass die verschiedenen android-Versionen verwenden unterschiedliche streams für das Glockenspiel, wenn mediarecorder läuft. ie, STREAM_RING funktioniert seit android 4.2.1 aber bei ICS funktioniert es nicht.
Edit: Wie mein Kommentar unten erwähnt, kann ich nicht den sound deaktiviert für Android OS 2.3.3 auf einem Samsung Galaxy S1. Jemand Glück mit diesem?
Darrenp die Lösung hilft, um aufzuräumen code aber in einem neuen update auf mein Handy (galaxy nexus android 4.3), um die Lautstärke /Aufnahme-beep wieder aufgenommen! Die Lösung von user1944526 hilft definitiv. In einer Anstrengung, um es einfacher zu verstehen...
Etwas wie ,
Für die Vollständigkeit jeder dieser Funktionen, die Sie auch nennen könnte, entweder darrenp die Lösung in einer Funktion oder alle der oben
STREAM_
Linien. aber für mich jetzt, diese kombinierten arbeiten. Hoffe das hilft jemanden...Folgenden auf die von @wired00 die Antwort, der code kann vereinfacht wie folgt:
Dies funktioniert gut für jetzt, aber wenn mehr streams werden in der Zukunft eingeführt werden, ist diese Methode möglicherweise aktualisiert werden müssen. Ein robuster Ansatz (wenn auch vielleicht übertrieben) ist die reflektion verwenden, um alle die STREAM_* statische Felder:
Interessanterweise scheint es einige Bäche, die nicht dokumentiert sind, nämlich STREAM_BLUETOOTH_SCO, STREAM_SYSTEM_ENFORCED und STREAM_TTS. Ich vermute/hoffe, es gibt keinen Schaden in der muting-diese auch!
setMuteAll()
. Ich habe keine 2.3.3 Geräte leider.Ich hatte gerade dieses problem auf einem Lenovo K900 mit Android 4.2.1.
setStreamMute scheint nicht, etwas zu tun für mich, aber setStreamVolume funktioniert...
Fügen Sie diesen code vor dem start:
Und fügen Sie diesen code nach dem beenden:
Gibt es Länder/firmwares verwenden STREAM_SYSTEM und anderen mit STREAM_MUSIC. Es gibt auch Länder, in denen dies illegal ist, aber verwenden Sie einen anderen Kanal.