Я просто смотрел на это сегодня вечером. Из того, что я почерпнул, iPad 2 не делает фокус - он делает регулировка экспозиции - поэтому в приложении камеры по умолчанию, нажав на экран, появляется прямоугольник, в котором произошло крана, указывающее область, которую нужно сделать white point регулировка сверху.
Возможно, я ошибаюсь, но это то, что я обнаружил, и, похоже, подтвердил ваш API (isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus
возвращение НЕТ).
Камеры в iPad 2 довольно слабы - особенно спереди. Я удивлен, что Apple отправила это.
ОБНОВЛЕНИЕ: Это код из более недавнего образца Apple AVCamDemo, который обрабатывает фокус + экспозицию + белую точку. Я не думаю, что это в примере AVCam. AVCamDemo может быть доступен только в качестве загрузки пакета .dmg кода WWDC из центра разработчика, а не в виде одной загрузки из Интернета. На моем iPad 2 код воздействия никогда не вызывается. // - от AVCamDemo:
- (BOOL) hasExposure
{
AVCaptureDevice *device = [[self videoInput] device];
return [device isExposureModeSupported:AVCaptureExposureModeLocked] ||
[device isExposureModeSupported:AVCaptureExposureModeAutoExpose] ||
[device isExposureModeSupported:AVCaptureExposureModeContinuousAutoExposure];
}
- (AVCaptureExposureMode) exposureMode
{
return [[[self videoInput] device] exposureMode];
}
- (void) setExposureMode:(AVCaptureExposureMode)exposureMode
{
if (exposureMode == 1) {
exposureMode = 2;
}
AVCaptureDevice *device = [[self videoInput] device];
if ([device isExposureModeSupported:exposureMode] && [device exposureMode] != exposureMode) {
NSError *error;
if ([device lockForConfiguration:&error]) {
[device setExposureMode:exposureMode];
[device unlockForConfiguration];
} else {
id delegate = [self delegate];
if ([delegate respondsToSelector:@selector(acquiringDeviceLockFailedWithError:)]) {
[delegate acquiringDeviceLockFailedWithError:error];
}
}
}
}
- (BOOL) hasWhiteBalance
{
AVCaptureDevice *device = [[self videoInput] device];
return [device isWhiteBalanceModeSupported:AVCaptureWhiteBalanceModeLocked] ||
[device isWhiteBalanceModeSupported:AVCaptureWhiteBalanceModeAutoWhiteBalance];
}
- (AVCaptureWhiteBalanceMode) whiteBalanceMode
{
return [[[self videoInput] device] whiteBalanceMode];
}
- (void) setWhiteBalanceMode:(AVCaptureWhiteBalanceMode)whiteBalanceMode
{
if (whiteBalanceMode == 1) {
whiteBalanceMode = 2;
}
AVCaptureDevice *device = [[self videoInput] device];
if ([device isWhiteBalanceModeSupported:whiteBalanceMode] && [device whiteBalanceMode] != whiteBalanceMode) {
NSError *error;
if ([device lockForConfiguration:&error]) {
[device setWhiteBalanceMode:whiteBalanceMode];
[device unlockForConfiguration];
} else {
id delegate = [self delegate];
if ([delegate respondsToSelector:@selector(acquiringDeviceLockFailedWithError:)]) {
[delegate acquiringDeviceLockFailedWithError:error];
}
}
}
}
- (BOOL) hasFocus
{
AVCaptureDevice *device = [[self videoInput] device];
return [device isFocusModeSupported:AVCaptureFocusModeLocked] ||
[device isFocusModeSupported:AVCaptureFocusModeAutoFocus] ||
[device isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus];
}
- (AVCaptureFocusMode) focusMode
{
return [[[self videoInput] device] focusMode];
}
- (void) setFocusMode:(AVCaptureFocusMode)focusMode
{
AVCaptureDevice *device = [[self videoInput] device];
if ([device isFocusModeSupported:focusMode] && [device focusMode] != focusMode) {
NSError *error;
printf(" setFocusMode \n");
if ([device lockForConfiguration:&error]) {
[device setFocusMode:focusMode];
[device unlockForConfiguration];
} else {
id delegate = [self delegate];
if ([delegate respondsToSelector:@selector(acquiringDeviceLockFailedWithError:)]) {
[delegate acquiringDeviceLockFailedWithError:error];
}
}
}
}
так, как это приложение показывает белый прямоугольник и есть некоторые эффекты изменения – vodkhang
Посмотрите на пример AVCam (есть другой, я думаю, что более поздние 'AVCamDemo' вокруг тоже): http://developer.apple.com/library/ios/#samplecode/AVCam/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010112 –
Я работаю с примером AVCam на данный момент, чтобы создайте собственный пользовательский интерфейс. Он содержит код, который проверяет isFocusPointOfInterestSupported. Мой iPad 2 определенно пропускает это. Я верю, что «новый» iPad использует его. – mpemburn