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();