feat: continue music when app is closed

This commit is contained in:
2026-01-12 09:44:50 +01:00
parent eb820a149c
commit 85c6084351
5 changed files with 60 additions and 39 deletions
+2
View File
@@ -2,6 +2,7 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
@@ -9,6 +10,7 @@
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<queries>
<intent>
+6 -1
View File
@@ -37,6 +37,9 @@
],
"bundleIdentifier": "com.omedis.musicland.ai",
"infoPlist": {
"UIBackgroundModes": [
"audio"
],
"NSMicrophoneUsageDescription": "MusicLand uses the microphone to record your voice and audio so you can create and collaborate on music projects.",
"UISupportedInterfaceOrientations": [
"UIInterfaceOrientationPortrait",
@@ -73,7 +76,9 @@
"permissions": [
"android.permission.CAMERA",
"android.permission.MODIFY_AUDIO_SETTINGS",
"android.permission.POST_NOTIFICATIONS"
"android.permission.POST_NOTIFICATIONS",
"android.permission.WAKE_LOCK",
"android.permission.FOREGROUND_SERVICE"
]
},
"web": {
-1
View File
@@ -55,7 +55,6 @@
"expo-linear-gradient": "~14.0.2",
"expo-linking": "~7.0.5",
"expo-location": "~18.0.10",
"expo-minuit-shake-report": "^0.1.1",
"expo-notifications": "~0.29.14",
"expo-sharing": "~13.0.1",
"expo-speech": "~13.0.1",
+17 -1
View File
@@ -1,4 +1,8 @@
import { useAudioPlayer, useAudioPlayerStatus } from "expo-audio";
import {
setAudioModeAsync,
useAudioPlayer,
useAudioPlayerStatus,
} from "expo-audio";
import React, {
createContext,
useCallback,
@@ -374,6 +378,18 @@ const PlayerProvider = ({ children }) => {
return Platform.OS === "web" ? ms : ms / 1000;
}, []);
useEffect(() => {
setAudioModeAsync({
playsInSilentMode: true,
shouldPlayInBackground: true,
interruptionMode: "doNotMix",
allowsRecording: false,
shouldRouteThroughEarpiece: false,
}).catch((err) =>
console.warn("PlayerProvider: impossible de configurer le mode audio", err)
);
}, []);
useEffect(() => {
if (!status) return;
+2 -3
View File
@@ -1,11 +1,10 @@
import React from "react";
import { ShakeReportProvider } from "expo-minuit-shake-report";
import SharedProviders from "./SharedProviders";
export default ({ children }) => {
return (
<ShakeReportProvider projectID="musicland" defaultEmail="user@email.com">
// <ShakeReportProvider projectID="musicland" defaultEmail="user@email.com">
<SharedProviders>{children}</SharedProviders>
</ShakeReportProvider>
// </ShakeReportProvider>
);
};