2012-03-29 87 views
4

我想要做的是:服务,不断地收听gps(是:只需 gps)位置更新而不主动请求它们 - 即这个应用程序应该消耗在电池寿命或cpu时间方面没有其他资源,直到其他应用程序请求/接收gps位置更新。那么我的应用程序应该执行一些功能。在此之后,它应该回到“睡眠”,等待下一个GPS定位被其他应用程序请求...android:listen *被动地* gps位置更新

我已经阅读了这篇文章http://android-developers.blogspot.de/2011/06/deep-dive-into-location.html但这似乎有不同的重点。实际上,我在这里迷路了......如何准确地使用这个被动位置提供者?我不能得到这个工作:(

到目前为止我的代码:我有这样的(远程)服务注册位置监听器:

public class MyService extends Service 
{ 
    LocationManager locationManager; 

    @Override 
    public IBinder onBind(Intent intent) 
    { 
     return serviceBinder; 
    } 

    private final IMyService.Stub serviceBinder = new IMyService.Stub() 
    {}; 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 

     Log.d(Config.LOGTAG, "service started"); 

     locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, new GPSLocationListener()); 
    } 

    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 

     Log.d(Config.LOGTAG, "service destroyed"); 
    } 

    public class GPSLocationListener implements LocationListener 
    { 
     @Override 
     public void onLocationChanged(Location location) 
     { 
      Toast.makeText(getBaseContext(), "GPS FIX RECEIVED: " + location.getLongitude() + " : " + location.getLatitude(), Toast.LENGTH_LONG).show(); 
      Log.d(Config.LOGTAG, "GPS FIX RECEIVED: " + location.getLongitude() + " : " + location.getLatitude()); 
     } 

     @Override 
     public void onProviderDisabled(String arg0) 
     { 
      Log.d(Config.LOGTAG, ":("); 
     } 

     @Override 
     public void onProviderEnabled(String arg0) 
     { 
      Log.d(Config.LOGTAG, ":)"); 
     } 

     @Override 
     public void onStatusChanged(String arg0, int arg1, Bundle arg2) 
     { 
      Log.d(Config.LOGTAG, ":/"); 
     } 
    } 
} 

不幸的是,这是不是在所有:( 服务工作根据日志开始,但是当我如开放的谷歌地图与GPS功能,并得到一个位置固定在那里,位置监听器是不是“通知”(即不记录任何东西)

如何做到这一点吗?

+1

这可能是Google地图不会更新被动提供商。类似(重复?)问题在这里:http://stackoverflow.com/q/9620107/324625 – 2012-03-29 15:09:35

+0

@xenonite你有没有想过这个问题想通了?我正在做类似的工作 – uofc 2014-04-10 00:33:29

回答

1

我想知道w不管它是不是工作,因为没有被动的地点正在收到,或代码无法正常工作。所以我要做的第一件事就是开始聆听网络和GPS位置(用于测试)并确保它们到达。如果他们这样做,那么这表明谷歌地图正在使用缓存的位置,而不是煽动被动的位置广播。

如果你没有得到任何位置,你需要检查你的代码,并使其与GPS /网络一起工作,然后再进入被动位置。

1

嘿,我认为你需要更新的经度和纬度值。

请点击此链接.. Click here

我已经尝试过了,在Android手机。它的工作进行测试。

注意: 必须和应该测试Android手机上的GPS状态。 它不会在eclipse模拟器上显示。但它会显示在手机上试试..

有一个不错的。

+0

这不能回答OP的问题。他希望在应用程序关闭时被动地收集数据。只有在应用程序打开时才有效 – 2016-12-24 15:06:20