我正在开发一款可以收听手机麦克风的应用。在我可用的4个设备中,有2个可以正常工作,并且在安装过程中会要求允许录制音频。其他2人根本不问,也根本不工作。我初始化AudioRecord实例的代码在任何时候都不会返回任何错误消息。因此,我认为那两个不起作用的设备不会要求许可,也不会给出一个。
我的初始化代码:
protected void init() {
bufferSize = AudioRecord.getMinBufferSize(INPUT_SAMPLE_RATE,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
arraySize = bufferSize;
try {
input = new AudioRecord(MediaRecorder.AudioSource.MIC,
INPUT_SAMPLE_RATE,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSize * 10
);
} catch (IllegalArgumentException e) {
Log.e("E_RECORDER", "Recorder.init() IllegalArgumentException");
}
input.setPositionNotificationPeriod(arraySize);
input.setRecordPositionUpdateListener(new AudioRecord.OnRecordPositionUpdateListener() {
@Override
public void onMarkerReached(AudioRecord recorder) {
}
@Override
public void onPeriodicNotification(AudioRecord recorder) {
int samplesRead = input.read(data, 0, arraySize);
process(data);
}
});
input.startRecording();
}
编辑:
实际上也有一些关于它的日志:
E/AudioRecord: Could not get audio input for record source 1
E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed.
E/AudioRecord-Java: [ android.media.AudioRecord ] Error code -20 when initializing native AudioRecord object.