Как включить фонарик в приложении на Windows Phone 8

Я хочу сделать ap, чтобы включить вспышку, когда я нажимаю кнопку включения, и выключить, когда я нажимаю кнопку выключения. Это мой код:

protected AudioVideoCaptureDevice Device { get; set; }

    private async void Button_Click_TurnOn(object sender, RoutedEventArgs e)
    {
        var sensorLocation = CameraSensorLocation.Back;

        try
        {
            // get the AudioViceoCaptureDevice
            var avDevice = await AudioVideoCaptureDevice.OpenAsync(sensorLocation,
                AudioVideoCaptureDevice.GetAvailableCaptureResolutions(sensorLocation).First());

            // turn flashlight on
            var supportedCameraModes = AudioVideoCaptureDevice
                .GetSupportedPropertyValues(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode);
            if (supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On))
            {
                avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);

                // set flash power to maxinum
                avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchPower,
                    AudioVideoCaptureDevice.GetSupportedPropertyRange(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchPower).Max);
            }
            else
            {
                //ShowWhiteScreenInsteadOfCameraTorch();
            }

        }
        catch (Exception ex)
        {
            // Flashlight isn't supported on this device, instead show a White Screen as the flash light
            // ShowWhiteScreenInsteadOfCameraTorch();
        }
    }

    private void Button_Click_TurnOff(object sender, RoutedEventArgs e)
    {
        var sensorLocation = CameraSensorLocation.Back;

        try
        {
            // turn flashlight on
            var supportedCameraModes = AudioVideoCaptureDevice
                .GetSupportedPropertyValues(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode);
            if (this.Device != null && supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.Off))
            {
                this.Device.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.Off);
            }
            else
            {
                //turnWhiteScreen(false);
            }
        }
        catch (Exception ex)
        {
            // Flashlight isn't supported on this device, instead show a White Screen as the flash light
            //turnWhiteScreen(false);
        }
    }

Я скопировал его из другого вопроса в stackru, но я не знаю, почему этот код не работает для меня. Проверено на Lumia 820.

Пожалуйста, помогите мне, большое спасибо:)

1 ответ

async private void FlashlightOn_Click(object sender, RoutedEventArgs e)
    {           
            // turn flashlight on
            CameraSensorLocation location = CameraSensorLocation.Back;
            if (this.audioCaptureDevice == null)
            {
                audioCaptureDevice = await AudioVideoCaptureDevice.OpenAsync(location,
                AudioVideoCaptureDevice.GetAvailableCaptureResolutions(location).First());
            }
            FlashOn(location, VideoTorchMode.On);

           }

        private void FlashlightOff_Click(object sender, RoutedEventAgrs e)
        {
            // turn flashlight off
            var sensorLocation = CameraSensorLocation.Back;
            FlashOn(sensorLocation, VideoTorchMode.Off);
        }


    public bool FlashOn(CameraSensorLocation location, VideoTorchMode mode)
    {
        // turn flashlight on/off
        var supportedCameraModes = AudioVideoCaptureDevice
            .GetSupportedPropertyValues(location, KnownCameraAudioVideoProperties.VideoTorchMode);
        if ((audioCaptureDevice != null) && (supportedCameraModes.ToList().Contains((UInt32)mode)))
        {
            audioCaptureDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, mode);
            return true;
        }
        return false;
    }
Другие вопросы по тегам