【发布时间】:2021-01-12 23:15:38
【问题描述】:
我正在使用 Camera2 API,我正在尝试检索最大的可用图像尺寸。我想使用 Collections.max。我试过用Java写这段代码,效果很好。
JAVA Ex-
CameraCharacteristics characteristics
= manager.getCameraCharacteristics(cameraId);
// We don't use a front facing camera in this sample.
Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);
if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) {
continue;
}
StreamConfigurationMap map = characteristics.get(
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
if (map == null) {
continue;
}
// For still image captures, we use the largest available size.
Size largest = Collections.max(
Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)),
new CompareSizesByArea());
但是,Kotlin 等效项在 Collections.max 操作方面存在问题。
Kotlin Ex-
val characteristics = manager.getCameraCharacteristics(cameraId)
val map = characteristics.get(
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP
) ?: continue
// for still image captures, we use the largest available size
val largest = Collections.max(
listOf(map.getOutputSizes(ImageFormat.JPEG)),
CompareSizesByArea()
)
错误说,
没有以下替换((MutableCollection
!>..Collection !>?),Comparator !>!) ((MutableCollection ..Collection ?),Comparator !) 可以应用于 (List !>,CompareSizesByArea)
我不确定如何更正我的代码。我可以在其他情况下使用 Collections.max,例如
val test = listOf(1,2,3,4,3,2,1)
Collections.max(test)
问题是输出尺寸图??
【问题讨论】:
-
你试过 .maxBy 吗?
-
是的,供将来参考,
maxBy是一个东西,我总是需要提醒自己“为什么max不处理这个Comparable??”十分钟
标签: kotlin collections android-camera android-camera2