Включить фонарик на Windows 10
Моя проблема довольно проста.
Я хочу включить вспышку (и оставить ее включенной) в проекте универсального приложения 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;
}
}
Редактировать: добавить код
2 ответа
Вы на правильном пути. В зависимости от устройства (из-за специфических реализаций драйвера) вам придется запустить предварительный просмотр или, возможно, даже начать сеанс видеозаписи, чтобы индикатор включился.
Из-за этого и для гарантии совместимости с большинством устройств я бы порекомендовал вам сделать то и другое.
Похоже, вы пытаетесь использовать старый метод доступа к фонарику, который нам больше не нужен при разработке Windows 10 UWP. Взгляните на новую функцию лампы в Windows.Devices.Lights в этом примере на GitHub.
Это отличная отправная точка для использования вспышки независимо от доступа к API-интерфейсам камеры.