bounty将在7天后过期。回答此问题可获得+400声望奖励。Jaroslaw K.希望引起更多人对此问题的关注:问题还没解决,快把我逼疯了
我想检查torch是否打开。首先,我打开Control Center,然后打开torch。接下来,我运行我的应用程序并执行torch测试。我得到的AVCaptureDevice如下所示:
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
然后检查设备对象的各种属性,如:
- Torch 级别
- Torch 激活
- Torch 模式
- 闪存激活
- 闪光模式
但我总是得到的 Torch 是关闭的。你需要任何权限来阅读此属性或也许有另一种方法来检查 Torch 是否打开?
2条答案
按热度按时间jrcvhitl1#
虽然这不能从技术上解决问题,但这是KVO代码,用于确定手电筒的状态变化。也许这会有所帮助。我正在尝试解决同样的问题,但无法访问任何有关从控制中心打开的手电筒的信息。似乎应该有一些其他的方法使用KVO或其他东西来知道手电筒当前是否处于活动状态。
我也尝试过使用TorchLevel和TorchMode,但都无济于事。这是一个真实的的问题,因为我想在接管AVCaptureDevice的控制权时,如果 Torch 已经打开,就让它打开。
g0czyy6m2#
查看AVCaptureDevice类参考,您可能还希望/需要首先检查手电筒是否存在(
hasTorch
),以及它是否可用/受支持(torchAvailable
)。属性
torchActive
是一个只读的Bool,所以访问它应该没有任何问题,但是文档说:手电筒必须存在于设备上并且当前可用,然后才能激活。
所以也许你首先需要检查那两处房产?听起来很傻,但是...
目标C:
斯威夫特: