2016-06-24 5 views
2

私は、携帯電話を床に置いたときの振動を測定するAndroidアプリを作っています。どのように振動を測定するために、加速度計(0-50Hz用)とマイク(50-500Hz用)を使用しますか?私はAndroid開発の新人ですが、これは私に与えられたプロジェクトです。私はアプリストアにこれに関連するアプリがたくさんあることを知っていますが、どのように作られているのかわかりません。私はチュートリアルを探しましたが、私は揺れのジェスチャーに関するチュートリアルしか見つけませんでした。携帯電話の加速度計とマイクを使って振動を測定する

答えて

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

私は研究しており、加速度計、周波数、ノイズレベル(dB)の概念を実際に把握することはできません。はい、dBとHzが必要です。 dBのグラフはy軸、Hzのグラフはx軸です。 – Zik

関連する問題