我正在尝试制作一个简单的玻璃器皿应用程序,在屏幕上显示加速度计数据。我发布的代码适用于我的Android手机,但是当我在谷歌眼镜上使用它时,只有Y轴似乎正常工作(向上和向下看)。
当我说Y轴时,它实际上是来自SensorEvent event.values[]
数组的第三个数组条目(而不是第二个数组条目 - 请参阅代码)。
所有TextViews DO显示的浮动值与它们在我的Android手机上的显示方式类似,但是当我移动我的头时,它们的变化不大(大约.1到.2)。
public class SensorActivity extends Activity implements SensorEventListener {
SensorManager mSensorManager;
mAccel;
TextView tvx, tvy, tvz;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.main);
tvx = (TextView) findViewById(R.id.tvx2);
tvy = (TextView) findViewById(R.id.tvy2);
tvz = (TextView) findViewById(R.id.tvz2);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccel = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccel, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause(){
super.onPause();
mSensorManager.unregisterListener(this);
}
@Override
protected void onResume(){
super.onResume();
mSensorManager.registerListener(this, mAccel, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
tvx.setText(Float.toString(x));
tvy.setText(Float.toString(y));
tvz.setText(Float.toString(z));
}
}
Glass文档几乎指向Android文档,所以我假设它们应该是相同的。 任何见解将不胜感激。
**** NEW UPDATE ****
现在,突然间。 Y轴正在读取Y方向(Z轴也是如此)。主要问题是Y轴读数从值“9”开始并且在任一方向(无负方向)变为“0”,因此确定用户正在寻找的位置是个问题。我知道我可以将Z轴称为Y轴,但这只是掩盖了一个不同的问题。 事实证明,X轴正在记录头部倾斜而不是头部转动(这与文档不一致)。我没有找到任何有关校准加速度计的文件(如果可能的话)。