К сожалению, (если я не знаю о каком-либо другом методе, предоставляемом API), способ сделать это - использовать прямой поток на камеру и манипулировать им, используя своего рода собственный код для изменения потока. Я делал нечто похожее на это раньше, когда работал над Eetracker - поэтому я расскажу вам, как это работает в принципе.
- Открыть поток с помощью NDK (возможно, API, в зависимости от реализаций)
- Изменить байты потока - каждый кадр отправляется как отдельный пакет. Вы должны взять каждый пакет с камеры и изменить его. Вы можете сделать замену цветов, или вы можете перевести. Вы также можете использовать OpenGL, чтобы полностью изменить изображение, добавив такие вещи, как эффекты стекла.
- Свести изображения обратно
- отправьте изображение на контроллер представления для отображения.
Одна вещь, о которой вы должны помнить, - это загрузка и отправка пакетов и изображений, которые происходят примерно за 1/30 секунды для каждого кадра. Поэтому код должен быть чрезвычайно оптимизирован.