美文网首页
第2部分:背景监测

第2部分:背景监测

作者: 拉肚 | 来源:发表于2016-08-17 13:53 被阅读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秒才能反应过来。这是不可改的

     

    相关文章

      网友评论

          本文标题:第2部分:背景监测

          本文链接:https://www.haomeiwen.com/subject/tigusttx.html