in Camera2Extensions/app/src/main/java/com/example/android/camera2/extensions/fragments/CameraFragment.kt [206:248]
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.texture.surfaceTextureListener = this
extensionCharacteristics = cameraManager.getCameraExtensionCharacteristics(args.cameraId)
supportedExtensions.addAll(extensionCharacteristics.supportedExtensions)
if (currentExtension == -1) {
currentExtension = supportedExtensions[0]
currentExtensionIdx = 0
binding.switchButton.text = getExtensionLabel(currentExtension)
}
binding.switchButton.setOnClickListener { v ->
if (v.id == R.id.switch_button) {
lifecycleScope.launch(Dispatchers.IO) {
currentExtensionIdx = (currentExtensionIdx + 1) % supportedExtensions.size
currentExtension = supportedExtensions[currentExtensionIdx]
requireActivity().runOnUiThread {
binding.switchButton.text = getExtensionLabel(currentExtension)
restartPreview = true
}
try {
cameraExtensionSession.stopRepeating()
cameraExtensionSession.close()
} catch (e: Exception) {
Log.e(TAG, "Camera failure when closing camera extension")
}
}
}
}
// React to user touching the capture button
binding.captureButton.setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
lifecycleScope.launch(Dispatchers.IO) {
takePicture()
}
}
}
true
}
}