Articles of android location

地理编码器返回长度为零的地址

Geocoder工作正常,直到今天。 它开始返回0长度的string。 注意:这不是Geocoder线程的重复,我使用intent服务和AsyncTask来启动线程之前得到它(和AsyncTask的方法工作正常,超过8个月),检查此代码和新的代码从谷歌FusedLocationProviderClient(这是官方代码)它也返回零长度的string。 来自官方Android页面的链接显示了如何通过意向服务获得它。 我在Android 5.1上获得完整的地址,但在Android 7.1上,它返回一个长度为零的地址。 我曾经使用的代码,直到今天工作得很好。 private void getAddressFromCoordinates() { new AsyncTask<Void, String, Void>() { @Override protected Void doInBackground(Void… params) { try { addresses.clear(); addresses.addAll(geocoder.getFromLocation(mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude(), 1)); } catch (IOException e) { e.printStackTrace(); showToastAsync(getString(R.string.activity_loc_no_location_info)); } catch (IllegalArgumentException illegalArgumentException) { // Catch invalid latitude or longitude values. showToastAsync("Invalid latitude or longitude values"); } // […]

Google定位服务与Android定位服务

正如我们所知,我们有两个替代scheme可以使我们的应用程序的位置感知我们使用Google的位置服务API(Google Play服务的一部分)或者我们使用Android的位置API。 我在这里遇到的问题是,使用Google的服务,我们必须使用接口com.google.android.gms.location.LocationListener,它为我们提供位置更新。 然而,不像android.location.LocationListener,谷歌的版本不提供我们的位置提供商(GPS或互联网)的状态。 我们在Android位置监听器中有以下方法 abstract void onLocationChanged(Location location) Called when the location has changed. abstract void onProviderDisabled(String provider) Called when the provider is disabled by the user. abstract void onProviderEnabled(String provider) Called when the provider is enabled by the user. abstract void onStatusChanged(String provider, int status, Bundle extras) Called when the provider status changes […]

Android – 如何获得从一个地方到另一个地方的预计驾驶时间?

我需要find从一个地方到另一个地方的估算驾驶时间。 我对这两个地方都有经纬度,但是我不知道该怎么做。 是否有任何API。 谢谢。

从坐标获取位置

我已经给出了纬度和经度的坐标,我想用这些做一个位置对象。没有一个构造函数需要双打一个位置,所以我试着这样: Location l = null; l.setLatitude(lat); l.setLongitude(lon); 但它崩溃。 任何不同的想法?

Android Geofencing

我已经通过了Geofencing的教程 ,我有一个疑问。 Geofencing是否要求您持续监控用户的位置? 或者当转换已经过去的时候,添加Geofence的LocationClient会自动触发? 这可能看起来像一个明显的问题,但教程从来没有提到任何有关从位置pipe理器请求位置更新。

DataBinding是否会干扰本地化活动?

TL; DR 我有一个支持多种语言的应用程序。 尽pipe使用了所有常用的本地化方法,但仍有一项活动未被翻译。 这是应用程序中唯一充分利用DataBinding Activity。 完整的解释 我有一个使用DataBinding的Activity 。 所以基本上,该活动的整个XML布局被封装在<layout>标签中。 这是我膨胀的观点,并获得约束力: SomeActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.some_activity); 在XML有许多TextViews以这种方式设置文本: … android:text="@string/<name of a string>" … 我们为用户提供预定义的语言选项并设置应用程序的语言环境 Locale.setDefault(new Locale("<language name>")); 在英语区域,一切正常。 当应用程序处于不同的区域设置思路时,所讨论的活动中的string仍然以英语显示 – 即使这些string已被翻译成适当的语言,并且位于应用程序其余部分抓取的相同string文件中string从。 在该活动开始之前,应用程序没问题 – 活动开始后我退出,应用程序恢复为英语区域设置,直到它被杀死并重新启动。 如果该活动从未打开过,则应用程序按预期运行。 有没有人有任何想法可能造成这种情况? 谢谢。

Android:LocationManagerdynamic调整minTime / minDistance阈值

这是我听GPS位置更新(使用LocationManager和LocationListener )的方式: locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); listener = new MyLocationistener(); // LocationListener locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 30000, // milliseconds (minTime) 20, // meters (minDistance) listener ); 但是我想dynamic调整LocationManager#requestLocationUpdates使用的minTime和minDistance参数。 我的目标是节省电池,根据几个使用政策,即: 如果用户没有移动,请增加minTime以获取位置更新 如果用户移动速度非常快,请增加minDistance 如果用户在室内(无GPS覆盖),则同时增加 如果电池电量过低,请同时增加 …(任何其他启发式) 我想知道: 这是节省电池寿命的好主意吗? 我怎么能做这样的调整? 如果有唯一的select,我可以再次调用LocationManager#removeUpdates和LocationManager#requestLocationUpdates 。 你知道实现这种自适应algorithm的任何想法或示例代码? 编辑:该应用程序是一个跟踪系统,知道人在哪里,以分配任务最接近给定的人的任务。 其实电池几乎不用8个小时,所以我想增加它。

当任何位置提供程序启用/禁用并确定发生了什么操作时是否可以获得通知?

我希望在用户启用或禁用networking或GPS位置时收到通知,重要的是我希望知道他们哪一个已经改变,以及如何改变。 我有一个广播接收器的android.location.PROVIDERS_CHANGED广播意图,这是接收正确的广播。 我现在需要尝试确定发生了哪些操作,即启用或禁用以及哪个提供者已被更改。 我知道,我可以保持每个提供者的状态,然后当我收到通知他们已经改变,然后我可以计算出什么改变了,我正在寻找一个更“标准”的方法来做到这一点。 广播意图似乎没有任何附加信息来指示哪个提供者已经改变。 这是我目前的代码。 public class LocationProviderChangedReceiver extends BroadcastReceiver { private final static String TAG = "LocationProviderChangedReceiver"; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) { Log.i(TAG,"Location Providers changed"); Bundle bundle = intent.getExtras(); if (bundle == null) { Log.d(TAG, "No extras data"); } else { Log.d(TAG, "Bundle received of size " […]

FusedLocationProviderClient.removeLocationUpdates总是返回失败

我有一个扩展名为LocationAwareActivity的基class的activity ,所有这个LocationAwareActivity activity所做的是创build一个位置服务客户端 LocationServices.getFusedLocationProviderClient并listens位置更新。 这个活动的来源是 https://github.com/snijsure/MultiActivity/blob/master/app/src/main/java/com/example/subodhnijsure/multiactivity/LocationAwareActivity.java 当活动被销毁时,它会调用removeLocationUpdates 。 我发现的是 removeLocationUpdate返回总是返回不成功的任务 更多的关注是因为位置活动不被移除, activity没有被垃圾收集。 – 因此,如果我启动从LocationAwareActivityinheritance的任何活动,则活动始终停留在堆上。 所以问题是停止接收位置更新的正确方法是什么,从而允许activity被垃圾收集。 这个项目的整个源代码可以在这里访问 – https://github.com/snijsure/MultiActivity

位置pipe理器删除更新权限

我正在使用android工作室和compileSdkVersion是23我在使用下面的代码 if(locationManager != null){ locationManager.removeUpdates(GPSListener.this); } 停止GPS侦听器是实现LocationListener的类的GPS更新。 但在removeUpdates行我得到低于警告 调用需要可能被用户拒绝的权限:代码应该明确检查权限是否可用(使用checkPermission )或处理潜在的SecurityException 我没有得到上述代码中的问题。 任何额外的权限需要在清单文件中添加? 问候。