在Android清单文件中添加<uses-feature>

17

我很困惑在清单文件中应该添加哪个

uses-feature

标签。我在我的应用程序中使用相机。我已经添加了权限,但是我不确定在哪里添加功能以使用前置摄像头。你可以帮助我吗?

4个回答

20

将此内容添加到<manifest>标签下,如下所示:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="com.lalllala">
       <uses-permission android:name="android.permission.INTERNET" />
       <uses-permission android:name="android.permission.VIBRATE" />
       <uses-feature android:name="android.hardware.camera" />
          <application android:icon="@drawable/icon" android:label="lalla" android:debuggable="true">

          </application>
    </manifest>

2
如果您也添加了<uses-feature...>的示例,那就更好了:)。 - MByD

5

<uses-feature> - 声明应用程序使用的单个硬件或软件功能。

声明的目的是通知任何外部实体您的应用程序依赖的硬件和软件功能集。该元素提供了一个必需的属性,让您指定您的应用程序是否需要并且不能在没有声明的功能的情况下运行,或者是否宁愿拥有该功能但可以在没有它的情况下运行。由于Android设备的功能支持可能会有所不同,因此元素在让应用程序描述其使用的设备可变特性方面发挥着重要作用。 阅读更多

以下是访问设备前置摄像头的示例代码。

public Camera openFrontFacingCamera() {
int cameraCount = 0;
Camera ffCam = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();

// Find the total number of cameras available
cameraCount = Camera.getNumberOfCameras();

// Find the ID of the CAMERA_FACING_FRONT & open it
for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
    Camera.getCameraInfo(camIdx, cameraInfo);
    if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
        try {
            ffCam = Camera.open(camIdx);
        } catch (RuntimeException e) {
            Log.e(TAG, "Camera failed to open: " + e.getLocalizedMessage());
        }
    }
}

    return ffCam;
}

需要以下权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />

更多信息请阅读Google Android开发者API文档相机相机信息


1
你复制并粘贴了这个开发者网站的内容,并没有花费实际努力来回答问题,这是失败的表现。 - stan
3
你说得对,我这么做是因为这是谷歌“Android开发者”网站上解释为什么要在清单文件中使用<uses-feature>标签的最佳方法,我将文本复制到这里只是为了简短地解释,如果读者希望阅读更多内容,可以点击页面链接。 - Rupesh Yadav
我们不能简单地说 <uses-feature android:name="android.permission.CAMERA" android:required="false" /> 吗? - Jaydev
<uses-feature> 的唯一目的是通知任何外部实体您的应用程序所依赖的硬件和软件功能集。简而言之,我们可以说 uses-feature 元素描述了您的应用程序使用的设备变量功能。 而 <uses-permission> 则请求必须授予应用程序才能正确运行的权限。权限在安装应用程序时由用户授予。 不允许合并这两个元素。 - Rupesh Yadav

2
在manifest标签下添加以下内容:
<!-- Request the camera permission -->
    <uses-permission
        android:name="android.permission.CAMERA" />
    <uses-feature
        android:name="android.hardware.camera"
        android:required="true" />

0

请按照以下方式编写标签顺序

<manifest>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />

    <uses-feature android:name="android.hardware.camera.autofocus" />

    <application>

    </application>
</manifest>

只需更改标签顺序,然后查看AndroidManifest XML文件的DTD或XSD。 - Ramesh Miriyala

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