首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camera.setPreviewDisplay上的异常(SurfaceHolder)

Camera.setPreviewDisplay上的异常(SurfaceHolder)
EN

Stack Overflow用户
提问于 2013-03-18 11:05:31
回答 1查看 1.9K关注 0票数 0

这里是Android编程的新手。

我环顾了一下周围,发现这是一个常见的问题,但我真的看不到一个简单的解决方案……我尝试在Nexus7(我已经尝试过AVD和物理设备)上运行以下代码,但没有任何运气。这似乎是:

代码语言:javascript
复制
camera.setPreviewDisplay(SurfaceHolder);

但我可能错了。下面是当前的代码:

代码语言:javascript
复制
public class MainActivity extends Activity implements SurfaceHolder.Callback{

 Camera camera;
 SurfaceView surfaceView;
 SurfaceHolder surfaceHolder;
 boolean previewing = false;;

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.cameralayout);


       getWindow().setFormat(PixelFormat.UNKNOWN);
       surfaceView = (SurfaceView)findViewById(R.id.surfaceview);
       surfaceHolder = surfaceView.getHolder();
       surfaceHolder.addCallback(this);

   }

   public void onClick() {
    // TODO Auto-generated method stub
    if(!previewing){
     camera = Camera.open();
     if (camera != null){
      try {
       camera.setPreviewDisplay(surfaceHolder);
       camera.startPreview();
       previewing = true;
      } catch (IOException e) {
       e.printStackTrace();
      }

    }
    }
   }

有什么想法吗?谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-18 11:36:56

来自android documentation关于Camera.open()

创建一个新的Camera对象来访问设备上的第一个后置摄像头。如果设备没有后置摄像头,则返回null。

它只给你一个后置摄像头的入口。

我尝试在Nexus7上运行以下代码

Camera.open()返回null,因为Nexus7没有后置摄像头,只有前置摄像头。

你可以试试这个方法。

代码语言:javascript
复制
public Camera getCamera()
{

    for(int i = 0; i < Camera.getNumberOfCameras(); i++)
        return Camera.open(i);

    return null;
}

要申请,

代码语言:javascript
复制
camera = getCamera();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15469150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档