当我的应用在Google Nexus 7平板电脑上运行时,此标准Android测试会返回false,以查看该设备是否配备了相机。
PackageManager pm = this.getPackageManager();
if(!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
// disable camera button
}
现在我意识到Nexus 7没有配备内置相机应用程序,但是当我尝试启动相机活动时,我使用以下内容(为用户提供选择备用应用程序的选项)。
File fTempCameraFullDirPath = new File(msTempCameraFullDirPath);
Uri outputFileUri = Uri.fromFile( fTempCameraFullDirPath );
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult(Intent.createChooser(cameraIntent, getString(R.string.select_camera_app)), REQUEST_CODE_CAMERA);
现在显然我没有达到这个代码,因为对相机的测试失败了,我禁用了按钮,但似乎只要我在Nexus 7桌面上安装了相机应用程序我就应该能够拍照。
是否有人知道我可以使用此替代测试在此平板电脑(或类似设备)上启用此功能?
答案 0 :(得分:9)
您可以查看FEATURE_CAMERA_FRONT
,因为Nexus 7只有一个前置摄像头。
答案 1 :(得分:4)
尝试检查PackageManager.FEATURE_CAMERA_FRONT
以及FEATURE_CAMERA
,因为Nexus 7只有前置摄像头,Android摄像头选择算法默认为后置摄像头。
答案 2 :(得分:4)
作为答案的更新:
由于 API等级17 ,您还可以检查PackageManager.FEATURE_CAMERA_ANY
,这表明设备是否有任何相机,无论其位置如何。
答案 3 :(得分:1)
看docs它说FEATURE_CAMERA属于远离屏幕的摄像机,后者实际上是后置摄像头。理所当然,它应该返回false。