From be5f3fb93abc46a783f37b73d88f3f0685fdfd2b Mon Sep 17 00:00:00 2001 From: Prithipal Thakur Date: Thu, 24 Sep 2020 17:43:55 +0530 Subject: [PATCH 1/9] Audio route to speaker for Android platform --- .../java/io/wazo/callkeep/RNCallKeepModule.java | 13 +++++++++++++ index.d.ts | 5 +++++ index.js | 2 ++ 3 files changed, 20 insertions(+) diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index 54ff44ca..741cc57c 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -341,6 +341,19 @@ public void setMutedCall(String uuid, boolean shouldMute) { conn.onCallAudioStateChanged(newAudioState); } + @ReactMethod + public void toggleAudioRouteSpeaker(String uuid, boolean useSpeaker) { + VoiceConnection conn = (VoiceConnection) VoiceConnectionService.getConnection(uuid); + if (conn == null) { + return; + } + if(useSpeaker){ + conn.setAudioRoute(CallAudioState.ROUTE_SPEAKER); + }else{ + conn.setAudioRoute(CallAudioState.ROUTE_EARPIECE); + } + } + @ReactMethod public void sendDTMF(String uuid, String key) { Connection conn = VoiceConnectionService.getConnection(uuid); diff --git a/index.d.ts b/index.d.ts index f8133789..4ea65c2c 100644 --- a/index.d.ts +++ b/index.d.ts @@ -115,7 +115,12 @@ declare module 'react-native-callkeep' { * @description setMutedCall method is available only on iOS. */ static setMutedCall(uuid: string, muted: boolean): void + /** + * @description toggleAudioRouteSpeaker method is available only on Android. + */ + static toggleAudioRouteSpeaker(uuid: string, useSpeaker: boolean) { + } static setOnHold(uuid: string, held: boolean): void /** diff --git a/index.js b/index.js index f5e223fb..bf40aa7c 100644 --- a/index.js +++ b/index.js @@ -149,6 +149,8 @@ class RNCallKeep { sendDTMF = (uuid, key) => RNCallKeepModule.sendDTMF(uuid, key); + toggleAudioRouteSpeaker = (uuid, useSpeaker) => RNCallKeepModule.toggleAudioRouteSpeaker(uuid, useSpeaker); + checkIfBusy = () => isIOS ? RNCallKeepModule.checkIfBusy() From 49d984f73ae996dd3d03a1c4c6db5e0eb38c3e40 Mon Sep 17 00:00:00 2001 From: Prithipal Thakur Date: Tue, 5 Jan 2021 23:22:19 +0530 Subject: [PATCH 2/9] review suggestion changes updated 1. Indentation issue 2. platform specific-check --- .../main/java/io/wazo/callkeep/RNCallKeepModule.java | 10 +++++----- index.d.ts | 2 +- index.js | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index 3e12e9c8..e00e3b45 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -424,11 +424,11 @@ public void toggleAudioRouteSpeaker(String uuid, boolean useSpeaker) { if (conn == null) { return; } - if(useSpeaker){ - conn.setAudioRoute(CallAudioState.ROUTE_SPEAKER); - }else{ - conn.setAudioRoute(CallAudioState.ROUTE_EARPIECE); - } + if(useSpeaker){ + conn.setAudioRoute(CallAudioState.ROUTE_SPEAKER); + }else{ + conn.setAudioRoute(CallAudioState.ROUTE_EARPIECE); + } } @ReactMethod diff --git a/index.d.ts b/index.d.ts index 8d2d6091..3c6cd6a4 100644 --- a/index.d.ts +++ b/index.d.ts @@ -122,7 +122,7 @@ declare module 'react-native-callkeep' { */ static setMutedCall(uuid: string, muted: boolean): void /** - * @description toggleAudioRouteSpeaker method is available only on Android. + * @description toggleAudioRouteSpeaker method is available only on Android. */ static toggleAudioRouteSpeaker(uuid: string, useSpeaker: boolean) { diff --git a/index.js b/index.js index 29efaa59..4878e738 100644 --- a/index.js +++ b/index.js @@ -165,8 +165,8 @@ class RNCallKeep { sendDTMF = (uuid, key) => RNCallKeepModule.sendDTMF(uuid, key); - toggleAudioRouteSpeaker = (uuid, useSpeaker) => RNCallKeepModule.toggleAudioRouteSpeaker(uuid, useSpeaker); - + toggleAudioRouteSpeaker = (uuid, useSpeaker) => isIOS ? null : RNCallKeepModule.toggleAudioRouteSpeaker(uuid, useSpeaker); + checkIfBusy = () => isIOS ? RNCallKeepModule.checkIfBusy() From 3fc6c55b2c6344fda86d4422ffcf466ffdab0935 Mon Sep 17 00:00:00 2001 From: Prithipal Thakur Date: Fri, 19 Mar 2021 15:56:16 +0530 Subject: [PATCH 3/9] added function documenttation --- .../src/main/java/io/wazo/callkeep/RNCallKeepModule.java | 6 +++++- index.js | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index e00e3b45..45c29fca 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -417,7 +417,11 @@ public void setMutedCall(String uuid, boolean shouldMute) { } conn.onCallAudioStateChanged(newAudioState); } - + /** + * toggle audio route for speaker via connection service function + * @param uuid + * @param useSpeaker + */ @ReactMethod public void toggleAudioRouteSpeaker(String uuid, boolean useSpeaker) { VoiceConnection conn = (VoiceConnection) VoiceConnectionService.getConnection(uuid); diff --git a/index.js b/index.js index 4878e738..6986d51f 100644 --- a/index.js +++ b/index.js @@ -164,7 +164,13 @@ class RNCallKeep { }; sendDTMF = (uuid, key) => RNCallKeepModule.sendDTMF(uuid, key); - + /** + * when Phone call is active, Android control the audio service via connection service. + * so this function help to toggle the audio to Speaker or wired/ear-piece or vice-versa + * @param {*} uuid + * @param {*} useSpeaker + * @returns toggle the Audio state to Speaker and vice-versa + */ toggleAudioRouteSpeaker = (uuid, useSpeaker) => isIOS ? null : RNCallKeepModule.toggleAudioRouteSpeaker(uuid, useSpeaker); checkIfBusy = () => From 749318cc27cf5c96449f8d5e8400be55f6bf507e Mon Sep 17 00:00:00 2001 From: Prithipal Thakur Date: Fri, 19 Mar 2021 16:12:17 +0530 Subject: [PATCH 4/9] Update the param naming convension --- .../src/main/java/io/wazo/callkeep/RNCallKeepModule.java | 4 ++-- index.d.ts | 9 ++++++--- index.js | 9 ++++----- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index 45c29fca..52a59cef 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -420,10 +420,10 @@ public void setMutedCall(String uuid, boolean shouldMute) { /** * toggle audio route for speaker via connection service function * @param uuid - * @param useSpeaker + * @param routeSpeaker */ @ReactMethod - public void toggleAudioRouteSpeaker(String uuid, boolean useSpeaker) { + public void toggleAudioRouteSpeaker(String uuid, boolean routeSpeaker) { VoiceConnection conn = (VoiceConnection) VoiceConnectionService.getConnection(uuid); if (conn == null) { return; diff --git a/index.d.ts b/index.d.ts index b0e6006d..094907dc 100644 --- a/index.d.ts +++ b/index.d.ts @@ -138,10 +138,13 @@ declare module 'react-native-callkeep' { * @description setMutedCall method is available only on iOS. */ static setMutedCall(uuid: string, muted: boolean): void + /** - * @description toggleAudioRouteSpeaker method is available only on Android. - */ - static toggleAudioRouteSpeaker(uuid: string, useSpeaker: boolean) { + * @description toggleAudioRouteSpeaker method is available only on Android. + * @param uuid + * @param routeSpeaker + */ + static toggleAudioRouteSpeaker(uuid: string, routeSpeaker: boolean) { } static setOnHold(uuid: string, held: boolean): void diff --git a/index.js b/index.js index 49874d40..085b1802 100644 --- a/index.js +++ b/index.js @@ -183,13 +183,12 @@ class RNCallKeep { sendDTMF = (uuid, key) => RNCallKeepModule.sendDTMF(uuid, key); /** - * when Phone call is active, Android control the audio service via connection service. - * so this function help to toggle the audio to Speaker or wired/ear-piece or vice-versa + * @description when Phone call is active, Android control the audio service via connection service. so this function help to toggle the audio to Speaker or wired/ear-piece or vice-versa * @param {*} uuid - * @param {*} useSpeaker - * @returns toggle the Audio state to Speaker and vice-versa + * @param {*} routeSpeaker + * @returns Audio route state of audio service */ - toggleAudioRouteSpeaker = (uuid, useSpeaker) => isIOS ? null : RNCallKeepModule.toggleAudioRouteSpeaker(uuid, useSpeaker); + toggleAudioRouteSpeaker = (uuid, routeSpeaker) => isIOS ? null : RNCallKeepModule.toggleAudioRouteSpeaker(uuid, routeSpeaker); checkIfBusy = () => isIOS ? RNCallKeepModule.checkIfBusy() : Promise.reject('RNCallKeep.checkIfBusy was called from unsupported OS'); From 6c4a7cb4de83edf4fd921dddd0b54e3f56dddd72 Mon Sep 17 00:00:00 2001 From: Prithi Pal Thakur Date: Fri, 19 Mar 2021 16:36:21 +0530 Subject: [PATCH 5/9] Update index.d.ts Co-authored-by: Geraint White --- index.d.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/index.d.ts b/index.d.ts index 094907dc..f03566f8 100644 --- a/index.d.ts +++ b/index.d.ts @@ -144,9 +144,7 @@ declare module 'react-native-callkeep' { * @param uuid * @param routeSpeaker */ - static toggleAudioRouteSpeaker(uuid: string, routeSpeaker: boolean) { - - } + static toggleAudioRouteSpeaker(uuid: string, routeSpeaker: boolean): void static setOnHold(uuid: string, held: boolean): void /** From b0a2fdab532ad246516816d4acdcbe58d20333b2 Mon Sep 17 00:00:00 2001 From: Prithipal Thakur Date: Fri, 19 Mar 2021 16:46:49 +0530 Subject: [PATCH 6/9] Added documentation for toggleAudioRouteSpeaker function --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index c7f8482c..a68db8a4 100644 --- a/README.md +++ b/README.md @@ -398,6 +398,16 @@ _This feature is available only on iOS._ RNCallKeep.checkSpeaker(); ``` +### toggleAudioRouteSpeaker + +Update the audio route of Audio Service on Android with a `routeSpeaker` boolean value (`true` if speaker need on, `false` otherwise). +When Phone call is active, Android control the audio via connection service. so this function help to toggle the audio to Speaker or wired/ear-piece or vice-versa +_This feature is available only on Android._ + +```js +RNCallKeep.toggleAudioRouteSpeaker(uuid: string, routeSpeaker: boolean); +``` + ### supportConnectionService (async) Tells if `ConnectionService` is available on the device (returns a boolean). From 4dd66ad4962f645187bdd90958b91686e7d3c75f Mon Sep 17 00:00:00 2001 From: Prithi Pal Thakur Date: Fri, 19 Mar 2021 19:22:29 +0530 Subject: [PATCH 7/9] Update README.md Co-authored-by: Geraint White --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a68db8a4..afde291e 100644 --- a/README.md +++ b/README.md @@ -402,6 +402,7 @@ RNCallKeep.checkSpeaker(); Update the audio route of Audio Service on Android with a `routeSpeaker` boolean value (`true` if speaker need on, `false` otherwise). When Phone call is active, Android control the audio via connection service. so this function help to toggle the audio to Speaker or wired/ear-piece or vice-versa + _This feature is available only on Android._ ```js From b431d5c45173ec3ec99c98a531695b74a579129d Mon Sep 17 00:00:00 2001 From: Prithi Pal Thakur Date: Fri, 19 Mar 2021 19:22:45 +0530 Subject: [PATCH 8/9] Update README.md Co-authored-by: Geraint White --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index afde291e..264d5077 100644 --- a/README.md +++ b/README.md @@ -406,9 +406,13 @@ When Phone call is active, Android control the audio via connection service. so _This feature is available only on Android._ ```js -RNCallKeep.toggleAudioRouteSpeaker(uuid: string, routeSpeaker: boolean); +RNCallKeep.toggleAudioRouteSpeaker(uuid, true); ``` +- `uuid`: string + - uuid of the current call. +- `routeSpeaker`: boolean + ### supportConnectionService (async) Tells if `ConnectionService` is available on the device (returns a boolean). From e68ec34b013ea916e7e8d680f7e763e3ab388068 Mon Sep 17 00:00:00 2001 From: Prithipal Thakur Date: Mon, 22 Mar 2021 11:50:53 +0530 Subject: [PATCH 9/9] manuquentin requested changes updated 1. param routeSpeaker updated . 2. reformated code --- android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index 52a59cef..f04903ab 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -428,9 +428,9 @@ public void toggleAudioRouteSpeaker(String uuid, boolean routeSpeaker) { if (conn == null) { return; } - if(useSpeaker){ + if (routeSpeaker) { conn.setAudioRoute(CallAudioState.ROUTE_SPEAKER); - }else{ + } else { conn.setAudioRoute(CallAudioState.ROUTE_EARPIECE); } }