This repository was archived by the owner on Dec 26, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
[3.0] Example: 360 Video player
Yuya Matsuo edited this page Sep 23, 2016
·
2 revisions
360 Video Player can be easily implemented with Meganekko.
Key points are:
- Playing video with MediaPlayer.
- MediaPlayer.setSurface to send output.
- Getting target Surface with
SurfaceRendererComponent.getSurface()
.
Let's look at example.
<scene>
<entity geometry="primitive: globe" id="background"/>
</scene>
This XML is saved in assets/scene.xml. It will be loaded with MeganekkoApp.setSceneFromXmlAsset("scene.xml")
.
import android.media.MediaPlayer;
import org.meganekkovr.Entity;
import org.meganekkovr.MeganekkoApp;
import org.meganekkovr.SurfaceRendererComponent;
public class App extends MeganekkoApp {
private MediaPlayer mediaPlayer;
@Override
public void init() {
super.init();
setSceneFromXmlAsset("scene.xml");
mediaPlayer = MediaPlayer.create(getContext(), R.raw.video);
// Attach SurfaceRendererComponent to render video output to entity's surface
SurfaceRendererComponent surfaceRenderer = new SurfaceRendererComponent();
surfaceRenderer.setContinuousUpdate(true); // This is important!
// Connect output from MediaPlayer to SurfaceRendererComponent
mediaPlayer.setSurface(surfaceRenderer.getSurface());
// Get entity with id
Entity background = getScene().findById("background");
background.add(surfaceRenderer);
mediaPlayer.start();
}
@Override
public void onHmdMounted() {
super.onHmdMounted();
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
}
@Override
public void onHmdUnmounted() {
super.onHmdUnmounted();
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
}
}