快速入门

更新时间:2024-07-03 06:34:05下载pdf

本教程旨在讲解 App 基础功能,让您快速上手出行应用开发流程,包含以下功能:

  • 通过 App 解锁一辆车。
  • 实现感应解锁,无需启动 App 即可解锁车辆。

快速入门

您可以单击下方按钮下载 Sample,查看本教程中的示例代码。本次教程按功能模块进行分类,您可以快速找到对应的代码参考学习。

前往 App 开发平台 查看 GitHub Sample

效果展示

展示内容界面均是基于涂鸦出行 SDK 提供的接口进行开发而来。

准备工作

在您开始本教程前,确保您已经:

  1. 在涂鸦开发者平台,注册账号并创建 App 应用,获取 SDK 的 AppKeyAppSecret。更多信息,参考 准备工作

    由于出行 SDK 依赖于 智能生活 App SDK,您需要首先实现诸如创建账号、添加默认家庭的操作后,才能借助出行 SDK 实现出行相关功能。更多信息,参考 智能生活 App SDK 快速入门教程

  2. 准备一个涂鸦赋能的出行智能产品,本教程以二轮车为例。关于如何获取涂鸦赋能的产品,可访问 涂鸦智选

  3. 使用 CocoaPods,将智能生活 App SDK 和出行 SDK 集成到您的项目中。更多信息,参考 SDK 集成

设备配网

由涂鸦赋能的出行设备主要支持智能生活 App SDK 中蓝牙及 Cat.1 配网方式,具体根据设备通信协议进行选择。更多信息,参考 涂鸦 App 配网方式

DP 快捷操作

对于涂鸦赋能的设备,其指令功能主要依赖 DP(Data Point,设备功能标识)进行下发与上报。出行 SDK 基于 ThingSmartDevice 主类 DP 发送方法进行二次包装,让下发操作更为便捷,建议出行相关功能均使用以下接口进行 DP 操作。若对 DP 概念较为陌生,建议了解 设备控制产品功能

public interface IThingDevice {
  /**
   * Distributed according to the specified channel sequence
   *
   * @param dps
   * @param orders
   * @param callback
   */
  void publishDps(String dps, String orders, IResultCallback callback);
}

具体调用

IThingDevice thingDevice = ThingHomeSdk.newDeviceInstance(deviceId)
thingDevice.publishDps(xx,xx,xx)

关键示例-无感解锁

出行 SDK 提供感应解锁基础 API 能力,此示例主要讲解蓝牙无感解锁基础功能如何使用。关于无感解锁更多详细功能,参考 无感解锁

交互演示

核心接口

接口 描述
IODBtInductiveUnlock boolean isInductiveUnlockTurnOn(); 获取无感解锁开关状态
IODBtInductiveUnlock void turnOnInductiveUnlock(InductiveUnlockCallback callback); 开启无感解锁
IODBtInductiveUnlock void turnOffInductiveUnlock(IResultCallback callback); 关闭无感解锁

开发建议

开启无感解锁功能依赖蓝牙能力,项目中建议增加对手机蓝牙权限及设备蓝牙在线状态进行前置校验,并提示用户务必保证手机蓝牙功能开启。

示例代码

无感解锁配对状态判断:

boolean isTurnOn = getInductiveUnlock().isInductiveUnlockTurnOn();

开启无感解锁:

getInductiveUnlock().turnOnInductiveUnlock(new InductiveUnlockCallback() {
        @Override
        public boolean interceptBluetoothPairing(String bluetoothName) {
          // 拦截配对,部分手机配网方式不同,需要手动处理,具体参考文档
          return super.interceptBluetoothPairing(bluetoothName);
        }

        @Override
        public void onError(String code, String error) {
          // 开启失败
        }

        @Override
        public void onSuccess() {
          // 开启成功
        }
 });

关闭无感解锁:

getInductiveUnlock().turnOffInductiveUnlock(new IResultCallback() {
      @Override
      public void onError(String code, String error) {
        // 关闭失败
      }

      @Override
      public void onSuccess() {
        // 关闭成功
      }
  });