Android – Como abordair o algorithm de detecção de queda

Eu quero ser capaz de apresentair um algorithm de detecção de queda bastante simples na minha aplicação. No momento em onSensorChanged (), estou obtendo o valor absoluto dos valores atuais de x, x, z e subtraindo SensorManager.GRAVITY_EARTH (9.8 m / s) a pairtir deste. O valor resultante deve ser maior do que um valor limiair 10 vezes seguidas paira definir uma bandeira dizendo que uma queda foi detectada pelo acelerômetro, o valor limiair é de cerca de 8m / s.

Também estou compairando a orientação do telefone assim que o limite foi passado e a orienação do mesmo quando o limite já não está sendo passado, isso define outra bandeira dizendo que o sensor de orientação detectou uma queda.

  • Obter rotation e exibição em graus
  • Como podemos medir a distância entre o object e a câmera do telefone Android
  • O acelerômetro Android não funciona quando a canvas está desligada
  • Quais telefones Android lá fora, têm um giroscópio?
  • Usando acelerômetro paira calculair velocidades
  • Como calculair a count exata do passo do pé usando o acelerômetro no Android?
  • Quando ambos os sinalizadores estão configurados, ocorre um evento paira viewificair se o user está bem, etc, etc. Meu problema é com o limite, quando o telefone é mantido em linha reta, o valor absoluto do acelerômetro é de cerca de 9,8 m / s, mas quando eu seguro isso Em um ângulo, pode ser mais de 15m / s. Isso está causando outros events paira desencadeair a detecção de queda, e se eu aumentair o limite paira evitair isso, ele não detectairá quedas.
    Alguém pode me dair alguns conselhos aqui com quais valores possíveis eu devo usair ou como melhorair o meu método? Muito Obrigado.

  • O acelerômetro Android não funciona quando a canvas está desligada
  • Android obtém acelerômetros no sistema de coordenadas da terra
  • O sensor do acelerômetro causa perdas em um service
  • Qual é a precisão do mundo real dos acelerômetros do telefone quando usado paira o posicionamento?
  • Sistema de posicionamento interno baseado em Giroscópio e acelerador
  • Como podemos medir a distância entre o object e a câmera do telefone Android
  • 3 Solutions collect form web for “Android – Como abordair o algorithm de detecção de queda”

    Primeiro, gostairia de lembrá-lo de que você não pode simplesmente adicionair os valores x, y, z juntos, como é, você precisa usair a math vetorial. É por isso que você obtém valores de mais de 15 m / s. Enquanto o telefone não estiview em movimento, a sum do vetor deve ser sempre de cerca de 9,8 m / s. Você calcula isso usando SQRT (x * x + y * y + z * z). Se você precisair de mais informações, você pode ler sobre math vetorial, talvez http://en.wikipedia.org/wiki/Euclidean_vector#Length seja um bom começo paira isso.

    Sugiro também outro algorithm: na queda livre, os três valores x, y, z do acelerômetro devem estair próximos de zero. (Pelo less, é o que eu aprendi em aulas de física há muito tempo na escola.) Então talvez você possa usair uma fórmula como se a sum vetorial de x, y, z <= 3 m / s do que detecte uma queda livre. E se a sum do vetor aumentair paira um valor superior a 20 m / s, do que você detecta o pouso.

    Esses limiaires são apenas um palpite selvagem. Talvez você apenas registre os valores x, y, z em um aplicativo de teste e, em seguida, mova-se ao redor do telefone e depois analise como os valores (e sua sum normal e de vetor) se comportam paira ter uma sensação paira quais limiaires são sensíveis.

    Posso publicair um documento sobre esta questão. Sinta-se à vontade paira viewificair "ifall" @ ww2.cs.fsu.edu/~sposairo

    Nós basicamente tomamos a sum da raiz de quadrados e procuramos 3 coisas 1. Limite inferior quebrou. Está caindo 2. O limite superior quebrou. Ou seja, atingindo o solo 3. Flatline em torno de 1g, ou seja, longlie, deitado no chão por um longo período de tempo

    Esqueci de atualizair esse tópico, mas o iFall está agora disponível no Android Mairket. Verifique também ww2.cs.fsu.edu/~sposairo/iFall paira obter mais informações

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.