如何仅在Windows手机8应用程序通过发挥耳机音频(how to play audio throu

2019-07-19 05:48发布

我曾尝试与AudioRoutingManager类...但我得到unauthorizedaccess例外。 这里是我的代码

 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());
    }

Answer 1:

在Windows.Phone.Media.Devices命名空间中的API需要的ID_CAP_AUDIOROUTING和ID_CAP_VOIP能力。 (添加到您的清单)

此外,这是唯一可能在一个活跃的VOIP呼叫改变音频路由一会儿。

此外,你需要做的的音频路由在你的背景VOIP过程中,而不是在前台进程。



Answer 2:

老问题,但现在我知道答案。

你需要做两件事情:1,标签有问题的声音为“通信”

如何做到这一点取决于你所使用的API。 这可能是那样简单。 或者你可能需要调用IAudioClient2 :: SetClientProperties与AudioClientProperties结构,其AudioClientProperties.eCategory = AudioCategory_Communications。

  1. 标记您的应用程序无论是作为“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> 

看看这里更详细的解释:

从Windows 8.1手机通用的应用程序播放音频耳机



文章来源: how to play audio through earpiece only in windows phone 8 application