Вопрос или проблема
Я запускаю экземпляр Android Automotive на AWS Graviton, используя AWS CloudFormation. Я заметил, что звука нет, что бы я ни делал. Посмотрев в logcat, я вижу следующее:
10-29 04:25:28.328 7171 7171 D CAR.AUDIO.KS: Запуск звукового устройства по адресу
10-29 04:25:28.328 7171 7171 I CAR.AUDIO.KS.AudioPlayer: Запрос фокуса для использования 1
10-29 04:25:28.329 584 2726 I MediaFocusControl: requestAudioFocus() от uid/pid 1010028/7171 AA=USAGE_MEDIA/CONTENT_TYPE_UNKNOWN clientId=android.media.AudioManager@86fa479com.google.android.car.kitchensink.audio.AudioPlayer$1@a3c15be callingPack=com.google.android.car.kitchensink req=2 flags=0x0 sdk=32
10-29 04:25:28.329 1422 1422 W CAR.AUDIO: getZoneIdForUid userId 10 не имеет зоны. Устанавливаем по умолчанию PRIMARY_AUDIO_ZONE:0
10-29 04:25:28.330 1422 1422 I CarAudioFocus: Оценка запроса GAIN_TRANSIENT для клиента android.media.AudioManager@86fa479com.google.android.car.kitchensink.audio.AudioPlayer$1@a3c15be с использованием USAGE_MEDIA
10-29 04:25:28.330 1422 1422 I CarAudioFocus: Сканирование держателей фокуса...
10-29 04:25:28.330 1422 1422 I CarAudioFocus: Сканирование тех, кто уже потерял фокус...
10-29 04:25:28.330 1422 1422 I CarAudioFocus: AUDIOFOCUS_REQUEST_GRANTED
10-29 04:25:28.330 1422 1422 I CarAudioFocus: onAudioFocusRequest для клиента android.media.AudioManager@86fa479com.google.android.car.kitchensink.audio.AudioPlayer$1@a3c15be с типом увеличения GAIN_TRANSIENT привел к REQUEST_GRANTED
10-29 04:25:28.330 7171 7171 I CAR.AUDIO.KS.AudioPlayer: MediaPlayer получил фокус для использования 1
10-29 04:25:28.330 7171 7171 I CAR.AUDIO.KS.AudioPlayer: doStart audio
10-29 04:25:28.339 7171 7171 D CAR.AUDIO.KS.AudioPlayer: doStart предпочтительный адрес устройства: Динамик
10-29 04:25:28.343 501 7230 D CCodecConfig: прочитанный медиа-тип: audio/mpeg
10-29 04:25:28.345 501 7230 D CCodecConfig: строковый input.media-type.value = "audio/mpeg"
10-29 04:25:28.345 501 7230 D CCodecConfig: строковый output.media-type.value = "audio/raw"
10-29 04:25:28.347 501 7230 D CCodec : строка mime = "audio/mpeg"
10-29 04:25:28.347 501 7230 D CCodec : строка mime = "audio/raw"
10-29 04:25:28.356 2628 2628 W AudioFlinger: createTrack_l(): несоответствие между запрашиваемыми флагами (00000008) и выходными флагами (00000002)
10-29 04:25:28.356 2628 2628 D AudioFlinger: Клиент установил notificationFrames на 11224 для frameCount 22448
10-29 04:25:28.356 2628 2628 D AF::TrackHandle: OpPlayAudio: track:58 usage:1 не изглушён
10-29 04:25:28.358 2628 2661 E AudioFlinger: нет блокировки активации для обновления, но система готова!
10-29 04:25:28.359 2627 2641 E [email protected]: device/generic/goldfish/audio/stream_out.cpp:updateSourceMetadata:377 ошибка: Result::NOT_SUPPORTED
10-29 04:25:28.359 501 7228 D AudioTrack: getTimestamp_l(9): время простоя устройства исправлено с использованием текущего времени 9964178094107
10-29 04:25:28.382 2627 2641 E [email protected]: device/generic/goldfish/audio/stream_out.cpp:updateSourceMetadata:377 ошибка: Result::NOT_SUPPORTED
10-29 04:25:28.382 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(110)
10-29 04:25:28.641 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:28.900 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(230)
10-29 04:25:29.147 501 7228 W NuPlayerRenderer: AudioSink завис. ВЫ ПОДКЛЮЧЕНЫ К ЗВУКОВОМУ ВЫХОДУ? Переключение на системные часы.
10-29 04:25:29.159 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:29.418 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:29.675 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:29.933 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:30.214 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(253)
10-29 04:25:30.472 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:30.729 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:30.987 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:31.245 2628 2661 D AudioFlinger: mixer(0xb40000700bf62a60) конец ограничения: время ограничения(231)
10-29 04:25:31.342 7171 7171 I CAR.AUDIO.KS.AudioPlayer: остановка
10-29 04:25:31.347 2627 2641 E [email protected]: device/generic/goldfish/audio/stream_out.cpp:updateSourceMetadata:377 ошибка: Result::NOT_SUPPORTED
10-29 04:25:31.356 584 1366 I MediaFocusControl: abandonAudioFocus() от uid/pid 1010028/7171 clientId=android.media.AudioManager@86fa479com.google.android.car.kitchensink.audio.AudioPlayer$1@a3c15be
10-29 04:25:31.357 1422 1422 W CAR.AUDIO: getZoneIdForUid userId 10 не имеет зоны. Устанавливаем по умолчанию PRIMARY_AUDIO_ZONE:0
10-29 04:25:31.357 1422 1422 I CarAudioFocus: onAudioFocusAbandon для клиента android.media.AudioManager@86fa479com.google.android.car.kitchensink.audio.AudioPlayer$1@a3c15be
10-29 04:25:31.357 1422 1422 I CarAudioFocus: removeFocusEntry android.media.AudioManager@86fa479com.google.android.car.kitchensink.audio.AudioPlayer$1@a3c15be
В чём именно проблема и как я могу узнать больше?
Я чувствую себя очень застрявшим.. Спасибо!
Ответ или решение
Проблема отсутствия звука в Android Automotive на Cuttlefish AVD может быть связана с несколькими аспектами, судя по предоставленным логам. Давайте разберем возможные причины и подходы для их устранения.
1. Анализ логов и выявление проблемы
Логи, которые вы предоставили, показывают несколько ключевых моментов, на которые стоит обратить внимание:
-
Получение фокуса на аудио: Логи показывают, что приложение (в данном случае
AudioPlayer
) запрашивает фокус и получает его (AUDIOFOCUS_REQUEST_GRANTED
). Это значит, что система позволяет приложению воспроизводить звук. -
Определение зоны:
getZoneIdForUid userId 10 does not have a zone
— это предупреждение указывает на то, что для указанного пользователя не была определена зона аудио. Это может привести к проблемам с маршрутизацией звука. -
Ошибка с метаданными источника:
device/generic/goldfish/audio/stream_out.cpp:updateSourceMetadata:377 failure: Result::NOT_SUPPORTED
указывает на то, что устройство не поддерживает обновление метаданных источника. Это также может быть связано с тем, что эмулятор не настроен для обработки звука должным образом. -
Проблемы с выводом аудио:
AudioSink stuck. ARE YOU CONNECTED TO AUDIO OUT?
может означать, что в эмуляторе нет корректно настроенного выходного аудиоустройства. Это один из наиболее вероятных источников проблемы.
2. Возможные решения
Примечания к решению проблемы:
Проверка конфигурации эмулятора
Убедитесь, что параметры аудио настроены в эмуляторе Cuttlefish правильно:
- Используйте
-audio
ключ для запуска эмулятора и убедитесь, что музыка или аудио воспроизводится на уровне системы.
Настройка виртуального звукового устройства
Поскольку Cuttlefish является виртуальным устройством, его важно правильно настроить:
- Проверьте, что в конфигурации AVD поддерживается вывод аудио.
- Возможно, стоит попробовать разные настройки для
audio
в конфигурации AVD.
Установка дополнительных библиотек
Если вы используете AVD на AWS, убедитесь, что у вас установлены все необходимые зависимости и библиотеки, которые могут понадобиться для обработки звука.
Обновление AVD
Проверьте, нет ли более новых версий софта или обновлений для SDK, которые могут исправить проблемы с аудио.
3. Рекомендации по дальнейшей диагностике
Чтобы углубить диагностику проблемы, выполняйте следующие шаги:
-
Отладка через ADB: Используйте команды ADB (Android Debug Bridge) для проверки состояния аудиосистемы на эмуляторе. Это может помочь выявить другие предупреждения или ошибки.
-
Запуск других аудио-приложений: Проверьте, есть ли звук в других приложениях на эмуляторе. Это поможет определить, остается ли проблема в рамках вашего приложения или связано с настройками AVD.
-
Логирование событий AudioManager: Расширьте логирование для
AudioManager
, чтобы понимать, как происходит запрос и предоставление аудио фокуса в системе.
Заключение
Отсутствие звука в Cuttlefish AVD может быть вызвано настройками виртуального устройства, конфликтами в аудио фокусе или отсутствием корректной маршрутизации звука. Следуйте рекомендациям, приведенным выше, чтобы устранить возникшие проблемы. После выполнения всех предложенных шагов, пожалуйста, обратитесь за дополнительной помощью, если проблема не будет решена.