1

一个定制的硬件正在运行安装了音频驱动程序的 Android。

创建了一个简单的 Android 应用程序以使用媒体播放器播放一些音频,该应用程序在模拟器上进行了测试,因此可以肯定地工作。

在硬件上运行设备时,来自 logcat 的错误消息多次显示如下:

01-01 01:09:16.355    2792-3186/? E/audio_hw_primary﹕ pcm_open(PCM_CARD) failed: cannot open device '/dev/snd/pcmC0D1p': No such file or directory
01-01 01:09:16.375    2792-3186/? E/audio_hw_primary﹕ pcm_open(PCM_CARD) failed: cannot open device '/dev/snd/pcmC0D1p': No such file or directory
01-01 01:09:16.435     2792-375/? E/AudioSink﹕ received unknown event type: 1 inside CallbackWrapper !

在 /dev/snd/ 下有

controlC0
pcmC0D0c
pcmC0D0p
timer

我可以毫无问题地播放系统通知。我也可以通过创建一个指向 pcmC0D0p 的符号链接 pcmC0D1p 来解决这个问题,并且它可以工作。为什么android试图在pcmC0D1p上播放非系统音轨?谁在控制它的输出?

4

2 回答 2

2

pcmC0D1p方法 :

pcm
Card 0
Device 1
Capture/Playback p

显然,您的应用程序正在访问的任何节点都不存在,如通过您的ls /dev/snd/.

通常,如果您正在播放非标准声音,如 mp3 文件,写入AudioTrack将处理所有事情。

如果您通过 do 只看到一个播放节点ls /dev/snd,则意味着您只有一个播放节点存在,我认为(虽然不确定)已被标准 android 声音占用。

于 2015-09-23T09:28:53.967 回答
0

如果存在“pcmC0D1p”设备,/dev/snd则尝试使用命令授予权限

chmod 777 /dev/snd/pcmC0D1p

如果它仍然无法工作,则此声卡不可用。

于 2017-03-04T10:54:17.787 回答