Эмулятор Android, имеющий проблемы с геолокации - PullRequest
5 голосов
/ 13 ноября 2010

Я уже некоторое время использую Android и эмулятор 2.2 и только что столкнулся с проблемой.Моя геолокация не установлена ​​в эмуляторе.Сначала я думал, что это проблема с PhoneGap 0.92, но после возврата к .91 и открытия старого проекта то же самое сохраняется.В DDMS мои координаты установлены, и я их «отправляю».Я также telnet и выдаю команду geo fix, и я получаю ответ OK.Кажется, все хорошо, но по какой-то причине эмулятор до сих пор не знает.

Я нашел несколько старых постов, посвященных настройке часового пояса.Я это сделал.Все еще не повезло.Я даже пользуюсь браузером и захожу на html5demos.com/geo, чтобы узнать, может ли он найти меня, а он нет.

Раньше это работало, но я не уверен, что произошло с тех пор.Я обновил свою версию Java 1.6.0.22.Android SDK - это 2.2, API 8, ревизия 2.

Будем благодарны за любые советы и рекомендации.Я застрял в этой точке.

Мой телефонный разрыв / звонок JS:

var getLocation = function() {
  var suc = function(p){
        alert(p.coords.latitude + " " + p.coords.longitude);
  };
 var fail = function(error){  
    alert('code: '    + error.code    + '\n' +
            'message: ' + error.message + '\n');
  };
  navigator.geolocation.getCurrentPosition(suc,fail);
}

«Ошибка» продолжает происходить.Код ошибки 2. Последний поставщик местоположения был отключен.

- ОБНОВЛЕНИЕ По-прежнему возникает та же проблема.Я нашел старое картографическое приложение, которое использовал летом, оно было 2.1.Поэтому я перекомпилировал и запустил это на эмуляторе 2.1, и это тоже не работает.Самое смешное в затмении, когда я нахожусь в DDMS и отправляю координаты в 2.1. Я «вижу» подтверждение того, что оно было отправлено в эмуляторе, а в 2.2 нет.

Большая разница в том, что я позадипрокси сейчас (новая работа), где раньше меня не было.Я думаю, я мог бы попробовать дома ... не уверен, если это имеет значение.

Ответы [ 4 ]

12 голосов
/ 04 сентября 2011

Вы должны поместить enableHighAccuracy в getCurrentPosition, например:

navigator.geolocation.getCurrentPosition(onSuccess, onError, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true });

Далее, вы должны подключиться к эмулятору и установить гео-местоположение (долгота, широта), которое вы хотите:

kelvin@locahost:~$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
Android Console: type 'help' for a list of commands
OK
geo fix 101.689453 3.074695
OK
quit
Connection closed by foreign host.

Затем запустите приложение PhoneGap.

8 голосов
/ 05 декабря 2010

Единственный способ, с помощью которого я нашел эту работу, - это подключиться к эмулятору через telnet и выдать «географическую фиксированную широту долготы» после запуска кода, который я тестирую. Примерно так эмулируется GPS-координаты для Тронхейма, Норвегия (порт эмулятора обычно 5554, но это может варьироваться в зависимости от ваших настроек):

kristian@bergman:~$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
Android Console: type 'help' for a list of commands
OK
geo fix 10.40 63.40
OK
quit
Connection closed by foreign host.

Более подробную информацию об эмуляции можно найти здесь

6 голосов
/ 02 декабря 2010

У меня была такая же проблема.Решение находится в конце http://docs.phonegap.com/phonegap_geolocation_geolocation.md.html#Geolocation (прокрутите вниз):

"Android Quirks

Симуляторы Android 2.x не будут возвращать результат геолокации, если параметр enableHighAccuracy не установленустановить в true.

{enableHighAccuracy: true} "

Таким образом, вы должны установить enableHighAccuracy в своих вызовах navigator.geolocation.getCurrentPosition и navigator.geolocation.watchPosition.

0 голосов
/ 05 июня 2012

Пожалуйста, добавьте geolocationOptions { enableHighAccuracy: true } в navigator.geolocation.getCurrentPosition(suc,fail);

Это работает для меня.

Симуляторы Android 2.x не будут возвращать результат геолокации, если для параметра enableHighAccuracy не установлено значение true.

В DDMS мои координаты должны быть установлены, и вы их «отправляете».

...