2014-11-07 54 views
17

我正在使用Google Cardboard(它的HeadTracker类)来检测AR应用程序中有关设备旋转的某些内容。它工作得很好。Google Cardboard VR传感器

但是,在某些设备上,它不起作用(没有任何反应)。我认为这是因为他们没有必要的传感器。我的问题:

1)我想在运行时检测当前设备是否支持HeadTracker,即它有必要的传感器可用。为此,我需要知道HeadTracker使用哪些传感器,以便我可以查询这些传感器是否存在。这些传感器是什么?

2)有没有在AndroidManifest中指定必要的传感器的方法?据我所知,没有办法。因此,如果用户下载我的应用程序,应用程序将不得不在运行时通知用户他的设备不受支持。这不好。有什么想法吗?

+0

我正在做这种类型的任务..但没有获得成功..你能帮助我..吗?我已经完成了,创建一个VR表面并在其中设置图像。但我希望这个图像与头部运动一起工作。我怎么能这样做.. – Amardeepvijay 2014-11-14 07:02:11

+0

我假设你已经有清单中的'uses-feature android:glEsVersion =“0x00020000”'?你能否详细说明“什么都没有发生”?你的意思是你没有得到任何加速计数据? – 2014-11-14 23:43:01

+0

是的,没有数据。 – 2014-11-16 11:04:12

回答

17

谷歌纸板的网站有一个设备compatibility list: 这似乎有些不完整,所以我试图看看Cardboard.jar的source code。 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); 
} 

随着在同一文件中定义为

{TYPE_ACCELEROMETER,TYPE_GYROSCOPE} INPUT_SENSORS;

我不确定HeadTracker是否可以在仅使用其中一个传感器的手机上工作。我的猜测是,两者都是必要的。

您的应用程序可能需要以与您的清单以下行运行(甚至是在Android市场上可见的)某些审查:

<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

它帮了很多,谢谢。对不起,我错过了赏金截止日期(我昨天离开了),所以它似乎已被系统自动授予。 – 2014-11-17 10:05:10

+0

虽然它听加速度计,但获得预测的gl矩阵似乎使用最后的陀螺仪值,如果设备没有陀螺仪,它将始终为零。让我知道,如果你有纸板应用程序只与加速度计 – Dileep 2014-12-29 15:34:59

+0

工作,你发布了兼容性列表上的错误链接。我在哪里可以找到这个列表? – 2015-05-13 12:32:54

7

谷歌纸板耳机将无法使用只是加速度计,它需要陀螺仪。

加速计可以检测施加在手机上的力。这包括读取地球的引力,因此手机可以估计“下”的位置。但是加速度计无法准确地告诉你在三维空间中你的方向是什么,它只能根据它读取的力量来近似。

这对VR来说精度太低,所以这就是为什么你需要陀螺仪。

如果您在使用非陀螺仪手机时无法工作,您可以根据加速度计数据编写一段近似手机方向的代码,但请记住它离真正令人满意的距离VR体验。

0

使用Fibrum SDK如果你想让你的游戏不带陀螺仪的手机工作

例如尝试

空间X猎人VR:

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

VR碗:

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

和来自Fibrum的游戏

+0

欢迎来到Stack Overflow!虽然这可能会在理论上回答这个问题,[这将是更可取的](// meta.stackoverflow.com/q/8259)在这里包括答案的基本部分,并提供参考链接。 – manetsus 2016-03-17 02:05:16

相关问题