【问题标题】:my camera do not work on my new device (nullpointerexcepetion) [duplicate]我的相机在我的新设备上不起作用(空指针异常)[重复]
【发布时间】:2017-02-27 13:54:10
【问题描述】:

在我更换设备后,我的相机突然停止工作并扔掉一个

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()'

我曾尝试将我的 catch (RuntimeException ex) 更改为 finaly 但那反而给了我一个

连接相机服务失败”异常

public void surfaceCreated(SurfaceHolder surfaceHolder) {
    String PreviewFPS;
    String Previewsize;
    String Displayor;
    PreviewFPS = setingPreferences.getString("previewfps", "");
    Previewsize = setingPreferences.getString("screensize", "");
    Displayor = setingPreferences.getString("orientation", "");
    String[] size = Previewsize.split(",");
    try {
        camera = Camera.open();
    } catch (RuntimeException ex) {
    }
    Camera.Parameters parameters;
  parameters = camera.getParameters();

    //modificer parameterene
          parameters.setPreviewFrameRate(Integer.parseInt(PreviewFPS));
        parameters.setPreviewSize(Integer.parseInt(size[0]),Integer.parseInt(size[1]));
     camera.setParameters(parameters);
    parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
   camera.setDisplayOrientation(Integer.parseInt(Displayor));
    try {
        camera.setPreviewDisplay(surfaceHolder);
        camera.startPreview();
    } catch (Exception ex) {
    }

}

清单

 <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

设备制造商调查了代码并告诉我原因是它无法同时运行扫描仪和摄像头

嗨,凯文 你能把源代码分享给我吗?因为我们还没有测试它是否可以同时运行相机和扫描仪

我们检查了,扫描仪和相机不能同时打开。 最好的问候,

所以我的解决方法是让我的相机和扫描仪活动在 2 个单独的活动和布局中运行,希望这对其他人有帮助

【问题讨论】:

  • 尝试 { camera = Camera.open(); } catch (RuntimeException ex) { ex.printStackTrace(); } 检查输出日志
  • 它不应该修复错误,它应该显示错误日志
  • 那不是解决方案。它会打印为什么相机没有初始化的日志。由于这里的异常相机仍然为空
  • 您是否为相机添加了权限或运行时权限(>=M)
  • 给我们相机对象定义。显然你没有正确初始化它。

标签: android parameters nullpointerexception android-camera


【解决方案1】:

你需要在 try 中的所有相机代码,如果你真的打印了它们,你应该阅读堆栈跟踪

try {
    camera = Camera.open();
    Camera.Parameters parameters = camera.getParameters();

   ... 
} catch (RuntimeException ex) {
    ex.printStackTrace();
}

// camera remains null if an exception is caught... 

【讨论】:

  • 这是我在堆栈跟踪分析器中看到的唯一内容 System.err: at com.kewin.device.CameraActivity.surfaceCreated(CameraActivity.java:397)camera = Camera.open();
  • 那么我建议阅读 open() 方法的文档,看看它是否说明了为什么会抛出任何异常
  • @KewinBjörkNielsen ... 因为您显然没有创建一个名为camera 的对象,类型为Camera
  • @Kewin 该类已被弃用,所以我不知道您为什么还要使用它。 developer.android.com/reference/android/hardware/Camera.html
  • 我这里有 android.hardware.Camera 相机;
猜你喜欢
  • 2016-12-02
  • 2018-11-03
  • 2023-03-26
  • 2015-01-09
  • 1970-01-01
  • 2014-06-10
  • 2014-02-04
相关资源
最近更新 更多