swift - 如何使用 ICDeviceBrowser - 找不到相机

标签 swift macos camera

我刚刚开始使用ImageCaptureCore和ICDeviceBrowser开始开发相机控制软件,它运行正常,但没有找到任何东西。

我已经在 3 种不同的相机(PTP 模式和 MSC 模式)上进行了尝试,其中包括 iPhone。我有最新的 MacOS 和 Xcode。

代理永远不会被调用,设备数组始终为空。

import Foundation
import ImageCaptureCore

print("Hello, World!")

let browser = ICDeviceBrowser.init()
let myDeviceBrowserDelegate = myDeviceBrowserDelegateClass.init()
browser.delegate = myDeviceBrowserDelegate
browser.browsedDeviceTypeMask = ICDeviceTypeMask(rawValue: ICDeviceTypeMask.camera.rawValue | ICDeviceLocationTypeMask.local.rawValue | ICDeviceLocationTypeMask.bluetooth.rawValue | ICDeviceLocationTypeMask.bonjour.rawValue | ICDeviceLocationTypeMask.remote.rawValue | ICDeviceLocationTypeMask.shared.rawValue)!

browser.start()
while(browser.isBrowsing){
    print("browsing cameras...")
    print(browser.devices!)
    sleep(10)
}
browser.stop()

这是代表:

import Foundation
import ImageCaptureCore

class myDeviceBrowserDelegateClass : NSObject, ICDeviceBrowserDelegate {
    func deviceBrowser(_ browser: ICDeviceBrowser, didAdd device: ICDevice, moreComing: Bool) {
        print("Device added = \(device) and more coming = \(moreComing)")
    }

    func deviceBrowser(_ browser: ICDeviceBrowser, didRemove device: ICDevice, moreGoing: Bool) {
        print("Device added = \(device) and more going = \(moreGoing)")

    }
}

最佳答案

问题是我需要执行一个运行循环。由于 Xcode 工具自动合并了一个运行循环,我只需运行它而不是等待循环

RunLoop.current.run(until: Date.init(timeIntervalSinceNow: 1))

关于swift - 如何使用 ICDeviceBrowser - 找不到相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55549775/

相关文章:

带有子类数组的 SwiftUI ForEach

xcode - 使用 Storyboard创建后退按钮

linux - 得到 'Configuration for rule "no-unused-expressions"is invalid' on linux but not on osx

c++ - 佳能 SDK - 下载图像到主机 PC

c - v4l2 中网络摄像头设备的读取函数因参数无效而失败

swift - tvOS 中的日期选择器

ios - "unexpectedly found nil"超出 viewDidLoad

macos - 有没有办法在 Mac OS X 上将 Intellij IDEA 连接到 Sublime Text?

macos - 在 Mac OS X for Zend Framework 2 上为 Apache 2 安装和配置 mod_rewrite

android - 如何使用 android.graphics.Camera.rotateX(angle) 在特定点旋转 Canvas