Der Spieler wird auf dem falschen Thread zugegriffen. React-Native & Expo-VideoAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Der Spieler wird auf dem falschen Thread zugegriffen. React-Native & Expo-Video

Post by Guest »

Ich habe mit React-Native und Expo-Video zusammengearbeitet, um ein Video in einem Bottom-Blatt zu implementieren. Die App funktioniert wie erwartet, aber wenn ich zur Reload Expo gehe, werde ich jedes Mal, wenn ich neu lade: < /p>
Fehlerfehler : Ausnahme in HostObject :: Get for Prop 'nativUnimoduleProxy': java.lang.ILLEGALSTATEException: Der Spieler wird auf dem falschen Thread zugegriffen. > Siehe https://developer.android.com/guide/top ... ong-thread, JS Engine: Hermes
Auch:
Fehlerinvariante Verstoß: "Main" wurde nicht registriert. Dies kann passieren, wenn: < /p>

Metro (der lokale Dev -Server) aus dem falschen Ordner ausgeführt wird. Überprüfen Sie, ob die Metro ausgeführt wird, stoppen Sie es und starten Sie es im aktuellen Projekt neu. JS Engine: Hermes < /li>
< /ul>
Wie ich bereits sagte, funktioniert die App wie erwartet, aber wenn ich ein EAS -Build mache, scheitert sie und ich weiß, dass es ist Aufgrund dieses Fehlers. Ich habe gesucht und gegoogelt und versucht, staatliche Updates in Runonjs usw. zu wickeln, und ohne Erfolg kann ich nicht darüber hinwegkommen. Hat noch jemand das erlebt und wenn ja, wie haben Sie es gelöst? oder Weg, dies zu lösen. Ich ziehe meine Haare aus. Kann jemand andere Vorschläge angeben? >

Code: Select all

 const [volume, setVolume] = useState(0.2);
const [currentTime, setCurrentTime] = useState(0);
const [isPlaying, setIsPlaying] = useState(false);

const navigation = useNavigation();
const ref = useRef(null);

const player = useVideoPlayer(VideoSource, (player) => {
player.loop = false;
});

useEffect(() => {
const videoSubscription = player.addListener(
'playingChange',
(isPlaying) => {
setIsPlaying(isPlaying);
}
);

const onEndVideoSubscription = player.addListener('end', () => {
setIsPlaying(false);
});

return () => {
videoSubscription.remove();
onEndVideoSubscription.remove();
};
}, [player]);

// Set duration when video is loaded
useEffect(() => {
if (player) {
player.volume = volume;
}
}, [volume, player]);

// Update current time periodically
useEffect(() => {
const interval = setInterval(() => {
if (player && player.currentTime) {
setCurrentTime(player.currentTime); // Current playback time in seconds
}
}, 1000);

return () => clearInterval(interval); // Cleanup interval on unmount
}, [player]);

const togglePlay = () => {
if (!isPlaying) {
player.play();
} else {
player.pause();
}
setIsPlaying(!isPlaying);
};

const formatTime = (seconds) => {
const mins = Math.floor(seconds / 60);
const secs = Math.floor(seconds % 60);
return `${mins}:${secs < 10 ? '0' : ''}${secs}`;
};

const handleSliderChange = (value) => {
if (player && length) {
const targetPositionMillis = value * length; // Calculate the target position in milliseconds
const currentPositionMillis = player.currentTime; // Get the current playback position

const difference = targetPositionMillis - currentPositionMillis; // Calculate the difference
player.seekBy(difference); // Seek by the difference in time
setCurrentTime(targetPositionMillis); // Update current time for display
}
};

const handleVolumeChange = (value) => {
player.volume = value;
};

const handleResetVideo = () => {
if (player) {
const currentTime = player.currentTime;
player.seekBy(-currentTime); // Reset to the beginning
player.pause();
setIsPlaying(false);
}
};

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post