有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么Android音频录制初始化失败?

我使用以下教程制作了一个录音应用程序:

当我在测试设备(LG P970 Optimus Black)上启动它时,我得到一个错误代码:

 Error creating AudioRecord instance: initialization check failed.
 Error code -20 when initializing native AudioRecord object.

我发现了一些“解决方案”比如在清单中添加RECORD_AUDIO权限 并使用.release()方法。但是所有这些东西在源代码中都准备好了

这个问题还有其他解决方案吗?可能是那个装置吗


共 (3) 个答案

  1. # 1 楼答案

    将AudioRecord中的音频源更改为默认。。。。。 我能用计算机解决这个问题

    MediaRecorder.AudioSource.DEFAULT 
    
  2. # 2 楼答案

    这可能是因为你的android设备阻止了你的应用权限。转到Android设备的设置>;权限>;你的应用程序并允许录制音频。但这解决了我的问题

  3. # 3 楼答案

    我已经这样解决了这个错误。因为我们可以这样称呼录音机对象

    private AudioRecord findAudioRecord() {
            // TODO Auto-generated method stub
               for (int rate : mSampleRates) {
    
                   for (short audioFormat : new short[] { AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT }) {
    
                       for (short channelConfig : new short[] { AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO }) {
    
                           try {
    
                               Log.d("AudiopRecording", "Attempting rate " + rate + "Hz, bits: " + audioFormat + ", channel: "
    
                                       + channelConfig);
    
                               int bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat);
    
                               if (bufferSize != AudioRecord.ERROR_BAD_VALUE) {
    
                                   // check if we can instantiate and have a success
    
                                   AudioRecord recorder = new AudioRecord(AudioSource.DEFAULT, rate, channelConfig, audioFormat, bufferSize);
    
                                   if (recorder.getState() == AudioRecord.STATE_INITIALIZED)
    
                                       return recorder;
    
                               }
    
                           } catch (Exception e) {
    
                               Log.e("AudiopRecording", rate + "Exception, keep trying.",e);
    
                           }
    
                       }
    
                   }
    
               }
    
    
            return null;
        }