Intereting Posts
Каков наилучший способ определить, что мое приложение никогда не было установлено на устройстве и если пользователь переустанавливает? Переверните растровое изображение в андроиде? ArrayList для DavidWebb Android Никогда не получал полный 480 * 800 при использовании 2D ортогональной проекции в opengl-es Android, AdMob: обновление объявлений AdMob снижает частоту кадров Монодеид Google Maps v2 – задача «LinkAssemblies» неожиданно завершилась неудачей Зачем просматривать ширину и высоту 0 в post () runnable? Android SlidingUpPanelLayout ускорить событие Onfling и OnTouch не работают вместе Класс Котлина не найден при построении с дженкинсами Новая версия SwipeRefreshLayout вызывает неправильную нитку просмотров Получить координаты центральной точки XY от выбора Android – Библиотека совместимости v4 Исключение (EdgeEffect) java.lang.NoClassDefFoundError:> android.widget.EdgeEffect Как обеспечить сохранение данных до того, как андроид уничтожит процесс Как изменить цвет фона приложения навсегда

Camera.Parameters.FLASH_MODE_TORCH для Android 2.1

Я пытаюсь написать приложение, которое требует, чтобы светодиодная вспышка включалась в режим факела. Проблема в том, что Android 2.1 не поддерживает этот режим, и поэтому я пока не могу поддерживать платформу. Не было бы проблемой, но я пишу это для своего жениха, и ее Epic 4G имеет только 2.1. Я нашел несколько примеров кода, которые используют некоторые недокументированные вызовы API и, следовательно, работают с Motorola Droid и т. Д., Но они не работают над Epic. Есть ли у кого-нибудь предложения о том, где искать код, который должен помочь мне заставить это работать?

Я нахожу, что режим факела, как правило, отлично работает на 2.1, но у меня была такая же проблема с Samsung Epic и нашла взломать его.

Глядя на параметры, возвращаемые Camera.getParameters () при запуске на Samsung Epic, я заметил, что флеш-режимы, которые, по его утверждению, поддерживают: flash-mode-values ​​= off, on, auto;

Факел-режим не указан, подразумевая, что он не поддерживается.

Тем не менее, я обнаружил, что эта модель все равно согласится с этим режимом и включит светодиод! Плохая новость заключалась в том, что при более позднем включении режима вспышки в автоматическом или выключенном состоянии светодиод все еще горит! Он не будет отключен, пока вы не вызовете Camera.release ().

Думаю, именно поэтому Samsung не включил его в список поддерживаемых!?!

Итак … метод, который я использую для переключения факела в классе CameraHelper, …

/*** * Attempts to set camera flash torch/flashlight mode on/off * @param isOn true = on, false = off * @return boolean whether or not we were able to set it */ public boolean setFlashlight(boolean isOn) { if (mCamera == null) { return false; } Camera.Parameters params = mCamera.getParameters(); String value; if (isOn) // we are being ask to turn it on { value = Camera.Parameters.FLASH_MODE_TORCH; } else // we are being asked to turn it off { value = Camera.Parameters.FLASH_MODE_AUTO; } try{ params.setFlashMode(value); mCamera.setParameters(params); String nowMode = mCamera.getParameters().getFlashMode(); if (isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_TORCH)) { return true; } if (! isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_AUTO)) { return true; } return false; } catch (Exception ex) { MyLog.e(mLOG_TAG, this.getClass().getSimpleName() + " error setting flash mode to: "+ value + " " + ex.toString()); } } 

Действия, которые используют это, называют это следующим …

 private void toggleFlashLight() { mIsFlashlightOn = ! mIsFlashlightOn; /** * hack to fix an issue where the Samsung Galaxy will turn torch on, * even though it says it doesnt support torch mode, * but then will NOT turn it off via this param. */ if (! mIsFlashlightOn && Build.MANUFACTURER.equalsIgnoreCase("Samsung")) { this.releaseCameraResources(); this.initCamera(); } else { boolean result = mCamHelper.setFlashlight(mIsFlashlightOn); if (! result) { alertFlashlightNotSupported(); } } } 

Магия, которая делает эту работу в releaseCameraResources (), заключается в том, что она вызывает Camera.release () …. а затем я должен повторно инициализировать все свои камеры для устройств Samsung.

Не очень, но, похоже, работает на множество пользователей.

Обратите внимание, что у меня есть отчет о режиме факела, который не работает вообще с этим кодом на Nexus one, но ему удалось его вникнуть. Это определенно работает на HTC EVO и Samsung Epic.

Надеюсь это поможет.

В моем случае для устройств Samsung мне нужно было установить режим фокусировки на бесконечность, и он начал работать

 params.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY); mCamera.setParameters(params); mCamera.startPreview();