Windows phone 8 WP8 led灯在屏幕锁下运行

Windows phone 8 WP8 led灯在屏幕锁下运行,windows-phone-8,windows-phone,Windows Phone 8,Windows Phone,在诸如Flashlight-X、Flashlight XT等应用程序中,实现了一个功能:在屏幕锁定下运行led灯。 启用灯光的一般实施: var captureDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, AudioVideoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back).First()); c

在诸如Flashlight-X、Flashlight XT等应用程序中,实现了一个功能:在屏幕锁定下运行led灯。 启用灯光的一般实施:

var captureDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, AudioVideoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back).First());

captureDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);
此代码启动灯,但在屏幕锁定20秒后灯被禁用。 应该怎样做才能使锁下的光保持活跃

在隐藏事件上阻塞UI线程可以工作,但不希望在解锁设备后将其保持阻塞状态


有些人建议禁用UserIdleDetectionMode,但这没有帮助。

以下代码将允许您的应用程序在锁定屏幕下运行:

    void rootFrame_Unobscured(object sender, EventArgs e)
    {

        status.Text = "coming back from lock screen!";
        // resume the application
    }

    void rootFrame_Obscured(object sender, ObscuredEventArgs e)
    {

        status.Text = "going under lock screen!";
        //minimize CPU usage, and  save the settings.
    }

    private void RunAppUnderLockscreen(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("The application will run under lock screen");
        PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
        PhoneApplicationFrame rootFrame = App.Current.RootVisual as PhoneApplicationFrame;
        if (rootFrame != null)
        {
            rootFrame.Obscured += new EventHandler<ObscuredEventArgs>(rootFrame_Obscured);
            rootFrame.Unobscured += new EventHandler(rootFrame_Unobscured);
        }
    }
void rootFrame\u未被阻止(对象发送方、事件参数e)
{
status.Text=“从锁定屏幕返回!”;
//恢复申请
}
void rootFrame_遮挡(对象发送器,遮挡目标e)
{
status.Text=“进入锁屏状态!”;
//最小化CPU使用,并保存设置。
}
私有void RunAppUnderLockscreen(对象发送方,路由目标)
{
Show(“应用程序将在锁定屏幕下运行”);
PhoneApplicationService.Current.ApplicationIdleDetectionMode=IdleDetectionMode.Disabled;
PhoneApplicationFrame rootFrame=App.Current.RootVisual作为PhoneApplicationFrame;
if(rootFrame!=null)
{
rootFrame.obclused+=新的事件处理程序(rootFrame\u obclused);
rootFrame.Unobscured+=新的事件处理程序(rootFrame\u Unobscured);
}
}
查看以获取更多有用的信息,例如:

请记住,对于您的应用程序集
ApplicationDetectionMode
IdleDetectionMode.Disabled
,它不能 将其更改回
IdleDetecionMode.Enabled
,直到应用程序启动 再次启动(因此完全重启)或停用,然后 重新激活