Android - Как получить список параметров AudioManager/AudioSystem

AudioManager имеет метод setParameters, который принимает пару Key-Value в строчном представлении ( "parameter_name = parameter_value" ).
Внутри он вызывает native AudioSystem.setParameters.
Единственный способ получить значение параметра - узнать его имя, вызвав метод AudioManager.getParameters, который вызывает соответствующий собственный метод в `AudioSystem '.

Есть ли способ (используя отражение или другие методы) для получения списка поддерживаемых параметров (конечно, результат будет зависеть от устройства, на которое он вызван, поскольку он зависит от платформы)?

Ответы

Ответ 1

После краткого исследования я могу догадаться, что нет надежного способа перечислить все доступные ключи для параметров аудиоустройства. Заголовки Android определяют небольшой набор общих параметров, которые, вероятно, должны поддерживаться всеми устройствами. Вы можете найти фактические клавиши здесь (найдите макросы AUDIO_PARAMETER_*). И интерфейс для реальной реализации устройства struct audio_hw_device (который реализуется поставщиком) имеет только get_parameters()/set_parameters() и не имеет точек входа для перечисления. Таким образом, нет возможности запросить полный список поддерживаемых ключей параметров.

В довершение:

  • мы имеем небольшой набор предопределенных общих параметров
  • чтобы справиться с параметрами, зависящими от поставщика, - мы должны получить список дополнительных ключей из документации поставщика или связанных с оборудованием источников для конкретного устройства.

Любые коррективы приветствуются.