다음을 통해 공유


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를 호출하여 이 클래스의 instance 검색할 수 있습니다.

다음 예제에서는 현재 모든 전화선을 열거하는 방법을 보여 줍니다.

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 instance 현재 상태 가져옵니다.

메서드

Start()

디바이스의 전화선 변경 내용에 대한 수신 대기를 시작합니다.

Stop()

디바이스의 전화선 변경 내용에 대한 수신 대기를 중지합니다.

이벤트

EnumerationCompleted

PhoneLineWatcher instance 디바이스의 모든 전화선 열거를 완료할 때 발생합니다.

LineAdded

PhoneLineWatcher instance 디바이스에서 새 전화선을 검색할 때 발생합니다.

LineRemoved

PhoneLineWatcher instance 장치에서 전화선이 제거되었음을 감지할 때 발생합니다.

LineUpdated

PhoneLineWatcher instance 디바이스에서 전화선이 업데이트되었음을 감지할 때 발생합니다.

Stopped

PhoneLineWatcher instance 전화선 변경에 대한 디바이스 모니터링을 중지할 때 발생합니다.

적용 대상