Skip to content

Commit 1f7eb28

Browse files
committed
fix: handle audio interruptions
1 parent af4c504 commit 1f7eb28

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/app/Home/index.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ export default function HomeScreen() {
7777
// not initialized yet, proceed
7878
}
7979

80-
await TrackPlayer.setupPlayer();
80+
await TrackPlayer.setupPlayer({
81+
autoHandleInterruptions: true,
82+
});
8183

8284
await TrackPlayer.updateOptions({
8385
capabilities: liveCapabilities,

src/services/TrackPlayerService.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,25 @@ const TrackPlayerService = async () => {
55
TrackPlayer.addEventListener(Event.RemotePause, () => TrackPlayer.pause());
66
TrackPlayer.addEventListener(Event.RemoteStop, () => TrackPlayer.reset());
77

8+
/**
9+
* Handle "Ducking" (e.g. when a phone call comes in, headphones are
10+
* disconnected, etc.)
11+
*
12+
* https://rntp.dev/docs/api/events#remoteduck
13+
*/
14+
TrackPlayer.addEventListener(
15+
Event.RemoteDuck,
16+
async ({ paused, permanent }) => {
17+
const activeTrack = await TrackPlayer.getActiveTrack();
18+
19+
if (!paused || permanent || activeTrack?.isLiveStream) {
20+
TrackPlayer.stop();
21+
} else {
22+
TrackPlayer.pause();
23+
}
24+
},
25+
);
26+
827
TrackPlayer.addEventListener(
928
Event.RemoteJumpForward,
1029
async ({ interval }) => {

0 commit comments

Comments
 (0)