You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by mm...@apache.org on 2014/05/05 18:13:35 UTC

[38/47] git commit: CB-5977: Removing the Android Geolocation Code. Mission Accomplished.

CB-5977: Removing the Android Geolocation Code.  Mission Accomplished.


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/commit/ab8a448e
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/tree/ab8a448e
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/diff/ab8a448e

Branch: refs/heads/cdvtest
Commit: ab8a448e52b0c2cc05fabe3e0d0cff3fd859b020
Parents: 99945c5
Author: Joe Bowser <bo...@apache.org>
Authored: Fri Feb 28 14:23:02 2014 -0800
Committer: Joe Bowser <bo...@apache.org>
Committed: Fri Feb 28 14:23:15 2014 -0800

----------------------------------------------------------------------
 plugin.xml                               |  27 ---
 src/android/CordovaLocationListener.java | 251 --------------------------
 src/android/GPSListener.java             |  50 -----
 src/android/GeoBroker.java               | 205 ---------------------
 src/android/NetworkListener.java         |  33 ----
 5 files changed, 566 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/ab8a448e/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index d42ae38..38fdb30 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -16,38 +16,11 @@ xmlns:android="http://schemas.android.com/apk/res/android"
     <!-- android -->
     <platform name="android">
 
-        <js-module src="www/Coordinates.js" name="Coordinates">
-            <clobbers target="Coordinates" />
-        </js-module>
-
-        <js-module src="www/PositionError.js" name="PositionError">
-            <clobbers target="PositionError" />
-        </js-module>
-
-        <js-module src="www/Position.js" name="Position">
-            <clobbers target="Position" />
-        </js-module>
-
-        <js-module src="www/geolocation.js" name="geolocation">
-            <clobbers target="navigator.geolocation" />
-        </js-module>
-
-        <config-file target="res/xml/config.xml" parent="/*">
-            <feature name="Geolocation">
-	            <param name="android-package" value="org.apache.cordova.geolocation.GeoBroker"/>
-	        </feature>
-        </config-file>
-
         <config-file target="AndroidManifest.xml" parent="/*">
             <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
             <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
         </config-file>
 
-        <source-file src="src/android/GeoBroker.java" target-dir="src/org/apache/cordova/geolocation" />
-        <source-file src="src/android/GPSListener.java" target-dir="src/org/apache/cordova/geolocation" />
-        <source-file src="src/android/NetworkListener.java" target-dir="src/org/apache/cordova/geolocation" />
-        <source-file src="src/android/CordovaLocationListener.java" target-dir="src/org/apache/cordova/geolocation" />
-
     </platform>
 
      <!-- amazon-fireos -->

