Я делаю приложение для Android, которое будет измерять вибрацию, когда телефон будет установлен на пол. Как использовать акселерометр (для 0-50 Гц) и микрофон (для 50-500 Гц) для измерения вибрации? Я новичок в разработке Android, но это проект, данный мне. Я знаю, что в AppStore есть много приложений, связанных с этим, но я понятия не имею, как это сделано. Я искал учебники, но я нашел учебник, касающийся жестов встряхивания.Использование акселерометра телефона и микрофона для измерения вибрации
2
A
ответ
0
Сначала реализовать перехватчик для акселерометра:
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
На устойчивой поверхности, когда устройство стоит на месте, значения акселерометра меняются в меньшем интервале и имеют меньшие пики. Пока устройство вибрирует, вы заметите, что абсолютные пиковые значения намного выше. Вот как вы можете обнаружить вибрацию. Для микрокода понадобилось время для его реализации. –
Я занимаюсь исследованиями, и я не могу понять концепции акселерометров, частот и уровней шума (дБ). Да, мне нужны дБ и Гц. Мне нужно сделать график, ось y для дБ и ось х для Гц. – Zik