在Nexus S和Nexus 5设备上启动相机时遇到问题。
在控制台中:
E/SecCamera? ERR(int android::SecCamera::getPreview()):Start Camera Device Reset
E/CameraHardwareSec? ERR(int android::CameraHardwareSec::previewThread()):Fail on SecCamera- >getPreview()
E/SecCamera? initCamera: m_cam_fd(42), m_jpeg_fd(0)
E/SecCamera? initCamera: m_cam_fd2(43)
E/CameraHardwareSec? preview window is NULL!
使用以下
Variable declaration:
public Camera cam;
public android.hardware.Camera.Parameters p;
Code:
if(cam==null){
cam = Camera.open();
p = cam.getParameters();
p.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
}
else{
p.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
cam.release();
cam = null;
}
This kind of service understands and implements SensorEventListener.
这适用于下面带有软件4.4的多个设备。我该怎么办?请。
答案 0 :(得分:2)
我的解决方案是: 在我的活动中,为相机实现SurfaceHolder.Callback和setPreviewDisplay是一个SurfaceHolder。在布局中添加SurfaceView。 我的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.surfaceView = ((SurfaceView) findViewById(R.id.surfaceview));
this.surfaceHolder = this.surfaceView.getHolder();
this.surfaceHolder.addCallback(this);
this.surfaceHolder.setType(3);
}
然后:
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
this.camera.setPreviewDisplay(holder);
return;
} catch (IOException localIOException) {
localIOException.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
希望对你有用。
对不起,如果我的英语不正确。