打开Windows 10上的手电筒

本文关键字:手电筒 Windows 打开 | 更新日期: 2023-09-27 18:24:24

我的问题很简单。

我想在Windows 10通用应用程序项目上打开(并保持打开)闪光灯,但我尝试的都不起作用。

这是代码

MediaCapture MyMediaCapture = new MediaCapture();
var allVideoDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
DeviceInformation cameraDevice =
        allVideoDevices.FirstOrDefault(x => x.EnclosureLocation != null &&
        x.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back);
cameraDevice = cameraDevice ?? allVideoDevices.FirstOrDefault();
if (cameraDevice == null)
{
    Debug.WriteLine("No camera device found!");
}
else
{
    await MyMediaCapture.InitializeAsync(new MediaCaptureInitializationSettings
    {
        VideoDeviceId = cameraDevice.Id
    });
    var MyVideoDeviceController = MyMediaCapture.VideoDeviceController;
    var MyTorch = MyVideoDeviceController.TorchControl;
    if (MyTorch.Supported)
    {
      var captureElement = new CaptureElement();
      captureElement.Source = MyMediaCapture;
      await MyMediaCapture.StartPreviewAsync();
       FileStream tmp = new FileStream(System.IO.Path.GetTempFileName() + Guid.NewGuid().ToString() + ".mp4", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None, 10000, FileOptions.RandomAccess | FileOptions.DeleteOnClose);
       var videoFile = await KnownFolders.VideosLibrary.CreateFileAsync(tmp.Name, CreationCollisionOption.GenerateUniqueName);
       var encodingProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Wvga);
       await MyMediaCapture.StartRecordToStorageFileAsync(encodingProfile, videoFile);
       MyTorch.PowerPercent = 100;
       MyTorch.Enabled = true;
    }
}

编辑:添加代码

打开Windows 10上的手电筒

看起来你正在尝试使用一种旧的访问手电筒的方法,我们在Windows 10 UWP开发中不再需要使用这种方法。看看GitHub上这个示例中Windows.Devices.Lights中的新Lamp功能。

这是使用独立于访问相机API的闪光灯的一个很好的起点。

你走在了正确的道路上。根据设备的不同(由于驱动程序特定的实现),您必须启动预览,甚至可能启动视频录制会话才能打开灯。

正因为如此,为了保证与大多数设备的兼容性,我建议您同时使用这两种设备。