ソースを参照

Merge pull request #27 from LuisThein/fix/flashToggle

Fix for Android flash toggle
flutter-beta
juliuscanute 7年前
committed by GitHub
コミット
576671aaa0
この署名に対応する既知のキーがデータベースに存在しません GPGキーID: 4AEE18F83AFDEB23
4個のファイルの変更21行の追加14行の削除
  1. +15
    -8
      android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt
  2. +1
    -1
      example/lib/main.dart
  3. +3
    -3
      ios/Classes/QRView.swift
  4. +2
    -2
      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() private val activity = registrar.activity()
var cameraPermissionContinuation: Runnable? = null var cameraPermissionContinuation: Runnable? = null
var requestingPermission = false var requestingPermission = false
private var isTorchOn: Boolean = false
val channel: MethodChannel val channel: MethodChannel


init { init {
@@ -80,11 +81,12 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) :
barcodeView?.resume() 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 pauseCamera() { private fun pauseCamera() {
@@ -99,6 +101,11 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) :
} }
} }


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

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


private fun hasCameraPermission(): Boolean { private fun hasCameraPermission(): Boolean {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || 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
} }




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


+ 1
- 1
example/lib/main.dart ファイルの表示

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


+ 3
- 3
ios/Classes/QRView.swift ファイルの表示

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


+ 2
- 2
lib/qr_code_scanner.dart ファイルの表示

@@ -87,8 +87,8 @@ class QRViewController {
channel.invokeMethod("flipCamera"); channel.invokeMethod("flipCamera");
} }


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


void pauseCamera() { void pauseCamera() {


読み込み中…
キャンセル
保存