从服务类获取值到活动

时间:2015-08-27 09:42:02

标签: android

我有TrackingService组件,可根据众包来跟踪我所在城市的公交车位置。在TrackingService类中,我有变量pLong, pLat,以便在onLocatiochChanged()中计算出它们时存储纬度和经度。 TrackingService在后台运行,数据传输到服务器。 我有一个Map活动来显示总线的位置,在MainActivity中选择的用户(作为过滤器)。

一切都运行良好但是当我尝试在地图活动中显示用户的当前位置时,double lng = ts.pLong;double lat = ts.pLat;中收到的displayMyLocation()0.0,尽管他们在我修改它们时有值值正在发送到服务器但是当我在displayMyLocation()中调用它们时它们是0.0

我无法通过将意图传递给地图活动来启动onLocationChanged()的地图活动。

如何在我的地图活动中获取这些值?

TrackingService类:

public class TrackingService extends Service implements AsyncTaskCallback,
        LocationListener {
    public double pLong;
    public double pLat;
    ...
        @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        detectLocation();
        return START_STICKY;
    }
    private void detectLocation() {
        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 1000, 0,
                this);
    }
    @Override
    public void onLocationChanged(Location location) {

        if (location != null) {
            pLong = location.getLongitude();
            pLat = location.getLatitude();
           .....

     }  

}

地图活动:

public class Map extends FragmentActivity implements OnMapReadyCallback {
  .....
    private void displayMyLocation() {

        TrackingService ts = new TrackingService();
         double lng = ts.pLong;
         double lat = ts.pLat;       
         LatLng ll = new LatLng(lat,lng);
         MarkerOptions markerOpt = new MarkerOptions().title("My Location")
                    .position(ll);
         myLocatMarker = map.addMarker(markerOpt);

    }
  ...

  }

0 个答案:

没有答案