http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/ab8a448e/src/android/CordovaLocationListener.java
----------------------------------------------------------------------
diff --git a/src/android/CordovaLocationListener.java b/src/android/CordovaLocationListener.java
deleted file mode 100755
index f0f70fe..0000000
--- a/src/android/CordovaLocationListener.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-*/
-package org.apache.cordova.geolocation;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import org.apache.cordova.CallbackContext;
-
-import android.location.Location;
-import android.location.LocationListener;
-import android.location.LocationManager;
-import android.os.Bundle;
-import android.util.Log;
-
-public class CordovaLocationListener implements LocationListener {
-    public static int PERMISSION_DENIED = 1;
-    public static int POSITION_UNAVAILABLE = 2;
-    public static int TIMEOUT = 3;
-
-    protected LocationManager locationManager;
-    private GeoBroker owner;
-    protected boolean running = false;
-
-    public HashMap<String, CallbackContext> watches = new HashMap<String, CallbackContext>();
-    private List<CallbackContext> callbacks = new ArrayList<CallbackContext>();
-    
-    private Timer timer = null;
-
-    private String TAG = "[Cordova Location Listener]";
-
-    public CordovaLocationListener(LocationManager manager, GeoBroker broker, String tag) {
-        this.locationManager = manager;
-        this.owner = broker;
-        this.TAG = tag;
-    }
-
-    protected void fail(int code, String message) {
-    	this.cancelTimer();
-        for (CallbackContext callbackContext: this.callbacks)
-        {
-            this.owner.fail(code, message, callbackContext, false);
-        }
-        if(this.owner.isGlobalListener(this) && this.watches.size() == 0)
-        {
-        	Log.d(TAG, "Stopping global listener");
-        	this.stop();
-        }
-        this.callbacks.clear();
-
-        Iterator<CallbackContext> it = this.watches.values().iterator();
-        while (it.hasNext()) {
-            this.owner.fail(code, message, it.next(), true);
-        }
-    }
-
-    private void win(Location loc) {
-    	this.cancelTimer();
-        for (CallbackContext callbackContext: this.callbacks)
-        {
-            this.owner.win(loc, callbackContext, false);
-        }
-        if(this.owner.isGlobalListener(this) && this.watches.size() == 0)
-        {
-        	Log.d(TAG, "Stopping global listener");
-        	this.stop();
-        }
-        this.callbacks.clear();
-
-        Iterator<CallbackContext> it = this.watches.values().iterator();
-        while (it.hasNext()) {
-            this.owner.win(loc, it.next(), true);
-        }
-    }
-
-    /**
-     * Location Listener Methods
-     */
-
-    /**
-     * Called when the provider is disabled by the user.
-     *
-     * @param provider
-     */
-    public void onProviderDisabled(String provider) {
-        Log.d(TAG, "Location provider '" + provider + "' disabled.");
-        this.fail(POSITION_UNAVAILABLE, "GPS provider disabled.");
-    }
-
-    /**
-     * Called when the provider is enabled by the user.
-     *
-     * @param provider
-     */
-    public void onProviderEnabled(String provider) {
-        Log.d(TAG, "Location provider "+ provider + " has been enabled");
-    }
-
-    /**
-     * Called when the provider status changes. This method is called when a
-     * provider is unable to fetch a location or if the provider has recently
-     * become available after a period of unavailability.
-     *
-     * @param provider
-     * @param status
-     * @param extras
-     */
-    public void onStatusChanged(String provider, int status, Bundle extras) {
-        Log.d(TAG, "The status of the provider " + provider + " has changed");
-        if (status == 0) {
-            Log.d(TAG, provider + " is OUT OF SERVICE");
-            this.fail(CordovaLocationListener.POSITION_UNAVAILABLE, "Provider " + provider + " is out of service.");
-        }
-        else if (status == 1) {
-            Log.d(TAG, provider + " is TEMPORARILY_UNAVAILABLE");
-        }
-        else {
-            Log.d(TAG, provider + " is AVAILABLE");
-        }
-    }
-
-    /**
-     * Called when the location has changed.
-     *
-     * @param location
-     */
-    public void onLocationChanged(Location location) {
-        Log.d(TAG, "The location has been updated!");
-        this.win(location);
-    }
-
-    // PUBLIC
-
-    public int size() {
-        return this.watches.size() + this.callbacks.size();
-    }
-
-    public void addWatch(String timerId, CallbackContext callbackContext) {
-        this.watches.put(timerId, callbackContext);
-        if (this.size() == 1) {
-            this.start();
-        }
-    }
-    public void addCallback(CallbackContext callbackContext, int timeout) {
-    	if(this.timer == null) {
-    		this.timer = new Timer();
-    	}
-    	this.timer.schedule(new LocationTimeoutTask(callbackContext, this), timeout);
-        this.callbacks.add(callbackContext);        
-        if (this.size() == 1) {
-            this.start();
-        }
-    }
-    public void clearWatch(String timerId) {
-        if (this.watches.containsKey(timerId)) {
-            this.watches.remove(timerId);
-        }
-        if (this.size() == 0) {
-            this.stop();
-        }
-    }
-
-    /**
-     * Destroy listener.
-     */
-    public void destroy() {    	
-        this.stop();
-    }
-
-    // LOCAL
-
-    /**
-     * Start requesting location updates.
-     *
-     * @param interval
-     */
-    protected void start() {
-        if (!this.running) {
-            if (this.locationManager.getProvider(LocationManager.NETWORK_PROVIDER) != null) {
-                this.running = true;
-                this.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 10, this);
-            } else {
-                this.fail(CordovaLocationListener.POSITION_UNAVAILABLE, "Network provider is not available.");
-            }
-        }
-    }
-
-    /**
-     * Stop receiving location updates.
-     */
-    private void stop() {
-    	this.cancelTimer();
-        if (this.running) {
-            this.locationManager.removeUpdates(this);
-            this.running = false;
-        }
-    }
-    
-    private void cancelTimer() {
-    	if(this.timer != null) {
-    		this.timer.cancel();
-        	this.timer.purge();
-        	this.timer = null;
-    	}
-    }
-    
-    private class LocationTimeoutTask extends TimerTask {
-    	
-    	private CallbackContext callbackContext = null;
-    	private CordovaLocationListener listener = null;
-    	
-    	public LocationTimeoutTask(CallbackContext callbackContext, CordovaLocationListener listener) {
-    		this.callbackContext = callbackContext;
-    		this.listener = listener;
-    	}
-
-		@Override
-		public void run() {
-			for (CallbackContext callbackContext: listener.callbacks) {
-				if(this.callbackContext == callbackContext) {
-					listener.callbacks.remove(callbackContext);
-					break;
-				}
-			}
-			
-			if(listener.size() == 0) {
-				listener.stop();
-			}
-		}    	
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/ab8a448e/src/android/GPSListener.java
----------------------------------------------------------------------
diff --git a/src/android/GPSListener.java b/src/android/GPSListener.java
deleted file mode 100755
index 468913a..0000000
--- a/src/android/GPSListener.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-*/
-
-package org.apache.cordova.geolocation;
-
-import android.location.LocationManager;
-
-/**
- * This class handles requests for GPS location services.
- *
- */
-public class GPSListener extends CordovaLocationListener {
-    public GPSListener(LocationManager locationManager, GeoBroker m) {
-        super(locationManager, m, "[Cordova GPSListener]");
-    }
-
-
-    /**
-     * Start requesting location updates.
-     *
-     * @param interval
-     */
-    @Override
-    protected void start() {
-        if (!this.running) {
-            if (this.locationManager.getProvider(LocationManager.GPS_PROVIDER) != null) {
-                this.running = true;
-                this.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 0, this);
-            } else {
-                this.fail(CordovaLocationListener.POSITION_UNAVAILABLE, "GPS provider is not available.");
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/ab8a448e/src/android/GeoBroker.java
----------------------------------------------------------------------
diff --git a/src/android/GeoBroker.java b/src/android/GeoBroker.java
deleted file mode 100755
index fee990c..0000000
--- a/src/android/GeoBroker.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-*/
-package org.apache.cordova.geolocation;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.content.Context;
-import android.location.Location;
-import android.location.LocationManager;
-
-/*
- * This class is the interface to the Geolocation.  It's bound to the geo object.
- *
- * This class only starts and stops various GeoListeners, which consist of a GPS and a Network Listener
- */
-
-public class GeoBroker extends CordovaPlugin {
-    private GPSListener gpsListener;
-    private NetworkListener networkListener;
-    private LocationManager locationManager;    
-
-    /**
-     * Executes the request and returns PluginResult.
-     *
-     * @param action 		The action to execute.
-     * @param args 		JSONArry of arguments for the plugin.
-     * @param callbackContext	The callback id used when calling back into JavaScript.
-     * @return 			True if the action was valid, or false if not.
-     */
-    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
-        if (locationManager == null) {
-            locationManager = (LocationManager) this.cordova.getActivity().getSystemService(Context.LOCATION_SERVICE);
-        }
-        if ( locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ||
-                locationManager.isProviderEnabled( LocationManager.NETWORK_PROVIDER )) {
-            if (networkListener == null) {
-                networkListener = new NetworkListener(locationManager, this);
-            }
-            if (gpsListener == null) {
-                gpsListener = new GPSListener(locationManager, this);
-            }
-
-
-            if (action.equals("getLocation")) {
-                boolean enableHighAccuracy = args.getBoolean(0);
-                int maximumAge = args.getInt(1);
-
-                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 (last != null && (System.currentTimeMillis() - last.getTime()) <= maximumAge) {
-                    PluginResult result = new PluginResult(PluginResult.Status.OK, this.returnLocationJSON(last));
-                    callbackContext.sendPluginResult(result);
-                } else {
-                    this.getCurrentLocation(callbackContext, enableHighAccuracy, args.optInt(2, 60000));
-                }
-            }
-            else if (action.equals("addWatch")) {
-                String id = args.getString(0);
-                boolean enableHighAccuracy = args.getBoolean(1);
-                this.addWatch(id, callbackContext, enableHighAccuracy);
-            }
-            else if (action.equals("clearWatch")) {
-                String id = args.getString(0);
-                this.clearWatch(id);
-            }
-            else {
-                return false;
-            }
-        } else {
-            PluginResult.Status status = PluginResult.Status.NO_RESULT;
-            String message = "Location API is not available for this device.";
-            PluginResult result = new PluginResult(status, message);
-            callbackContext.sendPluginResult(result);
-        }
-        return true;
-    }
-
-    private void clearWatch(String id) {
-        this.gpsListener.clearWatch(id);
-        this.networkListener.clearWatch(id);
-    }
-
-    private void getCurrentLocation(CallbackContext callbackContext, boolean enableHighAccuracy, int timeout) {
-        if (enableHighAccuracy) {
-            this.gpsListener.addCallback(callbackContext, timeout);
-        } else {
-            this.networkListener.addCallback(callbackContext, timeout);
-        }
-    }
-
-    private void addWatch(String timerId, CallbackContext callbackContext, boolean enableHighAccuracy) {
-        if (enableHighAccuracy) {
-            this.gpsListener.addWatch(timerId, callbackContext);
-        } else {
-            this.networkListener.addWatch(timerId, callbackContext);
-        }
-    }
-
-    /**
-     * Called when the activity is to be shut down.
-     * Stop listener.
-     */
-    public void onDestroy() {
-        if (this.networkListener != null) {
-            this.networkListener.destroy();
-            this.networkListener = null;
-        }
-        if (this.gpsListener != null) {
-            this.gpsListener.destroy();
-            this.gpsListener = null;
-        }
-    }
-
-    /**
-     * Called when the view navigates.
-     * Stop the listeners.
-     */
-    public void onReset() {
-        this.onDestroy();
-    }
-
-    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("velocity", loc.getSpeed());
-            o.put("timestamp", loc.getTime());
-        } catch (JSONException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-
-        return o;
-    }
-
-    public void win(Location loc, CallbackContext callbackContext, boolean keepCallback) {
-    	PluginResult result = new PluginResult(PluginResult.Status.OK, this.returnLocationJSON(loc));
-    	result.setKeepCallback(keepCallback);
-        callbackContext.sendPluginResult(result);
-    }
-
-    /**
-     * Location failed.  Send error back to JavaScript.
-     * 
-     * @param code			The error code
-     * @param msg			The error message
-     * @throws JSONException 
-     */
-    public void fail(int code, String msg, CallbackContext callbackContext, boolean keepCallback) {
-        JSONObject obj = new JSONObject();
-        String backup = null;
-        try {
-            obj.put("code", code);
-            obj.put("message", msg);
-        } catch (JSONException e) {
-            obj = null;
-            backup = "{'code':" + code + ",'message':'" + msg.replaceAll("'", "\'") + "'}";
-        }
-        PluginResult result;
-        if (obj != null) {
-            result = new PluginResult(PluginResult.Status.ERROR, obj);
-        } else {
-            result = new PluginResult(PluginResult.Status.ERROR, backup);
-        }
-
-        result.setKeepCallback(keepCallback);
-        callbackContext.sendPluginResult(result);
-    }
-
-    public boolean isGlobalListener(CordovaLocationListener listener)
-    {
-    	if (gpsListener != null && networkListener != null)
-    	{
-    		return gpsListener.equals(listener) || networkListener.equals(listener);
-    	}
-    	else
-    		return false;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/ab8a448e/src/android/NetworkListener.java
----------------------------------------------------------------------
diff --git a/src/android/NetworkListener.java b/src/android/NetworkListener.java
deleted file mode 100755
index aeb39ce..0000000
--- a/src/android/NetworkListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
-*/
-
-package org.apache.cordova.geolocation;
-
-
-import android.location.LocationManager;
-
-/**
- * This class handles requests for GPS location services.
- *
- */
-public class NetworkListener extends CordovaLocationListener {
-    public NetworkListener(LocationManager locationManager, GeoBroker m) {
-        super(locationManager, m, "[Cordova NetworkListener]");
-    }
-}