gpt4 book ai didi

android - onLocationChanged() 有哪些替代方案?

转载 作者:太空狗 更新时间:2023-10-29 14:27:14 24 4
gpt4 key购买 nike

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

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

但用户应该先移动。还有其他解决办法吗?

最佳答案

onLocationChanged(Location location) 的替代方法是使用位置管理器和广播接收器来获取用户的位置信息。请参阅文档以阅读有关 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文档。

关于android - onLocationChanged() 有哪些替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com