gpt4 book ai didi

android - 将 GPS LonLat 从 Android GPS 传递到网页(javascript)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:52 26 4
gpt4 key购买 nike

我有以下代码,但 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 1.5 API(3))

谢谢

最佳答案

0,0 纬度和经度的原因是您没有纬度或经度。您没有在代码中执行任何操作来获取位置——getLastKnownLocation() 仅在您的代码中有其他内容请求位置更新时才有效。

Here is a sample project做你想做的,要么通过拉(拉 Mr. Nurik 的 addJavascriptInterface() 推荐),要么通过推(使用 javascript: 表示法)。

关于android - 将 GPS LonLat 从 Android GPS 传递到网页(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com