我的应用程序需要后置摄像头的功能,前置摄像头是否存在对我的需求无关。在所有情况下,组合一个强大的例程来检测是否存在后置摄像头都很棘手。例如,一个HTC Evo 3D用户抱怨应用程序说没有后置摄像头(显然是有的),我还收到了其他用户的类似投诉。
这是一个棘手的测试问题,尽管我有许多设备,但我没有只有前置摄像头的设备,比如Nexus 7或任何被用户提到的型号。
以下是我拥有的内容,这些内容来自本网站上其他答案的代码:
我现在已经用这个更简单的版本替换了这段代码:
这是一个棘手的测试问题,尽管我有许多设备,但我没有只有前置摄像头的设备,比如Nexus 7或任何被用户提到的型号。
以下是我拥有的内容,这些内容来自本网站上其他答案的代码:
boolean rearCameraFound = false;
if(BUILD_VERSION > 8){
int cameraCount = 0;
Camera cam = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras();
for ( int camIdx = 0; camIdx < cameraCount; camIdx++ ) {
Camera.getCameraInfo( camIdx, cameraInfo );
if ( cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK ) {
try {
cam = Camera.open( camIdx );
Log.d("TAG", "Rear camera detected");
rearCameraFound = true;
} catch (RuntimeException e) {
Log.e("TAG", "Camera failed to open: " + e.getLocalizedMessage());
}
}
if ( cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT ) {
Log.d("TAG", "Front camera detected");
}
}
return rearCameraFound;
}else{
if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
// this device has a camera
return true;
} else {
// no camera on this device
return false;
}
}
我现在已经用这个更简单的版本替换了这段代码:
PackageManager pm = context.getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
然而,我不知道只有前置摄像头的Nexus 7会发生什么情况。这会返回真吗?
我正在寻找能够确定是否存在后置摄像头的代码!