Visualizzazione stampabile
-
problema emulatore GPS
salve, sono un niubbo totale di questo sistema che sto imparando ad usare per un esame universitario. ho un problema che non riesco a risolvere...
ho provato con diverse applicazioni, ed è un problema che prescinde dal codice (credo). utilizzando l'emulatore del gps tramite ddms e eclipse le coordinate che vengono restituite sono, a prescndere da quelle che gli vengono date, sempre 0 e 0. sto guardando qualche applicazione per interfacciarmi con google maps, e se setto una coordianta iniziale qualsiasi il programma la visualizza correttamente, e appena tramite il gps cambio le coordinate finisce in mezzo al mare (0 0 è sotto l'africa e tra l'altro non ho nemmeno capito subito che l'azzurro fosse il mare... pensavo che la mappa non venisse visualizzata :-[ )
non credo sia un problema di codice, credo che sbagli qualcosa io, ma se serve posto il codice... vi ringrazio moltissimo da subito...
-
Sarebbe d'aiuto che postassi il codice cmq ricordo che anchio ho avuto qualche problema con 0,0 ma non ho mai provato ad emulare le coordinate perciò non saprei dirti ...
-
package android.GPS;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class GPS extends MapActivity
{
private LocationManager lm;
private LocationListener locationListener;
private MapView mapView;
private MapController mc;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//---use the LocationManager class to obtain GPS locations---
lm = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
lm.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0,
locationListener);
mapView = (MapView) findViewById(R.id.mapview1);
mc = mapView.getController();
mapView.setBuiltInZoomControls(true);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
private class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
Toast.makeText(getBaseContext(),
"Location changed : Lat: " + loc.getLatitude() +
" Lng: " + loc.getLongitude(),
Toast.LENGTH_SHORT).show();
GeoPoint p = new GeoPoint(
(int) (loc.getLatitude() * 1E6),
(int) (loc.getLongitude() * 1E6));
mc.animateTo(p);
mc.setZoom(16);
mapView.invalidate();
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.google.android.maps.MapView
android:id="@+id/mapview1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="0ZWjfE91pPCNriau-mFdBhY4yOISJYq4U0P7myQ" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.GPS">
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCAT ION" />
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<activity android:name=".GPS" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
l'applicazione non l'ho scritta io, l'ho solo scaricata, ma a quanto leggo dal codice al cambio di coordinate dovrebbe cambiare anche il centro...
se questa avesse degli errori ti posto quella della professoressa, che dovrebbe funzionare ma mi dà esattamente lo stesso problema
-
I toast appaiono correttamente ? Il codice, cosi messo, mi sembra corretto.
Immagino che tu abbia messo l'invalidate perchè la mapView non faceva piu nulla. Hai provato a toglierlo e vedere cosa fa se lo toli? prova anche con
mc.setCenter che magari l'animazione non va a buon fine.
-
codice:
GeoPoint p = new GeoPoint(
(int) (loc.getLatitude() * 1E6),
(int) (loc.getLongitude() * 1E6));
mc.animateTo(p);
mc.setZoom(16);
mc.setCenter(p);
//mapView.invalidate();
ho modificato in questo modo ma non cambia nulla: appena vengono inviate le coordinate si sposta su 0 0...
l'unica cosa sensata è che l'oggetto loc contenga in effetti quelle coordinate, ma non ne capisco il motivo...
-
credo che il problema sia quello, perchè ho provato a modificare P con un punto arbitrario e in effetti si sposta in quel punto...
-
Dovresti saperle le coordinate ti vengono stampate a video tramite toast no? Cmq per embeddare java usa [highlight=java] e invece per embeddare xml [highlight=xml]
-
in che senso dovrei saperle? esce sempre 0 0...
x l'embed scusa, d'ora in poi lo faccio
-
nessun suggerimento allora?
ho fatto un ulteriore prova usando il programma Maps di default... quando gli dico di andare alla mia locazione va in 0 0 ... il problema è lì ma non capisco proprio cosa ci sia...
-
ho risolto porco cane... due settimane di sclero per questo.
se a eclipse non si cambia la lingua aggiungendo
-Duser.country=US
-Duser.language=en
a eclipse.ini le coordinate che il DDMS invia all'emulatore utilizzano la virgola anzichè il punto, e non vengono capite ( o meglio trasformate in 0 0).
fatto questo funziona tutto... no comment...
poi se la mia prof avesse pensato a questa eventualità nn si offendeva nessuno ....