如何通过耳机仅在Windows Phone 8应用程序中播放音频

时间:2013-02-04 10:43:20

标签: windows-phone-8 windows-phone-voip

我尝试过使用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());
    }

enter image description here

2 个答案:

答案 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。

  1. 将您的应用标记为" 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>
    
  2. 在这里寻找更详细的解释:

    Playing audio to the earpiece from a Windows Phone 8.1 universal app