gpt4 book ai didi

java - 在 Raspberry Pi 上使用 Android Things 配置扬声器 PHat

转载 作者:行者123 更新时间:2023-12-02 11:32:53 26 4
gpt4 key购买 nike

我正在尝试在 Raspberrypi 上的 Android 设备中使用 Pimoroni 扬声器 PHAT ( https://shop.pimoroni.com/products/speaker-phat )。我从数据表中看到,DAC(MAX98357A)使用I2S协议(protocol)。我尝试通过 I2C 通信初始化 DAC(MAX98357A),因为最新的开发者预览版本中已删除了 I2S 设备引用。当我调试时,我看不到 DAC 上的任何 Activity 。我已经从github上查看了AIY-VoiceHAT驱动程序,但它对我没有帮助。通过 I2C 初始化 I2S 协议(protocol)是否正确?或者我们是否需要以不同方式配置它。请帮助我指出如何使用它的正确方向。希望能早日得到你的回复。提前致谢。

-苏雷什

最佳答案

我专门围绕 Android Things 的 MAX98357A 驱动程序进行了大量 API 设计,因此我将尽力为您指明正确的方向。

Voicehat是一个很好的起点。 DAC 使用 I2S 来回发送音频数据,但也使用 GPIO 来控制其部分内容。

the code所示有两个 GPIO:GAIN_SLOTSD_MODE。在 VoiceHat 上,GAIN_SLOT 引脚未连接。

SD_MODE 插槽至关重要。它指示音频芯片是否应启用(true)或禁用(false)。如果您不更改此值,则可以解释为什么没有音频输出。

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

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

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);

关于java - 在 Raspberry Pi 上使用 Android Things 配置扬声器 PHat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49161714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com