闪光灯相机不工作在nexus S和nexus 5,与安卓4.4



我在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的多个设备。我该怎么办?请

我的解决方案是:在我的活动中,实现一个SurfaceHolder。相机的回调和setPreviewDisplay就是一个SuraceHolder。在布局中添加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) {
}

希望对你有用。对不起,如果我的英语不正确。

最新更新