2012-02-02 6 views
2

私は自分のアプリで、自動フォーカスの作業をしようとしている、iPad2でテストされています。私の問題は、isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocusのようなチェックメソッドを呼び出すと、常にNOを返します。しかし、デバイス内の他のカメラアプリケーションに焦点を当てることができます。AVFoundationフォーカスモードiPad2

devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
for (AVCaptureDevice *tempDevice in devices) { 
    [tempDevice lockForConfiguration:nil]; 
    if ([tempDevice isFocusModeSupported:AVCaptureFocusModeAutoFocus]) { 
     NSLog(@"Here"); 
    } 

    if ([tempDevice isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus]) { 
     NSLog(@"Here"); 
    } 

    if ([tempDevice isFocusModeSupported:AVCaptureFocusModeLocked]) { 
     NSLog(@"Here"); 
    } 

    if ([tempDevice isFocusPointOfInterestSupported]) { 
     NSLog(@"Here"); 
    } 
    [tempDevice unlockForConfiguration]; 
} 

答えて

7

私は今夜これを調べていました。私が収集したものから、iPad 2はしませんフォーカス - 露出調整 - デフォルトのカメラアプリでは、画面をタップすると、実行する領域が示された矩形が表示されますホワイトポイント調整がオンです。

おそらく私は間違っていますが、これは私が出てきたものであり、あなたのAPI(isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus NO)テストによって確認されたようです。

iPad 2のカメラはかなり弱いです。特に、前面に向いているカメラです。私はAppleがそれに同梱されていることに驚いている。

更新:これは最近のAVCamDemo Appleサンプルのコードで、フォーカス+露出+ホワイトポイントを処理します。私はこれがAVCamの例ではないと思います。 AVCamDemoは、デベロッパーセンターからWWDCコード.dmgパッケージをダウンロードすることができます.Webからのダウンロードは一件ではありません。 私の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]; 
     } 
    }  
} 
} 
+0

ので、どのアプリが白い長方形を示し、 – vodkhang

+0

を変更するいくつかの効果がAVCamの例を見てみましょうそこにあるん(別があり、私は周りより最近の 'AVCamDemo'を考えますあまりにも):http://developer.apple.com/library/ios/#samplecode/AVCam/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010112 –

+0

私は現在、AVCamの例を使って作業しています自分のカスタムインターフェイスを作ります。 isFocusPointOfInterestSupportedをテストするコードが含まれています。 私のiPad 2はこれを間違いなくスキップします。私は「新しい」iPadがそれを利用すると信じています。 – mpemburn

関連する問題