2015-07-23 8 views
0

У меня есть объект Surface в Android, содержащий данные экрана. Из того, что я понимаю, это своего рода дескриптор в буфер кадров/пикселей.Как отправить объект Surface (или некоторое его представление) по сети

Как я могу отправить этот объект (или некоторое его представление) через сеть, скажем, через веб-сервер?

ответ

1

A Поверхность - это пул графических буферов с соответствующей очередью. Он имеет интерфейс «производитель-потребитель», и потребитель может жить в другом процессе - буферы отправляются с помощью Binder IPC. Более подробное объяснение можно найти в документе graphics architecture.

Отправка объекта по сети нецелесообразна без отправки связанных графических данных. Поскольку графические данные будут примерно в миллион раз больше, чем объект (в буквальном смысле, для буферов на уровне дисплея), вы, как правило, захотите сосредоточиться на отправке сжатой формы изображений, а не на передачу объекта с несколькими буферами необработанной графики вокруг ,

Проблема сводится к загрузке изображений PNG или JPEG или для более высоких объемов, возможно, видео MPEG или VNC.

+0

Я действительно хочу только данные буфера. Есть ли способ получить это с помощью Binder IPC? – SasukeIsCool

+0

Binder используется для отправки небольших объемов данных между процессами на одном устройстве, а не для передачи данных по сети. Если у вас не очень быстрое сетевое подключение, вы можете сначала сжать данные, как с точки зрения скорости, так и с использованием графического формата, который распознает веб-сервер. Лучший способ сделать это зависит от того, откуда поступают данные, как вы хотите его передавать и какую минимальную версию Android вы хотите поддерживать. – fadden

+0

Не против взглянуть на [мой новый вопрос] (http://stackoverflow.com/questions/31687259/bitmap-from-imagereader-always-blank-when-trying-to-capture-screen)? Благодаря вашему ответу я понял, что SurfaceView не то, что я хотел, и пошел с другим подходом – SasukeIsCool