Anonymous
React-Cnive-Track-Player на Android: компактный игрок не появляется
Сообщение
Anonymous » 24 июн 2025, 17:34
уже прошел около миллиона учебных пособий, вопросов Stackoverflow и т. Д., Но для жизни я не могу найти то, что делаю не так. Play/Pause/Stop работает нормально, но игрок «Компактный экран" уведомления/блокировки "на Android не появляется, независимо от того, что я пытаюсь. (Can't test on iOS)
Expo 52.0.23 development build
React Native 0.76.9, OLD architecture (according to this Github comment that should work)
Testing on: Pixel 9 with Android 15
What am I Отсутствует?
Код: Выделить всё
import Feather from "@expo/vector-icons/Feather";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import { NavigationContainer } from "@react-navigation/native";
import { SafeAreaProvider, SafeAreaView } from "react-native-safe-area-context";
import { s } from "./App.style";
import {
PAGE_NAME_AUDIO,
} from "./Constants";
import { AudioPage } from "./pages/AudioPage/AudioPage";
import PlaybackService from "./PlaybackService";
import TrackPlayer from "react-native-track-player";
const Tab = createBottomTabNavigator();
const navTheme = { colors: { background: "#1c1c1c" } };
export default function App() {
TrackPlayer.registerPlaybackService(() => PlaybackService);
return (
({
headerStyle: { backgroundColor: "black" },
headerTintColor: "#fff",
headerTitleStyle: { fontSize: 30 },
tabBarIcon: ({ color, size }) => {
let iconName = "headphones";
return ;
},
tabBarActiveTintColor: "gold",
tabBarInactiveTintColor: "gray",
tabBarItemStyle: s.tabBarItem,
tabBarLabelPosition: "beside-icon",
tabBarLabelStyle: s.tabBarLabel,
})}
>
);
}< /code>
< /div>
< /div>
< /p>
[b] preppackservice.js[/b]>import TrackPlayer, { Event } from "react-native-track-player";
export default async () => {
TrackPlayer.addEventListener(Event.RemotePlay, () => TrackPlayer.play());
TrackPlayer.addEventListener(Event.RemotePause, () => TrackPlayer.pause());
TrackPlayer.addEventListener(Event.RemoteStop, () => TrackPlayer.stop());
};< /code>
< /div>
< /div>
< /p>
[b] audiopage.jsx[/b]>import FontAwesome6 from "@expo/vector-icons/FontAwesome6";
import { useEffect } from "react";
import { TouchableOpacity, View } from "react-native";
import TrackPlayer from "react-native-track-player";
import { s } from "./AudioPage.style";
const BTN_ICON_SIZE = 50;
export function AudioPage({}) {
useEffect(() => {
console.log("init track player");
initTrackPlayer();
}, []);
async function initTrackPlayer() {
console.log("setup player");
await TrackPlayer.setupPlayer();
console.log("update options");
TrackPlayer.updateOptions({
android: {
appKilledPlaybackBehavior: AppKilledPlaybackBehavior.PausePlayback,
},
capabilities: [
TrackPlayer.CAPABILITY_PLAY,
TrackPlayer.CAPABILITY_PAUSE,
TrackPlayer.CAPABILITY_STOP,
],
compactCapabilities: [
TrackPlayer.CAPABILITY_PLAY,
TrackPlayer.CAPABILITY_PAUSE,
TrackPlayer.CAPABILITY_STOP,
],
notificationCapabilities: [
TrackPlayer.CAPABILITY_PLAY,
TrackPlayer.CAPABILITY_PAUSE,
TrackPlayer.CAPABILITY_STOP,
],
});
}
async function play() {
//initTrackPlayer();
const track = {
url: require("../../assets/test.mp3"),
title: "Test",
artwork: require("../../assets/icon.png"),
duration: 29,
};
await TrackPlayer.add([track]);
TrackPlayer.play();
}
async function pause() {
TrackPlayer.pause();
}
async function stop() {
TrackPlayer.reset();
}
return (
);
}
(p.s. не связан с "обзором кода" также приветствуется - это мой первый проект JavaScript)
Подробнее здесь:
https://stackoverflow.com/questions/796 ... -appearing
1750775655
Anonymous
уже прошел около миллиона учебных пособий, вопросов Stackoverflow и т. Д., Но для жизни я не могу найти то, что делаю не так. Play/Pause/Stop работает нормально, но игрок «Компактный экран" уведомления/блокировки "на Android не появляется, независимо от того, что я пытаюсь. (Can't test on iOS) [list] [*]Expo 52.0.23 development build [*]React Native 0.76.9, OLD architecture (according to this Github comment that should work) [*]Testing on: Pixel 9 with Android 15 [/list] What am I Отсутствует?[code]import Feather from "@expo/vector-icons/Feather"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { NavigationContainer } from "@react-navigation/native"; import { SafeAreaProvider, SafeAreaView } from "react-native-safe-area-context"; import { s } from "./App.style"; import { PAGE_NAME_AUDIO, } from "./Constants"; import { AudioPage } from "./pages/AudioPage/AudioPage"; import PlaybackService from "./PlaybackService"; import TrackPlayer from "react-native-track-player"; const Tab = createBottomTabNavigator(); const navTheme = { colors: { background: "#1c1c1c" } }; export default function App() { TrackPlayer.registerPlaybackService(() => PlaybackService); return ( ({ headerStyle: { backgroundColor: "black" }, headerTintColor: "#fff", headerTitleStyle: { fontSize: 30 }, tabBarIcon: ({ color, size }) => { let iconName = "headphones"; return ; }, tabBarActiveTintColor: "gold", tabBarInactiveTintColor: "gray", tabBarItemStyle: s.tabBarItem, tabBarLabelPosition: "beside-icon", tabBarLabelStyle: s.tabBarLabel, })} > ); }< /code> < /div> < /div> < /p> [b] preppackservice.js[/b]>import TrackPlayer, { Event } from "react-native-track-player"; export default async () => { TrackPlayer.addEventListener(Event.RemotePlay, () => TrackPlayer.play()); TrackPlayer.addEventListener(Event.RemotePause, () => TrackPlayer.pause()); TrackPlayer.addEventListener(Event.RemoteStop, () => TrackPlayer.stop()); };< /code> < /div> < /div> < /p> [b] audiopage.jsx[/b]>import FontAwesome6 from "@expo/vector-icons/FontAwesome6"; import { useEffect } from "react"; import { TouchableOpacity, View } from "react-native"; import TrackPlayer from "react-native-track-player"; import { s } from "./AudioPage.style"; const BTN_ICON_SIZE = 50; export function AudioPage({}) { useEffect(() => { console.log("init track player"); initTrackPlayer(); }, []); async function initTrackPlayer() { console.log("setup player"); await TrackPlayer.setupPlayer(); console.log("update options"); TrackPlayer.updateOptions({ android: { appKilledPlaybackBehavior: AppKilledPlaybackBehavior.PausePlayback, }, capabilities: [ TrackPlayer.CAPABILITY_PLAY, TrackPlayer.CAPABILITY_PAUSE, TrackPlayer.CAPABILITY_STOP, ], compactCapabilities: [ TrackPlayer.CAPABILITY_PLAY, TrackPlayer.CAPABILITY_PAUSE, TrackPlayer.CAPABILITY_STOP, ], notificationCapabilities: [ TrackPlayer.CAPABILITY_PLAY, TrackPlayer.CAPABILITY_PAUSE, TrackPlayer.CAPABILITY_STOP, ], }); } async function play() { //initTrackPlayer(); const track = { url: require("../../assets/test.mp3"), title: "Test", artwork: require("../../assets/icon.png"), duration: 29, }; await TrackPlayer.add([track]); TrackPlayer.play(); } async function pause() { TrackPlayer.pause(); } async function stop() { TrackPlayer.reset(); } return ( ); }[/code] (p.s. не связан с "обзором кода" также приветствуется - это мой первый проект JavaScript) Подробнее здесь: [url]https://stackoverflow.com/questions/79677765/react-native-track-player-on-android-compact-player-not-appearing[/url]