【问题标题】:Android Camera: require frontal OR rear cameraAndroid 摄像头:需要前置或后置摄像头
【发布时间】:2012-09-03 15:53:07
【问题描述】:

我的应用需要摄像头才能工作。不过,不管是后置摄像头还是前置摄像头。

现在,我的清单中有这个:

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

如果需要前置摄像头,我知道我还可以添加这个:

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

但我想支持所有具有任一摄像头的设备。有没有办法做到这一点?

例如,我想支持只有前置摄像头的 Nexus 7。但我也想只支持后置摄像头的设备。

根据我所做的一些研究,例如:

http://code.google.com/p/android/issues/detail?id=35166

这似乎是不可能的。

我认为解决此问题的一种方法是制作 2 个单独的 APK,一个带有 android.hardware.camera,一个带有 android.hardware.camera.front,并使用其Multiple APK Support 将两者上传到 Google Play。不过我还没有测试过。

有没有人找到推荐的方法来支持所有带有前置摄像头、后置摄像头或两者的设备,但不支持没有任何摄像头的设备?

【问题讨论】:

标签: android google-play android-camera


【解决方案1】:

几个想法(没有明确的答案):

a) 我相信您是对的,目前在 APK 上没有要求任何一个摄像头的好方法。

b) 如果需要,您可以删除使用功能并在运行时检查相机。它会使用户体验更差,但它会起作用。

c) 您可以使用 use required="false" (http://developer.android.com/guide/topics/manifest/uses-feature-element.html)。希望 Google Market 优先使用此标志的应用程序。

c) 旁注。据我所知,大多数 Android 设备都有摄像头。因此,如果您使用解决方案 b) 或 c),只有非常小的用户群会注意到差异

【讨论】:

  • 谢谢维克多。我想我会选择选项 c) 并在运行时进行必要的验证。这似乎是最好的解决方案。除非有人有更好的答案,否则我会在几个小时内标记已接受的答案。
【解决方案2】:

This has changed 得到答复后,您现在可以将 uses-feature 添加到需要任何摄像头的清单中:

<uses-feature android:name="android.hardware.camera.any" android:required="true" />

【讨论】:

  • 问题是android.permission.CAMERA 权限意味着uses-feature: name='android.hardware.camera',它已经包含android.hardware.camera.any" 功能。不确定这是否正确,但我最终指定了&lt;uses-feature android:name="android.hardware.camera" android:required="false" /&gt;&lt;uses-feature android:name="android.hardware.camera.any" android:required="true" /&gt;
【解决方案3】:

只是为了在这个讨论中添加我的 2 美分:

我取得了与在 Juan Cortes 的评论中描述的 @Cat 相同的结果。

我对此进行测试的方式是使用 aapt(在 http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features 中找到的测试说明),并寻找显式或隐式的摄像头要求:

没有&lt;uses-feature&gt; 标志,但需要camera 权限: 观察uses-implied-feature

仅使用&lt;uses-feature android:name="android.hardware.camera.any" android:required="false" /&gt; 仍然暗示该应用程序总是需要一个相机。

&lt;uses-feature android:name="android.hardware.camera.any" android:required="false" /&gt;&lt;uses-feature android:name="android.hardware.camera" android:required="false" /&gt; 都定义了: 没有更多的隐含特征。

希望这可以帮助某人分析他们自己的应用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多