@@ -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