gpt4 book ai didi

android - 如何用android检测震动事件?

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:59 27 4
gpt4 key购买 nike

如何使用 Android 检测摇动事件?如何检测震动方向?

我想在发生晃动时更改 ImageView 中的图像。

最佳答案

从代码来看,需要实现SensorListener:

public class ShakeActivity extends Activity implements SensorListener

您需要获取 SensorManager:

sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);

并使用所需的标志注册该传感器:

sensorMgr.registerListener(this,
SensorManager.SENSOR_ACCELEROMETER,
SensorManager.SENSOR_DELAY_GAME);

在 onSensorChange() 方法中,您可以确定是否是摇晃:

public void onSensorChanged(int sensor, float[] values) {
if (sensor == SensorManager.SENSOR_ACCELEROMETER) {
long curTime = System.currentTimeMillis();
// only allow one update every 100ms.
if ((curTime - lastUpdate) > 100) {
long diffTime = (curTime - lastUpdate);
lastUpdate = curTime;

x = values[SensorManager.DATA_X];
y = values[SensorManager.DATA_Y];
z = values[SensorManager.DATA_Z];

float speed = Math.abs(x+y+z - last_x - last_y - last_z) / diffTime * 10000;

if (speed > SHAKE_THRESHOLD) {
Log.d("sensor", "shake detected w/ speed: " + speed);
Toast.makeText(this, "shake detected w/ speed: " + speed, Toast.LENGTH_SHORT).show();
}
last_x = x;
last_y = y;
last_z = z;
}
}
}

抖动阈值定义为:

private static final int SHAKE_THRESHOLD = 800;

还有一些其他方法来检测抖动。看看这个link. (如果该链接不起作用或链接已失效, look at this web archive 。)。

看看这个 example适用于 Android 震动检测监听器。

注意: SensorListener 已弃用。我们可以使用SensorEventListener来代替。 Here is a quick example using SensorEventListener.

谢谢。

关于android - 如何用android检测震动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176433/

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