Android, DLNA Проекция на Smart TV
Любая идея, как сделать DLNA проекцию фотографий на любые умные телевизоры через приложение для Android?
1 ответ
Решение
Вам понадобятся два компонента:
- DNNA-совместимый стек upnp (такой как цепляние)
- очень простой встроенный веб-сервер (я рекомендую написать это самостоятельно, вскоре вы поймете, почему)
Шаги идут примерно так, в значительной степени независимо от того, какова ваша реализация стека:
- запустите обнаружение устройств внутри стека upnp и подождите немного, чтобы увидеть, какие отображаемые устройства можно найти в сети
- проверьте, какие из устройств способны воспроизводить изображения (из возможностей устройства), и позвольте пользователю выбрать одно из этих
- с выбранного устройства, воспользуйтесь транспортным сервисом и сервисом оказания
- используя транспортную службу, вызовите setTransportUri с URI с вашим собственным выбором. только IP-адрес должен указывать на ваше собственное устройство, но следующий путь может быть любым.
- удаленный рендер будет выдавать HTTP-запрос GET для указанного вами URI.
- HTTP-запрос GET автоматически перенаправляется на ваш собственный мини-веб-сервер, который теперь должен прослушивать указанный вами порт.
- Теперь убедитесь, что входящий HTTP GET URI совпадает с URI, который вы указали в setTransportURI. По соображениям безопасности вы должны игнорировать все другие HTTP GET URI и все другие типы HTTP-запросов. Если он совпадает, верните содержимое файла в средство визуализации. Здесь вы можете использовать библиотеку классов по своему усмотрению.
- Теперь вы ждете завершения setTransportURI. Это можно сделать, наблюдая за атрибутом состояния transportUri транспортной службы.
- теперь вы вызываете play в сервисе рендеринга (и ждете, пока атрибут состояния не начнет воспроизводиться, если вы хотите быть уверенным, что произошел переход состояния)
- вот и все, изображение показывается на рендере!