我使用以下代码(取自官方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)和相当低端的三星Galaxy Young(GT-S5360,Android 2.3.6)。 我尝试录制一些背景噪音(收音机在同一个房间里)。 令人非常失望的是,三星设备报告的振幅高于1000,有时超过10 000,而HTC高端设备报告的振幅低于1000(200-400)。根据这些幅度,音频播放在htc设备上的音量非常差,而三星录制的音频在可接受的音量上具有音量。 (两个设备的媒体音量都设置为高)。
但是当我在htc设备上使用工厂提供的视频/音频录制应用程序时,当我播放它时,音频看起来非常敏感。
我尝试使用所有可用的MediaRecorder.AudioSource值进行录制,对于大多数人来说它都是相同的,而对某些人来说神秘的不适用(VOICE_CALL,VOICE_UPLINK) 知道这里有什么不对吗?
祝你好运, Mikolaj