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

3

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

2个回答

1
首先实现一个加速度计的监听器:
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);
}

在振动之前和振动期间检查数值。你会发现在振动期间数值有显著变化。

我不确定麦克风,但是仅通过听取加速度计就足以测量振动。如果需要帮助使用麦克风,我可以更新我的代码。

希望这能帮到你。


你能否也包括麦克风?另外,我该如何使用加速度计数据(x、y、z)来找到振动频率?我需要使用快速傅里叶变换吗? - Zik
在设备静止的稳定表面上,加速度计值变化的间隔较小且峰值较小。当设备振动时,您会注意到绝对峰值要高得多。这就是您可以检测振动的方式。至于麦克风代码,我需要时间来实现它。 - Burak Day
我一直在研究,但是我无法真正掌握加速度计、频率和噪声水平(分贝)的概念。是的,我需要分贝和赫兹。我需要制作一个图表,y轴为分贝,x轴为赫兹。 - Zik
查看运动传感器文档,你就会明白了。但我不确定你是否能够获得那么详细的信息。根据你读取的值,你可能需要自己计算分贝和赫兹。 - Burak Day
你已经实现了麦克风吗?我也在研究它。 - Zik

0

通过使用手机的麦克风,您可以刺激手机的振动系统。这里有一瓦的声音。振动也会以低音量震动。


你的回答可以通过提供更多支持信息来改进。请在编辑中添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是否正确。你可以在帮助中心找到关于如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接