iOS 新卡因在扬声器上播放



我正在尝试使用 Novocaine 播放一些高性能的音频,但我找到的示例代码仅在耳机中播放音频,但我希望它在扬声器上播放......这可能吗?

谢谢

我已经像这样实现了路由更改,它似乎有效。只需将sessionPropertyListener替换为下面的代码并添加updateAudioRoute即可。

void sessionPropertyListener(void *                  inClientData,
                             AudioSessionPropertyID  inID,
                             UInt32                  inDataSize,
                             const void *            inData){

    if (inID == kAudioSessionProperty_AudioRouteChange)
    {
        Novocaine *sm = (Novocaine *)inClientData;
        [sm checkSessionProperties];
        [sm updateAudioRoute];
    }
}
//Quick and dirty way to override the audioRoute whenever the audioRoute is changed.
- (void)updateAudioRoute {
  CFStringRef newRoute;
  UInt32 size = sizeof(CFStringRef);
  CheckError(AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &size, &newRoute), 
             "couldn't get new audio route");
  if (newRoute)
  {
    CFShow(newRoute);
    if (CFStringCompare(newRoute, CFSTR("ReceiverAndMicrophone"), (UInt32)NULL)== kCFCompareEqualTo)
    {
      UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
      AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
    }
    else if (CFStringCompare(newRoute, CFSTR("HeadsetInOut"), (UInt32)NULL) == kCFCompareEqualTo)
    {
      UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
      AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
    }
  }
}

几乎有同样的问题。快速而肮脏的修复,添加以下内容:

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

到 iOS 部分的末尾 - (无效)设置音频在您的 Novocaine.m
中请注意,即使插入耳机,这也将通过扬声器播放音频!

在我看来,路由更改尚未实现,因为 -(void)选择音频设备为空。

相关内容

最新更新