使用相机没有表面视图或纹理审查



我一直在试图弄清楚是否有一种方法可以使用相机拍摄视频/照片而不定义表面视图或文本审查。我找到了这个链接:使用没有surface View的Android相机

我在我的nexus平板电脑上使用了这个技巧,但是没有运气!此外,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:

是否可以在本机代码中执行?捕捉视频/使用相机没有GUI元素(surfaceview/textureview)使用OpenCV?我看了这个链接:http://docs.opencv.org/trunk/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#application-development-with-static-initialization。但是,它们也显示了在主布局xml文件中定义了一些相机视图元素的示例代码。

我可以这样定义SurfaceTexture对象:

SurfaceTexture surfaceTexture = new SurfaceTexture(10);
<camera object>.setPreviewTexture(surfaceTexture);

在这里,我不需要在应用程序中定义GUI元素。

这是周期性的。

这取决于你所瞄准的API级别。API 11 (Honeycomb)引入了SurfaceTexture类,它将传入的帧定向到一个GLES纹理而不是一个可见窗口。你可以在CameraToMpegTest中看到它,它可以"无头"录制视频到。mp4(需要API 18用于所有视频内容)。

如果你的目标是2.3。

相关内容

  • 没有找到相关文章

最新更新