Просмотр исходного кода

Fixed Android flash toggle

flutter-beta
Luis Thein 7 лет назад
Родитель
Сommit
2946160e06
4 измененных файлов: 26 добавлений и 16 удалений
  1. +15
    -8
      android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt
  2. +1
    -1
      example/lib/main.dart
  3. +7
    -3
      ios/Classes/QRView.swift
  4. +3
    -4
      lib/qr_code_scanner.dart

+ 15
- 8
android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt Просмотреть файл

@@ -30,6 +30,7 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) :
private val activity = registrar.activity()
var cameraPermissionContinuation: Runnable? = null
var requestingPermission = false
private var isTorchOn: Boolean = false
val channel: MethodChannel

init {
@@ -80,14 +81,20 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) :
barcodeView?.resume()
}

fun flipFlash() {
barcodeView?.pause()
var settings = barcodeView?.cameraSettings
settings?.isAutoTorchEnabled = ! (settings?.isAutoTorchEnabled?:false)
barcodeView?.resume()
private fun toggleFlash() {
if (hasFlash()) {
barcodeView?.setTorch(!isTorchOn)
isTorchOn = !isTorchOn
}

}


private fun hasFlash(): Boolean {
return registrar.activeContext().packageManager
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)
}

override fun getView(): View {
return initBarCodeView()?.apply {
resume()
@@ -132,7 +139,7 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) :

private fun hasCameraPermission(): Boolean {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
activity.checkSelfPermission(Manifest.permission.CAMERA) === PackageManager.PERMISSION_GRANTED
activity.checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
}


@@ -144,8 +151,8 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) :
"flipCamera" -> {
flipCamera()
}
"flipFlash" -> {
flipFlash()
"toggleFlash" -> {
toggleFlash()
}
}
}


+ 1
- 1
example/lib/main.dart Просмотреть файл

@@ -50,7 +50,7 @@ class _QRViewExampleState extends State<QRViewExample> {
child: RaisedButton(
onPressed: () {
if (controller != null) {
controller.flipFlash();
controller.toggleFlash();
if (_isFlashOn(flashState))
setState(() {
flashState = flash_off;


+ 7
- 3
ios/Classes/QRView.swift Просмотреть файл

@@ -48,8 +48,12 @@ public class QRView:NSObject,FlutterPlatformView {
self?.setDimensions(width: arguments["width"] ?? 0,height: arguments["height"] ?? 0)
case "flipCamera":
self?.flipCamera()
case "flipFlash":
self?.flipFlash()
case "toggleFlash":
self?.toggleFlash()
case "pauseCamera":
self?.pauseCamera()
case "resumeCamera":
self?.resumeCamera()
default:
result(FlutterMethodNotImplemented)
return
@@ -72,7 +76,7 @@ public class QRView:NSObject,FlutterPlatformView {
}
}
func flipFlash(){
func toggleFlash(){
if let sc: MTBBarcodeScanner = scanner {
if sc.hasTorch() {
sc.toggleTorch()


+ 3
- 4
lib/qr_code_scanner.dart Просмотреть файл

@@ -83,12 +83,11 @@ class QRViewController {
}
}

void flipCamera(){
void flipCamera() {
channel.invokeMethod("flipCamera");
}

void flipFlash(){
channel.invokeMethod("flipFlash");
void toggleFlash() {
channel.invokeMethod("toggleFlash");
}

}

Загрузка…
Отмена
Сохранить