【问题标题】:how to play audio through earpiece only in windows phone 8 application如何仅在 windows phone 8 应用程序中通过听筒播放音频
【发布时间】:2021-03-18 16:02:32
【问题描述】:

我已尝试使用 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-8 windows-phone-voip


    【解决方案1】:

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

    此外,只有在进行 VOIP 通话时才能更改音频路由。

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

    【讨论】:

    • 不幸的是,我们已经尝试过了,将其添加到 WMAppManifest.xml:。但是,会引发以下错误:错误 14“名称”属性无效 - 根据其数据类型“字符串”,值“ID_CAP_AUDIOROUTING”无效 - 枚举约束失败。
    • 嗯,这有点令人困惑。此特定管理器的功能实际上是 ID_CAP_VOIP。使用您的代码,您不会在 AudioRoutingManager 上遇到异常。但我认为除非正在进行通话,否则您仍然会使用 SetAudioEndPoint。
    • 我的观点相同。在所有 MS 示例中,设置端点仅在 VOIP 呼叫进行时可用。这将与操作系统一致,其中呼叫只能在启动后更改为扬声器。
    • 嘿,确认一下,您只能在 (VOIP) 通话中更改音频路由。 (我在 Windows Phone 上为 Microsoft/Skype 工作)。我已经更新了你的答案。
    • 更新了另一个注释。路由需要在后台进程中完成。
    【解决方案2】:

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

    你需要做的两件事:

    1. 将相关音频标记为“通信”

    如何执行此操作取决于您使用的 API。它可以像 .或者,您可能必须使用 AudioClientProperties.eCategory = AudioCategory_Communications 的 AudioClientProperties 结构调用 IAudioClient2::SetClientProperties。

    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>
      

    在这里寻找更详细的解释:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2021-11-18
      • 2012-12-07
      相关资源
      最近更新 更多