在我的应用程序中,我发出以下语句:
toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 600);
这在一款廉价的LG LS670智能手机上运行得非常好,该手机运行的是Android 2.3.3版本,但在其他所有手机上都没有声音,这些手机涵盖了从Android 2.2.1到Android 2.3.4的多个版本。
因此我知道操作系统版本在这里并不起作用(我还在文档中验证过它自API 1以来一直被支持)。
此外,铃声音量和媒体音量均设置为最大值,并且toneGenerator已初始化:
toneGenerator = new ToneGenerator(ToneGenerator.TONE_DTMF_1, 100);
我已经验证了Settings.System.DTMF_TONE_WHEN_DIALING
被设置为1。
在不同的手机上出现这种不一致的行为时感到困惑,因此我检查了系统日志,在出现这种情况时我能够找到的唯一可疑的差异是那些无法播放TONE_PROP_ACK
声音的手机在其日志中有这样一行:
AudioFlinger setParameters(): io 25, keyvalue routing=0, tid 155, calling tid 121
AudioFlinger 的目的是什么?它与静音 TONE_PROP_ACK
有什么关联?
有没有任何想法如何修复我的代码,使得无论手机型号如何,TONE_PROP_ACK
总是能发出声音?
routing=0
对于io 25
来说意味着AudioFlinger告诉特定的音频流(在这种情况下,我猜是一个AudioStreamOut)它应该路由到“无处”。音频HAL将如何处理这个问题取决于实现方式 - 所以它可能会保持该流的路由不变。 - Michael