我无法将Worklight“定位服务”“SmallSample”应用程序用于我的Droid 4手机。我正在使用IBM Worklight提供的"smallSample" sample project。
“SmallSample”应用程序在移动浏览器模拟器中运行良好,但是当我将其安装在我的物理手机上时。 当我按下应用程序上的按钮以检索我的GPS坐标时,Android GPS图标会在我的通知栏中显示约2秒钟,然后消失。永远不会显示GPS坐标,也没有错误。
详细说明:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
更新:
在不更改任何其他内容的情况下,我可以使用此问题中的代码在单个时间点检索设备上的GPS坐标:IBM Worklight - How to implement GPS functionality?
navigator.geolocation.getCurrentPosition(onSuccess, onError);
function onSuccess(position) {
alert(JSON.stringify(position));
}
function onError(error) {
alert(JSON.stringify(error));
}
上面的代码在我的手机上完美运行,并返回GPS坐标。但是,SmallSample中的代码(在上面的链接中引用)仍然不起作用。一个区别是GPS坐标在小样本中不断更新。我粘贴了下面代码的主要部分。
WL.Device.Geo.acquirePosition(
function(pos) {
// when we receive the position, we display it and start on-going acquisition
displayPosition(pos);
var triggers = {
Geo: {
posChange: { // display all movement
type: "PositionChange",
callback: function(deviceContext) {
displayPosition(deviceContext.Geo);
}
},
leftArea: { // alert when we have left the area
type: "Exit",
circle: {
longitude: pos.coords.longitude,
latitude: pos.coords.latitude,
radius: 200
},
callback: function() {
window.alert('Left the area');
}
},
dwellArea: { // alert when we have stayed in the vicinity for 3 seconds
type: "DwellInside",
circle: {
longitude: pos.coords.longitude,
latitude: pos.coords.latitude,
radius: 50
},
dwellingTime: 3000,
callback: function() {
window.alert('Still in the vicinity');
}
}
}
};
WL.Device.startAcquisition({ Geo: geoPolicy }, triggers, { Geo: alertOnGeoAcquisitionErr } );
},
function(geoErr) {
alertOnGeoAcquisitionErr(geoErr);
// try again:
getFirstPositionAndTrack();
},
geoPolicy
);
此外,以下是我从LogCat(调试)获得的错误:
06-04 15:42:00.243:D / NONE(3962):wlclient init成功
06-04 15:42:03.602:D / WL gps听众:位置已经过了 更新!
06-04 15:42:03.602:D / WL gps听众:获得的地点年龄: 17306毫秒。超过10000毫秒的最大值。 忽略。
06-04 15:42:03.602:D / WL gps监听器:状态 提供者gps已更改
06-04 15:42:03.602:D / WL gps听众:gps是 TEMPORARILY_UNAVAILABLE
06-04 15:43:03.509:D / CordovaLog(3962): file:///android_asset/www/default/worklight/worklight.js:第12769行: 未捕获的ReferenceError:未定义PositionError
06-04 15:43:03.509:E / Web Console(3962):未捕获的ReferenceError: PositionError未定义于 文件:///android_asset/www/default/worklight/worklight.js:12769
06-04 15:43:04.040:D / CordovaActivity(3962):暂停了应用程序!
总结一下,应用程序最初获取我的GPS坐标,但随后立即抛出“gps是TEMPORARILY_UNAVAILEABLE”,并重复该过程。也许我的手机无法处理实时跟踪?虽然实时跟踪可在我的设备上使用Google地图。
答案 0 :(得分:0)
file:///android_asset/www/default/worklight/worklight.js:12769行: 未捕获的ReferenceError:未定义PositionError
此问题已在Worklight的更高版本中得到解决;如果可能,我建议您将Studio安装升级到最新的v6.2.0.01版本甚至v6.3。
如果您在v6.1中需要它,请尝试从IBM Fix Central升级到最新的iFix for 6.1.0.1。