Установка параметров. FLASH_MODE_TORCH не работает на Droid X 2.3 - PullRequest
4 голосов
/ 30 июля 2011

Я пишу приложение, которое устанавливает режим вспышки на факел. Я тестировал приложение на моем Droid X, и светодиодный индикатор не загорается. Я попробовал его на Droid Incredible, и он работал нормально. Я не могу понять, в чем проблема. Вот часть моего кода для включения режима горелки.

    Camera mCamera = Camera.open();
    Camera.Parameters params = mCamera.getParameters();
    if(params.getFlashMode() != null){
        params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
    }
    mCamera.setParameters(params);

Я добавил mCamera.startPreview (); потому что я читаю это должно иметь значение, но это не так. Я также составил список доступных режимов вспышки и вывел их на экран, чтобы убедиться, что у моего Droid X есть режим горелки, и он был в списке. Я даже создал новое приложение из кода, который я нашел онлайн, который включает и выключает светодиодную вспышку с помощью кнопки. Опять же, он работал нормально на Droid Incredible, но не на Droid X. Есть что-то, чего мне не хватает, чтобы заставить его работать на Droid X, или это может быть что-то с Gingerbread? Droid X работает под управлением Gingerbread, а Droid Incredible работает под управлением FroYo.

Ответы [ 4 ]

6 голосов
/ 18 января 2012

При настройке FLASH_MODE_TORCH встречается довольно много странностей.

Часто вам нужно запустить предварительный просмотр камеры:

Camera mCamera = Camera.open();
mCamera.startPreview();
Camera.Parameters params = mCamera.getParameters();
if(params.getFlashMode() != null){
    params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(params);

Это может решить проблему на некоторых телефонах, другие телефоны также требуютпредварительный просмотр для отображения в SurfaceView.Это может быть сделано путем реализации интерфейса SurfaceHolder.Callback в вашей деятельности.Смотрите пример здесь .

4 голосов
/ 22 августа 2011

Возможно, Droid X не поддерживает режим факела.Попробуйте что-то вроде этого:

        List<String> pList = camera.getParameters().getSupportedFlashModes();

        if (pList.contains(Parameters.FLASH_MODE_TORCH))
            parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);


         camera.setParameters(parameters);
2 голосов
/ 01 апреля 2017

См. Выпуск 191453 :

SurfaceTexture mDummy = new SurfaceTexture(1); // any int argument will do
camera.setPreviewTexture(mDummy);
camera.startPreview();
0 голосов
/ 31 мая 2013

Единственное, что я обнаружил, что работает на Droid X, это код, представленный Сиддхпурой Амитом в этом ответе частично вниз по странице Используйте фонарик камеры в Android . Он проверяет производителя и проверяет, содержит ли оно строку «моторола». Если это так, у него есть специальный код, который может включать или выключать светодиод вспышки камеры. Я могу убедиться, что он работает, так как у меня Motorola Droid X.

...