Tag: locationlistener

Android – 跨多个活动实现LocationListener的最佳方式

我一直在这个问题上停留了一段时间。 我正在开发一个应用程序,在几个不同的活动中使用相当广泛的位置。 我find的每个例子都在每个Activity中使用一个单独的LocationListener。 这在我的情况下是不可行的。 我想知道在多个活动中跟踪用户位置的最有效的方法是什么。 现在,我创build了一个实现LocationListener的服务,并使用广播来更新Activity基类中的静态lat和long字段。 这意味着服务总是在运行,这并不理想。 但是,如果我closures了服务并且只在需要的时候重新启动它,那么获得一个好的位置需要时间。 我需要在Activity的onCreate()中的位置数据。 如果我尝试在活动基类中实现它,那也是一样的。 如果我不断地在onResume / onCreate中注册监听器,并在onPause()中取消注册,则需要花费太多的时间来开始接收更新。 我也尝试创build一个服务,我可以绑定,所以它只在我需要一个位置时开始。 但是我有同样的问题,绑定到服务并开始获取更新需要很长时间。 我现在使用的服务可以工作,但是从我读过的所有内容来看,我不应该使用一个不断运行的服务来处理这样的琐事。 但应用程序的全部重点是根据用户的当前位置提供相关的数据。 所以我有一个服务只是在后台运行,并定期提供更新。 导致我在这一点上重新审视devise的一个主要问题是,我最近发现,如果用户在没有打开GPS的情况下启动应用程序,然后启用onProviderEnabled(),则不会调用onProviderEnabled()。 在这种情况下,应用程序无法识别GPS已启用,因此可以开始监听更新。 我认为我从看例子中了解LocationManager和LocationListener,但似乎无法将其应用于需要多个活动中的位置数据的情况。 任何帮助或build议将不胜感激。

NETWORK_PROVIDER的LocationListener已启用,但onLocationChanged永远不会被调用

我正在开发一个应用程序,在一个服务6,6分钟内整天获取手机的位置,它工作正常,但有时networking提供商监听程序的OnLocationChanged停止被调用,而我不知道为什么。 由于某种原因停止被调用,但提供程序是启用和列表工作,当我启用或禁用提供程序手动, onProviderEnabled和onProviderDisabled被调用。 它只是发生在NETWORK_PROVIDER , GPS_PROVIDER运作良好。 监听器: LocationListener locationListenerGPS = new LocationListener() { // @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO locationListenerGPS onStatusChanged Log.d(TAG, "Provedor trocado"); } // @Override public void onProviderEnabled(String provider) { Log.w(TAG, "PROVEDOR " + provider + " HABILITADO!"); } // @Override public void onProviderDisabled(String provider) { […]

BroadcastReceiver的位置

我知道BroadcastReceiver监视文本,电话事件等等,但是您可以将LocationServices作为基于位置的服务和事件运行吗? 例如,您靠近某个GPS点,手机会通知您。