我在API级别10使用Android和Google地图,我通过telnet获得经纬度。
public void onLocationChanged(Location location) {
lat = location.getLatitude();
lng = location.getLongitude();
//...
}
但是用户应该先行动。还有其他解决方案吗?
答案 0 :(得分:1)
onLocationChanged(位置位置)的替代方法是使用位置管理器和广播接收器来获取用户的位置信息。请参阅文档以阅读有关Location Manager class的所有内容。使用位置管理器类,您将能够设置一个间隔,在该间隔中,即使用户未移动,也要探测用户的位置。你将拥有:
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Intent intent = new Intent(context, LocationReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
List<String> knownProviders = locationManager.getAllProviders();
if(locationManager != null && pendingIntent != null && knownProviders.contains(LocationManager.GPS_PROVIDER)){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINUTE_INTERVAL*5, 0, pendingIntent);
}
if(locationManager != null && pendingIntent != null && knownProviders.contains(LocationManager.NETWORK_PROVIDER)){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MINUTE_INTERVAL*5, 0, pendingIntent);
}
在LocationReceiver类(广播接收器)中,您将拥有一个onRecieve()方法,您可以在其中使用:
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
location = (Location) bundle.get(LocationManager.KEY_LOCATION_CHANGED);
您可以将该位置对象用于很多方面,请参阅Android Location文档。