Jyo*_*sna 17 iphone audio cocoa-touch objective-c ios
我正在开发一个应用程序.因为我想通过编码检测"iPhone是否处于静音模式?".我正在使用Objective-C的可可开发它.
如果有人知道它善意回复.
Nei*_*eil 19
Pirripli的代码不起作用的原因是模拟器不支持测试,代码不检查错误.更正后的代码如下:
CFStringRef state = nil;
UInt32 propertySize = sizeof(CFStringRef);
AudioSessionInitialize(NULL, NULL, NULL, NULL);
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
if (status == kAudioSessionNoError)
{
return (CFStringGetLength(state) == 0); // YES = silent
}
return NO;
Run Code Online (Sandbox Code Playgroud)
可以通过使用 AudioToolBox 测试 NULL 音频路由来实现:
UInt32 routeSize = sizeof (CFStringRef);
CFStringRef route;
AudioSessionGetProperty (
kAudioSessionProperty_AudioRoute,
&routeSize,
&route
);
if (route == NULL) {
NSLog(@"Silent switch is on");
}
Run Code Online (Sandbox Code Playgroud)
如果路由为 NULL,则没有可用的音频输出。如果是“耳机”或“耳机”,则静音铃声开关可能仍处于打开状态。但是,当它设置为“扬声器”时,它永远不会打开。
您可能最好在音频路由更改属性侦听器中对此进行测试,设置如下:
AudioSessionAddPropertyListener (
kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback,
self
);
Run Code Online (Sandbox Code Playgroud)
注意:如果您正在做一些奇怪的事情,比如覆盖音频路由,那么这个答案可能不适用。
完整地设置和拆除音频会话可能超出了本答案的范围。
| 归档时间: |
|
| 查看次数: |
22779 次 |
| 最近记录: |