Signal-Android/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyScanFragment.kt

73 wiersze
2.4 KiB
Kotlin

package org.thoughtcrime.securesms.verify
import android.content.Context
import android.content.res.Configuration
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.view.OneShotPreDrawListener
import androidx.fragment.app.Fragment
import org.signal.qr.kitkat.ScanListener
import org.signal.qr.kitkat.ScanningThread
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.ShapeScrim
import org.thoughtcrime.securesms.components.camera.CameraView
import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.fragments.requireListener
/**
* QR Scanner for identity verification
*/
class VerifyScanFragment : Fragment() {
private lateinit var cameraView: CameraView
private lateinit var cameraScrim: ShapeScrim
private lateinit var cameraMarks: ImageView
private lateinit var scanningThread: ScanningThread
private lateinit var scanListener: ScanListener
override fun onAttach(context: Context) {
super.onAttach(context)
scanListener = requireListener()
}
override fun onCreateView(inflater: LayoutInflater, viewGroup: ViewGroup?, bundle: Bundle?): View? {
return ViewUtil.inflate(inflater, viewGroup!!, R.layout.verify_scan_fragment)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
cameraView = view.findViewById(R.id.scanner)
cameraScrim = view.findViewById(R.id.camera_scrim)
cameraMarks = view.findViewById(R.id.camera_marks)
OneShotPreDrawListener.add(cameraScrim) {
val width = cameraScrim.scrimWidth
val height = cameraScrim.scrimHeight
ViewUtil.updateLayoutParams(cameraMarks, width, height)
}
}
override fun onResume() {
super.onResume()
scanningThread = ScanningThread()
scanningThread.setScanListener(scanListener)
scanningThread.setCharacterSet("ISO-8859-1")
cameraView.onResume()
cameraView.setPreviewCallback(scanningThread)
scanningThread.start()
}
override fun onPause() {
super.onPause()
cameraView.onPause()
scanningThread.stopScanning()
}
override fun onConfigurationChanged(newConfiguration: Configuration) {
super.onConfigurationChanged(newConfiguration)
cameraView.onPause()
cameraView.onResume()
cameraView.setPreviewCallback(scanningThread)
}
}