mirror of
https://github.com/apache/cordova-android.git
synced 2026-04-23 00:00:09 +08:00
Merge branch 'master' of github.com:imhotep/phonegap-android
This commit is contained in:
@@ -8,12 +8,11 @@ function Geolocation() {
|
||||
*/
|
||||
this.lastPosition = null;
|
||||
this.lastError = null;
|
||||
this.callbacks = {
|
||||
onLocationChanged: [],
|
||||
onError: []
|
||||
};
|
||||
this.listeners = null;
|
||||
};
|
||||
|
||||
var geoListeners = [];
|
||||
|
||||
Geolocation.prototype.getCurrentPosition = function(successCallback, errorCallback, options)
|
||||
{
|
||||
var position = Geo.getCurrentLocation();
|
||||
@@ -21,63 +20,6 @@ Geolocation.prototype.getCurrentPosition = function(successCallback, errorCallba
|
||||
this.fail = errorCallback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Asynchronously aquires the position repeatedly at a given interval.
|
||||
* @param {Function} successCallback The function to call each time the position
|
||||
* data is available
|
||||
* @param {Function} errorCallback The function to call when there is an error
|
||||
* getting the position data.
|
||||
* @param {PositionOptions} options The options for getting the position data
|
||||
* such as timeout and the frequency of the watch.
|
||||
*/
|
||||
Geolocation.prototype.watchPosition = function(successCallback, errorCallback, options) {
|
||||
// Invoke the appropriate callback with a new Position object every time the implementation
|
||||
// determines that the position of the hosting device has changed.
|
||||
|
||||
this.getCurrentPosition(successCallback, errorCallback, options);
|
||||
var frequency = 10000;
|
||||
if (typeof(options) == 'object' && options.frequency)
|
||||
frequency = options.frequency;
|
||||
|
||||
var that = this;
|
||||
return setInterval(function() {
|
||||
that.getCurrentPosition(successCallback, errorCallback, options);
|
||||
}, frequency);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Clears the specified position watch.
|
||||
* @param {String} watchId The ID of the watch returned from #watchPosition.
|
||||
*/
|
||||
Geolocation.prototype.clearWatch = function(watchId) {
|
||||
clearInterval(watchId);
|
||||
};
|
||||
|
||||
/**
|
||||
* Called by the geolocation framework when the current location is found.
|
||||
* @param {PositionOptions} position The current position.
|
||||
*/
|
||||
Geolocation.prototype.setLocation = function(position) {
|
||||
this.lastPosition = position;
|
||||
for (var i = 0; i < this.callbacks.onLocationChanged.length; i++) {
|
||||
var f = this.callbacks.onLocationChanged.shift();
|
||||
f(position);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Called by the geolocation framework when an error occurs while looking up the current position.
|
||||
* @param {String} message The text of the error message.
|
||||
*/
|
||||
Geolocation.prototype.setError = function(message) {
|
||||
this.lastError = message;
|
||||
for (var i = 0; i < this.callbacks.onError.length; i++) {
|
||||
var f = this.callbacks.onError.shift();
|
||||
f(message);
|
||||
}
|
||||
};
|
||||
|
||||
// Run the global callback
|
||||
Geolocation.prototype.gotCurrentPosition = function(lat, lng, alt, altacc, head, vel, stamp)
|
||||
{
|
||||
@@ -103,16 +45,11 @@ Geolocation.prototype.gotCurrentPosition = function(lat, lng, alt, altacc, head,
|
||||
Geolocation.prototype.watchPosition = function(successCallback, errorCallback, options)
|
||||
{
|
||||
var frequency = (options != undefined)? options.frequency : 10000;
|
||||
|
||||
if (!this.listeners)
|
||||
{
|
||||
this.listeners = [];
|
||||
}
|
||||
|
||||
var key = this.listeners.push( {"success" : successCallback, "fail" : failCallback }) - 1;
|
||||
|
||||
var key = geoListeners.push( {"success" : successCallback, "fail" : errorCallback }) - 1;
|
||||
|
||||
// TO-DO: Get the names of the method and pass them as strings to the Java.
|
||||
return Geolocation.start(frequency, key);
|
||||
return Geo.start(frequency, key);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -123,18 +60,19 @@ Geolocation.prototype.success = function(key, lat, lng, alt, altacc, head, vel,
|
||||
{
|
||||
var coords = new Coordinates(lat, lng, alt, altacc, head, vel);
|
||||
var loc = new Position(coords, stamp);
|
||||
this.listeners[key].success(loc);
|
||||
geoListeners[key].success(loc);
|
||||
}
|
||||
|
||||
Geolocation.prototype.fail = function(key)
|
||||
{
|
||||
this.listeners[key].fail();
|
||||
geoListeners[key].fail();
|
||||
}
|
||||
|
||||
Geolocation.prototype.clearWatch = function(watchId)
|
||||
{
|
||||
Geo.stop(watchId);
|
||||
}
|
||||
|
||||
// Taken from Jesse's geo fix (similar problem) in PhoneGap iPhone. Go figure, same browser!
|
||||
function __proxyObj(origObj, proxyObj, funkList) {
|
||||
for (var v in funkList) {
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
# "build.properties", and override values to adapt the script to your
|
||||
# project structure.
|
||||
|
||||
apk-configurations=
|
||||
# Project target.
|
||||
target=android-5
|
||||
# Indicates whether an apk should be generated for each density.
|
||||
split.density=false
|
||||
# Project target.
|
||||
target=android-7
|
||||
apk-configurations=
|
||||
|
||||
@@ -21,6 +21,7 @@ public class GeoBroker {
|
||||
{
|
||||
mCtx = ctx;
|
||||
mAppView = view;
|
||||
geoListeners = new HashMap<String, GeoListener>();
|
||||
}
|
||||
|
||||
public void getCurrentLocation()
|
||||
|
||||
@@ -47,7 +47,7 @@ public class GeoListener {
|
||||
params += "," + loc.getSpeed() + "," + loc.getTime();
|
||||
if(id != "global")
|
||||
{
|
||||
mAppView.loadUrl("javascript:navigator.geolocation.success(" + id + "," + params + ")");
|
||||
mAppView.loadUrl("javascript:navigator._geo.success(" + id + "," + params + ")");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,11 +55,11 @@ public class GeoListener {
|
||||
{
|
||||
// Do we need to know why? How would we handle this?
|
||||
if (id != "global") {
|
||||
mAppView.loadUrl("javascript:navigator.geolocation.fail(" + id + ")");
|
||||
mAppView.loadUrl("javascript:navigator._geo.fail(" + id + ")");
|
||||
}
|
||||
else
|
||||
{
|
||||
mAppView.loadUrl("javascript:navigator.geolocation.fail()");
|
||||
mAppView.loadUrl("javascript:navigator._geo.fail()");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ public class PhoneGap{
|
||||
* UUID, version and availability
|
||||
*/
|
||||
public boolean droid = true;
|
||||
public static String version = "0.8.0";
|
||||
public static String version = "0.9.99999";
|
||||
public static String platform = "Android";
|
||||
public static String uuid;
|
||||
private Context mCtx;
|
||||
|
||||
@@ -70,11 +70,9 @@ public class WebViewReflect {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
//setting.setDatabaseEnabled(enable);
|
||||
//setting.setDatabasePath(path);
|
||||
} else {
|
||||
/* feature not supported, do something else */
|
||||
System.out.println("dump not supported");
|
||||
System.out.println("Database not supported");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,11 +93,9 @@ public class WebViewReflect {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
//setting.setDatabaseEnabled(enable);
|
||||
//setting.setDatabasePath(path);
|
||||
} else {
|
||||
/* feature not supported, do something else */
|
||||
System.out.println("dump not supported");
|
||||
System.out.println("DOM Storage not supported");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user