В моем приложении я выдаю следующий оператор:
toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 600);
Что хорошо работает на дешевом LG LS670 под управлением Android 2.3.3, но не звучит вообще на всех других телефонах, которые у меня есть, от Android 2.2.1 до Android 2.3.4.
Итак, я знаю, что версия ОС здесь не играет роли (я также проверял в документации, что она поддерживается с API 1).
Кроме того, как громкость звонка, так и громкость носителя установлены на максимум, а тональный генератор инициализируется с помощью:
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, независимо от модели телефона?