用Android检测人的摔倒

时间:2014-01-13 16:10:43

标签: android accelerometer gravity

早上好,

在使用Microsoft SQL Server在C#/ ASP.NET中开发一些应用程序/网站之前,我是Android开发的新手。 现在我要开发一个Android应用程序,以检测我的人何时跌倒并发出警报。 我找到了这样的例子:

public class MainActivity extends Activity implements SensorEventListener{
    private SensorManager sensorManager;
    TextView text_X;
    TextView text_Y;
    TextView text_Z;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        sensorManager.registerListener(this, sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER ),SensorManager.SENSOR_DELAY_NORMAL );
        //Collegamento con le textView del layout
        text_X=(TextView)findViewById(R.id.txtXValue);
        text_Y=(TextView)findViewById(R.id.txtYValue);
        text_Z=(TextView)findViewById(R.id.txtZValue);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            //L'accelerometro ha cambiato stato
            mostraValori(event);
        }

    }   

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

    }

    private void mostraValori(SensorEvent event){
        float[] valori=event.values;//array che contiene i valori dell'accelerometro
        //modifica del valore delle textView

        text_X.setText("Valore X: "+valori[0]);
        text_Y.setText("Valore Y: "+valori[1]);
        text_Z.setText("Valore Z: "+valori[2]);

    }
}

所以我在屏幕上加速度计的X,Y和Z值。 现在下一步是什么?

谢谢。

2 个答案:

答案 0 :(得分:2)

恕我直言,下一步是让您决定一段时间内加速度计值的哪些轮廓代表“跌倒”,以最小化误报和漏报。这将需要考虑正在使用的设备类型(平板电脑?手机?手表?眼镜?)及其使用方式(手机电话?口袋里的电话?钱包里的电话?)。

答案 1 :(得分:1)

为了做到这一点,您需要将要定义的内容建模为“秋天”。正如CommonsWare所指出的那样,这是一个难以解决的问题,因为你要减少误报和漏报。

请参阅:https://github.com/BharadwajS/Fall-detection-in-Android

还有一个类似的问题:Android - How to approach fall detection algorithm

我建议启动的一种方法是自己测试一些“下降”情况,并在执行此操作时监视x,y和z坐标。然后,当测试手机的加速/减速以表示跌倒时,您应该提出一些合理的限制。请注意,您不希望您的模型只是寻找加速度,因为这会产生大量误报(例如,当您在汽车中时),但是您希望在1g左右加速缓慢,然后在最后突然减速到零。这可能都会在一两秒内发生,因此您应该根据测试提出一些启发式方法并定义您的模型。

您可能还希望允许用户在应用程序本身中校准此内容。