This SDK enables seamless integration with Android ExoPlayer, offering advanced video analytics via the FastPix Dashboard. It's a wrapper built on FastPix’s core Kotlin library to deliver performance monitoring for video applications using Google's ExoPlayer.
- User engagement tracking – Monitor viewer interactions in real-time.
- Playback quality analytics – Evaluate buffering, resolution changes, and network issues.
- Custom event tracking – Track domain-specific user behaviors.
- Device & app diagnostics – Gain insights into playback issues across devices.
- Error logging – Automatically capture fatal and handled playback errors.
- Beacon domain support – Send analytics to a custom tracking domain.
- Android Studio: Ladybug | 2024.2.1 or later
- Minimum SDK: 24 (Android 7.0)
- Target SDK: 35 (Android 15)
- Compile SDK: 36
- Kotlin: 2.2.10+
- Java: 11
- Gradle: 8.9+
repositories {
maven {
url = uri("https://maven.pkg.github.com/FastPix/android-data-exo-player-sdk")
credentials {
username = "<your-github-username>"
password = "<your-personal-access-token>"
}
}
}dependencies {
implementation 'io.fastpix.data:exoplayer:1.1.1'
}class VideoPlayerActivity : AppCompatActivity() {
private lateinit var binding: ActivityVideoPlayerBinding
private lateinit var exoPlayer: ExoPlayer
private lateinit var fastPixDataSDK: FastPixBaseExoPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityVideoPlayerBinding.inflate(layoutInflater)
setContentView(binding.root)
setupPlayer()
setupAnalytics()
}
private fun setupPlayer() {
exoPlayer = ExoPlayer.Builder(this).build()
binding.playerView.player = exoPlayer
val mediaItem = MediaItem.fromUri("YOUR_VIDEO_URL")
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
}
private fun setupAnalytics() {
// Optional
val videoDataDetails = VideoDataDetails(
videoId = UUID.randomUUID().toString(),
videoTitle = "My Video"
).apply {
videoSeries = "Demo Series"
videoProducer = "Demo Producer"
videoContentType = "VOD"
// ..etc
}
// Optional
val playerDataDetails = PlayerDataDetails(
playerName = "exoplayer",
playerVersion = "latest-version"
)
// Optional
val customDataDetails = CustomDataDetails().apply {
customField1 = "Custom Value 1"
customField2 = "Custom Value 2"
// ..etc
}
fastPixDataSDK = FastPixBaseExoPlayer(
context = this,
playerView = binding.playerView,
exoPlayer = exoPlayer,
workSpaceId = "workspace-key",
playerDataDetails = playerDataDetails,
videoDataDetails = videoDataDetails,
customDataDetails = customDataDetails
)
}
override fun onDestroy() {
super.onDestroy()
exoPlayer.release()
fastPixDataSDK.release()
}
}Copyright © 2025 FastPix. All rights reserved.
This project is proprietary software. The FastPix SDK components are proprietary and require appropriate licensing. See individual module README files for specific license information.
For questions, issues, or feature requests:
- Email: support@fastpix.io
- Documentation: FastPix Documentation
- SDK Issues: GitHub Issues
Built with ❤️ using Exoplayer and FastPix Analytics