Что такое AudioFlinger и почему он не выполняет TONE_PROP_ACK?

В моем приложении я выдаю следующее утверждение:

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 звучал всегда, независимо от модели телефона?

19
задан Community 23 May 2017 в 10:29
поделиться