我正在尝试开发一个检测哨声的应用程序,我使用的musicg库工作正常,但问题是不能使用所有设备。这个库如何工作是一个记录器线程在后台连续记录音频,探测器线程通过whistleApi.isWhistle(缓冲区)匹配记录的缓冲区;方法。 问题是上面提到的方法对于某些特定的设备总是返回false,但对于三星和google nexus来说这是正确的。 任何人都可以告诉我,我该怎么做才能解决这个问题,因为这对我的项目非常重要。救救我!
答案 0 :(得分:2)
在RecorderThread类更改" AudioFormat.CHANNEL_CONFIGURATION_MONO在CHANNEL_IN_MONO和frameByteSize = 4096 ....
private AudioRecord audioRecord;
private boolean isRecording;
private int channelConfiguration = AudioFormat.CHANNEL_IN_MONO;//CHANNEL_CONFIGURATION_MONO
private int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
private int sampleRate = 44100;//44100
private int frameByteSize = 4096; // for 1024 fft size (16bit sample size)//4096
byte[] buffer;