Я пытался выяснить, есть ли способ использовать камеру для съемки видео или изображений без определения вида поверхности или текстуры. Я нашел эту ссылку: Использовать Android-камеру без просмотра поверхности
Я использовал этот трюк с текстурой на моем планшете нексуса, но не повезло! Кроме того, http://handycodeworks.com/?p=19 говорит, что этот подход не работает на всех устройствах.
Кто-нибудь знает, есть ли способ сделать это вообще? или его просто что-то, что фреймворк андроида не поддерживает вообще, и GUI должен иметь некоторый элемент поверхности/текстуры в макете? Тогда единственный вариант - просто манипулировать макетом, чтобы он не отображался на экране в соответствии с требованиями приложения.
ИЗМЕНИТЬ 1: Как поясняется в приведенной выше ссылке http://handycodeworks.com/?p=19, я попробовал код ниже:
public class CameraCapture {
// I pass the getApplicationContext() from the main activity.
public void startCameraCapture(Context contx) {
SurfaceView sv = new SurfaceView(contx);
mCamera = Camera.open();
mCamera.setPreviewDisplay(sv.getHolder());
mCamera.setPreviewCallback(new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Log.v("TAG", "on preview frame called");
}
Thread.sleep(1000);
mCamera.startPreview();
}
Однако onPreviewFrame() никогда не вызывается. Я что-то пропустил?
ИЗМЕНИТЬ 2:
Можно ли это сделать в собственном коде? Захват видео/использование камеры без элемента GUI (обзор поверхности/текстуры) с использованием OpenCV? Я посмотрел на эту ссылку: http://docs.opencv.org/trunk/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#application-development-with-static-initialization. Тем не менее, они также показывают пример кода с некоторым элементом просмотра камеры, определенным в основном XML файле макета.