PCM オーディオを 16khz/16bits/mono (1 チャンネル) で録音する必要があるアプリを開発しています。Motorola ATRIX では完全に動作しますが、HTC One ではファイル全体で記録が途切れます。まだステレオで録音しようとしているのに、2 番目のチャンネルにブランクを書き込んでいるためだと思います。ステレオで録音するとうまくいきますが、モノラルで録音する必要があります。
これが問題だと聞いた人はいますか?ステレオからモノへのトラックのミキシングは、時間の制約によりオプションではありません。
private static final int RECORDER_SAMPLERATE = 16000;
private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO;
private static final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;
private void startRecording()
{
int bufferSize = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING);
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
RECORDER_SAMPLERATE, RECORDER_CHANNELS,
RECORDER_AUDIO_ENCODING, bufferSize);
recorder.startRecording();
isRecording = true;
recordingThread = new Thread(new Runnable()
{
public void run()
{
try {
writeAudioDataToFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}, "AudioRecorder Thread");
recordingThread.start();
}