diff --git a/src/components/player/AndroidVideoPlayer.tsx b/src/components/player/AndroidVideoPlayer.tsx
index 2b7ef7e..b46b895 100644
--- a/src/components/player/AndroidVideoPlayer.tsx
+++ b/src/components/player/AndroidVideoPlayer.tsx
@@ -133,6 +133,20 @@ const AndroidVideoPlayer: React.FC = () => {
} as any;
};
+ // Helper to get dynamic volume icon
+ const getVolumeIcon = (value: number) => {
+ if (value === 0) return 'volume-off';
+ if (value < 0.3) return 'volume-mute';
+ if (value < 0.6) return 'volume-down';
+ return 'volume-up';
+ };
+
+ // Helper to get dynamic brightness icon
+ const getBrightnessIcon = (value: number) => {
+ if (value < 0.3) return 'brightness-low';
+ if (value < 0.7) return 'brightness-medium';
+ return 'brightness-high';
+ };
// Get appropriate headers based on stream type
const getStreamHeaders = () => {
@@ -2559,7 +2573,7 @@ const AndroidVideoPlayer: React.FC = () => {
logger.log('[AndroidVideoPlayer] Fetching streams for next episode:', nextEpisodeId);
- // Import stremio service
+ // Import stremio service
const stremioService = require('../../services/stremioService').default;
let bestStream: any = null;
@@ -3125,7 +3139,7 @@ const AndroidVideoPlayer: React.FC = () => {
}
]}
>
- {/* Left side gesture handler - tap + long press (brightness gesture disabled) */}
+ {/* Left side gesture handler - brightness + tap + long press (Android and iOS) */}
{
shouldCancelWhenOutside={false}
simultaneousHandlers={[]}
>
-
-
-
+
+
+
+
{/* Combined gesture handler for right side - volume + tap + long press */}
@@ -3398,8 +3421,57 @@ const AndroidVideoPlayer: React.FC = () => {
buffered={buffered}
formatTime={formatTime}
playerBackend={useVLC ? 'VLC' : 'ExoPlayer'}
+ nextLoadingTitle={nextLoadingTitle}
+ controlsFixedOffset={Math.min(Dimensions.get('window').width, Dimensions.get('window').height) >= 768 ? 120 : 100}
/>
+ {/* Combined Volume & Brightness Gesture Indicator - NEW PILL STYLE (No Bar) */}
+ {(gestureControls.showVolumeOverlay || gestureControls.showBrightnessOverlay) && (
+
+ {/* Dynamic Icon */}
+
+
+
+
+ {/* Text Label: Shows "Muted" or percentage */}
+
+ {/* Conditional Text Content Logic */}
+ {gestureControls.showVolumeOverlay && volume === 0
+ ? "Muted" // Display "Muted" when volume is 0
+ : `${Math.round((gestureControls.showVolumeOverlay ? volume : brightness) * 100)}%` // Display percentage otherwise
+ }
+
+
+ )}
+
{showPauseOverlay && (
{
controlsFixedOffset={Math.min(Dimensions.get('window').width, Dimensions.get('window').height) >= 768 ? 120 : 100}
/>
- {/* Volume Overlay */}
- {gestureControls.showVolumeOverlay && (
-
-
-
-
- {/* Horizontal Dotted Progress Bar */}
-
- {/* Dotted background */}
-
- {Array.from({ length: 16 }, (_, i) => (
-
- ))}
-
-
- {/* Progress fill */}
-
-
-
-
- {Math.round(volume * 100)}%
-
-
-
- )}
-
- {/* Brightness Overlay */}
- {gestureControls.showBrightnessOverlay && (
-
-
-
-
- {/* Horizontal Dotted Progress Bar */}
-
- {/* Dotted background */}
-
- {Array.from({ length: 16 }, (_, i) => (
-
- ))}
-
-
- {/* Progress fill */}
-
-
-
-
- {Math.round(brightness * 100)}%
-
-
-
- )}
-
{/* Speed Activated Overlay */}
{showSpeedActivatedOverlay && (
{
fontWeight: '600',
letterSpacing: 0.5,
}}>
- {holdToSpeedValue}x Speed Activated
+ {holdToSpeedValue}x Speed
@@ -4175,4 +4053,36 @@ const AndroidVideoPlayer: React.FC = () => {
);
};
-export default AndroidVideoPlayer;
\ No newline at end of file
+// New styles for the gesture indicator
+const localStyles = StyleSheet.create({
+ gestureIndicatorContainer: {
+ position: 'absolute',
+ top: '4%', // Adjust this for vertical position
+ alignSelf: 'center', // Adjust this for horizontal position
+ flexDirection: 'row',
+ alignItems: 'center',
+ backgroundColor: 'rgba(25, 25, 25)', // Dark pill background
+ borderRadius: 70,
+ paddingHorizontal: 15,
+ paddingVertical: 15,
+ zIndex: 2000, // Very high z-index to ensure visibility
+ minWidth: 120, // Adjusted min width since bar is removed
+ },
+ iconWrapper: {
+ borderRadius: 50, // Makes it a perfect circle (set to a high number)
+ width: 40, // Define the diameter of the circle
+ height: 40, // Define the diameter of the circle
+ justifyContent: 'center',
+ alignItems: 'center',
+ marginRight: 12, // Margin to separate icon circle from percentage text
+ },
+ gestureText: {
+ color: '#FFFFFF',
+ fontSize: 18,
+ fontWeight: 'normal',
+ minWidth: 35,
+ textAlign: 'right',
+ },
+});
+
+export default AndroidVideoPlayer;