gpt4 book ai didi

android - 使用手机的加速度计和麦克风测量振动

转载 作者:行者123 更新时间:2023-11-29 01:19:01 25 4
gpt4 key购买 nike

我正在制作一个 Android 应用程序,可以测量手机放在地板上时的振动。如何使用加速度计(0-50Hz)和麦克风(50-500Hz)测量振动?我是 Android 开发的新手,但这是给我的一个项目。我知道应用商店里有很多与此相关的应用程序,但我不知道它是如何制作的。我搜索了教程,但只找到了有关摇动手势的教程。

最佳答案

首先为加速度计实现一个监听器:

class SENSOR_EVENT_LISTENER implements SensorEventListener {
float[] accelerometer_data = new float[3];
float[] gravity = new float[3];

public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {

case Sensor.TYPE_ACCELEROMETER:
final float alpha = 0.8f;

// Isolate the force of gravity with the low-pass filter.
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

accelerometer_data[0] = event.values[0] - gravity[0];
accelerometer_data[1] = event.values[1] - gravity[1];
accelerometer_data[2] = event.values[2] - gravity[2];
break;

default:
return;
}
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
}

然后注册你的接收器:

final SensorManager sensor_manager = (SensorManager) m_context.getSystemService(Context.SENSOR_SERVICE);
listener = new SENSOR_EVENT_LISTENER();

final List<Sensor> sensors = sensor_manager.getSensorList(Sensor.TYPE_ACCELEROMETER);

if(sensors.size() > 0) {
sensor = sensor_manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensor_manager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_FASTEST);
}

检查振动前和振动期间的值。您会看到在振动过程中数值发生了显着变化。

我不确定麦克风,但仅听加速度计就足以让您测量振动。如果您需要麦克风方面的帮助,我可以更新我的代码。

希望这对您有所帮助。

关于android - 使用手机的加速度计和麦克风测量振动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38004946/

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