我的應用程序具有需要後置攝像頭的功能。是否有前置攝像頭與我的需求無關。在任何情況下,整合一個強大的程序來檢測後置攝像頭是否存在,這證明是棘手的。例如,一位擁有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