samsung - lazo de controlador de Android
drivers android samsung (2)
¿alguien puede decirme cuál es el problema con este logcat por favor
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): FATAL EXCEPTION: Speedometer
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): java.lang.RuntimeException: Can''t create handler inside thread that has not called Looper.prepare()
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): at android.os.Handler.<init>(Handler.java:121)
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): at android.widget.Toast.<init>(Toast.java:68)
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): at android.widget.Toast.makeText(Toast.java:231)
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): at com.paad.whereami.WhereAmI.updateGUI(WhereAmI.java:883)
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): at com.paad.whereami.WhereAmI.access$5(WhereAmI.java:860)
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): at com.paad.whereami.WhereAmI$4.run(WhereAmI.java:845)
06-23 11:09:12.060: ERROR/AndroidRuntime(1116): at java.util.Timer$TimerImpl.run(Timer.java:284)
Está intentando iniciar un controlador de eventos de Android como onLocationChanged dentro de un nuevo hilo que creó. En el método "run ()" de la clase de subprocesos, debe llamar a Looper.prepare (), registrar el controlador de eventos y luego llamar a Looper.loop (). Cuando haya terminado con el hilo, llame al método Looper.myLooper (). Quit () para salir.
Ejemplo:
public class MyActivity extends Activity {
private Thread thread = new ThreadClass();
private static Looper threadLooper = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Begin the location reading thread.
thread.start();
// do UI stuff in here
// never sleep in UI thread. Example only.
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// end the thread.
threadLooper.quit();
// quit the activity
this.finish();
}
private class ThreadClass extends Thread {
@Override
public void run() {
Looper.prepare();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyLocationListener locListen = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, locListen);
threadLooper = Looper.myLooper();
Looper.loop(); // loop until "quit()" is called.
// remove the update listener to prevent the locationManager from calling it.
locationManager.removeUpdates(locListen);
}
}
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
/* Do very intensive work here */
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}
Yoi tendrá que mostrar brindis por el hilo de la interfaz de usuario. Puedes hacerlo usando el método runOnUiThread en Activity. Aquí hay una explicación con el ejemplo de Android: brindis en un hilo