gpt4 book ai didi

Android 加速度计 : SensorManager. DATA_X 已弃用 - 现在怎么办?

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:43 25 4
gpt4 key购买 nike

我使用 StackOverflow 的一些建议编写了一个加速度计应用程序(用于学习目的)。一切正常,但我在代码中收到“SensorManager.DATA_X 已弃用”消息作为警告:

// setup the textviews for displaying the accelerations
mAccValueViews[SensorManager.DATA_X] = (TextView) findViewById(R.id.accele_x_value);
mAccValueViews[SensorManager.DATA_Y] = (TextView) findViewById(R.id.accele_y_value);
mAccValueViews[SensorManager.DATA_Z] = (TextView) findViewById(R.id.accele_z_value);

我尝试在这里和其他地方搜索我应该做什么而不是使用“SensorManager.DATA_X”,但我似乎找不到任何说明。

官方指南说要改用“传感器”,但我不知道该怎么做!

如果有人可以建议执行上述操作的新“官方”方式是什么,我将不胜感激。

编辑重新阅读文档后(这次正确!)我注意到“SensorManager.DATA_X”只返回一个 int,它是 onSensorChanged(int, float[]) 返回的数组中 X 值的索引。我能够将上面的代码更改为此,它可以完美地工作并且没有任何弃用的警告:

// setup the textviews for displaying the accelerations
mAccValueViews[0] = (TextView) findViewById(R.id.accele_x_value);
mAccValueViews[1] = (TextView) findViewById(R.id.accele_y_value);
mAccValueViews[2] = (TextView) findViewById(R.id.accele_z_value);

最佳答案

文档写的很清楚,创建你的传感器:

private SensorManager mSensorManager;
private Sensor mSensor;

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

if (mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) != null){
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}

还有你的 Sensor ,注册一个监听器来使用它:

mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);

然后您可以使用 OnSensorChanged 获取 values :

  @Override
public final void onSensorChanged(SensorEvent event) {
// Many sensors return 3 values, one for each axis.
float xaccel = event.values[0];
// Do something with this sensor value.
}

关于Android 加速度计 : SensorManager. DATA_X 已弃用 - 现在怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13687480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com