AudioSessionGetProperty 已弃用,如何知道设备已静音
Posted
技术标签:
【中文标题】AudioSessionGetProperty 已弃用,如何知道设备已静音【英文标题】:AudioSessionGetProperty deprecated, how to know device is silenced 【发布时间】:2014-04-14 11:56:44 【问题描述】:我正在尝试检测用户的设备是否静音(手机侧面的按钮)。 我发现这种方法可以检测到这一点,但 ios7 中不推荐使用 AudioSessionGetProperty。
- (BOOL)deviceIsSilenced
CFStringRef state;
UInt32 propertySize = sizeof(CFStringRef);
OSStatus audioStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
if (audioStatus == kAudioSessionNoError)
NSLog(@"audio route: %@", state) // "Speaker" regardless of silent switch setting, but "Headphone" when my headphones are plugged in
return (CFStringGetLength(state) <= 0);
return NO;
有人有解决办法吗?
【问题讨论】:
【参考方案1】:根据Sound Switch,没有公共 API 来检测静默开关的状态,但它们提供了一个 hack(使用公共 API,因此被认为可以通过 Ap Store 批准,但仍需谨慎对待):
http://sharkfood.com/content/Developers/content/Sound%20Switch/
【讨论】:
以上是关于AudioSessionGetProperty 已弃用,如何知道设备已静音的主要内容,如果未能解决你的问题,请参考以下文章