Java Android. Запись экрана (скриншот) и ее передача

278
12 ноября 2017, 15:06

Я начинающий в программировании, и мне с одноклассником (оба из 11 класса) нужно сделать проект, который будет чем-то напоминать демонстрацию экрана в скайпе, только на андроиде.

На данный момент я сделал сервер через протокол udp (через datagramsocket and datagrampacket). При первом приеме данных я "инициализирую нового пользователя", то есть присваиваю добавляю нового "клиента" в хеш таблицу с ключом, основаном на IP-адресе и порту клиента. Далее я принимаю от клиентов массив байтов, первый байт которого обозначает id "клиента" (мне пока что хватает 256 клиентов). Далее данные, которые нужно передать. Я, удаляя первый элемент массива, передаю его нужному "клиенту". Если интересно, вот код.

Я хочу узнать, как можно делать запись экрана андроид-устройства в реальном времени, используя Java, и передавать его через datagramsocket. Была идея делать много скриншотов и отправлять их, и я даже нашел, как это сделать, но в этом коде я понимаю только то, что он делает много скриншотов, и знаю, где он записывает эти скриншоты в Bitmap и вместе с этим сохраняет в файлы. Возможно, этот вариант неверный, или есть лучше? К тому же я столкнулся с тем, что я не смог быстро добавлять скриншоты в ImageView, приложение попросту вылетало (по этой же причине я не знаю, как часто делаются скриншоты в единицу времени). Еще мне кажется, что передача каждой картинки может оказаться медленной, также ее сжатие может замедлить программу.

В итоге, вот мои вопросы:

Как делать запись экрана андроид устройства и передавать их через datagramsocket? Оптимально ли делать отдельно каждый скриншот отдельно и передавать их? Если да, то как организовать видеотрансляцию? Как тогда правильно выбирать сжатие картинки, чтоб была наибольшая скорость? Также как передавать картинки, размер которых получился больше 64 кБ? Придется их разделять на несколько отправок, но тогда как понять, что 2 отправки являются одной картинкой, и понять в какой последовательности они были приняты?

P.S. Если нужно больше информации от меня, спрашивайте. Проект сдавать меньше, чем через месяц, поэтому нужно как можно быстрее все сделать, чтоб подготовить доклад и документацию.

READ ALSO
Перенос на виртуальный сервер(Apache Tomcat)

Перенос на виртуальный сервер(Apache Tomcat)

Здравствуйте, недавно столкнулся с проблемой: написал сервер tomcat, но работает он только на локалкеВ этом деле я новичок и хотел спросить,...

312
Аутентификация на платных прокси в java

Аутентификация на платных прокси в java

В python есть простой рабочий код через requests:

351
Java getter для приватных объектов класса

Java getter для приватных объектов класса

Есть задача отображения объекта внешнему классу, например массиваНо без возможности редактирования во внешнем классе Пример геттера

291
ECJ перестал читать первый класс в списке

ECJ перестал читать первый класс в списке

Собираю APK через эмулятор терминала Termux прямо на устройстве Android из-за отсутствия нормального ПКИспользую измененный мной скрипт с https://github

258