MediaRecorder を使用してオーディオを録音し、AAC オーディオで .mp4 に保存しています。Android 4.1 を搭載した Nexus S を除いて、私が試したすべてのデバイスですべて正常に動作します。これらのデバイスでは、start() でエラー (1, -2147483648) が発生するか (と思います)、問題なく続行されますが、出力ファイルは常に空です。アプリは他のデバイスでも動作するため、必要な権限を持っています。
mRecorder.reset();
mRecorder.setOnErrorListener(new MediaRecorder.OnErrorListener() {
@Override
public void onError(MediaRecorder mr, int what, int extra) {
Log.e("sagasg", what + " " + extra);
}
});
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mRecorder.setAudioSamplingRate(SAMPLING_RATE);
mRecorder.setAudioEncodingBitRate(BIT_RATE);
mFileName = "unnamed-" + mTimeStarted.year + "-" + mTimeStarted.month + "-" + mTimeStarted.monthDay
+ "-" + mTimeStarted.hour + "-" + mTimeStarted.minute + "-" + mTimeStarted.second;
mRecorder.setOutputFile(mFilePath + mFileName + mExtension);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();