手电筒打开时 AVCaptureSession 冻结

2024-03-30

我们的 iOS 应用程序具有条形码扫描功能,客户可以根据需要打开和关闭手电筒。在 iPhone X 上(且仅在 iPhone X 上),当 AvCaptureSession 运行且手电筒启用时,屏幕上的视频捕获会冻结。一旦手电筒再次关闭,视频捕获就会再次开始。有人遇到过这个吗?我似乎找不到任何可以解决问题的东西。想知道这是否是 iPhone X 的 bug?


我遇到了这个问题。经过一些实验,结果证明获取设备来配置手电筒必须以与配置 AVCaptureSession 时获取设备完全相同的方式完成。例如。:

    let captureSession = AVCaptureSession()
    let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position: .back)

        guard let captureDevice = deviceDiscoverySession.devices.first else {
            print("Couldn't get a camera")
            return
        }
     do {
            let input = try AVCaptureDeviceInput(device: captureDevice)
            captureSession!.addInput(input)
        } catch {
            print(error)
            return
        }

使用该确切方法获取设备打开和关闭手电筒(手电筒)时。在这种情况下,这些行:

let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position: .back)

guard let device = deviceDiscoverySession.devices.first

Example:

func toggleTorch() {

    let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position: .back)

    guard let device = deviceDiscoverySession.devices.first
        else {return}

    if device.hasTorch {
        do {
            try device.lockForConfiguration()
            let on = device.isTorchActive
            if on != true && device.isTorchModeSupported(.on) {
                try device.setTorchModeOn(level: 1.0)
            } else if device.isTorchModeSupported(.off){
                device.torchMode = .off
            } else {
                print("Torch mode is not supported")
            }
            device.unlockForConfiguration()
        } catch {
            print("Torch could not be used")
        }
    } else {
        print("Torch is not available")
    }
}

