Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 如何仅在windows phone 8应用程序中通过耳机播放音频_Windows Phone 8_Windows Phone Voip - Fatal编程技术网

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

Windows phone 8 如何仅在windows phone 8应用程序中通过耳机播放音频,windows-phone-8,windows-phone-voip,Windows Phone 8,Windows Phone Voip,我尝试过AudioRoutingManager类…但我遇到了未经授权的访问异常。 这是我的密码 AudioRoutingManager audioRouting = AudioRoutingManager.GetDefault(); public AudioRoutingEndpoint ChangeAudioRoute() { var currentEndPoint= audioRouting.GetAudioEndpoint(); switch

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

Windows.Phone.Media.Devices命名空间中的API需要ID\u CAP\u音频路由和ID\u CAP\u VOIP功能。(将此添加到您的舱单中)

此外,只有在活动VOIP呼叫中才能更改音频路由


此外,您需要在后台VOIP过程中进行音频路由,而不是在前台过程中。

旧问题,但现在我知道了答案

您需要做两件事:

  • 将有问题的音频标记为“通信”
  • 如何做到这一点取决于您使用的API。它可以简单到。或者,您可能必须使用AudioClientProperties结构调用IAAudioClient2::SetClientProperties,该结构的AudioClientProperties.eCategory=AudioCategory\u通信

  • 将您的应用标记为“IP语音”应用或“语音邮件”应用 应将名为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>
    
    
    
  • 请在此处查看更详细的说明:


    不幸的是,我们尝试了此操作,将其添加到WMAppManifest.xml:。但是,引发了以下错误:错误14“Name”属性无效-值“ID\u CAP\u AUDIOROUTING”根据其数据类型“String”无效-枚举约束失败。这有点混乱。这个特定管理器的功能实际上是ID_CAP_VOIP。使用您的代码,AudioRoutingManager不会出现异常。但我想你还是会在SetAudioEndPoint上,除非有电话在进行中。我也这么认为。在所有MS示例中,设置端点仅在VOIP呼叫进行时可用。这与操作系统是一致的,在操作系统中,呼叫只有在启动后才能更改为扬声器。嘿,请确认,您只能在(VOIP)呼叫中更改音频路由。(我在Windows Phone上为Microsoft/Skype工作)。我已经更新了你的答案。用另一个便条更新了。路由需要在后台进程中完成。