yid*_*awu 8 android google-maps-android-api-2
A LocationSource
在Google Maps Android API v2中定义.
它用于googlemap作为位置提供程序.默认情况下,位置源由手机上的gps模块提供.
但现在我想使用另一个Location source
,位置数据将定期发送到Android设备.
我不知道如何实现这个接口.那里有什么例子吗?任何人都可以帮助我吗?该文件没有说明任何内容.
Pav*_*dka 12
这是一个简单的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
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我将如何使用这个类:
protected void setUpMap() {
//init routine
.......
this.map.setLocationSource(new CurrentLocationProvider(this));
.......
}
Run Code Online (Sandbox Code Playgroud)
编辑请注意,此解决方案已过时!您需要将FusedLocationProviderApi与GoogleApiClient结合使用以跟踪当前位置
那里有什么例子吗?
界面并不多,其实现非常依赖于您的应用程序.
此示例项目实现LocationSource
主活动的接口:
@Override
public void activate(OnLocationChangedListener listener) {
this.mapLocationListener=listener;
}
@Override
public void deactivate() {
this.mapLocationListener=null;
}
Run Code Online (Sandbox Code Playgroud)
我所做的就是抓住OnLocationChangedListener
我们交上的东西activate()
.然后,当您有一个希望提供给地图的位置修复时,请调用onLocationChanged()
该侦听器,提供一个Location
对象(Location
您可能从该对象获取的对象LocationManager
).
归档时间: |
|
查看次数: |
11497 次 |
最近记录: |