A LocationSource
定義在Google Maps Android API v2中。Google Maps Android API v2創建新的LocationSource
它用於googlemap作爲位置提供程序。默認情況下,位置來源由手機上的GPS模塊提供。
但是現在我想用另一個Location source
,定位數據會定期發送到android設備。
我不知道如何實現這個接口。那裏有任何例子嗎?任何人都可以幫助我嗎?該文件沒有提到任何有關它。
A LocationSource
定義在Google Maps Android API v2中。Google Maps Android API v2創建新的LocationSource
它用於googlemap作爲位置提供程序。默認情況下,位置來源由手機上的GPS模塊提供。
但是現在我想用另一個Location source
,定位數據會定期發送到android設備。
我不知道如何實現這個接口。那裏有任何例子嗎?任何人都可以幫助我嗎?該文件沒有提到任何有關它。
這裏有沒有什麼例子?
接口沒有太多的東西,它的實現非常依賴於你的應用程序。
This sample project實現主活動LocationSource
接口:
@Override
public void activate(OnLocationChangedListener listener) {
this.mapLocationListener=listener;
}
@Override
public void deactivate() {
this.mapLocationListener=null;
}
我要做的就是守住我們在activate()
遞給OnLocationChangedListener
。然後,當您有想要饋送給地圖的位置修復時,請在該監聽器上撥打onLocationChanged()
,提供Location
對象(您可能從LocationManager
返回的對象相同Location
)。
這裏是一個簡單的實現LocationSource
接口。在我的情況下,我正在註冊GPS和網絡位置提供商。正如@CommonsWare所提到的,實施可能會非常取決於您的需求。我建議,爲了閱讀official documentation約定位服務,以更好地瞭解如何利用您的需求和節省電池電量
public class CurrentLocationProvider implements LocationSource, LocationListener
{
private OnLocationChangedListener listener;
private LocationManager locationManager;
public CurrentLocationProvider(Context context)
{
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
}
@Override
public void activate(OnLocationChangedListener listener)
{
this.listener = listener;
LocationProvider gpsProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
if(gpsProvider != null)
{
locationManager.requestLocationUpdates(gpsProvider.getName(), 0, 10, this);
}
LocationProvider networkProvider = locationManager.getProvider(LocationManager.NETWORK_PROVIDER);;
if(networkProvider != null) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000 * 60 * 5, 0, this);
}
}
@Override
public void deactivate()
{
locationManager.removeUpdates(this);
}
@Override
public void onLocationChanged(Location location)
{
if(listener != null)
{
listener.onLocationChanged(location);
}
}
@Override
public void onProviderDisabled(String provider)
{
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider)
{
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
// TODO Auto-generated method stub
}
}
這裏是我會怎麼使用這個類:
protected void setUpMap() {
//init routine
.......
this.map.setLocationSource(new CurrentLocationProvider(this));
.......
}
編輯請不要說這個解決方案已經過時!您需要結合使用FusedLocationProviderApi與GoogleApiClient跟蹤當前位置
這裏是解決方案使用FusedLocationProviderApi
: