-2

私は次のコードを持っています- enter code here
システムを使用しています。System.Collections.Genericを使用します。System.Textを使用します。Android.Appを使用します。Android.Contentを使用します。Android.Runtimeを使用します。Android.Viewsを使用します。Android.Widgetを使用します。Android.OSを使用する; Android.Locationsを使用します。Android.Bluetoothを使用します。

namespace GetCurrentLocation
{
    [Activity(Label = "Get Current Location", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity, ILocationListener
    {
        LocationManager _locMgr ;
        String oBestProvider;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            _locMgr = GetSystemService(Context.LocationService) as LocationManager;

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.UI);
            StringBuilder strLocations = new StringBuilder();
            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.btnGetLocation);
            int i;
            var locationText =
                FindViewById<TextView>(Resource.Id.txtLocation);

                Android.Locations.Location oLocation;

            oLocation = _locMgr.GetLastKnownLocation (Context.LocationService);
            IList<String> oLocationProviders = _locMgr.GetProviders(true);

            //Location location;
            button.Click += delegate {
                if(oLocationProviders != null)
                    {

                _locMgr.RequestLocationUpdates(oLocationProviders[0], 2000, 1, this);
                _locMgr.RequestLocationUpdates(oLocationProviders[1], 2000, 1, this);


                    }
                    else{

                    locationText.Text ="No Provider Found";
                    }

            };

        }



        protected override void OnResume() {
            base.OnResume();

        }

        protected override void OnPause() {
            base.OnPause ();
            _locMgr.RemoveUpdates(this);
        }

        public void OnLocationChanged (Location location)
        {

            var locationText =
                   FindViewById<TextView> (Resource.Id.txtLocation);
            if (location != null) {
                locationText.Text = String.Format ("Latitude = {0}, Longitude = {1}",
                   location.Latitude, location.Longitude);
            }
        }

        public void OnProviderDisabled(string provider)
        {

        }

        public void OnProviderEnabled(string provider)
        {
        }

        public void OnStatusChanged(string provider, Availability status, Bundle extras)
        {
        }

    }
}

GetBestProvider / GetProviders / RequestLocationUpdates/GetLastKnownLocationを使用してみました。先に進めません。OnLocationUpdatesが呼び出されない理由を誰かに教えてもらえますか。また、ActivityクラスがILocationListenerインターフェイスを実装している場合でも、この関数でOverrideキーワードを使用することはできません。助けてください.....そしてまたあなたの情報のために、私はグーグルによるネクサス5のための試用版エミュレータAVDでこのコードを実行しようとしています。

4

1 に答える 1

0

エミュレーターで実行している場合、DDMS から場所を提供しない限り、onLocationChanged が呼び出されることはありません。DDMS から緯度と経度を指定して、必要なメソッドを呼び出す必要があります。

オープンエリアの実機でコードを確認してください。

于 2013-03-12T04:52:41.580 に答える