Ich konnte hier keinen verwandten Beitrag finden (aber andere kleine Beiträge im Internet), also hier ist es:
AudioManager.setMicrophoneMute (boolean) macht auf einigen bestimmten Geräten, mit denen ich getestet habe, nichts aus: Google Nexus S, Samsung Galaxy S und Motorola Milestone. Auf jedem anderen Gerät funktioniert es gut.
Er behält sogar seinen "Status" bei und gibt einen booleschen Wert zurück, als ob er stummgeschaltet / stummgeschaltet wäre, aber er stumm nicht - das Mikrofon nimmt weiterhin auf - sowohl im GSM-Anruf als auch in der programmgesteuerten AudioRecord-Aufnahme. Es gibt keine anzeigende Protokollnachricht.
Ich habe auch mit Berechtigungen (android.permission.MODIFY_AUDIO_SETTINGS, android.permission.RECORD_AUDIO) vermasselt, nichts Neues hier.
Ist das jemand anderem begegnet? Hat jemand eine Workaround oder eine magische Lösung? Wenn ich AudioRecord verwende, implementiere ich einfach meine eigene "Stummschaltung" für diese Geräte - ich gebe die aufgezeichneten Puffer nicht weiter. Aber es kann mir nicht helfen das Mikrofon bei einem GSM Anruf zu stummschalten, was ich brauche.
Danke
---------------- Aktualisierung ----------------
Siehe unten.
Hi, ich hatte das selbe Problem, ich wollte den Bildschirm für eingehende Anrufe simulieren. und in diesem Bildschirm funktionierte eine Taste, die Stummschalten, und der AudioManager.setMicrophoneMute (boolean) funktionierte auf den meisten Telefonen, aber nicht auf allen. Ich habe einen Weg gefunden, um es zu umgehen. Ich simuliere einen Druck auf die Stummschalttaste an der Freisprecheinrichtung. es hat funktioniert, ich hoffe, es wird dir auch helfen Hier ist der Code:
%Vor%Ich hatte dieses Problem, weil ich M4A-Dateien bearbeiten wollte, die AAC-Audiodaten enthielten. Ich wollte in der Lage sein, sie zusammenzuführen und Stille als Polsterung hinzuzufügen. Aufgrund der unterschiedlichen Anzahl von Millisekunden pro Frame über verschiedene Geräte entschied ich mich, das Mikrofon stummzuschalten und eine Sekunde Stille aufzuzeichnen. Wiederholen Sie das immer und immer wieder, wenn ich Stille puffern musste. (M4A + AAC Stille ist viel komplizierter als rohe PCM).
Leider habe ich viele Unterschiede bei der Stummschaltung von Android-Geräten festgestellt. Hier ist, was ich gelernt habe:
In meinem Fall, um eine Stille-Datei mit der entsprechenden Anzahl von Millis pro Frames zu erzeugen, die das gegebene Gerät verwendet (also kompatibel mit anderen Audio-Dateien), verwende ich einen ähnlichen Code:
%Vor%Ist das eine vollständige Lösung? Nein. Einige Geräte werden NICHT stummgeschaltet. Andere Geräte, wie das zuvor erwähnte HP Touchpad, verursachen alle neuen Probleme, wenn Sie sogar versuchen, stumm zu schalten. Hoffentlich werden diese Tipps zumindest dazu beitragen, dass Menschen auf den meisten Android-Geräten stummgeschaltet werden.
Es wurde keine Lösung gefunden. Wenn das aufgezeichnete Audio als Datenpuffer verwendet wird, verwenden Sie stille PCM-Daten (mit Nullen füllen). Wenn Sie einen normalen Telefonanruf programmgesteuert stummschalten müssen, informieren Sie den Benutzer, dass dieses Gerät auf dem Anrufbildschirm manuell stummgeschaltet werden muss.
Ich betrachte dies als die endgültige Antwort, aber bitte überraschen Sie mich.
Tags und Links android