有没有办法检测Android设备上前置摄像头的位置?
我认为在手机上它总是在耳机附近。但所有平板电脑都不同。我检查了华硕Transformer,前置摄像头在侧面(如果我在横向模式下保持在顶部),但三星Galaxy Tab(第一代,Android 2.2)上面有摄像头,就像所有手机一样。
那么有没有办法检查前置摄像头放在哪里?也许我可以用代码来做,也许有设备规则?就像Android 2.x设备一样,Android 3.x设备就在旁边?那么Adnroid 4.x设备呢?
答案 0 :(得分:3)
没有办法做到这一点。阅读http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html
您可以检查两个常量:
int CAMERA_FACING_BACK The facing of the camera is opposite to that of the screen.
int CAMERA_FACING_FRONT The facing of the camera is the same as that of the screen.
所以我很抱歉 - 无法检查它是否在旁边。
答案 1 :(得分:2)
高于API等级9
/**
* @return true : Front facing camera is available. false : Front facing
* camera is not available.
*/
private boolean isFrontCameraAvailable() {
int cameraCount = 0;
boolean isFrontCameraAvailable = false;
cameraCount = Camera.getNumberOfCameras();
while (cameraCount > 0) {
CameraInfo cameraInfo = new CameraInfo();
cameraCount--;
Camera.getCameraInfo(cameraCount, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {
isFrontCameraAvailable = true;
break;
}
}
return isFrontCameraAvailable;
}
答案 2 :(得分:0)
你可以打电话
Camera.getCameraInfo (int cameraId, Camera.CameraInfo cameraInfo).
您可以使用
确定摄像机的数量Camera.getNumberOfCameras();
Camera.CameraInfo.facing字段将为CAMERA_FACING_BACK或CAMERA_FACING_FRONT。
答案 3 :(得分:0)
我还没有找到此信息的API。
我认为您最好的选择是启发式方法来查看Build
信息并为您知道的位置制作映射
https://developer.android.com/reference/android/os/Build.html
如果设备/品牌与Samsung Galaxy Tab匹配,则认为它位于顶部。
如果它们与Asus Transformer匹配则假设它在左侧。
如果您发现设备/品牌,您不知道记录它,如果您有足够的人使用该设备研究相机更新您的代码。