diff --git a/components/AndroidVideoPlayer.tsx b/components/AndroidVideoPlayer.tsx index 33f538b7..523f752a 100644 --- a/components/AndroidVideoPlayer.tsx +++ b/components/AndroidVideoPlayer.tsx @@ -1,6 +1,7 @@ import React, { useEffect, useRef, useState, useCallback } from 'react'; import { Platform, Animated, TouchableWithoutFeedback, View } from 'react-native'; import Video, { VideoRef, SelectedTrack, BufferingStrategyType, ResizeMode } from 'react-native-video'; +import RNImmersiveMode from 'react-native-immersive-mode'; interface VideoPlayerProps { src: string; @@ -40,6 +41,28 @@ export const AndroidVideoPlayer: React.FC = ({ const [isSeeking, setIsSeeking] = useState(false); const [lastSeekTime, setLastSeekTime] = useState(0); + // Enable immersive mode when video player mounts, disable when it unmounts + useEffect(() => { + if (Platform.OS === 'android') { + try { + RNImmersiveMode.setBarMode('Bottom'); + RNImmersiveMode.fullLayout(true); + } catch (error) { + console.log('Immersive mode error:', error); + } + + return () => { + // Restore navigation bar when video player unmounts + try { + RNImmersiveMode.setBarMode('Normal'); + RNImmersiveMode.fullLayout(false); + } catch (error) { + console.log('Immersive mode cleanup error:', error); + } + }; + } + }, []); + // Only render on Android if (Platform.OS !== 'android') { return null; diff --git a/src/navigation/AppNavigator.tsx b/src/navigation/AppNavigator.tsx index 0fba6733..51412378 100644 --- a/src/navigation/AppNavigator.tsx +++ b/src/navigation/AppNavigator.tsx @@ -3,7 +3,6 @@ import { NavigationContainer, DefaultTheme as NavigationDefaultTheme, DarkTheme import { createNativeStackNavigator, NativeStackNavigationOptions, NativeStackNavigationProp } from '@react-navigation/native-stack'; import { createBottomTabNavigator, BottomTabNavigationProp } from '@react-navigation/bottom-tabs'; import { useColorScheme, Platform, Animated, StatusBar, TouchableOpacity, View, Text, AppState, Easing, Dimensions } from 'react-native'; -import RNImmersiveMode from 'react-native-immersive-mode'; import { mmkvStorage } from '../services/mmkvStorage'; import { PaperProvider, MD3DarkTheme, MD3LightTheme, adaptNavigationTheme } from 'react-native-paper'; import type { MD3Theme } from 'react-native-paper'; @@ -1063,14 +1062,6 @@ const InnerNavigator = ({ initialRouteName }: { initialRouteName?: keyof RootSta // Handle Android-specific optimizations useEffect(() => { if (Platform.OS === 'android') { - // Hide system navigation bar - try { - RNImmersiveMode.setBarMode('Bottom'); - RNImmersiveMode.fullLayout(true); - } catch (error) { - console.log('Immersive mode error:', error); - } - // Ensure consistent background color for Android StatusBar.setBackgroundColor('transparent', true); StatusBar.setTranslucent(true);