Skip to content
This repository was archived by the owner on Oct 6, 2022. It is now read-only.

Commit 9d92bd2

Browse files
feat: handle Audio onFocusChanged if paused (#308)
* feat: priority high to expand notification * fix: bug AUDIOFOCUS_GAIN playing if paused * feat: handle AUDIOFOCUS_LOSS_TRANSIENT if isPlaying() * Update package.json Co-Authored-By: Tanguy Antoine <[email protected]>
1 parent 9be009c commit 9d92bd2

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

android/src/main/java/com/tanguyantoine/react/MusicControlAudioFocusListener.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ public class MusicControlAudioFocusListener implements AudioManager.OnAudioFocus
1414
private AudioManager mAudioManager;
1515
private AudioFocusRequest mFocusRequest;
1616

17+
private boolean mPlayOnAudioFocus = false;
18+
1719
MusicControlAudioFocusListener(ReactApplicationContext context, MusicControlEventEmitter emitter,
1820
MusicControlVolumeListener volume) {
1921
this.emitter = emitter;
@@ -25,16 +27,24 @@ public class MusicControlAudioFocusListener implements AudioManager.OnAudioFocus
2527
@Override
2628
public void onAudioFocusChange(int focusChange) {
2729
if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
30+
abandonAudioFocus();
31+
mPlayOnAudioFocus = false;
2832
emitter.onStop();
2933
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
30-
emitter.onPause();
34+
if (MusicControlModule.INSTANCE.isPlaying()) {
35+
mPlayOnAudioFocus = true;
36+
emitter.onPause();
37+
}
3138
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
3239
volume.setCurrentVolume(40);
3340
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
3441
if (volume.getCurrentVolume() != 100) {
3542
volume.setCurrentVolume(100);
3643
}
37-
emitter.onPlay();
44+
if (mPlayOnAudioFocus) {
45+
emitter.onPlay();
46+
}
47+
mPlayOnAudioFocus = false;
3848
}
3949
}
4050

android/src/main/java/com/tanguyantoine/react/MusicControlModule.java

+5
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ public void init() {
171171
}
172172
nb = new NotificationCompat.Builder(context, CHANNEL_ID);
173173
nb.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
174+
nb.setPriority(NotificationCompat.PRIORITY_HIGH);
174175

175176
updateNotificationMediaStyle();
176177

@@ -556,4 +557,8 @@ public enum NotificationClose {
556557
PAUSED,
557558
NEVER
558559
}
560+
561+
public boolean isPlaying() {
562+
return isPlaying;
563+
}
559564
}

0 commit comments

Comments
 (0)