Skip to content
This repository was archived by the owner on Dec 26, 2018. It is now read-only.

[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:

Let's look at example.

Scene

<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").

Java

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();
        }
    }
}
Clone this wiki locally