共用方式為


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 實例停止監視裝置以變更電話線時發生。

適用於