2016-06-24 9 views
2

Я делаю приложение для Android, которое будет измерять вибрацию, когда телефон будет установлен на пол. Как использовать акселерометр (для 0-50 Гц) и микрофон (для 50-500 Гц) для измерения вибрации? Я новичок в разработке Android, но это проект, данный мне. Я знаю, что в AppStore есть много приложений, связанных с этим, но я понятия не имею, как это сделано. Я искал учебники, но я нашел учебник, касающийся жестов встряхивания.Использование акселерометра телефона и микрофона для измерения вибрации

ответ

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); 
} 

Проверить значения, прежде чем вибрации и при вибрации. Вы увидите замечательное изменение значений во время вибрации.

Я не уверен в микрофоне, но только для прослушивания акселерометра будет достаточно для измерения вибрации. Я могу обновить свой код, если вам нужна помощь с микрофоном.

Надеюсь, это поможет.

+0

Не могли бы вы также включить микрофон? Кроме того, как я могу использовать данные акселерометра (x, y, z), чтобы найти частоту колебаний? Использую ли я быстрое преобразование Фурье или то, что – Zik

+0

На устойчивой поверхности, когда устройство стоит на месте, значения акселерометра меняются в меньшем интервале и имеют меньшие пики. Пока устройство вибрирует, вы заметите, что абсолютные пиковые значения намного выше. Вот как вы можете обнаружить вибрацию. Для микрокода понадобилось время для его реализации. –

+0

Я занимаюсь исследованиями, и я не могу понять концепции акселерометров, частот и уровней шума (дБ). Да, мне нужны дБ и Гц. Мне нужно сделать график, ось y для дБ и ось х для Гц. – Zik

 Смежные вопросы

  • Нет связанных вопросов^_^