在Google Maps Android API v2中定义了LocationSource
。
用作googlemap的位置提供程序。默认情况下,位置信息源由手机上的gps模块提供。
但是现在我想使用另一个Location source
,位置数据将定期发送到android设备。
我不知道如何实现此接口(interface)。那里有什么例子吗?有人可以帮我吗?该文件未对此发表任何评论。
最佳答案
这是LocationSource
接口(interface)的简单实现。就我而言,我正在注册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来跟踪当前位置