Skip to content

Instantly share code, notes, and snippets.

@jmarsican
Created June 17, 2020 01:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmarsican/a510ccefa0374f4377d90de8e37c47e0 to your computer and use it in GitHub Desktop.
Save jmarsican/a510ccefa0374f4377d90de8e37c47e0 to your computer and use it in GitHub Desktop.
Sample app for an easy Virtual Reality integration with ExoPlayer. This is achieved playing 360 videos (spherical) and using device motion sensors to navigate within them
class VRActivity : AppCompatActivity() {
private var player: SimpleExoPlayer? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.video_player_layout)
(player_view.videoSurfaceView as SphericalGLSurfaceView)
.setDefaultStereoMode(C.STEREO_MODE_TOP_BOTTOM)
}
override fun onStart() {
super.onStart()
if (Build.VERSION.SDK_INT > 23) {
initializePlayer()
}
}
override fun onResume() {
super.onResume()
if ((Build.VERSION.SDK_INT <= 23 || player == null)) {
initializePlayer()
}
}
override fun onPause() {
super.onPause()
if (Build.VERSION.SDK_INT <= 23) {
releasePlayer()
}
}
override fun onStop() {
super.onStop()
if (Build.VERSION.SDK_INT > 23) {
releasePlayer()
}
}
private fun buildMediaSource(uri: Uri): MediaSource {
val dataSourceFactory = DefaultDataSourceFactory(this, "javiermarsicano-VR-app")
// Create a media source using the supplied URI
return ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(uri)
}
private fun initializePlayer() {
player = SimpleExoPlayer.Builder(this).build()
val uri = Uri.parse("https://storage.googleapis.com/exoplayer-test-media-1/360/congo.mp4")
val mediaSource = buildMediaSource(uri)
player?.prepare(mediaSource)
player_view.player = player
player_view.onResume()
}
private fun releasePlayer() {
player_view.onPause()
player?.release()
player = null
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment