Аудиовыход на гарнитуре и громкой связи одновременно

Я пытаюсь создать двойную настройку экрана. Планшет Android (Nexus 10) подключен к другому экрану с помощью HDMI.

When playing movies on the tablet (using VLC or other Apps), it will be displayed on both screens properly.
However, the Audio signal is only transferred via HDMI. Using the SOUNDAbout App we managed to have the Audio output on either headset or HDMI.

Я не вижу функцию одновременного установки аудиовыхода для обоих устройств. Я попытался настроить его с помощью Audio Manager, но он работает только для одного канала.

AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

am.setSpeakerphoneOn(true);
am.setWiredHeadsetOn(true);

Еще одна вещь, которую я заметил, это API-интерфейс setParameters, который затем передает переменные в аудиосистему платформ. Это может быть ALSA, возможно, решение есть?

8
nl ja de

1 ответы

Нет никакого способа сделать это таким образом, чтобы гарантировать, что он будет работать на всех устройствах Android. Проблема здесь в том, что на платформах обычно отсутствует какое-либо устройство со списком HDMI + Speaker или HDMI + Headset (т. Е. Аудиоустройство, которое описывает маршрут низкого уровня для одного выходного потока как для HDMI, так и для другого адресата). Не то, чтобы обязательно были какие-либо аппаратные ограничения, но это просто не тот маршрут, который вы обычно хотели бы использовать, и поэтому он не был добавлен.

Я никогда не сталкивался с платформой, на которой для любого типа потока выбирались как HDMI, так и проводная гарнитура. HDMI-динамик можно выбрать для типов потоков RING и ALARM на некоторых платформах, но если на платформе отсутствует комбо-устройство для реализации этого решения маршрутизации, вы все равно получите только аудио в либо HDMI, либо Громкоговоритель.
Взгляните в этом коде , чтобы понять, что я имею в виду. Это то, что OEM-производители, использующие платформы Qualcomm, в значительной степени основывают свой код на. И то, что делает этот конкретный фрагмент кода, выбирает низкоуровневый маршрут вывода для определенного потока. В вашем случае он увидит, что доступен HDMI (AUX_DIGITAL), поэтому он будет выбирать вариант использования «HDMI» (который соответствует чему-то как это ) и немедленно вернуться.

2
добавлено
Благодарим вас за информацию, но можете ли вы сделать что-то вроде копирования потока данных внутри приложения и отправить его на другое устройство вывода самостоятельно?
добавлено автор Jiří Herník, источник
Вы должны убедиться, что AudioPolicyManager фактически выбирает HDMI + Speaker для используемого типа потока (или, по крайней мере, для типа потока some ). Затем ALSADevice должен выбрать комбо-UCM-устройство (например, что-то вроде SND_USE_CASE_DEV_HDMI_SPEAKER ), и, наконец, вам нужно будет обновить файл UCM (snd_soc_msm_blabla), чтобы добавить фактические настройки (то, что я называю низкоуровневой маршрутизацией ) для вашего нового устройства UCM. .. и, конечно, платформа должна фактически поддерживать это.
добавлено автор Michael, источник
Thx & имеет смысл. Чтобы проверить мое понимание: индивидуальная система Android (скажем, я являюсь OEM-производителем и могу распространять свои собственные версии), может содержать модифицированный ALSADevice.cpp , который затем настроил маршрут для HDMI и Speaker out в то же время. Единственное беспокойство в том, что функция getUCMDevice может возвращать только одно аудиоустройство - или это то, что вы подразумеваете с помощью маршрутов? Поэтому сначала я должен добавить маршрут, а затем вернуть идентификатор маршрута/имя, правильно?
добавлено автор Sebastian Roth, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)