Передача GPS LonLat с Android GPS на веб-страницу (javascript)

У меня есть следующий код, но lon / lat, кажется, возвращает null;

package com.domain.www; import android.app.Activity; import android.content.Context; import android.content.pm.ActivityInfo; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.location.Criteria; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; public class WebMapActivity extends Activity implements LocationListener { private static final String MAP_URL = "http://www.yahoo.com/"; private WebView webView; private Location mostRecentLocation; @Override /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); setContentView(R.layout.main); getLocation(); setupWebView(); this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } catch (Exception e) { e.printStackTrace(); } } /** Sets up the WebView object and loads the URL of the page **/ private void setupWebView() { /* final String centerURL = "javascript:centerAt(" + mostRecentLocation.getLatitude() + "," + mostRecentLocation.getLongitude() + ")"; */ webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { String jsCode = "javascript:alert('" + getMostRecentLocation("lon") + "')"; webView.loadUrl(jsCode.toString()); } }); webView.loadUrl(MAP_URL); } /** * The Location Manager manages location providers. This code searches for * the best provider of data (GPS, WiFi/cell phone tower lookup, some other * mechanism) and finds the last known location. **/ private void getLocation() { LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); String provider = locationManager.getBestProvider(criteria, true); // In order to make sure the device is getting location, request // updates. locationManager.requestLocationUpdates(provider, 1, 0, // this); //locationManager.requestLocationUpdates(provider, 1, 0, this); setMostRecentLocation(locationManager.getLastKnownLocation(provider)); } /** Sets the mostRecentLocation object to the current location of the device **/ @Override public void onLocationChanged(Location location) { setMostRecentLocation(location); } /** * The following methods are only necessary because WebMapActivity * implements LocationListener **/ @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } /** * @param mostRecentLocation the mostRecentLocation to set */ public void setMostRecentLocation(Location mostRecentLocation) { this.mostRecentLocation = mostRecentLocation; } /** * @return the mostRecentLocation */ public double getMostRecentLocation(String lonLat) { double gValue = 0.00; try { Location xx = this.mostRecentLocation; //Used as a breakpoint if(lonLat == "lat") gValue = this.mostRecentLocation.getLatitude(); if(lonLat == "lon") gValue = this.mostRecentLocation.getLongitude(); } catch (Exception e) { e.printStackTrace(); } return gValue; } } 

Игнорировать бит URL, который будет страницей с картой google; Но для целей отладки я предпочел бы просто выплюнуть предупреждение со значениями в нем.

Какие-нибудь идеи в чем-то не так? Целевые эмуляторы (API API API API API API (3))

благодаря

Причина широты и долготы 0,0 заключается в том, что у вас нет широты или долготы. Вы ничего не сделали в своем коде, чтобы получить местоположение – getLastKnownLocation() работает только в том случае, если в коде содержится что-то еще, запрашивающее обновления местоположения.

Вот пример проекта, который делает то, что вы хотите, либо потянув (a la Mr. Nurik's addJavascriptInterface() рекомендация), либо нажав (используя javascript: нотация).

Вероятно, вы захотите использовать WebView#addJavascriptInterface вместо загрузки javascript: URL-адресов, так как это будет намного чище.

В основном, что вы хотите сделать:

  1. Создайте класс, который имеет метод, который возвращает данные о местоположении.
  2. Создайте экземпляр класса и передайте его в WebView с помощью addJavascriptInterface (здесь вы укажете имя глобальной переменной, которое будет использоваться в Javascript).
  3. Из Javascript на странице вызовите метод в глобальной переменной, определяемой addJavascriptInterface , и используйте результаты по addJavascriptInterface .

Еще раз посмотрите на этот вопрос в «Переполнение стека» .

Если местоположение равно нулю

Если getLastKnownLocation или getLastKnownBestLocation возвращает значение null, вам следует рассмотреть возможность изменения цели сборки с «Android 1.5» на «API Google 1.5». Это решило проблему для меня.

Вы можете изменить объект сборки для своего проекта в любое время в Eclipse: щелкните правой кнопкой мыши проект в обозревателе пакетов, выберите «Свойства»> «Android», а затем выберите «API Google» для Project Target.

Если значение 0.0

Если getLastKnownLocation возвращает 0.0 после нажатия кнопки «Отправить» в элементах управления местоположением DDMS, вы, вероятно, работаете с настройками культуры, отличными от английского. Это ошибка эмулятора, исправленная с предстоящим выпуском 7 инструментов SDK; Для быстрого исправления вы можете изменить свой язык на «en». (Подробнее см. http://code.google.com/p/android/issues/detail?id=915 .)

Читая свой комментарий к Роману Нурику, я думаю, что проблема с SDK с настройками, отличными от английского, вызывает у вас беспокойство. Измените настройки своего языка в Eclipse или вашей ОС, и все будет в порядке. В качестве альтернативы вы можете использовать сеанс telnet для отправки долготы и широты.

 telnet localhost:5554 geo fix 52.383144 5.217133 
Intereting Posts
Как включить зависимости в мою андроидную библиотеку Сбой приложения Android Wear с FATAL EXCEPTION: IntentService Canvas.drawBitmap () только соблюдает альфа-уровень, когда он равен 0 Как правильно использовать соотношение -webkit-device-pixel-ratio на iOS и Android? GetChildCount () и getChildAt () возвращают ноль для RecyclerView Java.io.IOException, «неправильный номер файла» USB-соединение Пакета ошибок android.support.design.widget не существует Как опубликовать сообщение на стене друзей facebook в Android Каков правильный способ оживить представление от одной координаты к другой? Использование FragmentManager для доступа к методам фрагментов из активности Опыт MoSync Как создать вложенные таблицы в базе данных SQLite? (андроид) Приложение получает неправильное местоположение до открытия встроенного приложения Google Map Используйте разные значки с различными версиями Android SDK Android – создание круговой маски на видео