安卓相机:需要前置或后置摄像头

7
我的应用程序需要相机才能工作。但是,无论是后置摄像头还是前置摄像头都可以。
现在,在我的清单中有这个:
<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

看起来这似乎不可能。

我认为解决这个问题的一种方法是制作两个单独的APK,一个包含android.hardware.camera,另一个包含android.hardware.camera.front,并使用Multiple APK Support将两者都上传到Google Play。尽管我还没有测试过。

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


我只想添加+Android开发者确认,截至JB,无法像我想要的那样使用"use-feature":https://plus.google.com/u/1/108967384991768947849/posts/iwdKLZvY5cz - Jorge Cevallos
3个回答

2

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

a)我认为目前没有好的方法来要求APK中的任何一个摄像头。

b)如果您愿意,您可以删除uses-feature并在运行时检查相机。这将使用户体验更差,但它会起作用。

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

d)附注。据我所知,大多数Android设备都有相机。因此,如果您选择b)或c)解决方案,只有非常小的用户群体会注意到差异。


谢谢Victor。我想我会选择选项c)并在运行时进行必要的验证。这似乎是最好的解决方案。除非有更好的答案,否则几个小时后我会标记为已接受的答案。 - Jorge Cevallos

2
自回答此问题以来,情况已经发生了变化,现在您可以将uses-feature添加到清单中,以要求任何类似相机的功能。 详见此处
<uses-feature android:name="android.hardware.camera.any" android:required="true" />

1
问题在于android.permission.CAMERA权限意味着uses-feature: name='android.hardware.camera',而后者已经包含了android.hardware.camera.any功能。我不确定这是否正确,但最终我还是指定了<uses-feature android:name="android.hardware.camera" android:required="false" />以及<uses-feature android:name="android.hardware.camera.any" android:required="true" /> - Cat

1

我想在这个讨论中补充我的两分钱:

我实现了@Cat在对Juan Cortes的评论中所描述的相同结果。

我的测试方法是使用aapt(有关测试的说明可在http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features中找到),并查找显式或隐式的相机要求:

没有<uses-feature>标志,但需要camera权限: enter image description here 观察uses-implied-feature

仅使用<uses-feature android:name="android.hardware.camera.any" android:required="false" />enter image description here 仍然意味着应用程序始终需要相机。

两个 <uses-feature android:name="android.hardware.camera.any" android:required="false" /><uses-feature android:name="android.hardware.camera" android:required="false" /> 已定义: enter image description here 不再有暗示的功能。

希望这能帮助某些人为他们自己的应用程序创建档案。


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