Как включить фонарик камеры в Tokbox?

Я использую TokBox для проекта Android. Мне нужно добавить кнопку, которая включала бы вспышку в режим фонарика.

Объект Tokbox Publisher уже предоставляет метод swapCamera(), который переключается между всеми доступными камерами устройства. Но я не смог найти никакого API для изменения режима вспышки для текущей выбранной камеры.

Я попытался сам получить экземпляр android.hardware.Camera, чтобы изменить его вручную, но это не сработало, потому что я получил исключение "java.lang.RuntimeException: Fail to connect to camera service". Это связано с тем, что объект Camera используется Tokbox и не освобождается.

Я не смог найти способ получить доступ к экземпляру Camera, который использует Tokbox. Он даже устарел, начиная с уровня Android API 21.

Кто-нибудь может подсказать, как изменить параметры камеры? У меня есть доступ к View, на котором просматривается видео.


person Yashar PourMohammad    schedule 30.11.2014    source источник


Ответы (2)


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

Следующий код освобождает камеру:

public void ReleaseCamera()
    {
        if (_myPub != null) {
            _myPub.PublishVideo = false;

            BaseVideoCapturer bvc = _myPub.Capturer;
            if (bvc != null) {
                bvc.StopCapture ();
                bvc.Destroy ();
            }
        }
    }

И этот код снова подключает камеру:

public void AttachCamera()
    {
        if (_myPub != null) {
            BaseVideoCapturer bvc = _myPub.Capturer;
            if (bvc != null) {
                if (bvc.IsCaptureStarted == false) {
                    bvc.Init ();
                    bvc.StartCapture ();
                    _myPub.PublishVideo = true;
                }           
            }
        }
    }
person Henrik Lund    schedule 04.12.2014
comment
нет, не помогает. Вспышка автоматически выключится, когда вы ее отпустите. - person Kirill Vashilo; 28.08.2017
comment
при чем тут _myPub?? - person Shubhank Gupta; 17.11.2020

свет фонарика будет работать только с задней камерой, поэтому, если вы публикуете видео с передней камеры, он заморозит видео с токбокса.

if(publisher.cameraPosition == .back){

        if let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo), device.hasTorch {
            do {
                try device.lockForConfiguration()
                let torchOn = !device.isTorchActive
                try device.setTorchModeOnWithLevel(1.0)
                device.torchMode = torchOn ? .on : .off
                device.unlockForConfiguration()
            } catch {
                print("error")
            }
        }
    }
person Spydy    schedule 23.03.2018
comment
я могу подтвердить, что (на iPhone) с помощью Xamarin Essentials для установки лампы, например. Xamarin.Essentials.Flashlight.TurnOnAsync() . Замораживает видео с фронтальной камеры для TokBox. Не уверен, почему это произойдет. Как только вы выключите лампу, поток продолжится. Вопрос был про андроид. - person Menace; 23.07.2019