MCPcopy Index your code
hub / github.com/JakeSteam/Vidsta

github.com/JakeSteam/Vidsta @1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.0 ↗ · + Follow
129 symbols 258 edges 11 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Vidsta

An easily implementable and customisable Android video player. Try out the sample app!


Feature List:

  • Plays local and remote files
  • Send custom headers
  • Customise play / pause / fullscreen etc button images
  • Apply colour tint to play / pause / fullscreen images to quickly theme the player
  • Customise text colour
  • Autoplay
  • Autoloop
  • Listeners for video play / pause / buffering / error
  • Easy to implement
  • Min SDK Version: 14

Setup

1. Import library:

Add compile 'uk.co.jakelee.vidsta:1.0.0' to your build.gradle dependencies.

2. Create view to display video in:
<uk.co.jakelee.vidsta.VidstaPlayer
        android:id="@+id/player"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
3. Configure video source, and other options:
        VidstaPlayer player = (VidstaPlayer) findViewById(R.id.player);
        player.setVideoSource("http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4");
        player.setAutoLoop(true);
        player.setAutoPlay(true);
4. That's it! You're done!

Adding custom listeners, customising the UI, and other configuration options are detailed below, but you're ready to go!


Changelog

V1.0.0: Initial release, forked from Exposure Video Player.

Customisation

Via XML:
    <uk.co.jakelee.vidsta.VidstaPlayer
        android:id="@+id/player"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:videoSource = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4" 
        app:textColor = "@color/colorPrimary" 
        app:playVideoDrawable = "@drawable/custom_video_play" 
        app:pauseVideoDrawable = "@drawable/custom_video_pause" 
        app:retryVideoDrawable = "@drawable/custom_video_retry" 
        app:nextVideoDrawable = "@drawable/custom_video_next" 
        app:previousVideoDrawable = "@drawable/custom_video_previous" 
        app:buttonTintColor = "@color/colorAccent" 
        app:autoPlay = "true" 
        app:autoLoop = "true" 
        app:setFullScreen = "true" 
        app:fullScreenButtonEnabled = "true" 
        app:fullScreenButtonVisible = "true" />
Programmatically:
# Setting video source to a remote video
player.setVideoSource("http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4");

# Enabling fullscreen mode
player.setFullScreen(true);
player.setFullScreenButtonVisible(true);

# Adding coloured tint to text / buttons
player.setTextColor(intent.getIntExtra("textColour", Color.WHITE));
player.setButtonTintColor(intent.getIntExtra("iconTint", Color.WHITE));

# Setting new drawables
player.setPlayButtonDrawable(R.drawable.custom_video_play);
player.setPauseButtonDrawable(R.drawable.custom_video_pause);
player.setRetryButtonDrawable(R.drawable.custom_video_retry);
player.setFullscreenEnterDrawable(R.drawable.custom_video_screen_fullscreen_enter);
player.setFullscreenExitDrawable(R.drawable.custom_video_screen_fullscreen_exit);
player.setPreviousButtonDrawable(R.drawable.custom_video_previous);
player.setNextButtonDrawable(R.drawable.custom_video_next);

# Setting up autoloop & autoplay
player.setAutoLoop(true);
player.setAutoPlay(true);

# Setting up custom listeners for events
player.setOnVideoBufferingListener(new VideoStateListeners.OnVideoBufferingListener());
player.setOnVideoErrorListener(new VideoStateListeners.OnVideoErrorListener());
player.setOnVideoFinishedListener(new VideoStateListeners.OnVideoFinishedListener());
player.setOnVideoPausedListener(new VideoStateListeners.OnVideoPausedListener());
player.setOnVideoRestartListener(new VideoStateListeners.OnVideoRestartListener());
player.setOnVideoStartedListener(new VideoStateListeners.OnVideoStartedListener());
player.setOnVideoStoppedListener(new VideoStateListeners.OnVideoStoppedListener());

# Setting a fullscreen listener. Note that starting a new fullscreen activity must be handled in your application for now
player.setOnFullScreenClickListener(new FullScreenClickListener());

Extension points exported contracts — how you extend this code

OnBackCalledListener (Interface)
(no doc) [1 implementers]
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/OnBackCalledListener.java
FullScreenClickListener (Interface)
(no doc) [1 implementers]
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/FullScreenClickListener.java
OnVideoStartedListener (Interface)
(no doc) [1 implementers]
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/VideoStateListeners.java
OnVideoPausedListener (Interface)
(no doc) [1 implementers]
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/VideoStateListeners.java
OnVideoStoppedListener (Interface)
(no doc) [1 implementers]
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/VideoStateListeners.java

Core symbols most depended-on inside this repo

createListenerLog
called by 8
vidstaexample/src/main/java/uk/co/jakelee/vidstasample/utils/ListenerHelper.java
start
called by 7
vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaPlayer.java
pause
called by 4
vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaPlayer.java
animateControls
called by 4
vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaPlayer.java
setTextColor
called by 4
vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaPlayer.java
getTimeString
called by 4
vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaUtil.java
init
called by 3
vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaPlayer.java
stop
called by 3
vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaPlayer.java

Shape

Method 107
Interface 14
Class 8

Languages

Java100%

Modules by API surface

vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaPlayer.java70 symbols
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/VideoStateListeners.java15 symbols
vidstaexample/src/main/java/uk/co/jakelee/vidstasample/utils/Listeners.java10 symbols
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/LayoutStates.java9 symbols
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/VideoListeners.java8 symbols
vidstaexample/src/main/java/uk/co/jakelee/vidstasample/MainActivity.java6 symbols
vidstaexample/src/main/java/uk/co/jakelee/vidstasample/utils/ListenerHelper.java3 symbols
vidstaexample/src/main/java/uk/co/jakelee/vidstasample/PlayerActivity.java2 symbols
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/OnBackCalledListener.java2 symbols
vidsta/src/main/java/uk/co/jakelee/vidsta/listeners/FullScreenClickListener.java2 symbols
vidsta/src/main/java/uk/co/jakelee/vidsta/VidstaUtil.java2 symbols

For agents

$ claude mcp add Vidsta \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact