我想同时访问方向和加速计传感器。这样做的正确方法是什么?
我正在使用
public class MainActivity extends Activity
{
private SensorManager sensorManager;
private Sensor sensor;
private Sensor sensor2;
private float x, y, z;
private float x1, y1, z1;
private String output;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
sensor2 = sensorManager.getSensorList(Sensor.TYPE_ORIENTATION).get(0);
}
private void refreshDisplay() {
output = String.format(";%f;%f;%f;%f;%f;%f", x, y, z, x1, y1, z1);
}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(accelerationListener, sensor,
SensorManager.SENSOR_DELAY_GAME);
sensorManager.registerListener(orientationListener, sensor2,
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() {
sensorManager.unregisterListener(accelerationListener);
sensorManager.unregisterListener(orientationListener);
super.onStop();
}
private SensorEventListener accelerationListener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int acc) {
}
@Override
public void onSensorChanged(SensorEvent event) {
x = event.values[0];
y = event.values[1];
z = event.values[2];
refreshDisplay();
}
};
private SensorEventListener orientationListener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int acc) {
}
@Override
public void onSensorChanged(SensorEvent event) {
x1 = event.values[0];
y1 = event.values[1];
z1 = event.values[2];
refreshDisplay();
}
};
}
但这很不稳定。仅使用传感器或加速度计是平滑的。
已编辑:OnPause
答案 0 :(得分:1)
我想同时访问方向和加速计传感器。这样做的正确方法是什么?
我会在getDefaultSensor()
上使用SensorManager
,而不是假设列表中的第0个条目是正确的。
另外,要么使用onResume()
和onPause()
作为一对,要么使用onStart()
和onStop()
作为一对。您正在使用onResume()
和onStop()
,这意味着您可能会多次注册传感器事件。
但这很不稳定
考虑到你没有对上面显示的代码中的数据做任何事情,我不知道你怎么能说出某些东西是“波涛汹涌”的。此外,您的真实代码对数据的作用可能是导致数据输入两倍的“波动”行为的原因 - 使用Traceview来确定您花费的时间超过预期的时间。