我正在尝试使用发布在 goo.gl/av3tJD 上的以下代码 fragment
val supportsDistortionCorrection = characteristics.get(
CameraCharacteristics.DISTORTION_CORRECTION_AVAILABLE_MODES)?.contains(
CameraMetadata.DISTORTION_CORRECTION_MODE_HIGH_QUALITY) ?: false
我看到代码是用 Kotlin 编写的,我对此知之甚少。 我想将代码转换为 Java。
我正在尝试以下操作:
Boolean hasNoiseReduction = false;
//cc is my previously defined CameraCharacteristics object
if(cc.get(CameraCharacteristics.DISTORTION_CORRECTION_AVAILABLE_MODES).contains("some string"))hasNoiseReduction = true;
方法包含让我失望。我不相信该方法 contains 在 String 类中使用。
需要任何建议
最佳答案
代码中此时的
it.first
指的是上面创建的 Pair
的第一个元素,其中包含 CameraCharacteristics
实例。其上的 get
返回一个 IntArray
(Java 术语中的 int[]
),以及 contains
Kotlin 标准库中的方法检查给定常量是否在该数组中。
val cameraCharacteristics: CameraCharacteristics = it.first
val capabilities: IntArray = cameraCharacteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES)!!
capabilities.contains(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA)
您可以在 Java 中检查这一点,例如,循环遍历数组元素并查看是否找到该值。一个原始的实现:
CameraCharacteristics cameraCharacteristics = ...;
final int[] capabilities = cameraCharacteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);
boolean contains = false;
for (final int capability : capabilities) {
if (capability == CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA) {
contains = true;
break;
}
}
// use result
关于java - 方法 "contains"的 Kotlin 逻辑转换为 Java 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54501796/