Acelerómetro androide para medir la velocidad
Im tratando de hacer un velocímetro con el acelerómetro, pero por alguna razón el código se está estrellando alguien puede por favor decirme lo que está mal y cómo arreglarlo gracias
Esta es la parte roja en logcat:
- Detectar actividad del usuario (correr, andar en bicicleta, conducir) usando Android
- Filtrado de ruido de datos del acelerómetro
- Android - Cómo contar el tiempo durante un largo período
- Unity3D Android acelerómetro y giroscopio controles
- ¿Es posible tener la distancia movida por un teléfono inteligente utilizando sólo el acelerómetro?
05-14 13:03:55.826: INFO/ActivityManager(91): Start proc com.hanud.speedo for activity com.hanud.speedo/.speedometer: pid=2052 uid=10127 gids={} 05-14 13:03:56.806: DEBUG/AndroidRuntime(2052): Shutting down VM 05-14 13:03:56.806: WARN/dalvikvm(2052): threadid=1: thread exiting with uncaught exception (group=0x400207f0) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): FATAL EXCEPTION: main 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.hanud.speedo/com.hanud.speedo.speedometer}: java.lang.ClassNotFoundException: com.hanud.speedo.speedometer in loader dalvik.system.PathClassLoader[/data/app/com.hanud.speedo-2.apk] 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.os.Handler.dispatchMessage(Handler.java:99) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.os.Looper.loop(Looper.java:123) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.app.ActivityThread.main(ActivityThread.java:4627) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at java.lang.reflect.Method.invokeNative(Native Method) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at java.lang.reflect.Method.invoke(Method.java:521) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at dalvik.system.NativeStart.main(Native Method) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): Caused by: java.lang.ClassNotFoundException: com.hanud.speedo.speedometer in loader dalvik.system.PathClassLoader[/data/app/com.hanud.speedo-2.apk] 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 05-14 13:03:56.986: ERROR/AndroidRuntime(2052): ... 11 more 05-14 13:03:57.017: WARN/ActivityManager(91): Force finishing activity com.hanud.speedo/.speedometer 05-14 13:03:57.526: WARN/ActivityManager(91): Activity pause timeout for HistoryRecord{4382d820 com.hanud.speedo/.speedometer} 05-14 13:04:05.666: DEBUG/dalvikvm(1890): GC_EXPLICIT freed 4544 objects / 322792 bytes in 288ms 05-14 13:04:07.796: WARN/ActivityManager(91): Activity destroy timeout for HistoryRecord{4382d820 com.hanud.speedo/.speedometer} 05-14 13:04:12.016: INFO/ActivityManager(91): Start proc com.android.email for service com.android.email/.service.MailService: pid=2058 uid=10004 gids={3003, 1015}
Y este es el código:
import java.util.Date; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; public class Speedometer extends Activity { Handler handler = new Handler(); SensorManager sensorManager; TextView myTextView; float appliedAcceleration = 0; float currentAcceleration = 0; float velocity = 0; Date lastUpdate; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); myTextView = (TextView)findViewById(R.id.myTextView); lastUpdate = new Date(System.currentTimeMillis()); sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); Sensor accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(sensorEventListener, accelerometer, SensorManager.SENSOR_DELAY_FASTEST); Timer updateTimer = new Timer("velocityUpdate"); updateTimer.scheduleAtFixedRate(new TimerTask() { public void run() { updateGUI(); } }, 0, 1000); } private void updateGUI() { // Convert from meters per second to miles per hour. final double mph = (Math.round(100*velocity / 1.6 * 3.6))/100; // Update the GUI handler.post(new Runnable() { public void run() { myTextView.setText(String.valueOf(mph) + "mph"); } }); } private void updateVelocity() { // Calculate how long this acceleration has been applied. Date timeNow = new Date(System.currentTimeMillis()); long timeDelta = timeNow.getTime()-lastUpdate.getTime(); lastUpdate.setTime(timeNow.getTime()); // Calculate the change in velocity at the // current acceleration since the last update. float deltaVelocity = appliedAcceleration * (timeDelta/1000); appliedAcceleration = currentAcceleration; // Add the velocity change to the current velocity. velocity += deltaVelocity; } //private final SensorListener sensorListener = new SensorListener() { private final SensorEventListener sensorEventListener = new SensorEventListener() { double calibration = Double.NaN; public void onSensorChanged(SensorEvent event) { double x = event.values[0]; double y = event.values[1]; double z = event.values[2]; double a = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2) + Math.pow(z, 2)); if (calibration == Double.NaN) calibration = a; else { updateVelocity(); currentAcceleration = (float)a; } } public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; }
- Mal Datos del acelerómetro con vibración
- Android Movimiento acelerómetro bola
- ¿Podemos dibujar línea en lienzo android entre dos puntos dados por giroscopio?
- Sistema de Posicionamiento Interior basado en Giroscopio y Acelerómetro
- Detección de la orientación del dispositivo
- Combine giroscopio con acelerómetro para obtener el rumbo
- Android Solución para los sensores que no funcionan cuando la pantalla está desactivada
- ¿Es posible detectar movimiento cuando la pantalla está apagada?
Usted definió (probablemente en el manifiesto android) com.hanud.speedo.speedometer
, mientras que el nombre de su actividad es Speedometer
(con S
mayúscula).
Sólo para dejarlo claro: cambie el nombre de la actividad en el archivo de manifiesto a Velocímetro .
- ¿Hay de todos modos para abrir una URL de facebook en la aplicación de Facebook de un teléfono?
- ¿Cómo comunicarse entre el servicio de mensajería de Firebase y la actividad? Androide