Code: Select all
androidx.camera
Code: Select all
@OptIn(ExperimentalGetImage::class)
private fun startCamera(deviceSize: Pair) {
val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
cameraProviderFuture.addListener({
val cameraProvider = cameraProviderFuture.get()
val preview = Preview.Builder().build().also {
it.surfaceProvider = PreviewView(this).surfaceProvider
}
val size = Size(deviceSize.first, deviceSize.second)
val strategy = ResolutionStrategy(deviceSize, 2)
val rs = ResolutionSelector.Builder().setResolutionStrategy(strategy)
val imageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.setResolutionSelector(rs.build())
.build()
imageAnalysis.setAnalyzer(cameraExecutor) { imageProxy ->
val rotationDegrees = imageProxy.imageInfo.rotationDegrees
val mediaImage = imageProxy.image
if (mediaImage != null) {
val inputImage = InputImage.fromMediaImage(mediaImage, rotationDegrees)
detectFaces(inputImage) { faces ->
drawRectangles(faces)
imageProxy.close()
}
} else {
imageProxy.close()
}
}
val cameraSelector = CameraSelector.DEFAULT_FRONT_CAMERA
try {
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageAnalysis)
} catch (e: Exception) {
e.printStackTrace()
}
}, ContextCompat.getMainExecutor(this))
}
"Zugriff auf 'constructor(): ResolutionStrategy' nicht möglich: Das ist der Fall privat in 'androidx/camera/core/resolutionselector/ResolutionStrategy'"
Das kommt mir sehr seltsam vor, da auf der Android-Entwickler-Website ein öffentlicher Konstruktor dokumentiert ist und ich das auch kann Navigieren Sie zum selben öffentlichen Konstruktor, indem Sie auf Gehe zu > Deklaration klicken. Wenn ich jedoch mit der Maus über den von strategy verwendeten Konstruktor fahre, zeigt die IDE den privaten Konstruktor an. Warum passiert es und wie kann man es beheben?
Bearbeiten: Ich habe AspectRatioStrategy herausgefunden, das ResolutionStrategy sehr ähnlich ist und auch an übergeben werden kann ResolutionSelector, kann in meinem Szenario verwendet werden:
Code: Select all
val asp = AspectRatioStrategy(AspectRatio.RATIO_DEFAULT, 1) // no error