我在 API 级别 10 使用 Android 和 Google 地图,我通过 telnet 获得纬度和经度。
public void onLocationChanged(Location location) {
lat = location.getLatitude();
lng = location.getLongitude();
//...
}
但是用户应该先移动。还有其他解决方案吗?
我在 API 级别 10 使用 Android 和 Google 地图,我通过 telnet 获得纬度和经度。
public void onLocationChanged(Location location) {
lat = location.getLatitude();
lng = location.getLongitude();
//...
}
但是用户应该先移动。还有其他解决方案吗?
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文档。