Я пытаюсь записать звук с помощью MediaRecorder на Droid X2, и у меня возникают проблемы. MediaRecorder, кажется, отлично подготавливается и начинает запись, но когда я останавливаю запись и пытаюсь прослушать созданный файл, воспроизведение немедленно останавливается. Даже если я пытаюсь открыть аудиофайл в стандартном приложении медиаплеера, он сразу останавливается.
Вот код, который я использую для записи:
mCurrentRecordingFilePath = mContext.getExternalFilesDir(null).getAbsolutePath() + File.separator + fileName;
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mRecorder.setOutputFile(mCurrentRecordingFilePath);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
// mRecorder.setAudioEncodingBitRate(16);
// mRecorder.setAudioSamplingRate(44100);
try {
mRecorder.prepare();
mIsPrepared = true;
} catch (IOException e) {
Log.e("Test", "MediaRecorder prepare() failed");
e.printStackTrace();
}
if (mRecorder != null && mIsPrepared) {
mRecorder.start();
mIsRecording = true;
Log.i("Test", "Started audio capture: " + mCurrentRecordingFilePath);
}
Я закомментировал вызов setAudioEncodingBitRate()
, потому что он приводил к сбою prepare()
, и на всякий случай я также закомментировал setAudioSamplingRate()
. Я перепробовал все доступные комбинации выходного формата и аудиокодировщика, и результат всегда один и тот же. Я не получаю исключений, и создается непустой файл, но он не воспроизводится должным образом.
Не уверен, что это поможет диагностике, но вот код, который я использую для остановки записи:
if (mRecorder != null && mIsRecording) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
mIsPrepared = false;
mIsRecording = false;
Log.i("Test", "Stopped audio capture");
}
Код записи отлично работает на Galaxy Nexus, Nexus S, EVO 4G и Galaxy SII. Есть идеи, почему мой аудиофайл будет плохим на Droid X2?
OutputFormat.THREE_GPP
,AudioEncoder.AMR_NB
, один канал, 8000 Гц? Это все еще не удается? Можете ли вы воспроизвести полученный файл (записанный Droid X2) на любом из других упомянутых вами телефонов? - person Michael   schedule 14.08.2012OutputFormat.THREE_GPP
иAudioEncoder.AMR_NB
. Я также обнаружил, что могу воспроизвести файл на X2, если укажу путь к корню SD-карты, а не к каталогу внешних файлов. Я действительно хочу избегать записи вне каталога файлов, поскольку я хочу, чтобы аудиофайлы удалялись при удалении приложения. - person BigFwoosh   schedule 14.08.2012