Usb I2S1错误:无法从仅输出设备读取(不允许操作)(代码1)

Usb I2S1错误:无法从仅输出设备读取(不允许操作)(代码1),usb,raspberry-pi3,microphone,android-things,Usb,Raspberry Pi3,Microphone,Android Things,我对安卓有点陌生我在工作 主要使用i2s adafruit话筒 也适用于典型的USB麦克风 在Raspberry pi上安装Android设备 Android文档说它从Preview 2开始就支持USB麦克风,但我找不到任何例子 所以我现在用的是i2s话筒,卡在这里了 代码 // I2S Device Name private static final String I2S_DEVICE_NAME = "I2S1"; private static final AudioFormat AUDI

我对安卓有点陌生我在工作

  • 主要使用i2s adafruit话筒
  • 也适用于典型的USB麦克风 在Raspberry pi上安装Android设备
  • Android文档说它从Preview 2开始就支持USB麦克风,但我找不到任何例子

    所以我现在用的是i2s话筒,卡在这里了

    代码

    // I2S Device Name
    private static final String I2S_DEVICE_NAME = "I2S1";
    
    private static final AudioFormat AUDIO_FORMAT_STEREO =
            new AudioFormat.Builder()
                    .setChannelMask(AudioFormat.CHANNEL_IN_STEREO)
                    .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
                    .setSampleRate(44100)
                    .build();
    
    private I2sDevice mDevice;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        String str = "";
    
        // Attempt to access the I2C device
        try {
            PeripheralManagerService manager = new PeripheralManagerService();
            mDevice = manager.openI2sDevice(I2S_DEVICE_NAME, AUDIO_FORMAT_STEREO, I2sDevice.PCM_FORMAT_16_BIT);
        } catch (IOException e) {
            Log.w(TAG, "Unable to access I2S device", e);
        }
    
        // Set up the audio playback sink
        int bufferSize = AudioTrack.getMinBufferSize(
                AUDIO_FORMAT_STEREO.getSampleRate(),
                AUDIO_FORMAT_STEREO.getChannelMask(),
                AUDIO_FORMAT_STEREO.getEncoding());
    
        str += String.valueOf(bufferSize) + "    ";
    
        // Transfer data from input to output
        ByteBuffer buffer = ByteBuffer.allocate(bufferSize);
        try{
            int read = mDevice.read(buffer, bufferSize);
            str += String.valueOf(read);
        } catch (IOException e) {
            Log.w(TAG, "Unable to access I2S1 device", e);
        }
        TextView myText = (TextView) findViewById(R.id.mytextview);
    
        myText.setText(str);
    }
    
    问题

    第行:

    mDevice.read()
    
    安卓显示器说

    I2S1错误:无法从仅输出设备读取(操作不正确 许可证(代码1)

    我能得到任何帮助吗

    Android文档说它从Preview 2开始就支持USB麦克风,但我找不到任何例子

    USB麦克风会自动检测并设置为设备上的默认麦克风输入。您可以参考任何将音频源设置为的标准Android音频录制示例。作为一个例子,这里是

    I2S1错误:无法从仅输出设备读取(不允许操作)(代码1)

    您在代码中使用的是什么版本的Android Things support library?如果您不是最新版本(操作系统映像和库都是0.5.1版),我建议您先更新。您还可以尝试更改代码以使用
    openI2sDevice()
    that的版本。您正在使用的版本在最新版本中已被弃用