Я не могу запустить свой сканер с RegisterForctivityResult. Мне кажется, что запуск запускается слишком быстро, когда еще нет представления поверхности.
Я не могу запустить свой сканер с RegisterForctivityResult. Мне кажется, что запуск запускается слишком быстро, когда еще нет представления поверхности.[code]override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState)
previewView.previewStreamState.observe(viewLifecycleOwner) { state -> when (state) { PreviewView.StreamState.IDLE -> { scannerProgressBar.visibility = View.VISIBLE scannerTextView.visibility = View.GONE }
PreviewView.StreamState.STREAMING -> { scannerProgressBar.visibility = View.GONE scannerTextView.visibility = View.VISIBLE } } } startCamera() } < /code> и навигация на сам сканер, и, к сожалению, он также просто отображает черный экран. < /p> Только когда я перевел разрешения с MainActivty в фрагмент, что камера запускается, когда я ввожу его во второй раз. Сканер начинается только после второго вызова. < /P> abstract class QrScannerGenericFragment : Fragment() {
// UI private lateinit var previewView: PreviewView private lateinit var scannerProgressBar: ProgressBar private lateinit var scannerTextView: TextView
// CAMERA
private val requestCameraPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted -> if (isGranted) { // Permission was granted – proceed to open camera startCamera() } else { // Permission denied – show a message or disable camera functionality
} } private lateinit var cameraProvider: ProcessCameraProvider private lateinit var analysisUseCase: ImageAnalysis
private var rgbaBitmap: Bitmap? = null private val cameraExecutor by lazy { Executors.newSingleThreadExecutor() } private val scanner by lazy { val options = BarcodeScannerOptions.Builder() .setBarcodeFormats(Barcode.FORMAT_QR_CODE) .build() BarcodeScanning.getClient(options) }
// HELPERS private var scanned = false
// private var cameraPermissionHelper: CameraPermissionHelper? = null private var infoListener: InfoListener? = null
// BINDING private var _binding: FragmentQrScannerBinding? = null private val binding get() = _binding!!
override fun onAttach(context: Context) { super.onAttach(context) if (context is InfoListener) { infoListener = context } else { throw RuntimeException("$context must implement InfoListener") } }
private fun checkAndRequestCameraPermission() { context?.let { ctx -> when { // 2a. If permission is already granted, just open the camera ContextCompat.checkSelfPermission(ctx, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED -> { startCamera() }
Я не могу запустить свой сканер с RegisterForctivityResult. Мне кажется, что запуск запускается слишком быстро, когда еще нет представления поверхности. override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view,...
Я разрабатываю приложение, которое записывает экран с использованием API проекции среды и передаю данные в представление на поверхности наложения, однако компоненты вида поверхности и наложения видны, но прогнозируемый дисплей не был виден в...
Я разрабатываю приложение, которое записывает экран с использованием API проекции среды и передаю данные в представление на поверхности наложения, однако компоненты вида поверхности и наложения видны, но прогнозируемый дисплей не был виден в...
Я разрабатываю приложение, которое записывает экран с использованием API проекции среды и передаю данные в представление на поверхности наложения, однако компоненты вида поверхности и наложения видны, но прогнозируемый дисплей не был виден в...
Я разрабатываю приложение, которое записывает экран с использованием API проекции среды и передаю данные в представление на поверхности наложения, однако компоненты вида поверхности и наложения видны, но прогнозируемый дисплей не был виден в...