我一直在尝试找出是否有一种方法可以使用相机拍摄视频/照片而无需定义SurfaceView或TextureView。我找到了这个链接:Use Android Camera without surface View
我在我的Nexus平板电脑上使用了这个TextureView技巧,但没有成功!此外,http://handycodeworks.com/?p=19说这种方法不适用于所有设备。
是否有人知道是否有任何办法可以完全做到这一点?还是这只是Android框架根本不支持的东西,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:
在本地代码中是否有可能实现?使用OpenCV捕获视频/使用相机而无需GUI元素(surfaceview/textureview)。我看了这个链接:http://docs.opencv.org/trunk/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#application-development-with-static-initialization。但是,他们也展示了一些在主布局xml文件中定义某些相机视图元素的示例代码。