电话接听电话时发生了事件

时间:2014-04-30 07:15:12

标签: c# windows-phone-8

我正在开发一个Windows Phone应用程序,但我知道当屏幕上显示某个页面并且手机接到电话时,会发生哪个事件? 我如何订阅该活动?

我尝试检查应用程序停用事件和RunningInBackground事件,但它没有被触发。 它的愚蠢问题,但在互联网上找不到任何可以理解的东西。 是页面级别还是应用程序级别?

1 个答案:

答案 0 :(得分:2)

您可以使用Windows Phone Shell覆盖应用程序窗口时出现的Obscure和Unobscured事件。

这是什么意思?当您在Windows手机上接到电话时,您的应用程序窗口会被"来电视图"覆盖。 当手机中的闹钟响起时,会出现覆盖屏幕30%的视图,部分覆盖您的应用视图。

这些视图会触发您应用程序上的模糊事件。

来自MSDN:

  

没有迹象表明哪一块或多块壳铬   正在模糊应用程序。应用程序将获得Obscured   如果已经到达前景后立即发生事件   覆盖屏幕的一些UI。但是,当事件没有提出   应用程序在使用过程中被导航。

您可以在此处获取更多信息:

Obscured event

Unobscured event

最后,如何将它们与只能在设备上运行的simple example一起使用:


MainPage.xaml中

<TextBlock Name="txtObs" Grid.Column="0" Margin="0,10,0,0" Grid.Row="2"/>
<TextBlock Name="txtUnobs" Grid.Column="0" Margin="0,80,0,0" Grid.Row="2"/>

MainPage.xaml.cs中

在构造函数中添加:

PhoneApplicationFrame rootFrame = (Application.Current as App).RootFrame;
rootFrame.Obscured += OnObscured;
rootFrame.Unobscured += Unobscured;

然后在它之外:

void OnObscured(Object sender, ObscuredEventArgs e)
{
   txtObs.Text = "Obscured at "  + DateTime.Now.ToString();
}

void Unobscured(Object sender, EventArgs e)
{
   txtUnobs.Text = "Unobscured at "  + DateTime.Now.ToString();
}

要记住的一件事是,为了在锁定模式下运行您的应用程序,需要禁用ApplicationIdleDetectionMode

PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;

尝试一下!