相机打开时 NFC 不可用

NFC unavailable when camera is open

这是我的 Torch 应用:

final Camera.Parameters p;
Camera camera=Camera.open();

camera.setPreviewTexture(new SurfaceTexture(0));
p = camera.getParameters();

p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();

当我的应用程序 运行 时,某些设备无法检测到 NFC 标签。我特别注意到 Nexus 5X 会发生这种情况。

当相机处于 运行 时,某些设备似乎无法检测到 NFC。

这个问题可以通过编程方式解决吗?

很遗憾,没有,但我真诚地希望 Nexus 5X 是您唯一会遇到这种情况的设备。

原因是在 5X 开发周期的后期,人们发现 NFC 控制器轮询在相机传感器中引入了噪声。当时唯一可行的解​​决方法是在打开相机时关闭 NFC :(

要解决此问题,您可以将这段小代码添加到您的 onStop,在使用相机的 activity 中。如果需要NFC,在某些设备中需要释放摄像头。

@Override
protected void onStop() {
    super.onStop();
    try
    {
        android.hardware.Camera mCamera = android.hardware.Camera.open();
        mCamera.release();
        mCamera = null;
    }
    catch(RuntimeException e)
    {
        Log.e(TAG, "init_camera: " + e);
        return;
    }
}