Camera2 getCameraCharacteristics 返回有问题的值

Camera2 getCameraCharacteristics Returning Problematic Values

我在 Camera2Basic 示例代码的 createCameraPreviewSession 函数末尾添加的代码片段有问题。

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

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));
}

并且大部分 returns 好的值:

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

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

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

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

CONTROL_AE_AVAILABLE_MODES entry is an integer array (int[]). If you call toString on it, you get the default Java output for an array's toString() call. See 了解详情。

您可以使用 Arrays.toString() 来获取您可能想要的输出(我假设为“[1,3,5,3]”),但是您必须对哪些键进行硬编码使用它。