Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 编码为PCM浮点时无法读取录音_Android_Xamarin_Audiorecord - Fatal编程技术网

Android 编码为PCM浮点时无法读取录音

Android 编码为PCM浮点时无法读取录音,android,xamarin,audiorecord,Android,Xamarin,Audiorecord,无论我做什么,我都无法让Android AudioRecord类与Pcm Float一起工作 这是我的密码: public AndroidAudioDriver(Sensor sensor, int desiredSampleRate) { _sensor = sensor; if (!InitialiseSampleRate(desiredSampleRate)) { throw new NotSupportedException("No suppor

无论我做什么,我都无法让Android AudioRecord类与Pcm Float一起工作

这是我的密码:

public AndroidAudioDriver(Sensor sensor, int desiredSampleRate)
{
    _sensor = sensor;

    if (!InitialiseSampleRate(desiredSampleRate))
    {
        throw new NotSupportedException("No supported audio sample rates found");
    }
    recorder = new AudioRecord(AudioSource.Mic, SampleRate, ChannelIn.Mono, Encoding.PcmFloat, _bufferSize);
    _recorder.StartRecording();
    var res = _recorder.Read(_audioData, 0, (int)(SampleRate * _readPortion));
}

private bool InitialiseSampleRate(int rate)
{
    for (int i = rate; i < 48000; i += 100)
    {  // add the rates you wish to check against
        _bufferSize = AudioRecord.GetMinBufferSize(i, ChannelIn.Mono, Encoding.Pcm16bit) * 10;
        if (_bufferSize > 0)
        {
            _audioData = new byte[_bufferSize];
            SampleRate = i;
            return true;
        }
    }
    return false;
}
_recorder.read始终返回-3,根据错误\u无效\u操作。同样的代码适用于Pcm-16位。我不知道无效的操作是什么,我也看不到logcat中有任何错误

谢谢

从API M开始的录音和从API棒棒糖开始的音轨支持编码\u PCM\u浮点

因此,在您的API-21/API-22设备上,您将无法使用PcmFloat

API-23棉花糖增加了对PcmFloat音频录制的支持

从API M开始的录音和从API棒棒糖开始的音轨支持编码\u PCM\u浮点

因此,在您的API-21/API-22设备上,您将无法使用PcmFloat


API-23棉花糖添加了对PcmFloat for AudioRecord的支持。

要将PcmFloat与AudioRecord一起使用,必须使用过载:

AudioRecord.Readfloat[],偏移量,计数,读取类型


问题是我给它传递了一个字节[],它似乎只适用于Pcm8bit和Pcm16bit。

要将PcmFloat与录音一起使用,必须使用重载:

AudioRecord.Readfloat[],偏移量,计数,读取类型


问题是我给它传递了一个字节[],它似乎只适用于Pcm8bit和Pcm16bit。

您测试的设备API级别是什么?最低版本是API 21,使用Android 7.1编译,使用API 23在手机上运行。在您的API-21/API-22设备上,当您使用AudioRecord时,您将无法使用PcmFloat。文档说明,PcmFloat已添加到API 21中?API-21中的AudioTrack L已添加,支持PcmFloat,但是AudioRecord直到API-23M才得到它,您测试的设备API级别是什么?最低版本是API 21,使用Android 7.1编译,在带有API 23的手机上运行。在您的API-21/API-22设备上,当使用AudioRecord时,您将无法使用PcmFloat。文档说明,PcmFloat是在API 21中添加的?API-21 L中的AudioTrack添加了对PcmFloat的支持,但直到API-23 MI将最低版本更改为API 23,AudioRecord才获得它,仍然得到相同的-3错误代码。我将最低版本更改为API23,仍然得到相同的-3错误代码。