Skip to content

Commit f29b1f9

Browse files
committed
android: AudioFocus api compatible
1 parent 7a48b8b commit f29b1f9

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

android/src/main/java/com/zxcpoiu/incallmanager/InCallManagerModule.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,14 @@ private void stopEvents() {
640640
}
641641

642642
private void requestAudioFocus() {
643+
if (android.os.Build.VERSION.SDK_INT >= 26) {
644+
requestAudioFocusV26();
645+
} else {
646+
requestAudioFocusOld();
647+
}
648+
}
649+
650+
private void requestAudioFocusV26() {
643651
if (isAudioFocused) {
644652
return;
645653
}
@@ -661,6 +669,7 @@ private void requestAudioFocus() {
661669
}
662670

663671
int requestAudioFocusRes = audioManager.requestAudioFocus(mAudioFocusRequest);
672+
664673
String requestAudioFocusResStr;
665674
switch (requestAudioFocusRes) {
666675
case AudioManager.AUDIOFOCUS_REQUEST_FAILED:
@@ -677,10 +686,43 @@ private void requestAudioFocus() {
677686
requestAudioFocusResStr = "AUDIOFOCUS_REQUEST_UNKNOWN";
678687
break;
679688
}
689+
690+
Log.d(TAG, "requestAudioFocus(): res = " + requestAudioFocusRes + " - " + requestAudioFocusResStr);
691+
}
692+
693+
private void requestAudioFocusOld() {
694+
if (isAudioFocused) {
695+
return;
696+
}
697+
698+
int requestAudioFocusRes = audioManager.requestAudioFocus(mOnFocusChangeListener, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
699+
700+
String requestAudioFocusResStr;
701+
switch (requestAudioFocusRes) {
702+
case AudioManager.AUDIOFOCUS_REQUEST_FAILED:
703+
requestAudioFocusResStr = "AUDIOFOCUS_REQUEST_FAILED";
704+
break;
705+
case AudioManager.AUDIOFOCUS_REQUEST_GRANTED:
706+
isAudioFocused = true;
707+
requestAudioFocusResStr = "AUDIOFOCUS_REQUEST_GRANTED";
708+
break;
709+
default:
710+
requestAudioFocusResStr = "AUDIOFOCUS_REQUEST_UNKNOWN";
711+
break;
712+
}
713+
680714
Log.d(TAG, "requestAudioFocus(): res = " + requestAudioFocusRes + " - " + requestAudioFocusResStr);
681715
}
682716

683717
private void abandonAudioFocus() {
718+
if (android.os.Build.VERSION.SDK_INT >= 26) {
719+
abandonAudioFocusV26();
720+
} else {
721+
abandonAudioFocusOld();
722+
}
723+
}
724+
725+
private void abandonAudioFocusV26() {
684726
if (!isAudioFocused || mAudioFocusRequest == null) {
685727
return;
686728
}
@@ -702,6 +744,30 @@ private void abandonAudioFocus() {
702744
Log.d(TAG, "abandonAudioFocus(): res = " + abandonAudioFocusRes + " - " + abandonAudioFocusResStr);
703745
}
704746

747+
private void abandonAudioFocusOld() {
748+
if (!isAudioFocused) {
749+
return;
750+
}
751+
752+
int abandonAudioFocusRes = audioManager.abandonAudioFocus(null);
753+
754+
String abandonAudioFocusResStr;
755+
switch (abandonAudioFocusRes) {
756+
case AudioManager.AUDIOFOCUS_REQUEST_FAILED:
757+
abandonAudioFocusResStr = "AUDIOFOCUS_REQUEST_FAILED";
758+
break;
759+
case AudioManager.AUDIOFOCUS_REQUEST_GRANTED:
760+
isAudioFocused = false;
761+
abandonAudioFocusResStr = "AUDIOFOCUS_REQUEST_GRANTED";
762+
break;
763+
default:
764+
abandonAudioFocusResStr = "AUDIOFOCUS_REQUEST_UNKNOWN";
765+
break;
766+
}
767+
768+
Log.d(TAG, "abandonAudioFocus(): res = " + abandonAudioFocusRes + " - " + abandonAudioFocusResStr);
769+
}
770+
705771
@ReactMethod
706772
public void pokeScreen(int timeout) {
707773
Log.d(TAG, "pokeScreen()");

0 commit comments

Comments
 (0)