Konnte nicht mit Samsung Galaxy S2 aufnehmen, konnte aber mit anderen Telefonen von MIC aufnehmen
-
27-10-2019 - |
Frage
Meine App konnte jedoch nicht in Samsung Galaxy S 2 von MIC aufzeichnen, sie hat in anderen Telefonen von MIC aufgenommen.
Recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
In meinem Code wähle ich den Quellentyp von 0 bis 4 aus, wählen Sie den Encodertyp als AMR-NB, AMR-WB, AAC oder Standard aus, wählen Sie den Ausgangsformattyp als .3gp, .mp4 oder .AMR aus und wählen Sie auch Audiokanal Wie 1 oder 2. versuche ich alle Kombinationen, die auf sind. Mindestens eine der Kombinationen funktioniert in vielen Telefonen. Aber keiner von ihnen könnte in Samsung Galaxy S 2 arbeiten. Es wird die Datei aufgezeichnet und die Dauer des Datensatzes ist wahr, aber die Stimme ist nur Stille!
In meiner Forschung im Web mit diesem Problem finde ich, dass es vom Mikrofontyp abgeleitet werden kann. Obwohl ich in meinem Code den Audio -Quellentyp als Standard, MIC, Voice Downlink, Voice Uplink, Voice Call auswähle, konnte er nicht funktionieren. Dann setze ich den Audio -Quellentyp durch diese 0, 1, 2, 3, 4 anstelle von mediarecorder.augiosource.mic usw. fest. Aber es konnte auch nicht funktionieren ...
Lösung
Ich hatte Probleme im S2, bei dem eine App das Mikrofon sperrt und es nicht freigibt, insbesondere wenn Sie schnelle Entwicklungszyklen durchführen, in denen Sie das Mikrofon versperrten und veröffentlichen neue Version). Manchmal wird es nach Ablauf einiger Zeit freigeschaltet, aber der sichere Weg, um sicherzustellen, dass das Mikrofon verfügbar ist, besteht darin, das Telefon nach einem fehlgeschlagenen Versuch neu zu starten.
Ich konnte Audio mithilfe der folgenden Einstellungen in der Aufnahme aufzeichnen AudioRecord
Objekt:
int buffer_size = 2 * AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(
MediaRecorder.AudioSource.MIC, //audio source
16000, //16kHz sample rate
AudioFormat.CHANNEL_IN_MONO, //channel
AudioFormat.ENCODING_PCM_16BIT, //encoding
buffer_size ); //buffer size