index.js code:
// debug
function d(s) {
console.log(s);
$("#status").text(s);
}
// geo
function geoWin(pos) {
d("geoWin(): "+pos.coords.latitude+", "+pos.coords.longitude+","+pos.coords.speed);
}
function geoFail(error) {
d("geoFail(): "+error.code+": "+error.message);
}
function startGeoWatch() {
d("startGeoWatch()");
opt = {maximumAge: 0,timeout: 2000, enableHighAccuracy: true};
watchGeo = navigator.geolocation.watchPosition(geoWin, geoFail, opt);
}
function stopGeoWatch() {
d("stopGeoWatch()");
navigator.geolocation.clearWatch(watchGeo);
}
// life cycle
function onPause() {
d("onPause()");
stopGeoWatch();
}
function onResume() {
d("onResume()");
startGeoWatch();
}
// init
function onDeviceReady() {
d("onDeviceReady()");
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
startGeoWatch();
}
function main() {
document.addEventListener('deviceready', onDeviceReady, false);
}
// main & globals
var watchGeo=null;
main();
my config.xml Code :
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.terokarvinen.geo" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>HelloCordova</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" version="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<plugin name="cordova-plugin-geolocation" spec="~2.2.0" />
</widget>
AndroidManifest code :
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.terokarvinen.geo" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
<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" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
while i try to run this application in firefox it gives my the exact geolocation.But when i try to run this same application in android device .It always give timeout expired.i dnt have any error in console.
I had tested the my application is requested the GPS service of android .I had checked that in location menu which have my application in GPS request.
Based on the myriads of similar questions on Stack Overflow, it seems the Cordova geolocation plugin has issues especially on Android. It seems the solution is to:
cordova plugin rm org.apache.cordova.geolocation
.
Your application will fall back on the standard HTML5 navigator.geolocation
functionality.
Of course, double check your location services are on, that your device has coverage (isn't in a building with thick walls, etc. If it is, maybe set enableHighAccuracy to false
and set a greater timeout).
Ensure you have the following permissions by adding these lines in your manifest:
< uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
< uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
< uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
In addition, give your application internet access so it can access Wifi and cellphone antennas:
<uses-permission android:name="android.permission.INTERNET" />
I am unable to try this myself, but you should have better luck after doing this.
Let me know how you get on.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With