Return-Path: X-Original-To: apmail-cordova-commits-archive@www.apache.org Delivered-To: apmail-cordova-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 174D210118 for ; Fri, 28 Feb 2014 22:23:27 +0000 (UTC) Received: (qmail 11967 invoked by uid 500); 28 Feb 2014 22:23:26 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 11942 invoked by uid 500); 28 Feb 2014 22:23:26 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 11935 invoked by uid 99); 28 Feb 2014 22:23:26 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Feb 2014 22:23:26 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 17DCC931A25; Fri, 28 Feb 2014 22:23:26 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: bowserj@apache.org To: commits@cordova.apache.org Message-Id: <536cdd737ad84cd0a314ff815cd1718a@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: CB-5977: Removing the Android Geolocation Code. Mission Accomplished. Date: Fri, 28 Feb 2014 22:23:26 +0000 (UTC) Repository: cordova-plugin-geolocation Updated Branches: refs/heads/dev 99945c542 -> ab8a448e5 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/dev Commit: ab8a448e52b0c2cc05fabe3e0d0cff3fd859b020 Parents: 99945c5 Author: Joe Bowser Authored: Fri Feb 28 14:23:02 2014 -0800 Committer: Joe Bowser 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" - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 watches = new HashMap(); - private List callbacks = new ArrayList(); - - 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 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 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]"); - } -}