ho cercato di creare un'app per Android correlata alla mappa, ma mi sono reso conto che l'onLocationChanged della mia app non era stata chiamata, quindi la mappa rimane sempre nell'area predefinita (Stati Uniti).onLocationChanged non è stato chiamato
il mio codice:
public class MapMainActivity extends MapActivity
implements OnClickListener, LocationListener {
MapView mapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_main);
//reference
mapView = (MapView)findViewById(R.id.map_view);
mapView.setBuiltInZoomControls(true);
this.findViewById(R.id.btn_satellite).setOnClickListener(this);
this.findViewById(R.id.btn_street).setOnClickListener(this);
}//onCreate
@Override
protected void onResume() {
super.onResume();
Toast.makeText(this, "GPS tracking started",
Toast.LENGTH_SHORT).show();
// Start location updates; 5s/5m
LocationManager locManager = (LocationManager)getSystemService(
Context.LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
5000, 0, this);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = locManager.getBestProvider(crit, true);
Location loc = locManager.getLastKnownLocation(provider);
}//onResume
@Override
protected void onPause() {
super.onPause();
Toast.makeText(this, "GPS tracking stopped",
Toast.LENGTH_SHORT).show();
LocationManager locManager = (LocationManager)getSystemService(
Context.LOCATION_SERVICE);
locManager.removeUpdates(this);
}//onPause
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v == findViewById(R.id.btn_street))
{
mapView.setSatellite(false);
}//street view
else if (v == findViewById(R.id.btn_satellite))
{
mapView.setSatellite(true);
}
}//onClick
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}//isRouteDisplayed
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
double lat = location.getLatitude();
double lon = location.getLongitude();
TextView txtLat = (TextView)findViewById(R.id.txt_lat);
txtLat.setText(String.format("%.6f", lat));
TextView txtLon = (TextView)findViewById(R.id.txt_lon);
txtLon.setText(String.format("%.6f", lon));
MapView map = (MapView)findViewById(R.id.map_view);
map.getController().animateTo(new GeoPoint((int)(lat*1E6),//1000000),
(int)(lon*1E6)));
}//onLocationChanged
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Toast.makeText(this, "GPS disabled",
Toast.LENGTH_SHORT).show();
}//onProviderDisabled
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
Toast.makeText(this, "GPS enabled",
Toast.LENGTH_SHORT).show();
}//onProviderEnabled
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}//onStatusChanged
}//class
tutta la mia registro gatto quando ho eseguito l'applicazione tramite il mio dispositivo (16/12/2011)
D/InputTransport(5357): Input channel constructed: name='40baf680 Toast (client)', ashmemFd=54, receivePipeFd=57, sendPipeFd=58
I/MapActivity(5357): Handling network change notification:CONNECTED
E/MapActivity(5357): Couldn't get connection factory client
I/ViewRoot(5357): [email protected] DRAWING : sg.edu.tp/sg.edu.tp.SIP_TestMapActivity
I/ViewRoot(5357): [email protected] is completed : sg.edu.tp/sg.edu.tp.SIP_TestMapActivity
I/ViewRoot(5357): [email protected] DRAWING : Toast
I/ViewRoot(5357): [email protected] is completed : Toast
D/InputTransport(5357): Input channel destroyed: name='40baf680 Toast (client)', ashmemFd=54, receivePipeFd=57, sendPipeFd=58
manifestare:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sg.edu.tp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".SIP_MLT_TestActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps" />
<activity android:name=".SIP_TestMapActivity"></activity>
<activity android:name=".SIP_TestDraw1Activity"></activity>
<activity android:name=".SIP_TestDraw2Activity"></activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
</manifest>
come hai cambiato la posizione ?? – freshDroid
ehm ... non capisco davvero cosa intendi. ma, dal momento che non sono in stato, quando eseguo l'app non dovrebbe visualizzare la mappa degli stati. – Jovi
u eseguirlo sull'emulatore – freshDroid