我意识到某些代码在toggleTorch 函数中可能是多余的,但我将其保留。希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手电筒打开时 AVCaptureSession 冻结 的相关文章

  • UIView 子类不会自动调整大小

    我一直在寻找有关调整大小的背景信息 但找不到太多 我知道我需要设置autoresizesSubviews在超级视图和autoresizingMask在子视图上 我已经这样做了 并且我的 UIImageViews 正确调整了大小 但我的自定义
  • 我们可以从 LinkPresentation 框架中的 LPLinkView 中提取图像吗?

    我想在我的应用程序中呈现丰富的链接 并将这些数据发送到我的服务器 我需要访问视图内的图像LPLinkView https developer apple com documentation linkpresentation lplinkvi
  • 在另一种语言中使用 dateFormatter [重复]

    这个问题在这里已经有答案了 我正在运行一段返回的代码nil在具有不同语言设置的 iPhone 上运行时 代码示例如下所示 let dateFormatter DateFormatter dateFormatter dateFormat MM
  • 适用于 Objective-C / iPhone 的良好 HTTP 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 UPDATE 这个问题显然已经过时了 参见日期 我建议只使用现代 iOS7 功能 例如 NSURLSession 我想 这个问题是为了历史
  • UICollectionView 未出现

    我正在尝试设置UICollectionView 以编程方式在我的视图控制器中扩展UIViewController 由于某种原因 我的收藏视图根本没有显示 以下是我所拥有的 为什么没有出现 我将它连接到委托和数据源并将其添加为子视图self
  • 如何从代码隐藏中设置 CarouselView 的项目?

    我有一个 CarouselView 它绑定到图像的 ItemsSource 但我想通过更改 CarouselView 的索引来更改当前显示的图像 我尝试使用 CarouselView Position 作为必须选择的元素的索引 但不幸的是这
  • Swift 中带圆角的 NSWindow

    我想要一个圆角的窗户 但我在每个角落都有一个白点 Code let effect NSVisualEffectView frame NSRect x 0 y 0 width 0 height 0 effect blendingMode be
  • 无法转换“UINavigationController”类型的值

    我正在为我的应用程序实现一个搜索界面 因此基本上我会将搜索关键字从一个 ViewController 传递到另一个 ViewController 我已经多次进行过这种类型的参数传递 但这次似乎有些奇怪 目标 ViewController 嵌
  • Objective C UIImagePNGRepresentation内存问题(使用ARC)

    我有一个基于 ARC 的应用程序 它从 Web 服务加载大约 2 000 个相当大 1 4MB 的 Base64 编码图像 它将 Base64 解码后的字符串转换为 png图像文件并将其保存到磁盘 这一切都是在一个循环中完成的 我不应该有任
  • 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

    谁能告诉我下面的代码行到底会做什么 我已经提到过Apples https developer apple com library ios documentation uikit reference UIGestureRecognizer C
  • 重置转换后的 UIView 的原点会变得疯狂

    我使用 UIView transform 旋转 缩放 UIVIew 效果很好 然而 一旦我更改视图的框架原点 即使我没有执行任何进一步的 CGAffineTransforms 视图的内容也会开始 奇怪 地缩放 为什么会出现这种情况 我该如何
  • 如何将音乐从我的应用程序切换到 iPod

    我在用MusicPlayerController我的应用程序中的对象来播放音乐 我知道当 iPhone ipod 应用程序终止时 可以继续播放我的应用程序音乐 我该怎么做 这涉及到一些事情 您必须在两种音乐播放器之间进行选择 应用程序音乐播
  • 如何更改已上传的 Firebase 存储图像文件名?

    我需要更改已上传到 firebase 存储中的文件名 因为 在 firebase 存储中上传图像后 我将 url 保存在 firebase 数据库中的特定子 文件夹 下 但是 当我将图像移动到另一个子 文件夹 时 我需要根据新名称更改存储中
  • iOS7 中“-webkit-overflow-scrolling: touch” 最初的屏幕外元素被破坏

    既然转基因种子已经发布了 我们现在可以谈谈了 看起来 iOS7 中的 webkit overflow scrolling touch 已损坏 最初不在屏幕上的元素的触摸事件不会触发 或者在某些情况下只是不可靠 这是一个例子
  • 按下表格视图单元格时更改视图?

    我需要帮助 当我的 tableView 的单元格被选择时 我希望该单元格转到它自己的页面 我不希望每个单元格都转到同一页面 我尝试使用 FirstFolderViewController first FirstFolderViewContr
  • NSPredicate 的 onFormat 字符串

    我想用 id 键对数据进行排序 我如何理解格式字符串的用途NSPredicate格式 我有一个100号的帖子 我的代码 let objectIDs posts map 0 id let predicate NSPredicate forma
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • ResponseSerializer“无法使用 Swift 3 调用非函数类型“NSHTTPURLResponse”的值?

    我一直在使用以下代码 没有出现任何问题 直到更新到 Xcode 8 beta 6 它类似于这个例子 https github com Alamofire Alamofire generic response object serializa

