Есть ли возможность активировать вспышку фронтальной камеры на телефонах Samsung? - PullRequest
1 голос
/ 08 апреля 2019

Я сейчас пытаюсь активировать встроенный передний фонарик на Samsung Galaxy A6, но устройство выдает информацию, как будто нет встроенной фронтальной вспышки.

Я уже пробовал разные методы, которые могут бытьнайдено путем поиска активирующей вспышки.

  1. Сначала была попытка получить supportFlashModes, а затем активировать флэш-память с помощью setParameters (API <23).Но просто getParameters () для фронтальной камеры не возвращает никакой информации о встроенной фронтальной вспышке.Для приложения кажется, что нет фронтальной вспышки. </p>

  2. Затем я попытался использовать API Camera2, представленный в API> = 23, и там возникает та же проблема.Извлечение характеристик камеры, а затем проверка доступности FLASH_INFO приводит только к возвращению false.Также попытка просто активировать вспышку с помощью setTorchMode (FRONT_CAMERA, true) выдает исключение, которое говорит: вспышка недоступна.

В настоящее время у меня только Samsung Galaxy A6 в качестве тестового устройства со встроеннымпередняя вспышка.Тот же код работает без проблем для задней (задней) камеры.

ad 1)

try {
            Camera camera;
            camera = Camera.open(cameraId);

            if (camera == null) {
                return false;
            }

            Camera.Parameters parameters = camera.getParameters();

            if (parameters.getFlashMode() == null) {
                camera.release();
                return false;
            }
    ...

В этот момент он просто завершает работу, потому что .getFlashMode () возвращает ноль для переднейкамера.Следующими шагами будет проверка supportFlashModes, а затем вызов setParamater of Camera.

ad 2)

try {
        String camID = null;
        for(String cameraID : mCameraManager.getCameraIdList()) {
            CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(cameraID);

        int orientation = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
        if (orientation == CameraCharacteristics.LENS_FACING_FRONT) {

                if(cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
                        camID = cameraID;
                    }
        }

        if(camID != null) {
            mCameraManager.setTorchMode(camID, true);
        }

    } catch (Exception exc) {
        ...
    }

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

1 Ответ

0 голосов
/ 24 апреля 2019

После исследования кажется, что некоторые производители телефонов используют частные API для управления оборудованием.Особенно этим пользуются Samsung и Huawei.Основное приложение камеры на устройстве в основном управляется этим API, и Frontflash можно использовать как положено.Но даже большие приложения для камер, такие как Instagram и Snapchat, не могут от этого избавиться и также не могут активировать, например Frontflash.

Для собственных целей аппаратное обеспечение просто не предоставляет никаких функций для активации Frontflash на некоторых устройствах., он просто реагирует, как будто нет встроенной фронтальной вспышки. На данный момент нет доступных решений для этой проблемы.

Существующие обходные пути делают отбеливание экрана, чтобы осветить окружающую среду перед телефоном.

...