我想在iOS设备有来电/去电时检测以下事件:
我是蓝牙配件编程的新手,有什么方法可以做到吗?
答案 0 :(得分:1)
在下面的代码中,检查“micConnected”的值以查看是否已连接耳机。
AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 propertySize, micConnected;
AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &propertySize, &micConnected);
答案 1 :(得分:1)
我解决了它,如下所示:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err;
// close down our current session...
[audioSession setActive:NO error:nil];
AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, &AudioSessionManager_audioRouteChangedListener, self);
void AudioSessionManager_audioRouteChangedListener (void *inClientData, AudioSessionPropertyID inID, UInt32 inDataSize, const void *inData)
{
NSLog(@"AudioSessionManager_audioRouteChangedListener");
MyAppDelegate *instance = (MyAppDelegate *)inClientData;
CFDictionaryRef routeChangeDictionary = inData;
// extract the route change reason...
CFNumberRef routeChangeReasonRef = CFDictionaryGetValue (routeChangeDictionary, CFSTR(kAudioSession_AudioRouteChangeKey_Reason));
SInt32 routeChangeReason = kAudioSessionRouteChangeReason_Unknown;
if (routeChangeReasonRef)
CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);
// extract the old route..
CFStringRef newRoute;
if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 5.0)
{
newRoute = CFDictionaryGetValue(routeChangeDictionary, @"OutputDeviceDidChange_NewRoute");
}
else
{
newRoute = CFDictionaryGetValue(routeChangeDictionary, @"OutputDeviceDidChange_NewRoute");
}
CFStringRef oldRoute;
oldRoute = CFDictionaryGetValue(routeChangeDictionary, @"OutputDeviceDidChange_OldRoute");
NSLog(@"newRouteString:%@ oldRoute:%@",newRoute,oldRoute);
[instance onAudioRouteChangedWithReason:routeChangeReason newRoute:(NSString *)newRoute oldRoute:(NSString *)oldRoute];
}