我的小板牙 2024-03-30 11:07 采纳率: 0%
浏览 101
已结题

rk3399 安卓7.1 应用音频无声音

Android7.1 Linux4.4.126 rk3399平台
使用aw88266的功放,kernel层驱动调试好了,使用tinyplay可以正常播放声音,但是安卓APP没有声音。
查询资料很多说是改动hardware/rockchip/audio/tinyalsa_hal/audio_hw.c文件,但我的目录下只有 hardware/rockchip/audio/legacy_hal/
目录,求各位提供思路。
附上logcat部分log

logcat -s AudioHardwareTiny audio_hw_hdmiin alsa_route

img

我的声卡是awaw8266codec,但是看log似乎选择了rkhdmi?

  • 写回答

17条回答 默认 最新

  • 阿里嘎多学长 2024-03-30 11:09
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在RK3399平台上,如果你的Android 7.1系统使用的是Legacy HAL(硬件抽象层),而你看到的目录hardware/rockchip/audio/legacy_hal/表明系统正在使用旧版的音频框架。在这种情况下,问题可能是由于HAL配置不正确或者Android应用层与HAL之间的通信问题导致的。

    从你提供的logcat输出来看,确实存在一些线索指向HDMI音频输出,这可能意味着系统默认选择的是HDMI音频路径而不是你期望的AW88266功放。日志中的alsa_route信息显示了声卡的选择和设备配置,这通常用于确定音频流的输出路径。

    为了解决这个问题,你可以尝试以下步骤:

    1. 检查HAL配置

      • 确认audio_policy.conf文件配置是否正确。这个文件通常位于system/etc/audio_policy.conf,它定义了不同类型的音频流应该如何路由到相应的音频硬件。
      • 确保针对AW88266的配置项已经设置,并且是默认的音频设备。
    2. 修改HAL源码

      • 如果你需要修改HAL源码,你可能需要在legacy_hal目录下的相应文件中添加或更新代码来支持你的声卡。尽管你的目录下没有tinyalsa_hal,但你可能需要找到处理音频设备选择的部分,并确保在启动时选择正确的设备。
    3. 更新设备树

      • 确认设备树(device tree)配置正确指定了AW88266作为音频编解码器。在arch/arm64/boot/dts目录下查找与你的平台相关的DTS文件,检查其中的音频节点配置。
    4. 重新编译和测试

      • 一旦做了修改,重新编译内核和HAL,并部署到设备上进行测试。使用adb logcat命令查看新的日志输出,以确认更改是否生效。
    5. 系统服务和权限

      • 检查音频服务(如AudioService)是否有足够的权限访问和控制你的音频硬件。
    6. 应用层面

      • 确保你的应用程序没有特定的音频输出设置,比如强制使用某种特定的音频输出通道。
    7. 排查其他问题

      • 检查是否有任何系统级的音频服务或设置阻止了音频的正常播放,例如静音模式、音量设置等。

    由于你提到tinyplay可以正常工作,这表明硬件本身和基本的驱动层应该是正常的。问题可能主要在于Android的音频框架配置和应用层的交互。请根据上述建议逐步排查,如果需要具体的代码示例或更详细的指导,可以提供更多的系统配置信息或日志内容。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月2日
  • 创建了问题 3月30日

悬赏问题

  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。