Ну, это потому, что буферы предварительного просмотра, которые вы получаете в обратном вызове, являются только копией буферов предварительного просмотра, поэтому любые сделанные вами изменения не будут отображаться, так как полученный вами буфер является вашей копией.Упоминается в Android SDK здесь
Я не уверен, как это сделать, но я думал о том, как это сделать, и вот, что я думаю, должно быть сделано -
- Регистрация для буферов предварительного просмотра
- Отключение отображения предварительного просмотра по умолчанию
- Если вы не установите отображение предварительного просмотра на поверхность, то вы не должны получать никакого отображения(но я не уверен, что это будет работать - прочитал это на каком-то форуме и не смог вспомнить источник)но я не мог думать ни о чем другом ..)
- Уменьшите частоту кадров предварительного просмотра, чтобы мы не были перегружены буферами
- Теперь для отображения нашегобуферы, мы можем либо использовать функцию рисования растрового изображения по умолчанию, либо использовать opengl для отображения буферов.Но я до сих пор не использовал ни того, ни другого, даже не знаю, возможно ли это, какие-либо мысли о том же?
ОБНОВЛЕНИЕ
Повторное рассмотрение документации SDK Я нашел этоAPI - setPreviewTexture
этот API позволяет нам - "захватывать кадры из потока изображений в виде текстуры OpenGL ES".Когда у вас есть изображения с примененной текстурой, вы можете использовать OpenGL для отображения ваших кадров.(Посмотрите ответ @Stephan о том, как это сделать.)
ПРИМЕЧАНИЕ. - setPreviewTexture
доступно начиная с уровня API 11 и выше! SDK Link