注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

悠游自在

似水流年,悠游天地,自在我心

 
 
 

日志

 
 
 
 

Xamarin:实现获取位置信息与上报位置信息  

2013-10-02 00:21:49|  分类: IT技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
其实看教程,Android实现获取位置信息似乎并不难。但我的目标是要打开上报位置功能后,能持续地获取位置信息,并随时更新。于是需要选择一个合适的地方来实现Android.Locations.ILocationListener接口,我选择的是MainScreen,因为该Activity是本App所有其他其他Activity的上一级,理论上在程序退出之前它是不会被Destory的。决定了这个,然后实现就简单了。
做了一个按钮,其按钮事件,可以打开或者关闭上报位置功能:
protected void ToggleLocation()
{
if (btnSync.Text == "打开位置上报") {
OpenLocation ();
} else {
CloseLocation ();
}
}
OpenLocation和CloseLocation分别如下:
protected void OpenLocation()
{
if (lm == null) {
InitLocation ();
lm.RequestLocationUpdates (bestProvider, 5000, 10f, this);
Location location = lm.GetLastKnownLocation(bestProvider);
if (location != null) {
WingFlyApp.LogDebug ( "Lat="+location.Latitude.ToString()+",Lon="+location.Longitude.ToString());
string sAddress=GetAddress(location.Latitude, location.Longitude); 
WingFlyApp.LogDebug (sAddress);
}
btnSync.Text = "关闭位置上报";
}
protected void CloseLocation()
{
if (lm != null) {
lm.RemoveUpdates (this);
lm = null;
}
btnSync.Text = "打开位置上报";
}
这里用到了一些成员函数和对象,如下:
private LocationManager lm=null;
Criteria cr;
String bestProvider;
void InitLocation ()
{
Criteria cr = new Criteria();
cr.Accuracy = Accuracy.Coarse;
cr.PowerRequirement = Power.Low;
cr.AltitudeRequired = false;
cr.BearingRequired = false;
cr.SpeedRequired = false;
cr.CostAllowed = true;
String serviceString = Context.LocationService;
lm = (LocationManager)GetSystemService(serviceString);
bestProvider = lm.GetBestProvider(cr, false);
Location l = lm.GetLastKnownLocation(bestProvider);
}
另外,MainScreen还需要实现ILocationListener的几个必要的接口函数,OnProviderDisabled、OnProviderEnabled、OnStatusChanged可以什么都不做,OnLocationChanged里则做了保存位置信息和上报位置信息的工作,就不列出了。
然后有一点需要注意的是AndroidManifest.XML中要打开几个开关INTERNET、ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION什么的。
另外Location location = lm.GetLastKnownLocation(bestProvider);这个调用是很有可能返回null的,不要奇怪。OnLocationChanged回调里,总能得到非空的location 的,这个就是需要的位置信息了。
  评论这张
 
阅读(899)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018