2

次のコードで少しのオーディオを録音するAndroidアプリを作成しました(公式のAndroid開発者ガイドから取得)

MediaRecorder recorder = new MediaRecorder();       
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
final String fileName = getFileName();
recorder.setOutputFile(fileName);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
    recorder.prepare();
} catch (Exception e) {
    throw new RuntimeException("Failed to prepare recorder", e);
}
recorder.start();

録音後、録音したオーディオを再生します

MediaPlayer player = new MediaPlayer();
player.setDataSource(new FileInputStream(getFileName()).getFD());
player.prepare();
player.start();

また、recorder.getMaxAmplitude(); を呼び出して録音しながらオーディオを分析します。

HTC ONE S (Android 4) とかなりローエンドの Samsung Galaxy Young (GT-S5360、Android 2.3.6) の 2 つのデバイスでこれを実行しました。バックグラウンド ノイズを録音してみます (同じ部屋でラジオをオンにします)。非常に残念なのは、Samsung デバイスが 1000 を超えるレベル、場合によっては 10 000 を超えるレベルで振幅を報告するのに対し、HTC のトップ エンド デバイスは 1000 未満 (200-400) のレベルで振幅を報告することです。これらの振幅に応じて、htc デバイスでのオーディオ再生の音量は非常に低くなりますが、サムスンが録音したオーディオの音量は許容レベルです。(両方のデバイスのメディア ボリュームが高く設定されています)。

しかし、工場で提供されているビデオ/オーディオ録音アプリケーションを htc デバイスで使用すると、それを再生すると、オーディオは非常に敏感なレベルに見えます。

利用可能なすべての MediaRecorder.AudioSource 値で録音を試みましたが、それらのほとんどは同じですが、不思議なことに機能していないものもあります (VOICE_CALL、VOICE_UPLINK)。

敬具、ミコライ

4

0 に答える 0