Переключить фонарик в Windows Phone 8.1

Может ли кто-нибудь сказать, как переключать фонарик в Windows Phone 8.1 с помощью C #? Похоже, что в Windows Phone 8.1 есть много изменений API, и большинство API в WP 8.0 не поддерживаются. Ответы высоко оценены.

Я могу использовать TorchControl на моем Lumia 820, как это: сначала вы должны указать, какую камеру вы будете использовать – по умолчанию это фронт (я думаю, именно поэтому вы можете найти некоторые проблемы), и мы хотим получить обратно один – тот, вспышка. Образец кода:

// edit - I forgot to show GetCameraID: private static async Task GetCameraID(Windows.Devices.Enumeration.Panel desiredCamera) { DeviceInformation deviceID = (await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture)) .FirstOrDefault(x => x.EnclosureLocation != null && x.EnclosureLocation.Panel == desiredCamera); if (deviceID != null) return deviceID; else throw new Exception(string.Format("Camera of type {0} doesn't exist.", desiredCamera)); } // init camera async private void InitCameraBtn_Click(object sender, RoutedEventArgs e) { var cameraID = await GetCameraID(Windows.Devices.Enumeration.Panel.Back); captureManager = new MediaCapture(); await captureManager.InitializeAsync(new MediaCaptureInitializationSettings { StreamingCaptureMode = StreamingCaptureMode.Video, PhotoCaptureSource = PhotoCaptureSource.VideoPreview, AudioDeviceId = string.Empty, VideoDeviceId = cameraID.Id }); } // then to turn on/off camera var torch = captureManager.VideoDeviceController.TorchControl; if (torch.Supported) torch.Enabled = true; // turn off if (torch.Supported) torch.Enabled = false; 

Обратите внимание, что это хорошая идея, чтобы вызвать captureManager.Dispose() после того, как вы закончите с ним.


Также обратите внимание, что на некоторых телефонах, чтобы включить факел / фонарик, вам нужно сначала запустить предварительный просмотр.

Windows Phone 8.1 – первая версия с выделенным API для управления освещением камеры. Этот API основан на Windows 8.1, но может использоваться в проектах Windows Phone 8.1 и в проектах Windows Phone Silverlight 8.1.

 var mediaDev = new MediaCapture(); await mediaDev.InitializeAsync(); var videoDev = mediaDev.VideoDeviceController; var tc = videoDev.TorchControl; if (tc.Supported) { if (tc.PowerSupported) tc.PowerPercent = 100; tc.Enabled = true; } 

Примечание. Примечание. TorchControl.Supported возвращает false на большинстве телефонов в предварительном просмотре разработчика WP8.1. Ожидается, что к моменту выпуска версии 8.1 будет исправлено обновление прошивки. Протестированные телефоны на момент написания: Lumia 620, 822, 1020: не работает, Lumia 1520: работает.

В Nokia Lumia 1520 вы используете FlashControl для переключения вспышки вместо TorchControl.

  //to switch OFF flash light mediacapture.VideoDeviceController.FlashControl.Enabled = false; //to switch ON flash light mediacapture.VideoDeviceController.FlashControl.Enabled = true; 

Не работает на моей Lumia 1520. Вам нужно начать видеозапись, чтобы получить работу фонарика:

  var videoEncodingProperties = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Vga); var videoStorageFile = await KnownFolders.VideosLibrary.CreateFileAsync("tempVideo.mp4", CreationCollisionOption.GenerateUniqueName); await captureManager.StartRecordToStorageFileAsync(videoEncodingProperties, videoStorageFile); 

В моей Lumia 1520. Мне нужно начать видеозапись и начать предварительный просмотр, чтобы получить работу фонарика:

 await captureManager.StartPreviewAsync();