我尝试过使用AudioRoutingManager类...但是我有未经授权的访问异常。 这是我的代码
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());
}
答案 0 :(得分:8)
Windows.Phone.Media.Devices命名空间中的API需要ID_CAP_AUDIOROUTING和ID_CAP_VOIP功能。 (将此添加到您的清单)
此外,只能在活动的VOIP呼叫中更改音频路由。
此外,您需要在后台VOIP过程中进行音频路由,而不是在前台进程中。
答案 1 :(得分:2)
老问题,但现在我知道了答案。
您需要做的两件事: 1.将相关音频标记为"通信"
如何执行此操作取决于您使用的API。它可以很简单。或者您可能必须使用AudioClientProperties.eCategory = AudioCategory_Communications的AudioClientProperties结构调用IAudioClient2 :: SetClientProperties。
将您的应用标记为" IP语音" app或者#34;语音邮件"应用 您应该使用以下内容将名为WindowsPhoneReservedAppInfo.xml的文件添加到项目中:
<?xml version="1.0" encoding="utf-8"?>
<WindowsPhoneReservedAppInfo xmlns="http://schemas.microsoft.com/phone/2013/windowsphonereservedappinfo">
<SoftwareCapabilities>
<SoftwareCapability Id="ID_CAP_VOIP" />
</SoftwareCapabilities>
</WindowsPhoneReservedAppInfo>
在这里寻找更详细的解释:
Playing audio to the earpiece from a Windows Phone 8.1 universal app