早上好,
在使用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值。 现在下一步是什么?
谢谢。
答案 0 :(得分:2)
恕我直言,下一步是让您决定一段时间内加速度计值的哪些轮廓代表“跌倒”,以最小化误报和漏报。这将需要考虑正在使用的设备类型(平板电脑?手机?手表?眼镜?)及其使用方式(手机电话?口袋里的电话?钱包里的电话?)。
答案 1 :(得分:1)
为了做到这一点,您需要将要定义的内容建模为“秋天”。正如CommonsWare所指出的那样,这是一个难以解决的问题,因为你要减少误报和漏报。
请参阅:https://github.com/BharadwajS/Fall-detection-in-Android
还有一个类似的问题:Android - How to approach fall detection algorithm
我建议启动的一种方法是自己测试一些“下降”情况,并在执行此操作时监视x,y和z坐标。然后,当测试手机的加速/减速以表示跌倒时,您应该提出一些合理的限制。请注意,您不希望您的模型只是寻找加速度,因为这会产生大量误报(例如,当您在汽车中时),但是您希望在1g左右加速缓慢,然后在最后突然减速到零。这可能都会在一两秒内发生,因此您应该根据测试提出一些启发式方法并定义您的模型。
您可能还希望允许用户在应用程序本身中校准此内容。