Для решения этой проблемы вам необходимо:
Проверить, доступен ли фонарик или нет?
Если это так, то выключить / включить
Если нет, то вы можете делать все что угодно, в соответствии с потребностями вашего приложения.
Для Проверка наличия вспышки вустройство:
Вы можете использовать следующее:
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" />
Затем используйте Камера и установите Камера. Параметры .Основной параметр, используемый здесь: 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 (Примечание: эта ссылка теперь не работает)
Обновление 6 Вы также можете попробовать добавить 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