gpt4 book ai didi

iphone - 获取音频路由给出空字符串

转载 作者:行者123 更新时间:2023-12-02 23:22:04 25 4
gpt4 key购买 nike

我目前正在使用一段代码来检测用户是否已将iPhone插入/拔出耳机。我用来检测它的方法如下所示。

void audioRouteChangeListenerCallback (void *inUserData, AudioSessionPropertyID inPropertyID,UInt32 inPropertyValueSize, const void *inPropertyValue){                            
if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return;

CFStringRef route; UInt32 routeSize = sizeof(CFStringRef);
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute,&routeSize, &route);
NSString *oldroute = (NSString*)route;
NSLog(@"Audio Route changed to: %@",oldroute);
}

我要拔下耳机时会发生我的问题。按我的期望将其插入,日志文件显示“音频路径已更改为:耳机”,但是,当我拔出插头时,会得到一个用于oldroute的空字符串。我希望这个值像苹果文档中所说的那样是“扬声器”。有没有人见过这个?在获取字符串oldroute时我做错什么了吗?谢谢

最佳答案

对于我作为问题发布的确切问题,我仍然没有找到好的答案。这是一种变通方法,可能对有些类似问题的人有用。该解决方案为您提供了更改前处于 Activity 状态的路由。例如如果拔下耳机,您将得到一个字符串“Headphones”,或者如果您戴上耳机,您将得到一个字符串“Speaker”。

void audioRouteChangeListenerCallback (void *inUserData, AudioSessionPropertyID     inPropertyID,UInt32 inPropertyValueSize, const void *inPropertyValue){                            
if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return;

CFDictionaryRef routeChangeDictionary = (CFDictionaryRef)inPropertyValue;
CFStringRef oroute;
oroute = (CFStringRef)CFDictionaryGetValue(routeChangeDictionary, CFSTR(kAudioSession_AudioRouteChangeKey_OldRoute));
NSString *oldroute = (NSString*)oroute;
}

希望这可以帮助。

编辑:我将接受我的答案,直到出现更好的答案

关于iphone - 获取音频路由给出空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com