如何使用 Xamarin 基于 Wifi 获取 GPS

Posted

技术标签:

【中文标题】如何使用 Xamarin 基于 Wifi 获取 GPS【英文标题】:How to Get GPS base on Wifi using Xamarin 【发布时间】:2013-05-13 22:55:46 【问题描述】:

此代码基于以下链接:http://docs.xamarin.com/guides/android/platform_features/maps_and_location/part_3_-_location_services

我无法获得任何纬度/经度(Gps/Wifi)

代码如下:

我已添加: &lt:uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Android.Locations

using System;

using Android.App;

using Android.Content;

using Android.Runtime;

using Android.Views;

using Android.Widget;

using Android.OS;


//-- add these


using Android.Locations;

using System.Collections.Generic;

using System.Threading;

using System.Text;

using System.Linq;

using System.Xml;



namespace GPSWifi



    [Activity (Label = "GPSWifi", MainLauncher = true)]

    public class Activity1 : Activity
    
                    int count = 1;

        private LocationManager _locMgr;



    protected override void OnCreate (Bundle bundle)
    
        base.OnCreate (bundle);

        // Set our view from the "main" layout resource

        SetContentView (Resource.Layout.Main);


              InitializeLocationManager();      

    



    private void InitializeLocationManager()
    

        _locMgr = (LocationManager) GetSystemService(LocationService);

        var locationCriteria = new Criteria();

        locationCriteria.Accuracy = Accuracy.NoRequirement;

        locationCriteria.PowerRequirement = Power.NoRequirement;

        string locationProvider = _locMgr.GetBestProvider(locationCriteria, true);

        _locMgr.RequestLocationUpdates (locationProvider, 2000, 1, this);       

        



    protected override void OnResume ()
    

        base.OnResume ();

    _locMgr.RequestLocationUpdates (LocationManager.GpsProvider, 2000, 1, this);


               



    protected override void OnPause ()
    

        base.OnPause ();
        _locMgr.RemoveUpdates (this);

    



    public void OnProviderDisabled(string provider) 


    public void OnProviderEnabled(string provider) 




    public void OnLocationChanged (Location location)
    

    var locationText = FindViewById<TextView>(Resource.Id.locationTextView);

    locationText.Text = String.Format ("Latitude = 0, Longitude = 1",

                                               location.Latitude, location.Longitude);



       

   


非常感谢您的帮助。

-- 错误信息:

C:\程序文件 (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2,2): 错误 MSB4018:“Aapt”任务意外失败。

System.InvalidOperationException:序列不包含任何元素

在 System.Linq.Enumerable.First[TSource](IEnumerable`1 源)

在 Xamarin.Android.Tasks.BuildToolsUtils.GetBuildToolsPath(String androidSdkDirectory)

在 Xamarin.Android.Tasks.Aapt.GenerateFullPathToTool()

在 Microsoft.Build.Utilities.ToolTask​​.ComputePathToTool()

在 Microsoft.Build.Utilities.ToolTask​​.Execute()

在 Xamarin.Android.Tasks.Aapt.Execute()

在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()

在 Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext() (MSB4018) (GPSWifi)

【问题讨论】:

【参考方案1】:

此错误:The "Aapt" task failed unexpectedly. 最近刚刚开始发生 - 我认为这与来自 Android/Google 的最新 sdk 有关 - 我认为他们已经移动了一个文件位置。

检查其他问题,例如Xamarin Studio 2 - latest stable update - Error executing task Aapt: The source sequence is empty

然后与 Xamarin 支持联系 - 他们会发布更新来解决此问题。

【讨论】:

谢谢。这个问题解决了。根据示例代码,是否可以通过在模拟器中运行获得 Gps Lat/Lon?运行此示例代码时没有任何显示。

以上是关于如何使用 Xamarin 基于 Wifi 获取 GPS的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Android WiFi 直接路由

当 WIFI 网络没有 Internet 连接时检查 .net 或 Xamarin Internet 可用性

WiFi识别基于simulink建模实现IEEE802.11g 标准WiFi信号识别算法仿真

Xamarin表单(ios):以编程方式连接到wifi时的Runtimeexception

将网络从 wifi 切换到 3g 时 Android/Xamarin.Android 休息客户端超时

WiFi通信模块如何实现低功耗工作