diff --git a/index.js b/index.js index eb96614..e997062 100644 --- a/index.js +++ b/index.js @@ -45,6 +45,15 @@ class InCallManager { _InCallManager.turnScreenOn(); } + async getIsWiredHeadsetPluggedIn() { + if (Platform.OS === 'ios') { + return await _InCallManager.getIsWiredHeadsetPluggedIn(); + } else { + console.log("Android doesn't support getIsWiredHeadsetPluggedIn() yet."); + return null; + } + } + setFlashOn(enable, brightness) { if (Platform.OS === 'ios') { enable = (enable === true) ? true : false; diff --git a/ios/RNInCallManager/RNInCallManager.swift b/ios/RNInCallManager/RNInCallManager.swift index 61ed004..09fbfc7 100644 --- a/ios/RNInCallManager/RNInCallManager.swift +++ b/ios/RNInCallManager/RNInCallManager.swift @@ -212,6 +212,13 @@ class RNInCallManager: NSObject, AVAudioPlayerDelegate { return false } + @objc func getIsWiredHeadsetPluggedIn(_ resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void { + let isWiredHeadsetPluggedIn = self.isWiredHeadsetPluggedIn() + resolve([ + ["isWiredHeadsetPluggedIn": isWiredHeadsetPluggedIn] + ]) + } + func isWiredHeadsetPluggedIn() -> Bool { // --- only check for a audio device plugged into headset port instead bluetooth/usb/hdmi return self.checkAudioRoute([AVAudioSessionPortHeadphones], "output") || self.checkAudioRoute([AVAudioSessionPortHeadsetMic], "input") diff --git a/ios/RNInCallManager/RNInCallManagerBridge.m b/ios/RNInCallManager/RNInCallManagerBridge.m index 9ef2651..77d5f91 100644 --- a/ios/RNInCallManager/RNInCallManagerBridge.m +++ b/ios/RNInCallManager/RNInCallManagerBridge.m @@ -26,5 +26,5 @@ @interface RCT_EXTERN_REMAP_MODULE(InCallManager, RNInCallManager, NSObject) RCT_EXTERN_METHOD(checkCameraPermission:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) RCT_EXTERN_METHOD(requestCameraPermission:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) RCT_EXTERN_METHOD(getAudioUriJS:(NSString *)audioType fileType:(NSString *)fileType resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) - +RCT_EXTERN_METHOD(getIsWiredHeadsetPluggedIn:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) @end