Droid X2 で MediaRecorder を使用してオーディオを録音しようとしていますが、問題が発生しています。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 で問題になる理由を教えてください。