Intereting Posts

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

Solutions Collecting From Web of "Что такое AudioFlinger и почему он не работает TONE_PROP_ACK?"

Одна работа заключается в том, чтобы генерировать тон в чем-то вроде Audacity и воспроизводить его через SoundPool или api по вашему выбору.

Согласно документам Android ToneGenerator.TONE_PROP_ACK:

1200 Гц, 100 мс вкл., 100 мс ВЫКЛ 2 пакета

Если вы выберете SoundPool, я предлагаю сохранить в формате ogg-файла и закодировать тон до завершения. Это обеспечивает бесшовный звук с очень маленьким клипом и не использует много ресурсов.

Разбор / декодирование обрабатывается испугом Stage, который используется службой медиаплеера. Декодированные данные записываются в звуковую дорожку через звуковой приемник, а затем треки смешиваются потоком (ами) микшера Audio Flinger и записываются в выходной поток (Audio Hardware). Объект выходного потока заполняет собственный буфер (ы), а затем записывает данные в файл устройства вывода PCM (который может быть или не быть драйвером ALSA).