所以我在eddystone扫描上使用了Evothing示例,由于某种原因,应用程序将不再扫描了。
每500 ms调用一次函数startScan:
function onDeviceReady() {
// Start tracking beacons!
setInterval(function(){ startScan() }, 500);
}startScan函数:
function startScan() {
// console.log("Startscan called"+new Date());
// Called continuously when ranging beacons.
evothings.eddystone.startScan(
function(beacon)
{
console.log("Startscan called evo"+new Date());
// Insert/update beacon table entry.
beacon.timeStamp = Date.now();
beacons[beacon.address] = beacon;
domodalandstuff(); // this function opens a bootstrap modal to show some data
},
function(error)
{
console.log('Eddystone Scan error: ' + JSON.stringify(error)+" "+new Date());
}
)};10分钟后,我在我的控制台上看到了这个:
这个应用程序只是停止调用startScan(),所以我的应用程序当然再也找不到信标了。
发布于 2017-01-16 17:10:48
我想问题是“每500 ms调用一次函数startScan”。就像这样,你一次开始很多次扫描。
你应该只叫一次。您的startScan函数调用evothings.eddystone.startScan,启动并一直扫描直到停止。因此,您只需调用evothings.eddystone.startScan一次,每次检测到信标时,它都会调用您的successCallback。
function onDeviceReady() {
startScan();
}注意:您应该在某个地方调用evothings.eddystone.stopScan。
发布于 2017-01-16 21:32:18
是的,非常愚蠢的错误--谢谢@Dietatko,如果你想知道这就是我想出来的:
function checkmodalup() {
if ($('#myModal').is(':visible')){
evothings.eddystone.stopScan();
isscanning = false;
}
else {
if (isscanning === false) {
evothings.eddystone.stopScan();
startScan();
isscanning = true;
}
else if (isscanning === true) {
console.log("is already scanning");
}
}
}https://stackoverflow.com/questions/41679357
复制相似问题