MS Surface LTE:如何枚举可用的 Windows.ApplicationModel.Calls.PhoneLine?
MS Surface LTE: How can I enumerate available Windows.ApplicationModel.Calls.PhoneLine's?
我想知道是否可以在二合一设备(例如 Microsoft Surface Go LTE)上使用 Windows.ApplicationModel.Calls
命名空间的对象编写 UWP Phone 应用程序,用于使用插入的 SIM 卡拨打 phone 电话。
如何枚举所有可用的 phone lines 以在此类线路上拨打电话?
您可以使用 PhoneLineWatcher class 枚举所有可用的 phone 行,例如:
Task<Dictionary<Guid, PhoneLine>> getPhoneLinesTask = GetPhoneLinesAsync();
……
private async Task<Dictionary<Guid,PhoneLine>> GetPhoneLinesAsync()
{
PhoneCallStore store = await PhoneCallManager.RequestStoreAsync();
var watcher = store.RequestLineWatcher();
var phoneLines = new List<PhoneLine>();
var lineEnumberationCompletion = new TaskCompletionSource<bool>();
watcher.LineAdded += async (o, args) =>
{
var line = await PhoneLine.FromIdAsync(args.LineId);
phoneLines.Add(line);
};
watcher.Stopped += (o, args) => lineEnumberationCompletion.TrySetResult(false);
watcher.EnumerationCompleted += (o, args) => lineEnumberationCompletion.TrySetResult(true);
watcher.Start();
if(!await lineEnumberationCompletion.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;
}
注意,在访问所有 phone 行之前添加 phoneCall
功能。
关于phone调用的更多信息,可以参考GitHub中的sample。
我想知道是否可以在二合一设备(例如 Microsoft Surface Go LTE)上使用 Windows.ApplicationModel.Calls
命名空间的对象编写 UWP Phone 应用程序,用于使用插入的 SIM 卡拨打 phone 电话。
如何枚举所有可用的 phone lines 以在此类线路上拨打电话?
您可以使用 PhoneLineWatcher class 枚举所有可用的 phone 行,例如:
Task<Dictionary<Guid, PhoneLine>> getPhoneLinesTask = GetPhoneLinesAsync();
……
private async Task<Dictionary<Guid,PhoneLine>> GetPhoneLinesAsync()
{
PhoneCallStore store = await PhoneCallManager.RequestStoreAsync();
var watcher = store.RequestLineWatcher();
var phoneLines = new List<PhoneLine>();
var lineEnumberationCompletion = new TaskCompletionSource<bool>();
watcher.LineAdded += async (o, args) =>
{
var line = await PhoneLine.FromIdAsync(args.LineId);
phoneLines.Add(line);
};
watcher.Stopped += (o, args) => lineEnumberationCompletion.TrySetResult(false);
watcher.EnumerationCompleted += (o, args) => lineEnumberationCompletion.TrySetResult(true);
watcher.Start();
if(!await lineEnumberationCompletion.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;
}
注意,在访问所有 phone 行之前添加 phoneCall
功能。
关于phone调用的更多信息,可以参考GitHub中的sample。