CameraX:setTargetResolution() 在某些设备上不起作用
CameraX: setTargetResolution() does not work on some devices
下面的代码(在我的旧三星 S4 上运行良好)在我的三星 A7 上不起作用:
val imageAnalysis = ImageAnalysis.Builder()
.setTargetResolution(Size(176, 144))
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
imageAnalysis.setAnalyzer(cameraExecutor, { image ->
Log.i("LOG", "${image.width}x${image.height}")
image.close()
})
val cameraProvider = cameraProviderList.get()
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(mainActivity, CameraSelector.DEFAULT_BACK_CAMERA, imageAnalysis)
确实,它没有返回 176x144 的分辨率,而是 returns 720x720
的分辨率
分辨率 176x144 是此设备支持的分辨率之一(从 方法获得):
3264x2448
3264x1836
2160x2160
1920x1440
1920x1080
1440x1440
1440x1080
1280x720
1088x1088
1056x704
1024x768
960x720
800x450
720x720
720x480
640x480
480x320
352x288
320x240
256x144
**176x144**
如果我没有设置目标分辨率,返回的分辨率是640x480(与documentation一致)。
你看到任何可以解释这个问题的东西吗?
正在替换
.setTargetResolution(Size(176, 144))
和
.setTargetResolution(Size(144, 176))
解决了问题。
下面的代码(在我的旧三星 S4 上运行良好)在我的三星 A7 上不起作用:
val imageAnalysis = ImageAnalysis.Builder()
.setTargetResolution(Size(176, 144))
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
imageAnalysis.setAnalyzer(cameraExecutor, { image ->
Log.i("LOG", "${image.width}x${image.height}")
image.close()
})
val cameraProvider = cameraProviderList.get()
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(mainActivity, CameraSelector.DEFAULT_BACK_CAMERA, imageAnalysis)
确实,它没有返回 176x144 的分辨率,而是 returns 720x720
的分辨率分辨率 176x144 是此设备支持的分辨率之一(从
3264x2448
3264x1836
2160x2160
1920x1440
1920x1080
1440x1440
1440x1080
1280x720
1088x1088
1056x704
1024x768
960x720
800x450
720x720
720x480
640x480
480x320
352x288
320x240
256x144
**176x144**
如果我没有设置目标分辨率,返回的分辨率是640x480(与documentation一致)。
你看到任何可以解释这个问题的东西吗?
正在替换
.setTargetResolution(Size(176, 144))
和
.setTargetResolution(Size(144, 176))
解决了问题。