I'm trying to make a DSLR Photo Booth app for Mac that controls a Nikon Z6 r Z7 connected via USB. I'm trying to do this in Swift, using ImageCaptureCore.
I'm able to init the ICDeviceBrowser and open a session to the camera. The deviceDidBecomeReady However, calling
device.requestTakePicture()
doesn't do anything.
The device does have the ICCameraDeviceCanTakePicture capability:
{
UUIDString = "00000030-3030-3030-3033-303432303637";
autolaunchApplicationPath = "";
capabilities = (
ICCameraDeviceCanSyncClock,
ICCameraDeviceCanTakePicture,
ICCameraDeviceCanDeleteOneFile,
ICCameraDeviceCanAcceptPTPCommands
);
class = ICCameraDevice;
connectionID = 0xffff0002;
delegate = "<0x600002fbbd50>";
deviceID = 0xffff0002;
deviceRef = 0xffff0002;
iconPath = "(null)";
locationDescription = ICDeviceLocationDescriptionUSB;
moduleExecutableArchitecture = 0;
modulePath = "/System/Library/Image Capture/Devices/PTPCamera.app";
moduleVersion = "1.0";
name = "Z 7";
persistentIDString = "00000030-3030-3030-3033-303432303637";
shared = NO;
softwareInstallPercentDone = "0.000000";
transportType = ICTransportTypeUSB;
type = 0x00000101;
} timeOffset : 0.000000
hasConfigurableWiFiInterface : N/A
isAccessRestrictedAppleDevice : NO
I am getting device.tetheredCaptureEnabled() == false, but the capability exists.
@property tetheredCaptureEnabled
@abstract This property is always set to YES when the device has the capability 'ICCameraDeviceCanTakePicture'
So I'd expect this to be true, since the capability exists.