代码之家  ›  专栏  ›  技术社区  ›  frank b

Camera2 getCameraCharacteristics返回有问题的值

  •  0
  • frank b  · 技术社区  · 6 年前

    我对添加到Camera2Basic示例代码的createcamerapreviewsion函数末尾的代码片段有问题。

    我有以下代码片段将相机特性打印到控制台:

    CameraManager manager = (CameraManager) getContext().getSystemService(Context.CAMERA_SERVICE);
    CameraCharacteristics characteristics = manager.getCameraCharacteristics(mCameraId);
    List<CameraCharacteristics.Key<?>> keys = characteristics.getKeys();
    for (CameraCharacteristics.Key key: keys){
        //Log.i(key.getName(), (String)characteristics.get(key));
        //Log.i("hello", "there");
        System.out.println("Key: " + key + "- " + key.getName() + "; Value: " + characteristics.get(key));
    }
    

    在大多数情况下,它会返回良好的值:

    Key: android.sensor.info.pixelArraySize; Value: 4128x3096
    

    但对于许多值,结果既不合理也不为空,但似乎存在一些编码问题:

    Key: android.control.aeAvailableModes; Value: [I@829b672
    

    我试着测试并省略空值,然后重新转换为字符串。 理想情况下,我需要清晰地打印出完整的值集,或者测试该值是否相关,而不是在列表中获取垃圾值。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Eddy Talvala    6 年前

    这个 CONTROL_AE_AVAILABLE_MODES 条目是整数数组(int[])。如果对其调用toString,则会得到数组的toString()调用的默认Java输出。看见 How do I print my Java object without getting "SomeType@2f92e0f4"? 有关详细信息。

    可以使用数组。而使用toString()来获取您可能想要的输出(我假定为“[1,3,5,3]”),但您必须硬编码要在哪些键上使用它。