Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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
Java 在Raspberrypi上使用Androidthings配置扬声器PHat_Java_Android_Raspberry Pi3_Iot_Android Things - Fatal编程技术网

Java 在Raspberrypi上使用Androidthings配置扬声器PHat

Java 在Raspberrypi上使用Androidthings配置扬声器PHat,java,android,raspberry-pi3,iot,android-things,Java,Android,Raspberry Pi3,Iot,Android Things,我正在尝试在Raspberrypi上的android things中使用Pimoroni扬声器PHAT()。我从数据表中看到,DAC(MAX98357A)使用I2S协议。我试图通过I2C通信初始化DAC(MAX98357A),因为最新的开发人员预览版本中已删除了I2S设备引用。调试时,我看不到DAC上的任何活动。我已经看过github的所有VoiceHAT驱动程序,但它对我没有帮助。通过I2C初始化I2S协议正确吗。。或者我们需要以不同的方式配置它。 请帮我指出正确的使用方向。 期待尽快收到你的

我正在尝试在Raspberrypi上的android things中使用Pimoroni扬声器PHAT()。我从数据表中看到,DAC(MAX98357A)使用I2S协议。我试图通过I2C通信初始化DAC(MAX98357A),因为最新的开发人员预览版本中已删除了I2S设备引用。调试时,我看不到DAC上的任何活动。我已经看过github的所有VoiceHAT驱动程序,但它对我没有帮助。通过I2C初始化I2S协议正确吗。。或者我们需要以不同的方式配置它。 请帮我指出正确的使用方向。 期待尽快收到你的来信。提前谢谢


-Suresh

我已经专门针对Android设备的MAX98357A驱动程序进行了大量API设计,因此我将尝试为您指出正确的方向

这是一个很好的开始。DAC使用I2S来回发送音频数据,但也使用GPIO控制部分音频数据

如图所示,有两个GPIO:
GAIN\u插槽
SD\u模式
。在VoiceHat上,未连接
增益\u插槽
引脚

SD\u模式
插槽至关重要。指示音频芯片应启用(真)还是禁用(假)。如果你不改变这个值,它可以解释为什么没有音频输出

尽管有相似的名字,但与之有着根本的不同。在最近的版本中,对I2S API的直接访问已从平台中删除,但仍然可以通过音频路由进行访问

在Android Things中,您可以使用
AudioTrack
轻松播放音频文件。但是,播放该音频只会将其输出到默认音频输出。您可以做的是设置首选音频设备。在中,存在查找与I2S相对应的总线类型的代码

private AudioDeviceInfo findAudioDevice(int deviceFlag, int deviceType) {
    AudioManager manager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
    AudioDeviceInfo[] adis = manager.getDevices(deviceFlag);
    for (AudioDeviceInfo adi : adis) {
        if (adi.getType() == deviceType) {
            return adi;
        }
    }
    return null;
}
然后,您可以通过以下方式访问它:

audioOutputDevice = findAudioDevice(AudioManager.GET_DEVICES_OUTPUTS, AudioDeviceInfo.TYPE_BUS);
if (audioOutputDevice == null) {
    Log.e(TAG, "failed to found I2S audio output device, using default");
}
最后:

 audioTrack.setPreferredDevice(audioOutputDevice);