Fixes for new geo stuff

Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/1ee484f7
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/1ee484f7
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/1ee484f7

Branch: refs/heads/CordovaWebView
Commit: 1ee484f70d73eb392953f859772ab4c2671b3305
Parents: 724ea49
Author: Fil Maj <maj....@gmail.com>
Authored: Fri Mar 30 02:32:43 2012 -0700
Committer: Fil Maj <maj....@gmail.com>
Committed: Mon May 7 16:09:20 2012 -0700

----------------------------------------------------------------------
 framework/.settings/org.eclipse.jdt.core.prefs     |    4 ++
 .../apache/cordova/CordovaLocationListener.java    |    2 +-
 framework/src/org/apache/cordova/GeoBroker.java    |   40 +++++++++------
 framework/src/org/apache/cordova/GpsListener.java  |    9 +---
 .../src/org/apache/cordova/NetworkListener.java    |    6 --
 5 files changed, 32 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/1ee484f7/framework/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/framework/.settings/org.eclipse.jdt.core.prefs 
b/framework/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f77b31c
--- /dev/null
+++ b/framework/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.source=1.5

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/1ee484f7/framework/src/org/apache/cordova/CordovaLocationListener.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaLocationListener.java 
b/framework/src/org/apache/cordova/CordovaLocationListener.java
index 6eccfb4..3daa211 100755
--- a/framework/src/org/apache/cordova/CordovaLocationListener.java
+++ b/framework/src/org/apache/cordova/CordovaLocationListener.java
@@ -175,7 +175,7 @@ public class CordovaLocationListener implements 
LocationListener {
         * 
         * @param interval
         */
-       private void start() {
+       protected void start() {
                if (!this.running) {
                        if 
(this.locationManager.getProvider(LocationManager.NETWORK_PROVIDER) != null) {
                                this.running = true;

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/1ee484f7/framework/src/org/apache/cordova/GeoBroker.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/GeoBroker.java 
b/framework/src/org/apache/cordova/GeoBroker.java
index b8cfe4e..6a150b3 100755
--- a/framework/src/org/apache/cordova/GeoBroker.java
+++ b/framework/src/org/apache/cordova/GeoBroker.java
@@ -43,9 +43,6 @@ public class GeoBroker extends Plugin {
      * Constructor.
      */
     public GeoBroker() {
-       this.locationManager = (LocationManager) 
this.ctx.getSystemService(Context.LOCATION_SERVICE);
-       this.networkListener = new NetworkListener(this.locationManager, this);
-       this.gpsListener = new GPSListener(this.locationManager, this);
     }
 
     /**
@@ -57,6 +54,11 @@ public class GeoBroker extends Plugin {
      * @return                                 A PluginResult object with a 
status and message.
      */
     public PluginResult execute(String action, JSONArray args, String 
callbackId) {
+       if (this.locationManager == null) {
+               this.locationManager = (LocationManager) 
this.ctx.getSystemService(Context.LOCATION_SERVICE);
+               this.networkListener = new 
NetworkListener(this.locationManager, this);
+               this.gpsListener = new GPSListener(this.locationManager, this);
+       }
         PluginResult.Status status = PluginResult.Status.NO_RESULT;
         String message = "";
         PluginResult result = new PluginResult(status, message);
@@ -69,7 +71,7 @@ public class GeoBroker extends Plugin {
                Location last = 
this.locationManager.getLastKnownLocation((enableHighAccuracy ? 
LocationManager.GPS_PROVIDER : LocationManager.NETWORK_PROVIDER));
                // Check if we can use lastKnownLocation to get a quick reading 
and use less battery
                if ((System.currentTimeMillis() - last.getTime()) <= 
maximumAge) {
-                       result = new PluginResult(PluginResult.Status.OK, 
GeoBroker.returnLocationJSON(last));
+                       result = new PluginResult(PluginResult.Status.OK, 
this.returnLocationJSON(last));
                } else {
                        this.getCurrentLocation(callbackId, enableHighAccuracy);
                }
@@ -132,19 +134,27 @@ public class GeoBroker extends Plugin {
         this.gpsListener = null;
     }
 
-    public static String returnLocationJSON(Location loc) {
-        return "{" + 
-                 "'latitude':" + loc.getLatitude() + "," + 
-                 "'longitude':" + loc.getLongitude() + "," + 
-                 "'altitude':" + (loc.hasAltitude() ? loc.getAltitude() : 
"null") + "," + 
-                 "'accuracy':" + loc.getAccuracy() + "," + 
-                 "'heading':" + (loc.hasBearing() ? (loc.hasSpeed() ? 
loc.getBearing() : "NaN") : "null") + "," + 
-                 "'speed':" + loc.getSpeed() + "," + 
-                 "'timestamp':" + loc.getTime() + 
-               "}"; 
+    public JSONObject returnLocationJSON(Location loc) {
+       JSONObject o = new JSONObject();
+       
+       try {
+                       o.put("latitude", loc.getLatitude());
+                       o.put("longitude", loc.getLongitude());
+               o.put("altitude", (loc.hasAltitude() ? loc.getAltitude() : 
null));
+                       o.put("accuracy", loc.getAccuracy());
+                       o.put("heading", (loc.hasBearing() ? (loc.hasSpeed() ? 
loc.getBearing() : null) : null));
+                       o.put("speed", loc.getSpeed()); 
+                       o.put("timestamp", loc.getTime()); 
+               } catch (JSONException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+       
+       
+       return o;
       }
       public void win(Location loc, String callbackId) {
-         PluginResult result = new PluginResult(PluginResult.Status.OK, 
GeoBroker.returnLocationJSON(loc));
+         PluginResult result = new PluginResult(PluginResult.Status.OK, 
this.returnLocationJSON(loc));
          this.success(result, callbackId);
       }
       /**

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/1ee484f7/framework/src/org/apache/cordova/GpsListener.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/GpsListener.java 
b/framework/src/org/apache/cordova/GpsListener.java
index 5010736..2b46c7c 100755
--- a/framework/src/org/apache/cordova/GpsListener.java
+++ b/framework/src/org/apache/cordova/GpsListener.java
@@ -28,12 +28,6 @@ import android.location.LocationManager;
 public class GPSListener extends CordovaLocationListener {
        public GPSListener(LocationManager locationManager, GeoBroker m) {
                super(locationManager, m, "[Cordova GPSListener]");
-               if 
(this.locationManager.getProvider(LocationManager.GPS_PROVIDER) != null) {
-               // If network provider, then create and start network listener
-            
this.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
60000, 0, this);
-        } else {
-               this.fail(CordovaLocationListener.POSITION_UNAVAILABLE, "GPS 
provider is not available.");
-        }
        }
 
        
@@ -42,7 +36,8 @@ public class GPSListener extends CordovaLocationListener {
         * 
         * @param interval
         */
-       public void start() {
+       @Override
+       protected void start() {
                if (!this.running) {
                        if 
(this.locationManager.getProvider(LocationManager.GPS_PROVIDER) != null) {
                                this.running = true;

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/1ee484f7/framework/src/org/apache/cordova/NetworkListener.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/NetworkListener.java 
b/framework/src/org/apache/cordova/NetworkListener.java
index 050560a..6eaa8ac 100755
--- a/framework/src/org/apache/cordova/NetworkListener.java
+++ b/framework/src/org/apache/cordova/NetworkListener.java
@@ -28,11 +28,5 @@ import android.location.LocationManager;
 public class NetworkListener extends CordovaLocationListener {
        public NetworkListener(LocationManager locationManager, GeoBroker m) {
                super(locationManager, m, "[Cordova NetworkListener]");
-               if 
(this.locationManager.getProvider(LocationManager.NETWORK_PROVIDER) != null) {
-               // If network provider, then create and start network listener
-            
this.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
60000, 10, this);
-        } else {
-               this.fail(CordovaLocationListener.POSITION_UNAVAILABLE, 
"Network provider is not available.");
-        }
        }
 }

Reply via email to