您好我正在开发自定义视频应用。我可以通过
获得currentCameraId
currentCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;
我有两个问题要问:
1)如何仅使用前置摄像头检测Android设备。
因为在Micromax标签中只有前置摄像头的平板电脑上,currentCameraId
为0。
2)如何检查相机闪光灯的可用性,因为以下代码无法在某些手机上使用
flash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
请帮助。
谢谢!
答案 0 :(得分:7)
检查Flash Light是否可用
boolean hasFlash = getApplicationContext().getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
检查相机是否可用
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
}
如果您使用的是API级别9(Android 2.3)或更高版本,则可以执行以下操作来计算(第一个)前置摄像头的索引:
int getFrontCameraId() {
CameraInfo ci = new CameraInfo();
for (int i = 0 ; i < Camera.getNumberOfCameras(); i++) {
Camera.getCameraInfo(i, ci);
if (ci.facing == CameraInfo.CAMERA_FACING_FRONT) return i;
}
return -1; // No front-facing camera found
}
然后您可以使用Camera.open的索引
例如
int index = getFrontCameraId();
if (index == -1) error();
Camera c = Camera.open(index);
答案 1 :(得分:0)
你可以试试这个
public boolean hasFlash() {
if (camera == null) {
return false;
}
Camera.Parameters parameters = camera.getParameters();
if (parameters.getFlashMode() == null) {
return false;
}
List<String> supportedFlashModes = parameters.getSupportedFlashModes();
if (supportedFlashModes == null || supportedFlashModes.isEmpty() || supportedFlashModes.size() == 1 && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF)) {
return false;
}
return true;
}