Беспроводной дисплей для Android
Многообразие функций и возможностей
О стандарте WiDi мы уже рассказывали достаточно: следили за новостями, рассматривали с точки зрения разработчика и даже тестировали живой серийный адаптер. Теперь для начала опишем в нескольких словах технологию Miracast.
Общая коцепция Miracast
Miracast представляет собой технологию передачи мультимедийной информации (аудио и видео) посредством WiFi. В качестве транспорта в нем используется стандарт WiFi Direct, позволяющий двум устройствам обмениваться данными друг с другом без помощи дополнительной сетевой инфраструктуры. Попросту говоря, Miracast можно представить, как беспроводной HDMI.
Miracast еще довольно молод: официальная сертификация Miracast устройств альянсом WiFi Alliance началась чуть более года назад. Для передачи видео используется кодек Н.264, звук может быть двух- или пятиканальным. Miracast является открытым стандартом, не принадлежащим какой-либо компании; его привлекательность еще более повысилась после того, как в прошлом году его поддержка была добавлена в ОС Android 4.2. Замечу сразу, что в Android 4.2 на конкретном устройстве не гарантируется наличие Miracast – это надо выяснять дополнительно. Полный список сертифицированных устройств- как передатчиков, так и приемников можно посмотреть на сайте WiFi Alliance.
Архитектура Miracast (со стороны передатчика)
Совместимость Miracast и WiDi версии 3.5 означает общность базового функционала в устройствах обоих стандартов. Какие дополнительные плюшки есть в WiDi, но отсутствуют в Miracast? На сей день их три:
- обязательная поддержка HD видео вплоть до 1080p (хотя стандарт Miracast допускает высокое разрешение, но не обязывает все устройства поддерживать его);
- поддержка системы защиты контента HDCP (High-bandwidth Digital Content Protection);
- наличие двух дополнительных видео режимов – расширенного и многозадачного (о них чуть позже).
Таким образом, можно сказать, что WiDi в настоящее время является функциональным продолжением Miracast.
WiDi поддерживается большинством существующих мобильных платформ Intel (и наверняка будет поддерживаться последующими). Как уже отмечалось в тестировании, технология относится к разряду «однокнопочных», то есть предельно простых для пользователей.
Процесс подключения беспроводного дисплея на примере Samsung Galaxy S4
Ну а теперь пришло время поговорить о режимах. Нативным для WiDi/Miracast является Режим Клонирования – на удаленном дисплее отображается та же картинка, что и на локальном, с тем же разрешением.
Двойной режим также относится к основным; в нем на удаленном дисплее проигрывается контент, а основной служит для управления и вывода служебной информации. Данный режим поддерживается через Android Presentation API.
Расширенный режим имеется только в WiDi (и, соответственно, доступен только для устройств на платформе Intel Atom). В нем видео режим включается автоматически, когда пользователь запускает мультимедийный контент на плеере, использующим Android Media Player framework. Разрешение картинки остается «родным» вплоть до 1080р. При этом локальный рендеринг видео может отключаться для сокращения энергопотребления.
Наконец, самый продвинутый – Многозадачный Режим, при котором видео плеер посылает изображение на удаленный дисплей, а на локальном в это время пользователь делает, что хочет: просматривает интернет, принимает звонки или даже смотрит совсем другое видео, тоже в FullHD разрешении!
Варианты использования режима двух дисплеев:
Режим двух дисплеев подходит не только для просмотра видео. Совершенно несложно набросать список жизненных его применений:
- просмотр интернет на большом экране (смартфон выступает в роли тачпада);
- заполнение форм или набор небольших текстов (смартфон – сенсорная клавиатура);
- игры (смартфон – сенсорный геймпад/джойстик);
- мобильное рабочее место (смарфтон – компьютер, к нему по Bluetooth подключена периферия).
Создаем Android приложение для двух дисплеев
Поддержка второго беспроводного дисплея в Android 4.2 (API Level 17) реализована с помощью с помощью класса Presentation, позволяющего:
- внедрить поддержку второго дисплея в приложения, не заботясь о способе, которым он будет физически подключен;
- работать с MHL, HDMI, Slimport или Miracast совместимыми устройствами;
- осуществлять управление вторым дисплеем независимо от первого.
Presentation является базовым классом и должен быть расширен:
Также необходима ассоциация с классом Display при создании. Presentation наследуется от Dialog, а что касается Dialog, то его жизненный цикл привязан к Activity.
Перед тем, как задействовать Presentation, вам необходимо выбрать дисплей, что может быть сделано двумя способами:
1. MediaRouter API (в API 16) – система сама выберет лучший дисплей за вас
2. Display Manager API (в API 17) – перечень дисплеев.
Добавление MediaRouteButton в приложение:
Как заставить Presentation API работать:
Далее, используя MediaRouter.addCallback, необходимо мониторить:
- onRouteUnselected
- onRouteSelected
- onRoutePresentationDisplayChanged
А внутри активности, которая владеет Presentation:
- onResume
- onPause
API для управления WiFi дисплеями присутствуют внутри Android AOSP, но не являются частью Android framework. Параметры беспроводного дисплея могут быть вызваны через Intentandroid.settings.WIFI_DISPLAY_SETTINGS, но и он также не входит во фреймворк. Некоторые производители используют другие варианты: Samsung – com.samsung.wfd.LAUNCH_WFD_PICKER_DLG, HTC – com.htc.wifidisplay.CONFIGURE_MODE_NORMAL.
Все API, приведенные на рисунке ниже, являются внутренними для Android 4.2/4.3. Они являются частью AOSP и распространяются свободно, однако не входят во фреймворки и работать не обязаны.
В заключение отметим, что тестировать приложения для двух дисплеев можно как на реальном железе, поддерживающем данный функционал, так и на эмуляции, доступной начиная с Android 4.2 в опциях разработчика. Вы можете выбрать разрешение и dpi второго виртуального дисплея, и получите оверлей с его отображением.
При подготовке поста использовались материалы IDF 2013, авторы — Xavier Hallade и Costas Stylianou.
Источник
Android hdmi touch screen
Универсальный тачскрин для ГУ на Android
Автомагнитола и устройство на Android
Обсуждение »
ГУ : Тачскрин для ГУ на Android
— Поиск оригинального или совместимого тачскрина для своего ГУ на Android не увенчалось успехом, поэтому пришлось начать поиски решения даной задачи.
— В результате поиска было обнаружено несколько вариантов универсальных тачскринов, которые могут работать с ГУ по USB.
На этом ресурсе (4pda) не нашлось информации о подобных устройствах, поэтому решил создать тему с описанием универсальных тачскринов для тех пользователей, которые не могут найти для своих ГУ на Android оригинальные тачскрины.
[Полезное в этой теме]
Сообщение отредактировал ES. — 29.08.20, 12:54
Минусы:
— для Андроид драйвера имеются на сайте, но их можно встроить только в ядро (перекомпилировать ядро), что проблематично для большинства пользователей
— если встроить контроллер с тачскрином в ГУ под Андроид, то при сбое калибровки тачскрина будет необходимость разборки ГУ для подключения ноутбука с Windows, для проведения калибровки.
Вариант подключения этого тачскрина под Андроид от ABCh смотреть там: Подключение к Андроид
но у меня на 2-х девайсах такой вариант не запустился.
Сообщение отредактировал PauS — 24.01.18, 12:27
Плюсы:
— малогабаритная плата контроллера тачскрина с разъемом для 4-х проводного резистивного тачскрина
— в Android работа тачскрина в режиме мыши или дигитайзера
— нормальный софт для калибровки тачскрина под Windows по 4-м, 9-ти и 25-ти точкам касания
— плавная отработка касаний контроллером
— документацию и софт можно посмотреть там: http://www.microchip.com/wwwproducts/en/AR1100
Минусы:
— если встроить контроллер с тачскрином в ГУ под Андроид, то при сбое калибровки тачскрина будет необходимость разборки ГУ для подключения ноутбука с Windows, для проведения калибровки.
Сообщение отредактировал PauS — 13.11.17, 20:39
Плюсы:
— На данный контроллер тачскрина имеются исходники для контроллера
— тема по данному контроллеру находится там: http://pccar.ru/showthread.php?t=18943
Минусы для прошивки с сайта pccar.ru:
— происходит подергивание точки касания тачскрина из-за не совсем корректного алгоритма вычисления точки касания
— калибровка тачскрина проходит из под Windows и соединение с контроллером для калибровки происходит не всегда корректно
— при подключении к винде требует драйвер
Моя модификация прошивки для этого контроллера исправляющая некоторые минусы оригинальной прошивки:
Из-за этих минусов решил модифицировать прошивку:
— на светодиод «1» (см.фото) выведена индикация касания тача (есть касание — горит)
— удалил из прошивки весь код связанный с виртуальным портом, который нужен был для
калибровки из под винды, теперь винда драйвер не просит
— дописал код калибровки в прошивку. Вначале сделал калибровку по нажатию кнопки
на плате контроллера, но потом подумал и пришел к выводу, что это будет не очень
удобно, т.к. будет необходимость разбирать ГУ, чтобы нажимать кнопку для калиброки.
поэтому сделал без дополнительной кнопки.
Прошивки на Pro Micro только на 16 МГц :
Прошивка для Android: HID_Resistive_A_TouchController.zip ( 439.06 КБ )
Прошивка для Windows: TouchController_HID_Resistive_Windows.rar ( 400.79 КБ )
вот выкладываю получившуюся прошивку и кое что сопутствующее.
в архиве:
— TouchController_HID_Resistive_A.hex — моя прошивка контроллера для работы под Android
— 800_480.jpg — файл с расположением точек калибровки
— TC_REZ_01.jpg — внешний вид на чем проводилось тестирование
— Boot32u4.zip — архив с программатором для платы контроллера
Калибровка получилась может и не очень, но по мне нормально.
Калибровка тачскрина осуществляется по двум точкам расположенным в левом верхнем
и в правом нижнем углах смотри 800_480.jpg. Точки калибровки располагаются на
расстоянии 10% от длины и высоты (соответственно) дисплея. Сдвинуть точки
калибровки на 10% пришлось из-за конструкции тачскрина. мой в углах не работает.
Для первой калибровки, мне кажется, лучше сделать шаблон в размер вашего дисплея
из прозрачной пленки (кальки) с нарисованными двумя точками для калибровки.
Калибровка:
1. Наложить шаблон калибровки на экран дисплея (вывести на весь экран в Андроиде
картинку калибровки например 800_480.jpg).
2. Нажать и удерживать стилусом или другим предметом в любую точку экрана с
тачскрином. Светодиод 1 на плате контроллера (TC_REZ_01.jpg) будет постоянно светится.
3. Контролировать светодиод 2 на плате контроллера, примерно через 13 сек. светодиод 2
мигнет 1 раз, после этого отпустить стилус.
4. Нажать стилусом в точку 1 (левый верхний угол) и удерживать пару сек. пока не мигнет
светодиод 2, после этого отпустить стилус.
5. Нажать стилусом в точку 2 (правый нижний угол) и удерживать пару сек. пока не мигнет
светодиод 2, после этого отпустить стилус.
6. Нажать стилусом в любую точку экрана на пару сек.
Калибровка закончена, проверяйте работу тачскрина.
Контроль светодиодов в принципе требуется для определения правильности работы калибровки
и определения времени удержания стилуса во время калибровки, чтобы в последствии проводить
калибровку просто по времени.
Сообщение отредактировал PauS — 11.09.18, 09:37
4. Емкостной тачскрин. Коммерческий проект: Контроллер YAM_TOUCH_I2C_SIMPLE
предназначен для подключения по USB емкостных тачей со встроенным I2C контроллером от:
— FocalTech FT5206/FT5302/FT5306/FT5406/FT5606
— GOODIX GT801/GT811/GT911/GT927x/GT928
— Synaptics S7300B
— VTL CT363
— Atmel MXT1386
Источник