Как сделать фото с помощью ICCameraDevice? - PullRequest
0 голосов
/ 22 января 2012

Я пытаюсь заставить приложение Mac работать с Canon Mark II 5D.

По сути, я хочу иметь возможность нажимать кнопку и снимать фотографию, получать фотографию и отображать ее.Я делаю намного больше, но это часть, с которой у меня проблемы.

В любом случае, я использую ICDeviceBrowser, чтобы найти устройства, и я могу его найти.Я установил его как свое решение, используя следующий метод delgate.

- (void)deviceBrowser:(ICDeviceBrowser*)browser didAddDevice:(ICDevice*)addedDevice moreComing:(BOOL)moreComing {

    ICCameraDevice *thisCamera = (ICCameraDevice*)addedDevice;
    thisCamera.delegate = self;

    self.camera = thisCamera;

    [self.camera requestOpenSession];

}

Затем, чтобы выключить камеру, я подумал бы, что я сделаю это ... но ничего не происходит.

[self.camera requestTakePicture];

Кто-нибудь когда-нибудь играл с этим или может знать, что происходит?

Ответы [ 3 ]

1 голос
/ 03 декабря 2012

Надеюсь, что это не слишком поздно и полезно для вас. Причина, по которой метод кнопки работает, заключается в том, что устройство готово к тому времени, когда вы нажимаете его. Если вы хотите автоматизировать захват, вам необходимо прослушать делегаты deviceDidBecomeReady и didOpenSessionWithError.

device:(ICDevice *)device didOpenSessionWithError:(NSError *)error позволит вам включить модем, а deviceDidBecomeReady позволит вам выполнять функции камеры. Отстойно, что Apple вообще не документировала это!

- (void) deviceDidBecomeReady:(ICDevice *)device {
     [_camera requestTakePicture];
}

- (void) device:(ICDevice *)device didOpenSessionWithError:(NSError *)error {
    [_camera requestEnableTethering];
}
1 голос
/ 22 января 2012

вы можете проверить, что ICCameraDevice думает о фотографировании через

self.camera.canTakePictures

и

BOOL canYou = [self.capabilities containsObject:ICCameraDeviceCanTakePicture]

, также см. О режиме подключения камеры здесь здесь реализация процесса загрузки с камеры.

0 голосов
/ 22 января 2012

На самом деле только что обнаружил, что это сработало, однако requestTakePicture нужно вызвать кнопкойЯ просто пытался запустить его после того, как он открыл сессию.

...