2017-06-21 14 views
0

私はカスタムSurfaceViewカメラで作業しています。私のアプリケーションはユーザーのセルフを取るので、フロントカメラで作業する必要があります。カスタムフロントカメラの利用可能性をチェック

私は、以下のコードを使用してフロントカメラが利用可能かどうかを確認しました。

public boolean checkFrontCamera() { 
    int numCameras = Camera.getNumberOfCameras(); 
    for (int i = 0; i < numCameras; i++) { 
     Camera.CameraInfo info = new Camera.CameraInfo(); 
     Camera.getCameraInfo(i, info); 
     if (CameraSource.CAMERA_FACING_FRONT == info.facing) { 
      return true; 
     } 
    } 
    return false; 
} 

デバイスに両方のカメラが搭載されていて、trueを返している場合は正常です。しかし、デバイスにカメラが1つしかない場合、このメソッドは常にfalseを返します。この場合、info.facingは0であり、このコードではCameraSource.CAMERA_FACING_FRONTは1です。

カメラ用、私はgmsビジョンライブラリを使用しています。以下のコードは、カメラソース用です。

CameraSource mCameraSource = new CameraSource.Builder(context, detector) 
       .setRequestedPreviewSize(640, 480) 
       .setFacing(CameraSource.CAMERA_FACING_FRONT) 
       .setRequestedFps(30.0f) 
       .build(); 

ここでは、カメラに直面しているパラメータを渡す必要があります。

他の方法をご用意ください。すべてのソリューションが歓迎されています。

+1

を返し、このメソッドを使用することができます。私はフロントカメラだけのアンドロイドデバイスはないと思う。 – aborocz

+0

お返事ありがとうございます。私はこの問題を知るために来ているフロントカメラだけを持っている、つまりLenovo Tab 2 A7-10Fという装置を持っています。 – Neo

+0

その場合、フロントカメラとはみなされません。 – aborocz

答えて

1

さてあなたはそれがこのよう罰金だカメラオブジェクト

private Camera getCameraInstance() { 
    Camera c = null; 
    try { 
     if (Camera.getNumberOfCameras() >= 2) { 
      //Front facing camera 
      c = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT); 
     } else { 
      // only has one camera (Rear) 
      c = Camera.open(); 
     } 
    } catch (Exception e) { 
     // Camera is not available (in use or does not exist) 
    } 
    return c; // returns null if camera is unavailable 
} 
+0

ありがとう、私の編集した質問をご覧ください。私はgmsのlibを使用しているので、カメラはcamera.facingに基づいて開きます。 – Neo

+0

そして、このコードでは、カメラが1台しかない場合に得られるプライマリカメラが開きます。利用可能な場合はフロントカメラのみを開くか、ユーザーに警告する必要があります。 – Neo

関連する問題