三星Galaxy S手机:如何确定是否有前置摄像头?

5

我知道我们可以通过设置"camera-id"相机参数来访问早期Gingerbread Galaxy S设备上的前置摄像头:

Camera cam = Camera.open();
Camera.Parameters params = cam.getParameters();
params.set("camera-id", 2);

问题是,并非所有的Galaxy设备都有前置摄像头。这些设备确实有“camera-id”参数,并且允许我将其设置为2(前置)。据我所知,确定是否存在前置摄像头的唯一方法是查看当“camera-id”为2时,“startPreview()”是否抛出异常。这种解决方法有点尴尬,特别是当我试图支持多个设备时。
有人找到了一种查询2.1或2.2 Galaxy S上摄像头数量或至少确定前置摄像头存在的方法吗?
谢谢!
1个回答

2
如果您需要使用前置摄像头,可以在AndroidManifest.xml文件中这样设置:
<uses-feature android:name="android.hardware.camera.front" android:required="true" />

如果你不需要在编译时确定,而想要在运行时检查,你可以使用PackageManager来实现:

PackageManager.hasSystemFeature(PackageManager. FEATURE_CAMERA_FRONT);

谢谢您的回复,但该功能仅适用于Gingerbread(2.3),而我需要在2.1 / 2.2设备上使用,使用不太记录的三星相机切换API。 - mrb
AndroidManifest部分仍将工作。除此之外,没有其他方法可以实现。Android核心直到2.3版本才支持前置摄像头,因此在早期版本中实现它的唯一方法是使用特定于设备的扩展。 - CaseyB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接