Какое разрешение мне нужно, чтобы использовать вспышку камеры при предварительном просмотре камеры?

У меня есть собственное приложение камеры, и мне нужно иметь возможность включать / выключать вспышку (на самом деле режим фонарика).

Какое разрешение мне нужно в этом случае?

1. только

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

2. Те из 1 плюс:

<permission android:name="android.permission.FLASHLIGHT"
     android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
     android:protectionLevel="normal"/>

Я думаю, это используется, когда вы хотите использовать Flash, но без камеры (например, в этом случае: Android - использование вспышки камеры)

3. Те из 1 плюс:

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

ИЗМЕНИТЬ (спасибо @maclir):

Выше строка неверна. Правильный:

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

developer.android.com: «Подкомпонент. Приложение использует вспышку камеры устройства». (http://developer.android.com/guide/topics/manifest/uses-feature-element.html).

Во всех 3 случаях, протестированных на 2 устройствах, все работает нормально - я могу активировать / деактивировать вспышку, но я хочу быть уверен, что именно означает каждое из них. Странно, что даже без варианта 3 он работает нормально ... для чего используется вариант 3?

Думаю, что-то упускаю ...

ОТВЕТ

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

является обязательным для использования камеры (я не использую камеру через намерение, у меня есть приложение для настройки камеры)

и:

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

- специальные функции камеры, которые я использую в приложении.

android:required="false" означает, что Google Play не предотвратит установку приложения на устройства, на которых нет этих функций камеры, поэтому пользователь, имеющий устройство без камеры и вспышки, сможет установить приложение из магазина.

http://developer.android.com/reference/android/hardware/Camera.html


person Paul    schedule 10.07.2013    source источник
comment
Я думаю, что вариант 3 лучше всего подходит для использования камеры и автофокуса.   -  person Niko    schedule 10.07.2013
comment
android. googlesource.com/platform/frameworks/native/+/master/   -  person Niko    schedule 10.07.2013


Ответы (2)


Согласно группе разрешений разработчиков Android:

Обратите внимание, что этот элемент не объявляет само разрешение, а только категорию, в которую могут быть помещены разрешения. См. Элемент <permission> для получения информации об объявлении разрешений и назначении их группам.

Вам потребуются два разрешения Manifest.permission:

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

чтобы иметь доступ к камере и фонарику.

И вам нужно будет объявить аппаратные функции, которые используются приложением (камера и вспышка) Справочник по функциям:

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

android:required указывает, могут ли телефоны без этого оборудования устанавливать ваше приложение.

Что касается вашего третьего пункта, я думаю, у вас есть тип, потому что тег uses-permission не может использоваться с android.hardware...

<uses-permission android:name="android.hardware.camera.flash"/>
person maclir    schedule 10.07.2013
comment
я исправил в вопросе третье утверждение (на самом деле добавил комментарий) :) - person Paul; 16.07.2013
comment
Спасибо за ответ. Я обновил вопрос, чтобы лучше отразить ответ. - person Paul; 16.07.2013

Ответ Maclir показывает все подробности разрешения, необходимого для использования камеры и ее вспышки. вы также можете использовать эти два разрешения для использования фонарика в своем приложении.

    <uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
person SAURABH_12    schedule 16.07.2013
comment
итак, мне не нужно <uses-feature android:name="android.hardware.camera.flash"/>, если я использую <uses-feature android:name="android.hardware.camera" />? - person Paul; 16.07.2013
comment
фактически, если вы добавите ‹uses-permission android: name = android.permission.CAMERA /›, он неявно добавит все функции использования, связанные с камерой. - person Matias Elorriaga; 05.09.2014