【问题标题】:How to turn on flashlight in an application on windows phone 8如何在 windows phone 8 的应用程序中打开手电筒
【发布时间】:2014-05-13 02:00:18
【问题描述】:

我想制作一个应用程序,当我按下 On 按钮时打开闪光灯,当我按下 Off 按钮时关闭闪光灯。这是我的代码:

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);
        }
    }

我从 stackoverflow 的另一个问题中复制了它,但我不知道为什么这段代码对我不起作用。在 Lumia 820 上测试。

请帮帮我,非常感谢:)

【问题讨论】:

标签: c# mobile windows-phone flashlight


【解决方案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;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多