From c233213061a4c4585d96b4cdbe17793c35180373 Mon Sep 17 00:00:00 2001 From: Drew <> Date: Wed, 20 Jul 2022 15:56:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A8=AA=E5=B1=8F?= =?UTF-8?q?=E6=97=B6=E6=89=AB=E7=A0=81=E9=9C=80=E8=A6=81=E7=AB=96=E7=9D=80?= =?UTF-8?q?=E6=89=AB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LBXScan/LBXZXing/ZXingWrapper.m | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/LBXScan/LBXZXing/ZXingWrapper.m b/LBXScan/LBXZXing/ZXingWrapper.m index 5c4742d..254fd18 100644 --- a/LBXScan/LBXZXing/ZXingWrapper.m +++ b/LBXScan/LBXZXing/ZXingWrapper.m @@ -126,6 +126,19 @@ - (void)setOrientation:(NSInteger)orientation AVCaptureVideoPreviewLayer * preview = (AVCaptureVideoPreviewLayer*)self.capture.layer; preview.connection.videoOrientation = self.orientation; + + switch (self.orientation) { + case AVCaptureVideoOrientationPortrait: + case AVCaptureVideoOrientationPortraitUpsideDown: + self.capture.rotation = 90.0f; + break; + case AVCaptureVideoOrientationLandscapeLeft: + case AVCaptureVideoOrientationLandscapeRight: + self.capture.rotation = 0.0f; + break; + default: + break; + } } - (void)setVideoLayerframe:(CGRect)videoLayerframe From d4ee58ceeac0ff2de53aa2b701933cc4dae04ff6 Mon Sep 17 00:00:00 2001 From: Drew <> Date: Thu, 31 Jul 2025 15:25:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=9B=B8=E6=9C=BA?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=EF=BC=8C=E9=80=89=E6=8B=A9=E5=8F=AF=E6=8C=81?= =?UTF-8?q?=E7=BB=AD=E8=81=9A=E7=84=A6=E7=9A=84=E7=9B=B8=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LBXScan/LBXZXing/LBXZXCapture.m | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/LBXScan/LBXZXing/LBXZXCapture.m b/LBXScan/LBXZXing/LBXZXCapture.m index 3da89eb..18a0b10 100755 --- a/LBXScan/LBXZXing/LBXZXCapture.m +++ b/LBXScan/LBXZXing/LBXZXCapture.m @@ -224,12 +224,14 @@ - (int)front { } - (BOOL)hasFront { - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; + AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionFront]; + NSArray *devices = session.devices; return [devices count] > 1; } - (BOOL)hasBack { - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; + AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionBack]; + NSArray *devices = session.devices; return [devices count] > 0; } @@ -553,9 +555,14 @@ - (AVCaptureDevice *)device { } AVCaptureDevice *zxd = nil; - - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - + NSArray *devices = nil; + if (@available(iOS 13.0, *)) { + AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInUltraWideCamera, AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionUnspecified]; + devices = session.devices; + } else { + AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionUnspecified]; + devices = session.devices; + } if ([devices count] > 0) { if (self.captureDeviceIndex == -1) { AVCaptureDevicePosition position = AVCaptureDevicePositionBack; @@ -565,7 +572,7 @@ - (AVCaptureDevice *)device { for (unsigned int i = 0; i < [devices count]; ++i) { AVCaptureDevice *dev = [devices objectAtIndex:i]; - if (dev.position == position) { + if (dev.position == position && [dev isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus]) { self.captureDeviceIndex = i; zxd = dev; break; @@ -577,7 +584,6 @@ - (AVCaptureDevice *)device { zxd = [devices objectAtIndex:self.captureDeviceIndex]; } } - if (!zxd) { zxd = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; }