Changeset View
Changeset View
Standalone View
Standalone View
src/it/reyboz/bustorino/middleware/AppLocationManager.java
Show First 20 Lines • Show All 98 Lines • ▼ Show 20 Lines | public void addLocationRequestFor(LocationRequester req){ | ||||
} | } | ||||
if(!present) { | if(!present) { | ||||
WeakReference<LocationRequester> newref = new WeakReference<>(req); | WeakReference<LocationRequester> newref = new WeakReference<>(req); | ||||
requestersRef.add(newref); | requestersRef.add(newref); | ||||
minimum_time_milli = Math.min(req.getLocationCriteria().getTimeInterval(),minimum_time_milli); | minimum_time_milli = Math.min(req.getLocationCriteria().getTimeInterval(),minimum_time_milli); | ||||
Log.d(DEBUG_TAG,"Added new stop requester, instance of "+req.getClass().getSimpleName()); | Log.d(DEBUG_TAG,"Added new stop requester, instance of "+req.getClass().getSimpleName()); | ||||
} | } | ||||
if(requestersRef.size()>0){ | if(requestersRef.size()>0){ | ||||
Log.d(DEBUG_TAG,"Requesting position updates"); | |||||
requestGPSPositionUpdates(); | requestGPSPositionUpdates(); | ||||
} | } | ||||
} | } | ||||
public void removeLocationRequestFor(LocationRequester req){ | public void removeLocationRequestFor(LocationRequester req){ | ||||
minimum_time_milli = Integer.MAX_VALUE; | minimum_time_milli = Integer.MAX_VALUE; | ||||
ListIterator<WeakReference<LocationRequester>> iter = requestersRef.listIterator(); | ListIterator<WeakReference<LocationRequester>> iter = requestersRef.listIterator(); | ||||
Show All 16 Lines | private void sendLocationStatusToAll(int status){ | ||||
final LocationRequester cReq = iter.next().get(); | final LocationRequester cReq = iter.next().get(); | ||||
if(cReq==null) iter.remove(); | if(cReq==null) iter.remove(); | ||||
else cReq.onLocationStatusChanged(status); | else cReq.onLocationStatusChanged(status); | ||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
public void onLocationChanged(Location location) { | public void onLocationChanged(Location location) { | ||||
Log.d("GPSLocationListener","found location:\nlat: "+location.getLatitude()+" lon: "+location.getLongitude()+"\naccuracy: "+location.getAccuracy()); | Log.d(DEBUG_TAG,"found location:\nlat: "+location.getLatitude()+" lon: "+location.getLongitude()+"\naccuracy: "+location.getAccuracy()); | ||||
ListIterator<WeakReference<LocationRequester>> iter = requestersRef.listIterator(); | ListIterator<WeakReference<LocationRequester>> iter = requestersRef.listIterator(); | ||||
int new_min_interval = Integer.MAX_VALUE; | int new_min_interval = Integer.MAX_VALUE; | ||||
while(iter.hasNext()){ | while(iter.hasNext()){ | ||||
final LocationRequester requester = iter.next().get(); | final LocationRequester requester = iter.next().get(); | ||||
if(requester==null) iter.remove(); | if(requester==null) iter.remove(); | ||||
else{ | else{ | ||||
final long timeNow = System.currentTimeMillis(); | final long timeNow = System.currentTimeMillis(); | ||||
final LocationCriteria criteria = requester.getLocationCriteria(); | final LocationCriteria criteria = requester.getLocationCriteria(); | ||||
Show All 22 Lines | public void onStatusChanged(String provider, int status, Bundle extras) { | ||||
if(oldGPSLocStatus !=status){ | if(oldGPSLocStatus !=status){ | ||||
if(status == LocationProvider.OUT_OF_SERVICE || status == LocationProvider.TEMPORARILY_UNAVAILABLE) { | if(status == LocationProvider.OUT_OF_SERVICE || status == LocationProvider.TEMPORARILY_UNAVAILABLE) { | ||||
sendLocationStatusToAll(LOCATION_UNAVAILABLE); | sendLocationStatusToAll(LOCATION_UNAVAILABLE); | ||||
}else if(status == LocationProvider.AVAILABLE){ | }else if(status == LocationProvider.AVAILABLE){ | ||||
sendLocationStatusToAll(LOCATION_GPS_AVAILABLE); | sendLocationStatusToAll(LOCATION_GPS_AVAILABLE); | ||||
} | } | ||||
oldGPSLocStatus = status; | oldGPSLocStatus = status; | ||||
} | } | ||||
Log.d(DEBUG_TAG, "Provider: "+provider+" status: "+status); | |||||
} | } | ||||
@Override | @Override | ||||
public void onProviderEnabled(String provider) { | public void onProviderEnabled(String provider) { | ||||
requestGPSPositionUpdates(); | requestGPSPositionUpdates(); | ||||
Log.d(DEBUG_TAG, "Provider: "+provider+" enabled"); | |||||
} | } | ||||
@Override | @Override | ||||
public void onProviderDisabled(String provider) { | public void onProviderDisabled(String provider) { | ||||
locMan.removeUpdates(this); | locMan.removeUpdates(this); | ||||
Log.d(DEBUG_TAG, "Provider: "+provider+" disabled"); | |||||
} | } | ||||
/** | /** | ||||
* Interface to be implemented to get the location request | * Interface to be implemented to get the location request | ||||
*/ | */ | ||||
public interface LocationRequester{ | public interface LocationRequester{ | ||||
/** | /** | ||||
* Do something with the newly obtained location | * Do something with the newly obtained location | ||||
Show All 24 Lines |
Public contents are in Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA) or GNU Free Documentation License (at your option) unless otherwise noted. · Contact / Register