zhanghengSmallTechnology 4 vuotta sitten
vanhempi
commit
5debe44412

+ 1 - 1
example/.flutter-plugins-dependencies

@@ -1 +1 @@
-{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"r_scan","path":"/Users/zhangheng/Desktop/中德智慧教育/r_scan/","dependencies":[]},{"name":"image_picker","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.6.7+11/","dependencies":[]},{"name":"permission_handler","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/permission_handler-3.3.0/","dependencies":[]}],"android":[{"name":"r_scan","path":"/Users/zhangheng/Desktop/中德智慧教育/r_scan/","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_plugin_android_lifecycle-1.0.11/","dependencies":[]},{"name":"image_picker","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.6.7+11/","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"permission_handler","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/permission_handler-3.3.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"r_scan","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"permission_handler","dependencies":[]}],"date_created":"2021-01-05 12:52:47.361242","version":"1.22.5"}
+{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"image_picker","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.7.4/","dependencies":[]},{"name":"permission_handler","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/permission_handler-6.1.1/","dependencies":[]},{"name":"r_scan","path":"/Users/zhangheng/Desktop/中德智慧教育/r_scan/","dependencies":[]}],"android":[{"name":"flutter_plugin_android_lifecycle","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_plugin_android_lifecycle-2.0.1/","dependencies":[]},{"name":"image_picker","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.7.4/","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"permission_handler","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/permission_handler-6.1.1/","dependencies":[]},{"name":"r_scan","path":"/Users/zhangheng/Desktop/中德智慧教育/r_scan/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[{"name":"image_picker_for_web","path":"/Users/zhangheng/Desktop/SDK/flutter/.pub-cache/hosted/pub.flutter-io.cn/image_picker_for_web-2.0.0/","dependencies":[]}]},"dependencyGraph":[{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle","image_picker_for_web"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"permission_handler","dependencies":[]},{"name":"r_scan","dependencies":[]}],"date_created":"2021-04-01 12:14:42.275487","version":"2.0.0"}

+ 4 - 4
example/ios/Flutter/Flutter.podspec

@@ -1,18 +1,18 @@
 #
 # NOTE: This podspec is NOT to be published. It is only used as a local source!
+#       This is a generated file; do not edit or check into version control.
 #
 
 Pod::Spec.new do |s|
   s.name             = 'Flutter'
   s.version          = '1.0.0'
   s.summary          = 'High-performance, high-fidelity mobile apps.'
-  s.description      = <<-DESC
-Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS.
-                       DESC
   s.homepage         = 'https://flutter.io'
   s.license          = { :type => 'MIT' }
   s.author           = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
   s.source           = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s }
   s.ios.deployment_target = '8.0'
-  s.vendored_frameworks = 'Flutter.framework'
+  # Framework linking is handled by Flutter tooling, not CocoaPods.
+  # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs.
+  s.vendored_frameworks = 'path/to/nothing'
 end

+ 4 - 4
example/ios/Podfile.lock

@@ -2,7 +2,7 @@ PODS:
   - Flutter (1.0.0)
   - image_picker (0.0.1):
     - Flutter
-  - permission_handler (3.3.0):
+  - "permission_handler (5.1.0+2)":
     - Flutter
   - r_scan (0.0.1):
     - Flutter
@@ -35,9 +35,9 @@ EXTERNAL SOURCES:
     :path: ".symlinks/plugins/r_scan/ios"
 
 SPEC CHECKSUMS:
-  Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
-  image_picker: 9c3312491f862b28d21ecd8fdf0ee14e601b3f09
-  permission_handler: 67637977b227d62d46bfbf524f335f8568de5a73
+  Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c
+  image_picker: 50e7c7ff960e5f58faa4d1f4af84a771c671bc4a
+  permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
   r_scan: f90e2a41679bc9cae0e7efe5ce54085a936125c3
   ZBarSDK: 4c1b5daeb7d6cc67dc9355e690af0230a661f6ec
   ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb

+ 10 - 44
example/ios/Runner.xcodeproj/project.pbxproj

@@ -8,11 +8,9 @@
 
 /* Begin PBXBuildFile section */
 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+		18B20352261580F700A34047 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		18B203552615816500A34047 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
-		3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
-		3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-		810470AE2435D9C3003E0C5D /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
-		810470AF2435D9C3003E0C5D /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
 		978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
 		97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
@@ -22,21 +20,6 @@
 		AB367CF32BD312745F3FEF00 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 86607C23EC26018BD5A5E0BA /* libPods-Runner.a */; };
 /* End PBXBuildFile section */
 
-/* Begin PBXCopyFilesBuildPhase section */
-		9705A1C41CF9048500538489 /* Embed Frameworks */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 10;
-			files = (
-				3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
-				810470AF2435D9C3003E0C5D /* Flutter.framework in Embed Frameworks */,
-			);
-			name = "Embed Frameworks";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
 /* Begin PBXFileReference section */
 		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
 		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
@@ -65,8 +48,8 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
-				810470AE2435D9C3003E0C5D /* Flutter.framework in Frameworks */,
+				18B20352261580F700A34047 /* Flutter.framework in Frameworks */,
+				18B203552615816500A34047 /* App.framework in Frameworks */,
 				AB367CF32BD312745F3FEF00 /* libPods-Runner.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -160,9 +143,7 @@
 				97C146EA1CF9000F007C117D /* Sources */,
 				97C146EB1CF9000F007C117D /* Frameworks */,
 				97C146EC1CF9000F007C117D /* Resources */,
-				9705A1C41CF9048500538489 /* Embed Frameworks */,
 				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
-				04951A15DDE3E38D60283046 /* [CP] Embed Pods Frameworks */,
 				D6804AC4E74CE9303D4B4A85 /* [CP] Copy Pods Resources */,
 			);
 			buildRules = (
@@ -223,24 +204,6 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
-		04951A15DDE3E38D60283046 /* [CP] Embed Pods Frameworks */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 8;
-			files = (
-			);
-			inputPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
-				"${PODS_ROOT}/../Flutter/Flutter.framework",
-			);
-			name = "[CP] Embed Pods Frameworks";
-			outputPaths = (
-				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
-			);
-			runOnlyForDeploymentPostprocessing = 1;
-			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
-			showEnvVarsInLog = 0;
-		};
 		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -392,7 +355,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				MTL_ENABLE_DEBUG_INFO = NO;
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = "1,2";
@@ -413,6 +376,7 @@
 					"$(PROJECT_DIR)/Flutter",
 				);
 				INFOPLIST_FILE = Runner/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
