Upvote:2
- (void)viewDidLoad {
[super viewDidLoad];
NSError *setCategoryErr;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
// Detects when the audio route changes (ex: headphones unplugged)
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioHardwareRouteChanged:) name:AVAudioSessionRouteChangeNotification object:nil];
// Don't forget to remove notification in dealloc method!!
}
- (void)audioHardwareRouteChanged:(NSNotification *)notification {
NSInteger routeChangeReason = [notification.userInfo[AVAudioSessionRouteChangeReasonKey] integerValue];
if (routeChangeReason == AVAudioSessionRouteChangeReasonOldDeviceUnavailable) {
// if we're here, The old device is unavailable == headphones have been unplugged, so stop manually!
[self.player stop];
}
}
More Answer related to the Same Query
- WHY DOES AVAUDIOPLAYER KEEP PLAYING WHEN HEADPHONES ARE UNPLUGGED? IN IOS
- HOW DOES MAIL APP DISABLE UISEARCHBAR WHEN IN EDIT MODE? IN IOS
- HIDING THE KEYBOARD WHEN APPLICATION RETURNS FROM SUSPENSION IN IOS
- HOW TO AUTOSCROLL TABLEVIEW WHEN A NEW ITEM ADDED TO IT? IN IOS
- NEED AN API THAT DETECTS WHEN AN IPHONE IS PLUGGED IN IN IOS
- 980 SECONDS LOST WHEN USING NSDATEFORMATTER TO CONVERT TIMEZONES IN IOS
- IS THERE A WAY TO "AUTO DETECT" THE ENCODING OF A RESOURCE WHEN LOADING IT USING STRINGFROMCONTENTSOFURL? IN IOS
Upvote:2
let audioSession = AVAudioSession.sharedInstance()
_ = try? audioSession.setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)
_ = try? audioSession.setActive(true)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(audioRouteChanged), name: .AVAudioSessionRouteChange, object: nil)
func audioRouteChanged(note: Notification) {
if let userInfo = note.userInfo {
if let reason = userInfo[AVAudioSessionRouteChangeReasonKey] as? Int {
if reason == AVAudioSessionRouteChangeReason.oldDeviceUnavailable.hashValue {
// headphones plugged out
player.stop()
}
}
}
}
Credit Goes to: stackoverflow.com
Related question with same questions but different answers
- WHAT HAPPENS WHEN A METHOD IS CALLED? WHERE ARE THE ARGUMENTS PUSHED? IN IOS
- HOW TO OPTIMIZE UITABLEVIEWCELL RENDERING, WHEN USING CGCONTEXTDRAWLINEARGRADIENT IN IOS
- EXECUTION SEQUENCE WHEN TWO NSNOTIFICATIONS ARE POSTED IN IOS
- GENSTRINGS TOOL THROWING EXCEPTION, ABORTING WHEN PARSING XCODE PROJECT IN IOS
- OBJECTIVE C / IPHONE - HOW DOES THE DATE TIME PICKER FORMAT ITS DATES (E.G. STRIPS YYYY) AND HOW DO I RETRIEVE THESE FORMATS? IN IOS
- GETTING UIVIEW TAG WHEN TOUCHED IN IOS
- LAUNCH APP IN BACKGROUND WHEN BLE DEVICE IS IN RANGE IN IOS
- HOW TO UPDATE CORDOVA BASED APP WHEN NEW VERSION IS AVAILABLE IN APPSTORE? IN IOS
- WHY DOES THE DOCUMENTATION SAY TO USE THE VDSP_DFT INSTEAD OF FFT IN IOS
- UINAVIGATIONBAR HEIGHT WHEN CONTROLLER PRESENTING MODAL IN IOS 13 IN IOS
- MUTATING ERROR WHEN ATTEMPTING TO APPEND AN ARRAY OF A STRUCT IN IOS
- WHY DOES ARFACEANCHOR HAVE NEGATIVE Z POSITION? IN IOS
- APPLYING CORNER RADIUS TO A SPECIFIC UIVIEW CORNER INSIDE STORYBOARD DOES NOT WORK FOR ALL CORNERS IN IOS
- APP CLOSES AUTOMATICALLY WHEN NOT RAN FROM XCODE IN IOS
- XCODE 10.2 - OPENBAKERY GRADLE PLUGIN BUILD ERROR - AN EMPTY IDENTITY IS NOT VALID WHEN SIGNING A BINARY FOR THE PRODUCT TYPE 'APPLICATION' IN IOS
- EXC_BAD_ACCESS WHEN PASSING A PARAMETER IN DISPATCH_ASYNC IN OBJECTIVE-C IN IOS
- IOS HOW TO SCHEDULE TASK & EXECUTE RANDOMLY EVEN WHEN THE APP IS CLOSED IN IOS
- IOS NOTIFICATION : HOW DOES WHATSAPP RECEIVE NOTIFICATION AND PROCESS EVEN AFTER FORCE CLOSING THEM? IN IOS
- IPA FILE IS NOT WORKING WHEN INSTALLED BY AD-HOC IN IOS
- HOW TO SET THE SCROLLVIEW HEIGHT WHEN UI ELEMENTS ARE DYNAMICALLY CREATED IN IOS
- RIGHT ANCHOR OF UISCROLLVIEW DOES NOT APPLY IN IOS
- HIDE SEARCH BAR WHEN CANCEL BUTTON IS PRESSED, AND RESIZE NAVBAR IN IOS
- WHY DOES U+E006 ( ) SHOW AS A T-SHIRT ON IOS? IN IOS
- ENUMERATING OVER AN NSMUTABLEDICTIONARY -- CAN'T ACCESS OBJECT PROPERTIES FROM WITHIN THE LOOP IN IOS
- HOW TO MERGE STATIC LIBRARIES FOR IOS? IN IOS
- UITABLEVIEW CRASH AFTER I IMPLEMENTED `ESTIMATEDHEIGHTFORROWAT INDEXPATH`? IN IOS
- HOW TO ENABLE TOUCHES OF A VIEW OUTSIDE BOUNDS OF ITS SUPERVIEW? IN IOS
- UIDOCUMENTINTERACTIONCONTROLLER PRESENTPREVIEWANIMATED: RETURNING NO AND NOT SHOWING PREVIEW IN IOS
- IS IT POSSIBLE TO ACCESS XCODE'S TARGET VERSION AND BUILD NUMBERS? IN IOS
- UIBUTTON CLICK EVENT NOT WORKING IF I ADD UITAPGESTURERECOGNIZER IN SWIFT IN IOS
- HOW TO DECIDE IF A STATEMENT NEEDS TO BE PLACED IN DISPATCHQUEUE.MAIN.ASYNC? IN IOS
- UNCALENDARNOTIFICATIONTRIGGER NOT INITIATING IN IOS
- CAN'T BUILD PROJECT ON IOS ERROR CODE 70, HOW TO FIX IT? IN IOS
- SHOW INTEGER VALUE LABELS IN BAR CHART FOR IOS IN IOS
- SWIFTUI - ENVIRONMENT OBJECT NOT UPDATING UI IN IOS
- CAN PUBLISH APP TO ITUNES CONNECT WITH MAC OS MOJAVE? IN IOS
- FLUTTER/DART SOCKETEXCEPTION UPLOADING VIDEO FILE TO URL IN IOS
- STORING A TYPE IN A VARIABLE? IN IOS
- BACKBARBUTTONITEM IN NAVIGATION CONTROLLER NOT SHOWING UP IN IOS
- FILTER VS NSPREDICATE IN COREDATA IN IOS
- WAIT 30 SEC IN XCODE UI TEST IN IOS
- UUID FROM STRING ALWAYS NIL IN IOS
- PROGRAMMATICALLY REVEAL A UIVIEW IN IOS
- IOS SPRITEKIT EMITTER PARTICLE FREQUENCY IN IOS
- HOW TO ELIMINATE “LEADING AND TRAILING CONSTRAINTS … THERE IS ALREADY A CENTER CONSTRAINT” WARNING IN IOS
- INTERFACE BUILDER LOCALIZATION HOWTO IN IOS
- IOS: SETTING UIVIEW BACKGROUND COLOR FROM OUTSIDE THE RUN LOOP IN IOS
- DESIGNING PORTRAIT GAME FOR IPHONE X IN UNITY IN IOS
- READING PLIST MANY TIMES VS. CREATING OBJECT AND READ PLIST ONLY ONCE TO ACCESS DATA IN PLIST IN IOS
- HOW TO PREVENT FATAL ERRORS FROM BAD INPUT INTO D2I_X509_REQ_BIO IN SWIFT WITH OPENSSL IN IOS