我的应用程序具有需要后置摄像头的功能。是否有前置摄像头与我的需求无关。在任何情况下,整合一个强大的程序来检测后置摄像头是否存在,这证明是棘手的。例如,一位拥有HTC Evo 3D的用户抱怨说该应用说没有后置摄像头(显然是),而且我也收到了一些其他用户的类似投诉。检测后置摄像头的不足
这是一个棘手的事情来测试,因为尽管有很多设备,我没有一个只有前置摄像头的设备,比如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会发生什么情况,例如只有前置摄像头。这将返回真实?
我正在寻找能够确定是否存在后置摄像头的代码。
FYI ,此代码在Nexus 7运行股票JB 4.2 –
上返回false。Sahil - 在过去,我试图这样做,但被告知我没有足够的声誉来这样做。我想我现在有了,所以一定会经历我的问题并确保完成,谢谢。 – androidneil