@@ -472,7 +436,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				MTL_ENABLE_DEBUG_INFO = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = iphoneos;
@@ -522,7 +486,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				MTL_ENABLE_DEBUG_INFO = NO;
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = "1,2";
@@ -543,6 +507,7 @@
 					"$(PROJECT_DIR)/Flutter",
 				);
 				INFOPLIST_FILE = Runner/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
@@ -567,6 +532,7 @@
 					"$(PROJECT_DIR)/Flutter",
 				);
 				INFOPLIST_FILE = Runner/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",

+ 1 - 1
example/ios/Runner/Info.plist

@@ -46,6 +46,6 @@
 	<key>UIViewControllerBasedStatusBarAppearance</key>
 	<false/>
 	<key>io.flutter.embedded_views_preview</key>
-    <true/>
+	<true/>
 </dict>
 </plist>

+ 37 - 1
ios/Classes/RScanCamera.m

@@ -10,6 +10,15 @@
 #import <CoreMotion/CoreMotion.h>
 #import <libkern/OSAtomic.h>
 #import "RScanResult.h"
+
+#define ScanY 50           //扫描区域y
+#define ScanWidth 250       //扫描区域宽度
+#define ScanHeight 500      //扫描区域高度
+
+/* 屏幕宽 */
+#define LWSCREEN_WIDTH   [UIScreen mainScreen].bounds.size.width
+/* 屏幕高 */
+#define LWSCREENH_HEIGHT [UIScreen mainScreen].bounds.size.height
 // Mirrors ResolutionPreset in camera.dart
 typedef enum {
     veryLow,
@@ -127,8 +136,35 @@ FourCharCode const rScanVideoFormat = kCVPixelFormatType_32BGRA;
     //扫码区域的大小
     AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:_captureSession];
     layer.videoGravity = AVLayerVideoGravityResizeAspectFill;
-//    layer.frame = CGRectMake(left, top, size, size);
+    layer.frame = CGRectMake(0, 0, LWSCREEN_WIDTH, LWSCREENH_HEIGHT);
 //        [_captureOutput rectOfInterest];
+//    _captureOutput.rectOfInterest = CGRectMake(0.5,0.5,0.5,0.5);
+
+    CGFloat top = (LWSCREENH_HEIGHT - LWSCREEN_WIDTH *2 /3)/3.2;
+
+    CGSize size = CGSizeMake(LWSCREEN_WIDTH, LWSCREENH_HEIGHT);
+    CGRect cropRect = CGRectMake(LWSCREEN_WIDTH/6, top, LWSCREEN_WIDTH *2 /3, LWSCREEN_WIDTH *2 /3);
+    CGFloat p1 = size.height/size.width;
+    CGFloat p2 = 1920./1080.; //使用了1080p的图像输出
+    if (p1 < p2) {
+    CGFloat fixHeight = LWSCREEN_WIDTH * 1920. / 1080.;
+    CGFloat fixPadding = (fixHeight - size.height)/2;
+        _captureOutput.rectOfInterest = CGRectMake((cropRect.origin.y + fixPadding)/fixHeight,
+    cropRect.origin.x/size.width,
+    cropRect.size.height/fixHeight,
+    cropRect.size.width/size.width);
+    } else {
+    CGFloat fixWidth = LWSCREENH_HEIGHT * 1080. / 1920.;
+    CGFloat fixPadding = (fixWidth - size.width)/2;
+        _captureOutput.rectOfInterest = CGRectMake(cropRect.origin.y/size.height,
+    (cropRect.origin.x + fixPadding)/fixWidth,
+    cropRect.size.height/size.height,
+    cropRect.size.width/fixWidth);
+NSLog(@"rectOfInterest ====%@=====", NSStringFromCGRect(_captureOutput.rectOfInterest));
+//
+    }
+//    _captureOutput.rectOfInterest = CGRectMake(0.08, 0.08, 0.6, 1);
+    
     [_captureOutput setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
     [_captureOutput setMetadataObjectTypes:@[AVMetadataObjectTypeAztecCode,AVMetadataObjectTypeCode39Code,
                                      AVMetadataObjectTypeCode93Code,AVMetadataObjectTypeCode128Code, AVMetadataObjectTypeDataMatrixCode,AVMetadataObjectTypeEAN8Code,AVMetadataObjectTypeEAN13Code,AVMetadataObjectTypeITF14Code,AVMetadataObjectTypePDF417Code,AVMetadataObjectTypeQRCode,AVMetadataObjectTypeUPCECode]];