Android, DLNA Проекция на Smart TV

Любая идея, как сделать DLNA проекцию фотографий на любые умные телевизоры через приложение для Android?

1 ответ

Решение

Вам понадобятся два компонента:

  • DNNA-совместимый стек upnp (такой как цепляние)
  • очень простой встроенный веб-сервер (я рекомендую написать это самостоятельно, вскоре вы поймете, почему)

Шаги идут примерно так, в значительной степени независимо от того, какова ваша реализация стека:

  1. запустите обнаружение устройств внутри стека upnp и подождите немного, чтобы увидеть, какие отображаемые устройства можно найти в сети
  2. проверьте, какие из устройств способны воспроизводить изображения (из возможностей устройства), и позвольте пользователю выбрать одно из этих
  3. с выбранного устройства, воспользуйтесь транспортным сервисом и сервисом оказания
  4. используя транспортную службу, вызовите setTransportUri с URI с вашим собственным выбором. только IP-адрес должен указывать на ваше собственное устройство, но следующий путь может быть любым.
  5. удаленный рендер будет выдавать HTTP-запрос GET для указанного вами URI.
  6. HTTP-запрос GET автоматически перенаправляется на ваш собственный мини-веб-сервер, который теперь должен прослушивать указанный вами порт.
  7. Теперь убедитесь, что входящий HTTP GET URI совпадает с URI, который вы указали в setTransportURI. По соображениям безопасности вы должны игнорировать все другие HTTP GET URI и все другие типы HTTP-запросов. Если он совпадает, верните содержимое файла в средство визуализации. Здесь вы можете использовать библиотеку классов по своему усмотрению.
  8. Теперь вы ждете завершения setTransportURI. Это можно сделать, наблюдая за атрибутом состояния transportUri транспортной службы.
  9. теперь вы вызываете play в сервисе рендеринга (и ждете, пока атрибут состояния не начнет воспроизводиться, если вы хотите быть уверенным, что произошел переход состояния)
  10. вот и все, изображение показывается на рендере!
Другие вопросы по тегам