Estoy desarrollando un Podómetro de la aplicación de Android para contar el número de pasos y el uso de los pasos calcular la distancia recorrida y las calorías quemadas. He seguido el tutorial
Crear un Simple Podómetro y Contador de pasos en Android y hecho exactamente igual. Se detecta el número de pasos cuando el sensor detecta el movimiento.

Pero hay algunos problemas:

  1. Cuando estaba de pie en el mismo lugar con mi dispositivo en mi mano y con solo mover la mano o dar un tirón al dispositivo, se detecta el cambio y se añade a la cuenta del paso.
  2. Si puedo mover muy lentamente con mi mano no detecta el cambio.
  3. Si me salto, entonces se añade varios pasos en el mostrador.

He comprobado algunas otras aplicaciones desde la Tienda Play store no hacen este tipo de cosas.

He buscado pero no puede encontrar una solución adecuada o tutorial para ello. Cualquier ayuda o sugerencia. Gracias

InformationsquelleAutor Harry .Naeem | 2017-10-19

3 Comentarios

  1. 4

    El problema aquí es que su aplicación no es lo suficientemente sofisticado: sólo comprueba si hay un aumento en los datos del acelerómetro y se supone que la espiga es que viene de un paso. No tiene idea de donde está el pico de aceleración es realmente viene de: que bien podría venir de usted saltar o agitar el dispositivo en la mano.

    Cómo hacer que sea más precisa, entonces? Bueno, esa es una pregunta muy difícil que ha sido tema de documentos científicos por un tiempo muy largo. Incluso el más sofisticado de fitness trackers (que utilizan el aprendizaje de máquina, procesamiento de señal y otros métodos estadísticos) tienen dificultades para determinar cuando el paso es real y cuando es sólo ruido o usuario jugar con el dispositivo.

    Por suerte, Android tiene su propia builtin contador de pasos y detector de paso, que son más sofisticados que los de la clase en yor ejemplo.

    Así que a menos que usted realmente desea aprender el procesamiento de la señal y de la IA (que yo muy recomendable, aunque yo no sé mucho acerca de la ciencia de datos de detección de paso), me permito sugerir a utilizar integrados detector y contador.

    • Sí, hay algunos dispositivos que no disponen de sensores en ella. Por ejemplo, Samsung J5. He probado uno de los Podómetros (buscado en Google, creo que no está disponible en Play Store). Cuando he instalado la aplicación, recibí un mensaje que no tiene sensor, de modo que la aplicación no se puede ejecutar. También el escritor de el tutorial que he mencionado en mi pregunta ha dado un comentario al final de su artículo que «la Mayoría de los dispositivos Android no tiene incorporado un Sensor de Contador de pasos.» Así que tiene sentido.
    • En ese caso la solución es hacer que el procesamiento de la señal más inteligente, es decir, el raspado de la solución en el tutorial y aplicar un algoritmo diferente. E incluso entonces, si los picos en el movimiento mira como los pasos, entonces el algoritmo se marca como un paso. Aquí los mayores por LO que la pregunta que podría ser útil: stackoverflow.com/questions/6375381/…
  2. 4

    Mediante la implementación de SensorEventListener oyente dentro de una clase y principal de los dos métodos onSensorChanged y onAccuracyChanged puede iniciar el seguimiento de los pasos.

        public class StepActivity extends Activity implements SensorEventListener{
        SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        Sensor sSensor= sensorManager .getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
    
        ...
    
    }

    Ahora hemos inicializado la SensorManager y el Sensor y el Sensor registrado como un oyente dentro de la actividad, ahora tenemos que implementar la onSensorChanged función que se activará por un SensorEvent cada vez que hay un cambio en el Sensor, nos hemos registrado en nuestro caso, en el TYPE_STEP_DETECTOR.

    private long steps = 0;
    
    @Override
    public void onSensorChanged(SensorEvent event) {
        Sensor sensor = event.sensor;
        float[] values = event.values;
        int value = -1;
    
        if (values.length > 0) {
            value = (int) values[0];
        }
    
    
        if (sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
            steps++;
        }
    }
    • Greate su trabajo pero, ¿cómo voy a llegar a la velocidad de la caminata el uso de este ?
    • Para la velocidad de la caminata, que haría uso de un sensor diferente, tales como GPS, GLONASS, Galileo, BeiDou, IRNSS, o QZSS, o la ubicación general de la API de servicios.
    • Si el usuario está en el interior, a continuación, soluciones vía satélite, simplemente no funcionan. Dentro, usted tiene que utilizar diferentes métodos para determinar usuario de velocidad. Una forma de hacerlo que el usuario da su propia longitud de paso, a continuación, que acaba de calcular aproximada de la velocidad de marcha utilizando la longitud del paso y la frecuencia con que el usuario toma medidas. Sin embargo, esto sólo se da una estimación aproximada, pero es mejor que nada.
  3. 2

    Que es una muy ingenuo método para lograr el paso a contar. Usted debe usar Android incorporado en el paso de contador, ya que también utiliza otros sensores si están disponibles, tales como el giroscopio, que puede mejorar la detección de paso. Usted debe especialmente el uso de esta versión integrada si usted va a construir cosas en la parte superior de ella. Usted necesita un seguro de la capa subyacente. También puedes probar a usar lineal sensor de aceleración que se calcula mediante la eliminación de la gravedad componente del acelerómetro. La gravedad hace que el acelerómetro muy sensible, es por eso que usted vea el paso contra la creciente cuando usted está de pie.

    Los detalles se pueden encontrar aquí:
    https://source.android.com/devices/sensors/sensor-types#step_detector

    Si usted todavía desea desarrollar su propia desde cero, entonces mira este código:
    https://github.com/bagilevi/android-pedometer

    También puede tratar de Google scholar para los últimos papeles en el paso de conteo de los algoritmos. Especialmente intentar leer la última encuesta sobre el tema.

Dejar respuesta

Please enter your comment!
Please enter your name here