第2部分:背景监测

2016-08-17  本文已影响163人  拉肚

上一章弄好的android studio和集成了Estimote SDK,现在开始学习第一特性,监控beacons和beacons在等待时间中等待用户进来。

目录

1、什么是beacons监控

2、beacons区域

3、添加beacons管理

4、开始监控

5、显示进入通知

6、测试监视  开关休眠

7、重点回顾

什么是beacons监控

你可以认为信标监测作为一个区域,一个通常使用一组地理坐标定义的虚拟障碍物,移动到该区域在发生进入和离开事件的时候,此应用会作出反应。

在一个有很多beacons的案例中,很多beacons覆盖着一大片面积。这相比一个beacons的范围,以后者为基础混合的多个beacons范围的wifi和gps,但是对于这些beacons,触发的离开和进入事件只有30秒。

在Estimote Android SDK中,你可以使用beaconmanager中的setbackgroundscanperiod设置扫描,默认是25秒一次扫描,你也可以设置更短,但是相对手机电量会消耗。

beacons地区

如何规定beacons的使用区域?beacons的区域是一个概念的东西,在你使用Estimote Android SDK时候,你要注意以下:

UUID  一个常量字符串 如 b9407f30-f5f8-466e-aff9-25556b57fe6d

major number  一个无符号短整型,即一个整数,从1到65535不等,(0是一个保留值)

minor number  也是一个无符号的短整型  主要是数字

对于一个beacons地区 ,你可以只需要uuid和一个major number或者你可以更具体点增加minor number来混搭,你也可以只使用uuid,你也可以超级模糊的跳过uuid,这将会是得到所有的beacons。这些都是选择,

UUID + major + minor, UUID + major,uuid,什么都没有

当跨越多个beacons区域的时候,当检测匹配到第一个beacons时候,会有一个进入的事件和一个退出事件,直到没有匹配的beacons;当然你也可以创建一个beacons,监听它的进入退出事件。

添加一个beacons管理

要监测beacons,首先我们要创建beaconmanager,它将管理着所有的beacons。

预计在应用程序任何时候都要检测所有的beacons,无论是进行着哪一个活动。在android的Application中定义一个beaconmanager,刚刚好满足这个需求。

创建一个MyApplication

package com.example.airport;

import android.app.Application;

import com.estimote.sdk.BeaconManager;

public class MyApplication extends Application

{

private BeaconManager beaconManager;

@Override

public void onCreate()

{

super.onCreate();

beaconManager=new BeaconManager(getApplicationContext());

}

}

然后在AndroidManifest.xml更改Application

<application

<!-- add this: -->

android:name=".MyApplication"

<!-- the rest of the file follows -->

android:allowBackup="true"

启动监控

下一步我们将创建一个用于我们监测的beacons区域,下面教程,我们将会放置一个单一的beacons.但是它相对于beacons系统来是很简易的,beacons可以设置major或者minor或者两个都有或者是null(这些我们可以以后在做)

继续我们的MyApplication

beaconManager=newBeaconManager(getApplicationContext());// add this below:

beaconManager.connect(newBeaconManager.ServiceReadyCallback()

{

@Override

public void onServiceReady()

{

beaconManager.startMonitoring(new Region(

"monitored region",

UUID.fromString("B9407F30-F5F8-466E-AFF9-25556B57FE6D"),

22504,48827));

}

});

你添加这些代码,来添加uuid和major和minor的值和一个你的beacons。最简单的方法是去邮箱哪里复制beacons的对应信息。

默认beacons是在购买的邮箱上,你可以通过下面的指南来转移你的beacons
到别的邮箱。

另一个选择是在你的Estimote app中通过雷达的方式找到你的beacons,他会返回beacons的试图,包含它的uuid和major和minor

如果周边有很多的beacons,会以一个列表的方式代替beacons详情视图,由近到远的方式排列。所以你距离近的那一个应该会出现在列表top。

You can switch to the “List” view using the tab bar at the bottom of the “Beacons in range” screen.//不会翻译

显示进入通知

在一定的时间中做的动作,我们来添加一个通知,表示用户进入beacons的范围。

首先我们在MyApplication添加一个辅助方法

public void showNotification(String title,String message)

{

Intent notifyIntent=new Intent(this,MainActivity.class);

notifyIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent pendingIntent=PendingIntent.getActivities(this,0,new Intent[]{notifyIntent},PendingIntent.FLAG_UPDATE_CURRENT);

Notification notification=new Notification.Builder(this).setSmallIcon(android.R.drawable.ic_dialog_info)

.setContentTitle(title)

.setContentText(message)

.setAutoCancel(true)

.setContentIntent(pendingIntent)

.build();

notification.defaults|=Notification.DEFAULT_SOUND;

NotificationManager notificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);notificationManager.notify(1,notification);

}

现在我们获取一个简单的字符信息

// find this line:

beaconManager=new BeaconManager(getApplicationContext());

// add this below:

beaconManager.setMonitoringListener(newBeaconManager.MonitoringListener(){

@Override

public void  onEnteredRegion(Region region,List<Beacon>list){

showNotification("Your gate closes in 47 minutes.","Current security wait time is 15 minutes, "+"and it's a 5 minute walk from security to the gate. "+"Looks like you've got plenty of time!");

}

@Override

public void  onExitedRegion(Region region)

{

// could add an "exit" notification too if you want (-:

}

});

测试监控  flip to sleep

运行你的应用到你的app上,当你到Beacon范围内的时候,进入事件立即触发.

但是不能每一次都进入退出出发对应的事件。

所以还有一种模式 Beacon休眠

1、打开你的app找到你的Beacon列表,点击其中一个Beacon

2、如果你没有登录会要求你登陆,这是作为一个安全证书,你要到你的邮箱设置你的app权限

3、查看剩余电池寿命

4、找到Flip to Sleep Mode,并设置它

5、回到列表,断开Beacon连接。

一旦离开Beacon范围还要30秒才能反应过来。这是不可改的

 

上一篇下一篇

猜你喜欢

热点阅读