验证Android本机音频采样率不起作用
,验证Android本机音频采样率不起作用,android,audio,sampling,Android,Audio,Sampling,, 我试图调查设备支持的本机采样率(无需重新采样)。因此,我创建了一个方法,该方法应该检查是否可以创建具有特定采样率(sample_rate)的有效录音实例。这是我在互联网上的不同例子中发现的一种做法。我用不同的设备和不同的采样率对此进行了测试,这些设备和采样率在大多数情况下都是无用的和随机的(例如40333800…。 我的问题是,对于几乎所有的速率,这个方法都返回true,而这不可能是真的。我找不到任何其他解决方案来检查不同的有效速率和而不仅仅是设备的一个首选速率 你看到这里有什么错误吗?或者
我试图调查设备支持的本机采样率(无需重新采样)。因此,我创建了一个方法,该方法应该检查是否可以创建具有特定采样率(sample_rate)的有效录音实例。这是我在互联网上的不同例子中发现的一种做法。我用不同的设备和不同的采样率对此进行了测试,这些设备和采样率在大多数情况下都是无用的和随机的(例如40333800…。
我的问题是,对于几乎所有的速率,这个方法都返回true,而这不可能是真的。我找不到任何其他解决方案来检查不同的有效速率和而不仅仅是设备的一个首选速率
你看到这里有什么错误吗?或者你能给我一些提示,告诉我还有什么可以尝试的吗?
谢谢
(我已经实现了录制音频权限,所以这应该不是问题。)
//checks if a sampling rate is supported by the device
public boolean validSampleRate(int sample_rate) {
AudioRecord recorder = null;
boolean def = false;
//AudioRecord instance needs permission
try {
int bufferSize = AudioRecord.getMinBufferSize(sample_rate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sample_rate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
if(recorder.getState() == AudioRecord.STATE_INITIALIZED){
def = true;
}
} catch(IllegalArgumentException e) {
System.out.println("Error!!");
def = false;
}finally{
if(recorder!= null) {
recorder.release();
recorder = null;
}
}
return def;
}