[英]headphone plug-in plug-out event when audio route doesn't change - iOS
我正在使用iPad。 我想檢測用戶何時插入耳機。 首先,我在屬性kAudioSessionProperty_AudioRouteChange
上使用了一個偵聽kAudioSessionProperty_AudioRouteChange
。 因此一切運行良好,直到我決定添加一個按鈕以在仍插入耳機時切換到揚聲器。 所以我現在面臨一個問題,也許有人會想辦法解決。
這是場景:
但這是我的問題! 所以我的問題是:您是否找到一種方法可以檢測到最后一種情況是否拔出了耳機?
謝謝你的幫助
編輯:
好的,我找到了一種解決方法:
為了檢測是否插入了耳機,我總是需要執行一次測試功能(而不是使用布爾值),這可能對性能不太好,但是可以正常工作,這是我的代碼,可能需要它:
//set back the default audio route
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);
//check if this default audio route is Heaphone or Speaker
CFStringRef newAudioRoute;
UInt32 newAudioRouteSize = sizeof(newAudioRoute);
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &newAudioRouteSize, &newAudioRoute);
NSString *newAudioRouteString = (__bridge NSString *)newAudioRoute;
CFRelease(newAudioRoute);
//if this default audio route is not Headphone, it means no headphone is plugged
if ([newAudioRouteString rangeOfString:@"Headphones"].location != NSNotFound){
NSLog(@"Earphone available");
return true;
}
else {
NSLog(@"No Earphone available");
return false;
}
希望它能對某人有所幫助!
我想象一種解決方案,它是通過以下方式實現的:在AppDelegate中為揚聲器創建一個布爾值,比如說: BOOL isSpeakerOn
。 每次調用音頻路由回叫時,您都必須核實揚聲器的當前狀況以及您想做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.