我想以编程方式检测 Windows Phone 10 的 UWP 应用程序何时挂断电话。
我看到 Caller ID sample并查看 Communication blocking and filtering sample也是。
但我没有找到检测挂断电话的简单解决方案。我找到了 CallHistoryChanged触发器,我认为我的复杂解决方案是在调用历史记录更改时读取调用历史记录触发器并获取最后一个来电。
有没有简单的检测挂断的方法?
我的解决方案是否正确? 有没有比我的解决方案更好的解决方案?
最佳答案
Is there any simple solution for detect call hang up? Is my solution is correct? Is there a better solution than my solution?
据我所知,没有其他简单的检测调用挂断的解决方案。
有一个事件PhoneCallManager.CallStateChanged , 它也可以像下面这样检测挂断:
private bool callCame = false;
PhoneCallManager.CallStateChanged += PhoneCallManager_CallStateChanged;
private async void PhoneCallManager_CallStateChanged(object sender, object e)
{
if (callCame&&(!PhoneCallManager.IsCallActive))
{
//do something
}
if (PhoneCallManager.IsCallIncoming)
{
callCame = true;
}
}
但我不认为它比 CallHistoryChanged
触发器更好。而且它也不会给你最后挂断电话的号码。
Is my solution is correct?
是的,您的解决方案是正确的。
更新:这里没有技巧。注册后台任务:
private void btnClick_Click(object sender, RoutedEventArgs e)
{
var taskRegistered = false;
var exampleTaskName = "MyBackgroundTask";
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == exampleTaskName)
{
taskRegistered = true;
break;
}
}
if (!taskRegistered)
{
var builder = new BackgroundTaskBuilder();
builder.Name = exampleTaskName;
builder.TaskEntryPoint = "PhoneCallBackground.Class1";
builder.SetTrigger(new PhoneTrigger(Windows.ApplicationModel.Calls.Background.PhoneTriggerType.CallHistoryChanged, false));
builder.Register();
}
}
如果您注册了 BackgroundTask,Run
方法将在您挂机后触发。 PhoneCallManager
无法注册 BackgroundTask。如果您想使用它,您需要将其设置为默认的 PhoneCall 应用程序。
更新2:
我查看了demo,你还在使用PhoneTriggerType.CallOriginDataRequest
注册后台任务。请将其更改为 PhoneTriggerType.CallHistoryChanged
。还要确保在对代码进行任何更改后取消注册已注册的后台任务。
这是我修改的演示:CallHistoryChangeTest .
关于c# - 如何在Windows Phone 10中检测电话挂断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39789076/