これをデバッガーで実行すると、info.facing == 0 と表示されます。これは、背面カメラであることを意味します。
Camrea オブジェクトをインスタンス化しようとすると、null になります。
エミュレーターで、デバイスを背面カメラを無効にし、前面カメラを有効に設定しました。背面カメラがないのに背面カメラがあるとデバイスが判断するのはなぜですか?
Eclipse ADT を使用しています。
これが私の方法です。2 番目のループに到達することはありません。getCamreaInstance は null である c を返します。
public static Camera getCameraInstance(){
Camera c = null;
CameraInfo info = new CameraInfo();
if (info.facing == CameraInfo.CAMERA_FACING_BACK){
//Calling Camera.open() throws an exception if the camera is already in use by another application, so we wrap it in a try block.
//Failing to check for exceptions if the camera is in use or does not exist will cause your application to be shut down by the system.
try {
c = Camera.open();
}
catch (Exception e){
// Camera is not available (in use or does not exist)
}
return c;
}
//we want the back facing, if we cant get that then we try and get the front facing
else if (info.facing == CameraInfo.CAMERA_FACING_FRONT){
c = Camera.open(Camera.getNumberOfCameras()-1); //i should test and see if -1 is a valid value in the case that a device has no camera
return c;
}
else{
//there are no cameras, so we need to account for that since 'c' will be null
return c;
}
}