其他

Awareness API现已提供语义时间支持

2017-06-30 合肥谷歌开发者社区



去年我们在 I/O 上发布了 Awareness API,这是一个简单但强大的 API,它让开发者可以使用位置、天气、时间和用户活动等信号来构建与情境相关的应用体验。


Awareness API 提供两种在您的应用中使用情境信号的方式,可通过 Google Play 服务获取。Snapshot API 让您的应用可以请求有关用户当前情境的信息,而 Fence API 让您的应用可以响应用户情境变化并在情境符合某组特定条件时作出反应。例如,“每当用户行走和插入耳机时通知我”。


目前,您可以在 Awareness API 上指定一个时界,但只能使用时间的绝对/标准表示形式。根据开发者反馈,我们意识到此 API 在构建时界方面的灵活性不足以支持人们在思考和谈论时间时所使用的更高级的抽象表达。“本周”、“下一个假期”、“日落之后”都是很常见、很口语化的时间表达方式。这就是我们从今天开始向这些 API 添加语义时间支持的原因。


例如,如果您正在构建一个健身应用并需要一种方式在每天早晨提示用户开始其例行活动,或者如果您正在构建一个需要在黄昏后开启夜间模式的阅读应用;您将需要查询一个 3p API 以获取用户位置的日出/日落信息,然后使用这些标准时间值编写一个 Awareness 时界。借助我们的最新更新,您可以使用我们的 TIME_INSTANT_SUNRISE 和 TIME_INSTANT_SUNSET 常量,并让平台为您管理所有复杂任务。


下面我们来看一个示例。假设您正在构建一个健身应用,其在周二和周四的日出时间提示用户开始他们的晨练。您可以使用以下代码行设置此触发。


// A sun-state-based fence that is TRUE only on Tuesday and Thursday during Sunrise AwarenessFence.and( TimeFence.aroundTimeInstant(TimeFence.TIME_INSTANT_SUNRISE, -10 * ONE_MINUTE_MILLIS, 5 * ONE_MINUTE_MILLIS), AwarenessFence.or( TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_TUESDAY, 0, ONE_DAY_MILLIS), TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_THURSDAY, 0, ONE_DAY_MILLIS)));


我们推出的一个颇受欢迎的语义时间功能是公共假期。该功能内的每个国家和区域都有其不同的假期。假设您构建的是一个本地远足和探险应用,想要向用户显示他们在恰逢周五或周一的假期里可以享受的活动。您可以使用“Days”(天数)和“Holiday”(假期)标志的组合来为世界各地的所有用户识别此状态。只需 3 行代码您就可以执行此操作,并使其适用于世界上的任何地方。


// A local-time fence that is TRUE only on public holidays in the // device locale that fall on Fridays or Mondays. AwarenessFence.and( TimeFence.inTimeInterval(TimeFence.TIME_INTERVAL_HOLIDAY), AwarenessFence.or( TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_FRIDAY, 9 * ONE_HOUR_MILLIS, 11 * ONE_HOUR_MILLIS), TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_MONDAY, 9 * ONE_HOUR_MILLIS, 11 * ONE_HOUR_MILLIS)));


在这两个示例中,Awareness 基于设备语言区域设置执行将时间和假期进行本地化的繁重任务。


我们期待见到您将使用这个强大的 API 解决哪些问题。请加入我们的邮寄名单以获取有关此 API 和 Google 的其他 Context API 的更新。



了解更多详情,查看文内所有链接(文档),请点击文末“阅读原文”。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存