【问题标题】:Flash camera not working in nexus S and nexus 5, with android 4.4闪光灯相机在 android 4.4 的 nexus S 和 nexus 5 中不起作用
【发布时间】:2013-12-17 13:08:53
【问题描述】:

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

【问题讨论】:

标签: android flash service camera


【解决方案1】:

我的解决方案是: 在我的活动中,实现一个 SurfaceHolder.Callback 和 setPreviewDisplay for camera 是一个 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) {

}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多