【WP8】WP8调用官方API使用LED灯

本文介绍如何在WP8中利用AudioVideoCaptureDevice类控制摄像头LED灯的开关,并提供了具体的实现代码示例。此外还介绍了如何在WMAppManifest.xml中添加必要的功能引用。

在WP7中没有相关的API可以直接使用摄像头的LED等,只能通过录像时打开LED等来使用,在WP8中添加了相关的调用接口,可以方便的使用LED灯,并且支持后台,废话不多说,直接上代码

1、在 WMAppManifest.xml 文件中添加对ID_CAP_ISV_CAMERAID_CAP_MICROPHONE功能的引用

<Capabilities>
    <Capability Name="ID_CAP_ISV_CAMERA"/>
    <Capability Name="ID_CAP_MICROPHONE"/>
</Capabilities>


2、通过 AudioVideoCaptureDevice 类来操作摄像头的LED开关

private AudioVideoCaptureDevice avDevice = null;

try
{
    if (avDevice == null)
    {
        //初始化
        avDevice = await AudioVideoCaptureDevice.OpenAsync(SensorLocation,
                                                           AudioVideoCaptureDevice
                                                               .GetAvailableCaptureResolutions(
                                                                   SensorLocation).First());

        //获取支持的Mode
        IReadOnlyList<object> supportedCameraModes = AudioVideoCaptureDevice.GetSupportedPropertyValues(SensorLocation,
                                                                                                        KnownCameraAudioVideoProperties
                                                                                                            .VideoTorchMode);
        if (!supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On))
        {
            //不支持LED灯,使用屏幕照明
            ShowWhiteScreenInsteadOfCameraTorch();
            return;
        }
        
        //打开LED灯
        avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);
        avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchPower,
                             AudioVideoCaptureDevice.GetSupportedPropertyRange(SensorLocation,
                                                                               KnownCameraAudioVideoProperties
                                                                                   .VideoTorchPower).Max);    
                                                                                   
        //关闭LED灯
        //avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.Off);
        //avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchPower,
        //                     AudioVideoCaptureDevice.GetSupportedPropertyRange(SensorLocation,
        //                                                                       KnownCameraAudioVideoProperties
        //                                                                           .VideoTorchPower).Min);    
        
        
    }
}
catch (Exception)
{
    ShowWhiteScreenInsteadOfCameraTorch();
}

3、使用完手电筒的时候要释放资源

            if (avDevice != null)
            {
                avDevice.Dispose();
                avDevice = null;
            }

 

 

 

转载于:https://www.cnblogs.com/bomo/p/3365778.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值