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