PhoneLineWatcher 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示一个类,该类监视设备上的新/删除/更新电话线路,并通知侦听器任何更改。
public ref class PhoneLineWatcher sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.ApplicationModel.Calls.CallsPhoneContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class PhoneLineWatcher final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.ApplicationModel.Calls.CallsPhoneContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class PhoneLineWatcher
Public NotInheritable Class PhoneLineWatcher
- 继承
- 属性
Windows 要求
设备系列 |
Windows Mobile Extension SDK (在 10.0.10240.0 中引入)
|
API contract |
Windows.ApplicationModel.Calls.CallsPhoneContract (在 v1.0 中引入)
|
应用功能 |
phoneCallHistory
phoneCallHistorySystem
|
注解
电话线是用户可用于接收入站电话或拨打出站电话的线路。 单个设备可以具有多行。 例如,系统专门为支持发起出站呼叫的 VoIP 应用程序创建单独的线路。
系统在启动时自动检测可用行,然后在创建或更改行时动态检测行。 PhoneLineWatcher 类为应用程序提供了一种机制,用于在检测到新电话线路并响应更改时接收事件。
此类实现观察程序模式。
可以通过调用 RequestLineWatcher 来检索此类的实例。
以下示例演示如何枚举所有当前电话线路。
private async Task<Dictionary<Guid, PhoneLine>> GetPhoneLinesAsync()
{
PhoneCallStore store = await PhoneCallManager.RequestStoreAsync();
// Start the PhoneLineWatcher
var watcher = store.RequestLineWatcher();
var phoneLines = new List<PhoneLine>();
var lineEnumerationCompletion = new TaskCompletionSource<bool>();
watcher.LineAdded += async (o, args) => { var line = await PhoneLine.FromIdAsync(args.LineId); phoneLines.Add(line); };
watcher.Stopped += (o, args) => lineEnumerationCompletion.TrySetResult(false);
watcher.EnumerationCompleted += (o, args) => lineEnumerationCompletion.TrySetResult(true);
watcher.Start();
// Wait for enumeration completion
if (!await lineEnumerationCompletion.Task)
{
throw new Exception("Phone Line Enumeration failed");
}
watcher.Stop();
Dictionary<Guid, PhoneLine> returnedLines = new Dictionary<Guid, PhoneLine>();
foreach (PhoneLine phoneLine in phoneLines)
{
if (phoneLine != null && phoneLine.Transport == PhoneLineTransport.Cellular)
{
returnedLines.Add(phoneLine.Id, phoneLine);
}
}
return returnedLines;
}
属性
Status |
获取 PhoneLineWatcher 实例的当前状态。 |
方法
Start() |
开始侦听设备上电话线路的更改。 |
Stop() |
停止侦听设备上对电话线路的更改。 |
事件
EnumerationCompleted |
当 PhoneLineWatcher 实例完成设备上所有电话线路的枚举时发生。 |
LineAdded |
当 PhoneLineWatcher 实例检测到设备上的新电话线时发生。 |
LineRemoved |
当 PhoneLineWatcher 实例检测到电话线已从设备中删除时发生。 |
LineUpdated |
当 PhoneLineWatcher 实例检测到设备上已更新电话线时发生。 |
Stopped |
当 PhoneLineWatcher 实例停止监视设备的电话线路更改时发生。 |