public async Task StartVoipTask()
{
// Leaving the idle state means there's a call that's happening.
// Trigger the VoipTask to prevent this background task from terminating.
#if true // VoipCallCoordinator support
if (Hub.Instance.VoipTaskInstance == null &&
ApiInformation.IsApiContractPresent("Windows.ApplicationModel.Calls.CallsVoipContract", 1))
{
var vcc = VoipCallCoordinator.GetDefault();
var voipEntryPoint = typeof(VoipTask).FullName;
Debug.WriteLine($"ReserveCallResourcesAsync {voipEntryPoint}");
try
{
var status = await vcc.ReserveCallResourcesAsync(voipEntryPoint);
Debug.WriteLine($"ReserveCallResourcesAsync result -> {status}");
}
catch (Exception ex)
{
const int RTcTaskAlreadyRunningErrorCode = -2147024713;
if (ex.HResult == RTcTaskAlreadyRunningErrorCode)
{
Debug.WriteLine("VoipTask already running");
}
else
{
Debug.WriteLine($"ReserveCallResourcesAsync error -> {ex.HResult} : {ex.Message}");
}
}
}
#else
var ret = await _hub.WebRtcTaskTrigger.RequestAsync();
Debug.WriteLine($"VoipTask Trigger -> {ret}");
#endif
}