2014-11-07 2 views
17

Я использую Google Cardboard (его класс HeadTracker), чтобы обнаружить определенные вещи о вращении устройства в приложении AR. Он работает очень хорошо.Google Cardboard VR-датчики

Однако на некоторых устройствах он не работает (ничего не происходит). Я предполагаю, что это потому, что у них нет необходимых датчиков. Мои вопросы:

1) Я хочу обнаружить во время работы, поддерживает ли текущее устройство HeadTracker, то есть имеет необходимые датчики. Для этого мне нужно знать, какие датчики используются HeadTracker, поэтому я могу запросить, присутствуют ли эти датчики. Что это за датчики?

2) Есть ли способ указать необходимые датчики в AndroidManifest? Насколько я вижу, нет никакого способа. Поэтому, если пользователь загружает мое приложение, приложение должно будет сообщить пользователю во время выполнения, что его устройство не поддерживается. Это не приятно. Есть предположения?

+0

Я занимаюсь этим типом задач .. но не получаю успеха .. вы можете мне помочь ..? я сделал, создаю VR-поверхность и установил изображение в ней раньше. но я хочу, чтобы это изображение работало с движением головы. как я могу это сделать .. – Amardeepvijay

+0

Я предполагаю, что у вас уже есть 'use-feature android: glEsVersion =" 0x00020000 "' в вашем манифесте? Можете ли вы уточнить, что «ничего не происходит»? Вы хотите сказать, что у вас нет данных акселерометра? –

+0

Да, данных не было. –

ответ

17

На веб-сайте Google на карточке есть устройство compatibility list: Это кажется несколько неполным, поэтому я попытался взглянуть на source code Cardboard.jar. HeadTracker.java, кажется, имеет следующую логику:

SensorManager sensorManager = (SensorManager)HeadTracker.this.mContext.getSystemService("sensor"); 

for (int sensorType : HeadTracker.INPUT_SENSORS) { 
    Sensor sensor = sensorManager.getDefaultSensor(sensorType); 
    sensorManager.registerListener(HeadTracker.this.mSensorEventListener, sensor, 0, handler); 
} 

С INPUT_SENSORS, определенными в том же файле, как

{TYPE_ACCELEROMETER, TYPE_GYROSCOPE};

Я не уверен, что HeadTracker может работать на телефонах только с одним из этих датчиков. Я предполагаю, что они необходимы.

ваше приложение может потребовать определенных цензоров для запуска (или даже быть видны на рынке андроид) следующие строки в манифесте:

<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" /> 
<uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true" /> 

вы также можете проверить, если датчики доступны для вашего приложение во время выполнения с использованием функции SensorManager public Sensor getDefaultSensor (int type).

+1

Это очень помогло, спасибо. Извините, что я пропустил крайний срок выплаты (я был в отъезде вчера), поэтому он, кажется, был автоматически награжден системой. –

+0

Несмотря на то, что он прослушивает акселерометр, однако предсказанная матрица gl, по-видимому, использует последние значения гироскопа, которые всегда будут равны нулю, если устройство не имеет гироскопа. сообщите мне, если у вас есть приложение для картона, работающее только с ускорителем – Dileep

+0

, вы разместили неверную ссылку на список совместимости. Где я могу найти этот список? –

7

Гарнитура Google Card не будет работать с акселерометром, ей нужен гироскоп.

Акселерометр может обнаруживать силы, применяемые к телефону. Это включает в себя чтение гравитационного тяготения Земли, поэтому телефон может оценить, где «вниз». Но акселерометр не может точно сказать, какова ваша ориентация в 3d-пространстве, он может только приблизиться к тому, что на основе сил, которые он читает.

Это слишком низкая точность для VR, поэтому вам нужен гироскоп.

Если вы настроены на работу с негиропольным телефоном, вы можете написать фрагмент своего собственного кода, приближающий ориентацию телефона, основываясь на данных акселерометра, но имейте в виду, что это будет очень далеко от действительно удовлетворяющего Опыт VR.

0

Используйте Fibrum SDK, если вы хотите, чтобы ваша игра работает без каких-либо гироскопов телефонов

, например, попробовать

Space X Hunter VR:

https://play.google.com/store/apps/details?id=com.creation3d.spacexhuntervr

VR Bowl:

https://play.google.com/store/apps/details?id=com.creation3d.vrbowl

и игры от Fibrum

+0

Добро пожаловать в переполнение стека! Хотя это теоретически может ответить на вопрос, [было бы желательно] (// meta.stackoverflow.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. – manetsus

 Смежные вопросы

  • Нет связанных вопросов^_^