3

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

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

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

4

1 回答 1

1

onLocationChanged(Location location) 的替代方法是使用位置管理器和广播接收器来获取用户的位置信息。请参阅文档以阅读有关Location Manager 类的所有信息。使用位置管理器类,您将能够设置要探测用户位置的时间间隔,即使他们没有移动。你将会有:

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

于 2012-06-16T00:41:20.957 回答