Konnte nicht mit Samsung Galaxy S2 aufnehmen, konnte aber mit anderen Telefonen von MIC aufnehmen

StackOverflow https://stackoverflow.com/questions/7822848

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

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top