首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是AudioFlinger,为什么它会使TONE_PROP_ACK失败?

什么是AudioFlinger,为什么它会使TONE_PROP_ACK失败?
EN

Stack Overflow用户
提问于 2012-06-27 03:18:20
回答 2查看 14.7K关注 0票数 19

在我的申请中,我发表以下声明:

代码语言:javascript
复制
toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 600);

这在运行Android2.3.3的廉价LG LS670上运行得很好,但在我拥有的所有其他手机上,从Android2.2.1到Android2.3.4,听起来都不太好。

因此,我知道操作系统版本在这里不起作用(我还在文档中验证了它自API 1以来就得到了支持)。

此外,Ringer卷和Media卷都被设置为最大,toneGenerator被初始化为:

代码语言:javascript
复制
toneGenerator = new ToneGenerator(ToneGenerator.TONE_DTMF_1, 100);

我验证了Settings.System.DTMF_TONE_WHEN_DIALING被设置为1。

对于这种不一致的行为(在不同的手机上),我感到困惑的是,当这种情况发生时,我检查了系统日志,我唯一能发现的可疑差别是,fail to fail TONE_PROP_ACK的手机日志中有这一行:

代码语言:javascript
复制
AudioFlinger    setParameters(): io 25, keyvalue routing=0, tid 155, calling tid 121

AudioFlinger的目的是什么?它与静音TONE_PROP_ACK的连接是什么?

任何想法如何修复我的代码,使TONE_PROP_ACK总是听起来,而不管是什么手机模型?

EN

回答 2

Stack Overflow用户

发布于 2013-02-08 21:49:48

其中一项工作是生成类似Audacity之类的音调,并通过SoundPool或您选择的api播放它。

根据Android的文档,ToneGenerator.TONE_PROP_ACK是:

1200赫兹,100毫秒开启,100毫秒停止2次爆发

如果您选择SoundPool,我建议以ogg文件格式保存,并循环音调直到完成。这一方面提供了无缝音频与一个非常小的剪辑,并没有使用很多资源。

票数 1
EN

Stack Overflow用户

发布于 2014-10-02 04:00:48

解析/解码由媒体播放器服务使用的Stage fright来处理。解码后的数据通过音频水槽写入音频轨道,然后由音频Flinger的混频器线程混合并写入输出流(音频硬件)。输出流对象填充自己的缓冲区,然后将数据写入PCM输出设备文件(可能是也可能不是ALSA驱动程序)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11218923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档