这里是Android编程的新手。
我环顾了一下周围,发现这是一个常见的问题,但我真的看不到一个简单的解决方案……我尝试在Nexus7(我已经尝试过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();
}
}
}
}
有什么想法吗?谢谢你的帮助!
发布于 2013-03-18 03:36:56
来自android documentation关于Camera.open()
创建一个新的Camera对象来访问设备上的第一个后置摄像头。如果设备没有后置摄像头,则返回null。
它只给你一个后置摄像头的入口。
我尝试在Nexus7上运行以下代码
Camera.open()
返回null
,因为Nexus7没有后置摄像头,只有前置摄像头。
你可以试试这个方法。
public Camera getCamera()
{
for(int i = 0; i < Camera.getNumberOfCameras(); i++)
return Camera.open(i);
return null;
}
要申请,
camera = getCamera();
https://stackoverflow.com/questions/15469150
复制