В соответствии с документами андроидной камеры со стороны Java SDK кадры предварительного просмотра камеры должны быть снабжены (видимой и активной) поверхностью для рисования, чтобы получить доступ к данным кадра. Я связал несколько вещей, с которыми я столкнулся здесь (я новичок, у которого есть 2 гиперссылки), но я просмотрел множество документации по различным вещам, прежде чем завершать свой собственный вопрос здесь, на SO.
Мои проблемы:
a) Я явно не хочу нарисовать предварительный просмотр камеры на экране, я просто хочу, чтобы данные байта (которые я могу получить отсюда) прямо из буфера камеры, если это возможно.
b) Да, я видел это: Съемка с камеры без предварительного просмотра.
Однако это диктует, что приложения, использующие эту библиотеку, должны вставлять это (по-видимому) произвольное представление в свой макет приложения, который должен быть видимым все время (они не могут переключать макеты, изменять видимость родительских контейнеров или использовать субактивность) в течение жизненного цикла приложения.
Фактически, мои потребности похожи на этот плакат, за исключением того, что я хочу непрерывный поток данных предварительного просмотра в режиме реального времени, а не захват, сохраненный для изображения на диске, Следовательно, PictureCallback
работает для него вместе с вызовом myCamera.takePicture
. По понятным причинам, запись непрерывных захватов на диск не является решением для меня, поэтому это не будет работать в моем случае. myCamera.takePicture
также намного медленнее, чем получение кадров предварительного просмотра.
c) Я начал работать с NDK и получил очень хорошее представление об этом. Однако, согласно этот доступ к данным камеры через native просто не поддерживается или не рекомендуется, а также огромная стычка за совместимость с устройством.
Если это устарело, и есть твердые маршруты NDK для получения данных с камер с Android-устройств, я не смог их найти, поэтому, если бы вы могли указать на них, это было бы здорово.
d) Я хочу сделать эту библиотеку доступной из таких инструментов, как Unity (в виде плагина единства), для чего я хочу просто скомпилировать ее в JAR (или .so для native) и ожидать ее для работы с приложениями Android, которые импортируют библиотеку таким образом, чтобы они могли использовать камеру без конкретных конфигураций интерфейса/макета, необходимых разработчику приложения.
Контекст:
Я хочу создать библиотеку обработки видения для использования в приложениях для Android и не хочу ограничивать приложения, использующие библиотеку, для использования определенных макетов приложений и нарисовать определенные виды на экране, чтобы используйте результаты обработки зрения - для очень простого примера, если приложение хочет использовать мою библиотеку, чтобы получить средний цвет того, что видит камера, и хочет покрасить изображение на экране этого цвета.
Независимо от предложений, которые я могу получить по любому из пунктов, которые у меня есть, будет очень полезно. Большое спасибо за ваше время!