Я хочу включить переднюю вспышку (не с предварительным просмотром камеры) программно в Android. Я погуглил это, но помощь, которую я нашел, отослала меня к этой странице
У кого-нибудь есть ссылки или пример кода?
источник
Я хочу включить переднюю вспышку (не с предварительным просмотром камеры) программно в Android. Я погуглил это, но помощь, которую я нашел, отослала меня к этой странице
У кого-нибудь есть ссылки или пример кода?
Для этой проблемы вы должны:
Проверить наличие фонарика или нет?
Если так, то выключите / включите
Если нет, то вы можете делать что угодно, в соответствии с потребностями вашего приложения.
Для проверки наличия вспышки в устройстве:
Вы можете использовать следующее:
context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
который вернет истину, если вспышка доступна, ложь, если нет.
Смотрите:
http://developer.android.com/reference/android/content/pm/PackageManager.html для получения дополнительной информации.
Для включения / выключения фонарика:
Я погуглил и получил это об android.permission.FLASHLIGHT. Разрешение манифестов Android выглядит многообещающе:
<!-- Allows access to the flashlight -->
<permission android:name="android.permission.FLASHLIGHT"
android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
android:protectionLevel="normal"
android:label="@string/permlab_flashlight"
android:description="@string/permdesc_flashlight" />
Затем используйте Camera и установите Camera.Parameters . Основным параметром, используемым здесь, является FLASH_MODE_TORCH .
например.
Фрагмент кода для включения фонарика камеры.
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
Фрагмент кода для выключения света камеры.
cam.stopPreview();
cam.release();
Я только что нашел проект, который использует это разрешение. Проверьте код src быстрых настроек. здесь http://code.google.com/p/quick-settings/ (Примечание: эта ссылка теперь не работает)
Для фонарика смотрите http://code.google.com/p/quick-settings/source/browse/trunk/quick-settings/#quick-settings/src/com/bwx/bequick/flashlight (Примечание. сейчас сломан)
Update6 Вы также можете попробовать добавить SurfaceView, как описано в этом ответе, светодиодный фонарик на Galaxy Nexus, управляемый каким API? Похоже, это решение, которое работает на многих телефонах.
Обновление 5 Основное обновление
Я нашел альтернативную ссылку (для неработающих ссылок выше): http://www.java2s.com/Open-Source/Android/Tools/quick-settings/com.bwx.bequick.flashlight.htm Теперь вы можете использовать это ссылка на сайт. [Обновление: 14/9/2012 Ссылка не работает]
Обновление 1
Другой код OpenSource: http://code.google.com/p/torch/source/browse/
Обновление 2
Пример, показывающий, как включить светодиод на Motorola Droid: http://code.google.com/p/droidled/
Еще один открытый исходный код:
http://code.google.com/p/covedesigndev/
http://code.google.com/p/search-light/
Обновление 3 (виджет для включения / выключения светодиода камеры)
Если вы хотите разработать виджет, который включает / выключает светодиод вашей камеры, то вы должны обратиться к моему виджету ответа для включения / выключения фонарика камеры в Android .
Обновление 4
Если вы хотите установить интенсивность света, исходящего от светодиода камеры, можете обратиться. Можно ли изменить яркость светодиода на устройстве Android? полный пост. Обратите внимание, что только корневые устройства HTC поддерживают эту функцию.
** Вопросы:**
Есть также некоторые проблемы при включении / выключении фонарика. например. для устройств, которые не имеют FLASH_MODE_TORCH
или даже имеют, то фонарик не включается и т. д.
Обычно Samsung создает много проблем.
Вы можете обратиться к проблемам в приведенном ниже списке:
Используйте фонарик камеры в Android
Включите / выключите светодиод камеры / вспышку в Samsung Galaxy Ace 2.2.1 & Galaxy Tab
По моему опыту, если ваше приложение предназначено для работы как в книжной, так и в альбомной ориентации, вам нужно объявить переменную
cam
как статическую. В противном случае,onDestroy()
который вызывается при переключении ориентации, разрушает его, но не освобождает камеру, поэтому невозможно снова открыть его.чтобы проявить, я должен был поставить эту строку
от http://developer.android.com/reference/android/hardware/Camera.html
предложенные строки выше не работают для меня.
источник
you need to declare the variable cam as static
Camera
класса в классAndroidStudio
обратите внимание наandroid.hardware
класс ...В API 23 или выше (Android M, 6.0)
ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ
Люди все еще голосуют против моего ответа, поэтому я решил опубликовать дополнительный код. Это было мое решение проблемы в тот день:
источник
Я получил AutoFlash свет с ниже простых трех шагов.
В вашем коде камеры сделать так.
Build + Run -> Now Перейдите в область Dim light и Snap photo, вы должны получить автоматическую вспышку, если устройство поддерживает.
источник
Android Lollipop представил API Camera2 и устарел предыдущий API камеры. Однако использование устаревшего API для включения флэш-памяти по-прежнему работает и намного проще, чем использование нового API.
Кажется, что новый API предназначен для использования в специализированных полнофункциональных приложениях для камер, и что его архитекторы на самом деле не рассматривали более простые варианты использования, такие как включение фонарика. Чтобы сделать это сейчас, нужно получить CameraManager, создать CaptureSession с фиктивной поверхностью и, наконец, создать и запустить CaptureRequest. Обработка исключений, очистка ресурсов и длинные обратные вызовы включены!
Чтобы узнать, как включить фонарик на Lollipop и новее, взгляните на FlashlightController в проекте AOSP (попробуйте найти новейшие API-интерфейсы, которые были изменены). Не забудьте установить необходимые разрешения.
Android Marshmallow наконец-то представил простой способ включения вспышки с помощью setTorchMode .
источник
Полный код для Android фонарик приложение
манифест
XML
MainActivity.java
источник
Существуют разные способы доступа к Camera Flash в разных версиях Android. Немного API перестали работать в Lollipop, а затем он снова изменился в Marshmallow. Чтобы преодолеть это, я создал простую библиотеку, которую использовал в нескольких своих проектах, и она дает хорошие результаты. Это все еще не полностью, но вы можете попробовать проверить код и найти недостающие фрагменты. Вот ссылка - NoobCameraFlash .
Если вы просто хотите интегрировать в свой код, вы можете использовать Gradle для этого. Вот инструкции (взятые непосредственно из Readme) -
Шаг 1. Добавьте репозиторий JitPack в ваш файл сборки. Добавьте его в свой корневой build.gradle в конце репозитория:
Шаг 2. Добавьте зависимость
использование
Инициализировать
NoobCameraManager
синглтон.При желании вы можете установить уровень ведения журнала для отладки. В журнале используется библиотека LumberJack . LogLevel по умолчанию
LogLevel.None
После этого вам просто нужно вызвать синглтон, чтобы включить или выключить вспышку камеры.
Flash тоже легко переключать
источник
You have to take care of the runtime permissions to access Camera yourself, before initializing the NoobCameraManager. In version 0.1.2 or earlier we used to provide support for permissions directly from the library, but due to dependency on the Activity object, we have to remove it.
Я реализовал эту функцию в своем приложении через фрагменты, используя SurfaceView. Ссылка на этот вопрос stackoverflow и его ответ можно найти здесь
Надеюсь это поможет :)
источник
В «Зефире» и выше, ответ «setTorchMode ()» CameraManager, кажется, является ответом. Это работает для меня:
источник
Попробуй это.
источник
Вы также можете использовать следующий код для выключения вспышки.
источник