我對android,java和javascript編碼非常新穎。無法在Android中的瀏覽器上使用Javascript獲取GPS座標
我想獲得當前的GPS座標,並在Android設備上跟蹤它。我使用的是webview,大部分代碼都是用javascript編寫的。
我已經搜索了很多天,並嘗試了很多不同的方式,但我無法獲得Android設備上的GPS座標。請看看代碼,然後找出爲什麼我沒有獲得GPS位置。
有幾件事要注意 - 1.我下載並檢查了其他傳感器應用程序,並可以看到當前顯示的GPS座標(因此GPS正在設備上運行)。 2.當我運行我的代碼時,我看到通知區域中的GPS搜索圖標,它一直閃爍,但從未修復。 3.當我在膝上型計算機瀏覽器上只運行帶有javascript的HTML文件時,它會請求共享位置的權限,然後它會給出座標,但同一文件在android中不顯示任何內容。
請看看下面的代碼,並幫我弄清楚這一點。我已經嘗試了很多,並將其作爲我最後的希望發佈。
清單文件具有以下權限 -
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
Android中主要的Java代碼有 -
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl("file:///android_asset/mymap.html");
setContentView(webView);
}
而且使用JavaScript的HTML文件 -
<!DOCTYPE html>
<html>
<body onunload="OnUnload()" onload="getLocation()">
<p id="demo">Your coordinates:</p>
<script>
var watchID;
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
var options = {maximumAge:600000, timeout:100000, enableHighAccuracy: true};
watchID = navigator.geolocation.watchPosition(showPosition,showError,options);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " + position.coords.latitude +
"<br />Longitude: " + position.coords.longitude;
}
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}
function OnUnload()
{
alert ("The current document will be unloaded!");
navigator.geolocation.clearWatch(watchID);
}
</script>
</body>
</html>
提前致謝, axs