| Index: content/public/android/java/src/org/chromium/content/browser/input/CardboardVRDevice.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/input/CardboardVRDevice.java b/content/public/android/java/src/org/chromium/content/browser/input/CardboardVRDevice.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..280e3bfe4288deda1dd9eba1da00517cbeb8dd8d
|
| --- /dev/null
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/input/CardboardVRDevice.java
|
| @@ -0,0 +1,88 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.content.browser.input;
|
| +
|
| +import android.content.Context;
|
| +
|
| +import com.google.vrtoolkit.cardboard.CardboardDeviceParams;
|
| +import com.google.vrtoolkit.cardboard.FieldOfView;
|
| +import com.google.vrtoolkit.cardboard.HeadMountedDisplay;
|
| +import com.google.vrtoolkit.cardboard.HeadMountedDisplayManager;
|
| +import com.google.vrtoolkit.cardboard.ScreenParams;
|
| +import com.google.vrtoolkit.cardboard.sensors.HeadTracker;
|
| +
|
| +import org.chromium.base.CalledByNative;
|
| +import org.chromium.base.JNINamespace;
|
| +
|
| +/**
|
| + * This is the implementation of the C++ counterpart CardboardVRDevice.
|
| + */
|
| +@JNINamespace("content")
|
| +class CardboardVRDevice {
|
| + private static final String TAG = "CardboardVRDevice";
|
| + private final HeadMountedDisplayManager mHMDManager;
|
| + private final HeadTracker mHeadTracker;
|
| +
|
| + @CalledByNative
|
| + private static CardboardVRDevice create(Context context) {
|
| + return new CardboardVRDevice(context);
|
| + }
|
| +
|
| + private CardboardVRDevice(Context context) {
|
| + mHMDManager = new HeadMountedDisplayManager(context);
|
| +
|
| + mHeadTracker = HeadTracker.createFromContext(context);
|
| + mHeadTracker.setNeckModelEnabled(true);
|
| + mHeadTracker.startTracking();
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void getFieldOfView(float[] outFov) {
|
| + HeadMountedDisplay hmd = mHMDManager.getHeadMountedDisplay();
|
| + CardboardDeviceParams deviceParams = hmd.getCardboardDeviceParams();
|
| + FieldOfView fov = deviceParams.getLeftEyeMaxFov();
|
| + outFov[0] = fov.getTop();
|
| + outFov[1] = fov.getBottom();
|
| + outFov[2] = fov.getLeft();
|
| + outFov[3] = fov.getRight();
|
| + }
|
| +
|
| + @CalledByNative
|
| + private float getIpd() {
|
| + HeadMountedDisplay hmd = mHMDManager.getHeadMountedDisplay();
|
| + CardboardDeviceParams deviceParams = hmd.getCardboardDeviceParams();
|
| + return deviceParams.getInterLensDistance();
|
| + }
|
| +
|
| + @CalledByNative
|
| + private String getDeviceName() {
|
| + HeadMountedDisplay hmd = mHMDManager.getHeadMountedDisplay();
|
| + CardboardDeviceParams deviceParams = hmd.getCardboardDeviceParams();
|
| + return deviceParams.getVendor() + " " + deviceParams.getModel();
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void getScreenSize(int[] outSize) {
|
| + HeadMountedDisplay hmd = mHMDManager.getHeadMountedDisplay();
|
| + ScreenParams screenParams = hmd.getScreenParams();
|
| + outSize[0] = screenParams.getWidth();
|
| + outSize[1] = screenParams.getHeight();
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void getSensorState(float[] outMatrix) {
|
| + mHeadTracker.getLastHeadView(outMatrix, 0);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void stopTracking() {
|
| + mHeadTracker.stopTracking();
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void resetSensor() {
|
| + mHeadTracker.resetTracker();
|
| + }
|
| +}
|
|
|