onLocationChanged()有哪些替代方案?

时间:2012-06-16 00:30:16

标签: android latitude-longitude

我在API级别10使用Android和Google地图,我通过telnet获得经纬度。

public void onLocationChanged(Location location) {
    lat = location.getLatitude();
    lng = location.getLongitude();
    //...
}

但是用户应该先行动。还有其他解决方案吗?

1 个答案:

答案 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文档。