前言
在开发中,有的时候需要我们监听很多系统的状态,比如:是否有耳机插入、当前用户的活动状态(跑步,散步,静止状态等)。通过检测这些状态,我们可以做很多人性化的操作,比如:监听到用户插入了耳机,我们可以打开音乐播放器准备播放音乐。插一句,如果你是安卓的老用户,你可能知道安卓上有一款应用叫Tasker。这款应用是通过用户设定一些条件,当触发了设定好的条件后会执行用户已经指定好的操作。概括起来就是:If this, then that,简称:IFTTT。
如果对Tasker感兴趣的可以看看下面的文章:
今天我们要来看看Google是如何帮助我们实现IFTTT的操作。
介绍
Google Awareness API是用来干嘛的?
官网上是这样概括的:
A unified sensing platform enabling applications to be aware of multiple aspects of a users context, while managing battery and memory health.
翻译过来就是:
它是一个统一的获取手机上各种传感器数据的平台,应用程序使用它能够了解用户当前状态的多个方面的信息,同时能够管理电池和内存运行状况。
不够直白?我的理解是:通过它提供的API能够获取到用户当前使用手机的一些状态信息,像地理位置、天气信息、运动信息等,在调用API的时候,系统已经为我们考虑到了电池以及内存使用的相关情况,无需用户在手动处理了。
有哪些特性?
-
Many signals, one API(一个API提供多种数据)
-
High quality data(高质量数据)
-
Smart battery savings(智能电池管理)
提供哪些信息?
Google Awareness API总共提供七种信息:
-
时间
-
地点(经纬度)
-
位置(位置类别,比如:公园、商店等)
-
活动状态(走路、跑步、骑行等)
-
标志(命名相匹配的附近标志)
-
耳机
-
天气
这七种类别是可以相互组合的,也就是说,在开发中,可以设定某几种状态,只有当这些状态都触发了才可以执行具体的操作。
如何使用?
Google提供了两种方式:
-
Fence API
实在是不好翻译啊?,我的理解是:通过组合(也可以不组合)使用API,当手机触发到设定的条件时,应用程序会收到回调信息,在回调的接口中做逻辑的处理。后面我会提供Demo的。
-
Snapshot API
还是不好翻译?,官网上是这么说的:获取七种里面的某一种瞬时具体的数据。也就是说,通过使用Snapshot API你可以检测到某种状态的瞬息且详细的信息。
介绍完了,下面就开始使用它吧。
使用
下面我会写一个检测耳机是否插入的demo。
-
build.gradle配置
implementation 'com.google.android.gms:play-services-awareness:16.0.0'
-
在Google API种添加或选择项目
网址: Google API
创建好以后,在应用限制里面选择Android应用,填入