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