У меня есть приложение для сканирования штрих -кодов, и я столкнулся с проблемой с тех пор, как заменил старую не поддерживаемую библиотеку камер на камерус и Mlkit. Проблема заключается в том, что при сканировании штрих -кодов на Google Pixel 9 телефон продолжает менять линзы, приближаясь к объекту (я предполагаю, что он меняется на широкий объектив). Я попытался повторить эту проблему на устройстве Samsung, которое также имеет автоматическое переключение линз, но проблема там не было. Чтобы решить проблему, я попытался только назначить физическую камеру, чтобы предотвратить автоматическое переключение камеры, но это не решило проблему. Есть ли способ остановить это автоматическое переключение линз?fun startCamera() {
if (camera != null) {
checkForFlashSetting()
}
toggleFlashIcon()
if (isCameraStarted) return
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
cameraProviderFuture.addListener({
// Used to bind the lifecycle of cameras to the lifecycle owner
cameraProvider = cameraProviderFuture.get()
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(viewFinder.surfaceProvider)
}
barcodeAnalyzer = BarcodeAnalyzerMainScreen(barcodeResultListener)
val imageAnalysisUseCase = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.also {
it.setAnalyzer(cameraExecutor, barcodeAnalyzer!!)
}
val cameraProvider = cameraProviderFuture.get()
@OptIn(ExperimentalCamera2Interop::class)
val selectedCameraId = cameraProvider.availableCameraInfos
.map { Camera2CameraInfo.from(it) }
.firstOrNull { camera2Info ->
val focalLengths = camera2Info.getCameraCharacteristic(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS)
val capabilities = camera2Info.getCameraCharacteristic(
CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES
)
var isLogical = true
// multi camera support was added in SDK level 28
if (SDK_INT >= 28) {
isLogical = capabilities?.contains(
CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
) == true
}
val physicalId = camera2Info.getCameraId()
Log.d("CameraDebug", "Camera ID: $physicalId, Focal lengths: ${focalLengths?.joinToString()}, is logical: $isLogical")
val lensFacing = camera2Info.getCameraCharacteristic(CameraCharacteristics.LENS_FACING)
lensFacing == CameraCharacteristics.LENS_FACING_BACK &&
focalLengths?.any { it >= 4.0f } == true && !isLogical
}?.cameraId
@OptIn(ExperimentalCamera2Interop::class)
val cameraSelector = if (selectedCameraId != null) {
CameraSelector.Builder()
.addCameraFilter { cameraInfos ->
cameraInfos.filter { cameraInfo ->
Camera2CameraInfo.from(cameraInfo).cameraId == selectedCameraId
}
}.build()
} else {
// Fallback to default back camera if filtering fails
CameraSelector.DEFAULT_BACK_CAMERA
}
try {
// Unbind use cases before rebinding
cameraProvider?.unbindAll()
camera = cameraProvider?.bindToLifecycle(
lifecycleOwner, cameraSelector, preview, imageAnalysisUseCase
)
isCameraStarted = true
viewFinder.isVisible = true
checkForFlashSetting()
} catch (exc: Exception) {
if (DEBUG_FULL) {
Log.println(Log.DEBUG, "error", "Use case binding failed " + exc)
}
}
}, ContextCompat.getMainExecutor(context))
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... scan-barco
Google Pixel 9 продолжает переключаться на широкую камеру объектива при попытке сканировать штрих -коды ⇐ Android
Форум для тех, кто программирует под Android
1759385413
Anonymous
У меня есть приложение для сканирования штрих -кодов, и я столкнулся с проблемой с тех пор, как заменил старую не поддерживаемую библиотеку камер на камерус и Mlkit. Проблема заключается в том, что при сканировании штрих -кодов на Google Pixel 9 телефон продолжает менять линзы, приближаясь к объекту (я предполагаю, что он меняется на широкий объектив). Я попытался повторить эту проблему на устройстве Samsung, которое также имеет автоматическое переключение линз, но проблема там не было. Чтобы решить проблему, я попытался только назначить физическую камеру, чтобы предотвратить автоматическое переключение камеры, но это не решило проблему. Есть ли способ остановить это автоматическое переключение линз?fun startCamera() {
if (camera != null) {
checkForFlashSetting()
}
toggleFlashIcon()
if (isCameraStarted) return
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
cameraProviderFuture.addListener({
// Used to bind the lifecycle of cameras to the lifecycle owner
cameraProvider = cameraProviderFuture.get()
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(viewFinder.surfaceProvider)
}
barcodeAnalyzer = BarcodeAnalyzerMainScreen(barcodeResultListener)
val imageAnalysisUseCase = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.also {
it.setAnalyzer(cameraExecutor, barcodeAnalyzer!!)
}
val cameraProvider = cameraProviderFuture.get()
@OptIn(ExperimentalCamera2Interop::class)
val selectedCameraId = cameraProvider.availableCameraInfos
.map { Camera2CameraInfo.from(it) }
.firstOrNull { camera2Info ->
val focalLengths = camera2Info.getCameraCharacteristic(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS)
val capabilities = camera2Info.getCameraCharacteristic(
CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES
)
var isLogical = true
// multi camera support was added in SDK level 28
if (SDK_INT >= 28) {
isLogical = capabilities?.contains(
CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
) == true
}
val physicalId = camera2Info.getCameraId()
Log.d("CameraDebug", "Camera ID: $physicalId, Focal lengths: ${focalLengths?.joinToString()}, is logical: $isLogical")
val lensFacing = camera2Info.getCameraCharacteristic(CameraCharacteristics.LENS_FACING)
lensFacing == CameraCharacteristics.LENS_FACING_BACK &&
focalLengths?.any { it >= 4.0f } == true && !isLogical
}?.cameraId
@OptIn(ExperimentalCamera2Interop::class)
val cameraSelector = if (selectedCameraId != null) {
CameraSelector.Builder()
.addCameraFilter { cameraInfos ->
cameraInfos.filter { cameraInfo ->
Camera2CameraInfo.from(cameraInfo).cameraId == selectedCameraId
}
}.build()
} else {
// Fallback to default back camera if filtering fails
CameraSelector.DEFAULT_BACK_CAMERA
}
try {
// Unbind use cases before rebinding
cameraProvider?.unbindAll()
camera = cameraProvider?.bindToLifecycle(
lifecycleOwner, cameraSelector, preview, imageAnalysisUseCase
)
isCameraStarted = true
viewFinder.isVisible = true
checkForFlashSetting()
} catch (exc: Exception) {
if (DEBUG_FULL) {
Log.println(Log.DEBUG, "error", "Use case binding failed " + exc)
}
}
}, ContextCompat.getMainExecutor(context))
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79780652/google-pixel-9-keeps-switching-to-the-wide-lens-camera-when-trying-to-scan-barco[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия