new AudioRecord(audioSource, sampleRate, channelConfig, audioFormat, bufferSize*10);

解决方案 »

  1.   

    不清楚,俺们用的 MediaRecorder
      

  2.   


    MediaRecorder 要写文件。如果用 socket 的话太复杂了。
      

  3.   

    而且录下来的是压缩格式,我需要的是PCM格式。
      

  4.   


    int sampleRate = 44100;
    int channel = AudioFormat.CHANNEL_IN_MONO;
    int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
    int bufferSize = 4 * AudioRecord.getMinBufferSize(sampleRate, channel, audioFormat); return new AudioRecord(AudioSource.CAMCORDER, sampleRate, channel, audioFormat, bufferSize);注意在AndroidManifest.xml里添加录音权限,并且检查下权限是否可用(比如被管理软件禁止等)。如果再不行,就换个手机吧。
    sampleRate只有44100是API级别被保证支持的
      

  5.   


    44100 也测试过,buffersize*10 也测试过,主要是有比较多的手机会有这个问题,在我们公司内部就发现 联想和小米,软件是做给客户用的,另外别人的 App 却又没问题。我怀疑是不是它在 JNI 层做了什么处理,貌似它使用了 VOIP 协议。
      

  6.   


    百思不得其姐。我还有两部测试手机,一部是 HTC,一部是大显,没问题。另外有一个同事的小米2也没问题。如果是代码有问题,应该都通不过。
    据我同事说,可能是 MTK 的就有问题,具体还没有证实。
      

  7.   


    另外因为我们对讲是跟硬件对讲,所以固定 sampleRate 用 8000。不过其他的我都测试过,也没用。
      

  8.   

    问题没找到,但是我解决了问题。新建一个工程然后把原来的工程文件一个个加进去,重新编译,即可。这个可能是工程在上传下载到svn的时候出的错,总之呢是android深层次的bug