在Windows Phone 8.1中切换手电筒

时间:2014-07-20 04:55:07

标签: c# windows-phone-8.1

有谁能说如何使用C#在Windows Phone 8.1中切换手电筒?似乎Windows Phone 8.1中有许多API更改,并且不支持WP 8.0中的大多数API。答案非常感谢。

4 个答案:

答案 0 :(得分:6)

我可以像这样在我的Lumia 820上使用TorchControl - 首先你必须指定你将使用哪个相机 - 默认是正面(我认为这就是为什么你会发现一些问题)我们想要后面的一个 - 闪光灯。示例代码:

// edit - I forgot to show GetCameraID:
private static async Task<DeviceInformation> 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()


另请注意,在某些手机上打开手电筒/手电筒时,您需要先开始预览。

答案 1 :(得分:4)

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

注意: 注意:在WP8.1开发人员预览中,TorchControl.Supported在大多数手机上都返回false。在WP 8.1发布之前,预计将通过固件更新来修复。在撰写本文时经过测试的手机:Lumia 620,822,1020:不工作,Lumia 1520:工作。

答案 2 :(得分:2)

在诺基亚Lumia 1520中,您使用 FlashControl 来切换闪光灯而不是TorchControl。

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

答案 3 :(得分:1)

在我的Lumia 1520中。我需要开始视频录制并开始预览才能让手电筒工作:

await captureManager.StartPreviewAsync();