ALocationSource
在Google Maps Android API v2中定义。
它用于 googlemap 作为位置提供者。默认情况下,位置源由手机上的 gps 模块提供。
但现在我想用另一个Location source
,位置数据会定期发送到安卓设备。
我不知道如何实现这个接口。有什么例子吗?有人可以帮我吗?该文件没有说明任何内容。
ALocationSource
在Google Maps Android API v2中定义。
它用于 googlemap 作为位置提供者。默认情况下,位置源由手机上的 gps 模块提供。
但现在我想用另一个Location source
,位置数据会定期发送到安卓设备。
我不知道如何实现这个接口。有什么例子吗?有人可以帮我吗?该文件没有说明任何内容。
这是一个简单的LocationSource
接口实现。就我而言,我正在注册 GPS 和网络位置提供商。正如@CommonsWare 所提到的,实施可能很大程度上取决于您的需求。我建议阅读有关定位服务的官方文档,以便更好地了解如何利用您的需求并节省一些电池电量
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来跟踪当前位置
有什么例子吗?
界面没有太多内容,它的实现非常依赖于您的应用程序。
这个示例项目在主要活动上实现了LocationSource
接口:
@Override
public void activate(OnLocationChangedListener listener) {
this.mapLocationListener=listener;
}
@Override
public void deactivate() {
this.mapLocationListener=null;
}
我所做的就是抓住OnLocationChangedListener
我们交上来的那个activate()
。然后,当您有想要提供给地图的位置修复时,调用onLocationChanged()
该侦听器,提供一个Location
对象(Location
您可能会从该对象返回相同的对象LocationManager
)。
这是使用的解决方案FusedLocationProviderApi
: