我正在Android上开发一个AR应用程序,并希望无论设备滚动方向如何获得水平和垂直值,都非常像精神层面。一个例子是用户将他们的设备保持在纵向模式并旋转他们的手机,我希望手机上的地平线与自然地平线相匹配。我玩过传感器管理器返回的滚动值,但它似乎考虑了音高(即设备现在处于横向模式,音调应该影响滚动。)
另外,在阅读音高时,无论滚动如何,我都希望地平线上下移动。此刻,当设备滚动到90度时,任何音高变化都会在水平方向而不是垂直方向上移动。
任何指针?
提前致谢。
保
答案 0 :(得分:0)
是的,我认为你最好的选择,据我所知,它的缺点是使用加速度计来确定地面的方向。
使用类似的东西......
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
在你的onCreate方法中,然后把这个
mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
你的onResume中的这是为了处理更新
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
float xAcceleration = event.values[0];
float yAcceleration = event.values[1];
float zAcceleration = event.values[2];
然后,只需使用这些加速度值来确定地面的方向。 :-) 我发现这种方式更加流畅,我希望有所帮助。 : - )
有关详细信息,请查看以下内容以获取更多信息: http://developer.android.com/reference/android/hardware/SensorEvent.html#values