2014-10-16 39 views
0

我有非常基本的相机初始化代码,让我预览宏碁A500(Android 3.1)和Ainol Novo 9(Android 4.1.1)。我刚刚购买了Nexus 7 2013,在其上安装了Android L预览版,并发现与相机相关的代码不再有效。相机已成功初始化,不会抛出任何异常,包括呼叫startPReview()。但是,onPreviewFrame根本没有被调用。可能是什么原因?Nexus 7 2013与Android L相机问题:onPreviewFrame不叫

难道是因为我只有一个不显示在任何地方的虚拟SurfaceView?

private SurfaceView m_surfaceView = new SurfaceView(CameraTestApplication.instance().getApplicationContext()); 
private SurfaceHolder m_surfaceHolder = m_surfaceView.getHolder(); 

void initCamera() 
{ 
    m_openedCamera = Camera.open(0); 
    ... 
    m_openedCamera.setPreviewDisplay(m_surfaceHolder); 
    m_openedCamera.setPreviewCallback(this); 
    openedCamera.startPreview(); 
    ... 
} 
+0

Android L尚未正式发布是吗?我认为在官方发布之前,你通常不会依赖它的功能。我知道在上一个版本和蓝牙之前,我遇到过这样的问题。 – 2014-10-16 13:52:04

+0

@JaySnayder:那是一种可能性。 – 2014-10-16 13:52:55

+0

@JaySnayder:刚试过标准的Android相机应用程序。有用。 – 2014-10-16 14:02:05

回答

0

修复了这个问题。事实上,这与我的人工SurfaceView有关 - 我做的不够好。然而,这个作品:

private SurfaceTexture m_previewTexture = new SurfaceTexture(8743); 


void initCamera() 
{ 
    m_openedCamera = Camera.open(0); 
    ... 
    m_openedCamera.setPreviewTexture(m_previewTexture); 
    m_openedCamera.setPreviewCallback(this); 
    openedCamera.startPreview(); 
    ... 
}