Эмулятор Monodroid, извлекающий проблему местоположения - PullRequest
0 голосов
/ 30 января 2011

У меня проблемы с получением приложением Monodroid информации о местоположении, когда я запускаю его в эмуляторе. Мой код выглядит примерно так:

LocationManager locationManager = (LocationManager) threadSurfaceView.Context.GetSystemService (Context.LocationService);

location = locationManager.GetLastKnownLocation (Android.Content.Context.LocationService);

Тем не менее, это всегда кажется нулевым. Нужно ли каким-либо образом настраивать эмулятор, чтобы он имел службу и / или местоположение?

Я также попытался добавить LocationListener:

locationListener = new MyLocationListener ();

locationManager.RequestLocationUpdates (LocationManager.GpsProvider, 120000, 0, locationListener);

Но проблема, с которой я столкнулся, заключалась в создании класса MyLocationListener. Я реализовал четыре открытых метода (OnLocationChanged (Location) и т. Д.), Но Visual Studio пожаловалась на отсутствующий метод Android.Runtime.IJavaObject - у кого-нибудь есть простой пример класса, реализующего ILocationListener?

Спасибо за любую помощь. Martin

Ответы [ 2 ]

0 голосов
/ 02 февраля 2011

Я получил любезную ссылку на образец на

https://github.com/gshackles/Sample-Projects/blob/master/MonoDroid/MonoDroidSamples/MonoDroidSamples/DemoActivities/LocationDemo/LocationActivity.cs

, который отлично работает на моем Nexus S, но все равно не будет работать на эмуляторе - так что (возможно) проблема не в коде.

Мне понравился метод из этого примера получения «Activity» для реализации ILocationListener, а также Activity - удобное решение для возврата данных из функции «listener», которая доставляла мне головную боль, когда она была помещена в другую. класс.

Я скачал пакет сэмплов, и если вы сделаете то же самое, вам нужно будет захватить mp3-файл - переименуйте его в volbeat.mp3 и добавьте его в папку «raw» внутри «Resources», поскольку он отсутствует.

0 голосов
/ 01 февраля 2011

частичный ответ, так как я работаю над той же проблемой.

Ваш класс слушателя, который реализует ILocationListener, должен быть объявлен как

открытый класс myLocationListener: Java.Lang.Object, ILOcationListener { // плюс публичные функции, которые вы определили }

Моя попытка выглядит так:

Android.Locations.Location iAmHere;
LocationManager myLoc = (LocationManager)GetSystemservice(Context.LocationService);
iAmHere = myLoc.GetLastKnownLocation(Android.Content.Context.LocationService);

но iAmHere на эмуляторе не имеет значения, даже когда я использовал TelNet для проталкивания местоположения геофиксации через

...