如何使用ICDeviceBrowser - 找不到相机

问题描述 投票:0回答:1

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

我在包括iPhone在内的3种不同的相机(PTP模式和MSC模式)上尝试过它。我有最新的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)")

    }
}
swift macos camera
1个回答
0
投票

问题是我需要执行runloop。由于Xcode工具自动包含runloop,我只需要运行它而不是等待循环

RunLoop.current.run(until: Date.init(timeIntervalSinceNow: 1))
© www.soinside.com 2019 - 2024. All rights reserved.