我曾尝试使用AudioRoutingManager class...but,但遇到了未授权访问异常。以下是我的代码
AudioRoutingManager audioRouting = AudioRoutingManager.GetDefault();
public AudioRoutingEndpoint ChangeAudioRoute()
{
var currentEndPoint= audioRouting.GetAudioEndpoint();
switch (currentEndPoint)
{
case AudioRoutingEndpoint.Earpiece:
case AudioRoutingEndpoint.Default:
return AudioRoutingEndpoint.Speakerphone;
case AudioRoutingEndpoint.Speakerphone:
return AudioRoutingEndpoint.Earpiece;
default:
throw new OperationCanceledException();
}
}
public void SetAudioRoute()
{
audioRouting.SetAudioEndpoint(this.ChangeAudioRoute());
}

发布于 2013-03-07 06:16:31
Windows.Phone.Media.Devices名称空间中的API需要ID_CAP_AUDIOROUTING和ID_CAP_VOIP功能。(将此添加到您的清单中)
此外,只有在活动的VOIP呼叫中才能更改音频路由。
此外,您需要在后台VOIP进程中进行音频路由,而不是在前台进程中。
发布于 2015-04-25 02:40:56
这是个老问题,但现在我知道答案了。
你需要做的两件事:
将有问题的音频标记为"communications"的
如何做到这一点取决于您所使用的API。它可以像这样简单。或者,您可能必须使用AudioClientProperties.eCategory = AudioCategory_Communications的AudioClientProperties结构调用IAudioClient2::SetClientProperties。
在这里可以找到更详细的解释:
Playing audio to the earpiece from a Windows Phone 8.1 universal app
https://stackoverflow.com/questions/14685019
复制相似问题