随机推荐

  • 从 std::tuple 派生时出现混乱,无法处理 std::get

    我的基本想法是从 std tuple 派生我自己的类 以获取一些辅助类型 如下所示 template
  • CLion 行注释的自动缩进不一致

    CLion 中出现一些奇怪的自动缩进 我不明白为什么 这是一个例子 int i1 5 some comments then I hit Enter auto indentation goes here I hit Enter again I
  • 如何从文本文件中读取数据

    如何从文本文件中读取输入 输入文件有几行长 每行的格式为city city distance有两个城市以及它们之间的距离 我尝试了几种方法来读取输入 但不幸的是这些都不起作用 我需要 解析每行上的各个值 每行由 2 个城市名称和它们之间的距
  • 我是否应该在数据流的最开始处期待 JPEG SOI 标记?

    或者我应该深入数据流寻找0xFF 0xD8顺序 From this Q https stackoverflow com questions 5413022 is the 2nd and 3rd byte of a jpeg image al
  • 从 CSV 文件中删除空格而不创建新文件

    我的 csv 工作表中有空格 我想将其删除 经过几个小时的搜索后 我意识到这是它的代码 input open file txt wb output open new file txt wb writer csv writer output
  • tpl 数据流:固定缓冲区大小而不丢弃项目

    在玩弄数据流之后 我遇到了一个新问题 我想限制所有块的输入队列 我的生产块 ActionBlock 正在快速创建 5000 个元素并将它们发布到广播块 因此 如果我将广播块的 BoundedCapacity 设置为 100 他会丢弃大量数据
  • 如何将整数数组从 matlab 传递到 mex?

    我想将一个整数数组从 matlab 传递到 mex 该数组例如是a 1 2 3 4 我写了以下代码 include
  • 从 vba 打开网站时,谷歌翻译无法在 IE 中进行翻译

    谷歌翻译不翻译文本 日语到英语 当打开网站并使用以下代码输入文本时 该函数始终返回 Function OutlookGetTransItem IE As Object URL As String trans text As String A
  • 是否有两个元素在其容器悬停时出现,然后在另一个元素悬停时消失?

    我有两个导航元素 它们设置为图像两侧的列 您可以在以下位置查看它们 我的网站 在这里 http www element17 com 单击任何图像 加载后将鼠标悬停在其上 我想要完成的任务如下 当光标位于图像外部时 两个导航按钮都设置为 0
  • chrome 中奇怪的颜色过渡行为

    我目前正在开发一个多主题应用程序以及 css 的过渡color 属性未按预期工作 在 Chrome 中 它不是立即将过渡应用于每个元素 而是根据元素的深度以某种方式延迟 我已经测试过该脚本 84 0 4124 1 官方版本 canary 6
  • Go 中有 uint64 文字吗?

    我正在看数字类型 https golang org ref spec Numeric types在围棋中 我想使用 uint64 文字 这在 Go 中可能吗 这是我想如何使用 uint64 文字的示例 for i 2 i lt k i 1
  • 仅替换整个单词,而不替换单词

    我试图仅替换整个单词 但我的脚本替换了该单词的所有区分大小写的实例 这是我的代码
  • 循环遍历 NSDictionary 以创建单独的 NSArray

    我有一个大NSDictionary我需要循环并创建单独的NSArrays 以下是内容 id text sub text text thumb url text title text 2010 2011 type
  • 如何为 iPad 创建表单弹出窗口 (iOS 8.1)

    我想使用 Swift 8 1 和演示文稿类型 Form Sheet 制作非常基本的弹出窗口 它应该是一个漂浮在屏幕中间的窗口 没有故事 我创建了两个视图控制器 一个按钮 并使用参数 Present As Popover 将按钮从一个控制器连
  • 从没有分支的分离提交中获取代码

    我有一个不在分支中的提交 它包含我所有的最新工作 我需要将其添加到主分支 我怎样才能做到这一点 git status显示这个 detached from b225b49 master saved work 如果我会失去它吗git check
  • 实现从 .net winforms 应用程序将文件拖到桌面吗?

    我有一个文件列表 其名称位于列表框中 其内容存储在 SQL 表中 并希望我的应用程序的用户能够选择列表框中的一个或多个文件名并将它们拖到桌面 从而生成桌面上的实际文件 我找不到任何有关如何执行此操作的文档 任何人都可以解释或指出解释吗 稍后
  • Scala 何时需要匿名函数和扩展函数的参数类型?

    Scala编译器什么时候真正需要匿名函数参数的类型信息 例如 给定这个函数 def callOn T R target T f T gt R f target 那么我不能像这样使用它 callOn 4 toString gt error m
  • 如何安装和使用 Apache Velocity?

    我已经安装了Apache服务器2 4和Ant 1 8 3 我已经下载了Velocity 1 7和Velocity工具2 0 我已经阅读了 Apache Velocity 的安装文档大约十遍 并且 Google 了两天 我仍然不知道如何处理这
  • ngOnInit 在 APP_INITIALIZER 完成之前启动

    APP INITIALIZER 运行一系列嵌套的承诺 我尝试过订阅 结果没有任何差异 APP INITIALIZER 在从 API 服务器检索数据之前需要进行身份验证 它还需要从 API 服务器拉取两个表 按顺序 在 api service
  • 手电筒打开时 AVCaptureSession 冻结

    我们的 iOS 应用程序具有条形码扫描功能 客户可以根据需要打开和关闭手电筒 在 iPhone X 上 且仅在 iPhone X 上 当 AvCaptureSession 运行且手电筒启用时 屏幕上的视频捕获会冻结 一旦手电筒再次关闭 视频