这里是Android编程的新手。
我已经浏览过并发现这是一个常见的问题,但我真的没有看到一个简单的修复...我试图在Nexus 7上运行以下代码(已经尝试过AVD和物理设备)没有任何运气。它似乎是:
camera.setPreviewDisplay(SurfaceHolder);
但我可能是错的。这是当前的代码:
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();
}
}
}
}
有什么想法吗?谢谢您的帮助!
来自android documentation关于Camera.open()
创建一个新的Camera对象以访问设备上的第一个后置摄像头。如果设备没有后置摄像头,则返回null。
它只允许您访问后向摄像头。
我试图在Nexus 7上运行以下代码
Camera.open()
返回null
,因为Nexus 7没有后置摄像头,只有前置摄像头。
你可以尝试这种方法
public Camera getCamera()
{
for(int i = 0; i < Camera.getNumberOfCameras(); i++)
return Camera.open(i);
return null;
}
申请,
camera = getCamera();