PhoneLineWatcher 类

定义

表示一个类,该类监视设备上的新/删除/更新电话线路,并通知侦听器任何更改。

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
继承
Object Platform::Object IInspectable 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 实例停止监视设备的电话线路更改时发生。

适用于