我一直在尝试找出是否有一种方法可以在不定义表面 View 或纹理 View 的情况下使用相机拍摄视频/图片。我找到了这个链接: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:
是否可以在 native 代码中执行?使用 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 文件中定义的一些相机 View 元素。
最佳答案
我可以通过如下定义 SurfaceTexture 对象来做到这一点:
SurfaceTexture surfaceTexture = new SurfaceTexture(10);
<camera object>.setPreviewTexture(surfaceTexture);
在此,我不需要在应用程序中定义 GUI 元素。
关于android - 使用没有 surfaceview 或 textureview 的相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22462360/