文章标题:《蓝牙接入Android SDK集成指南》 文档更新:2015-05-14 API接口文档:文档下载


第一步:将 SDK 导入到你的工程中

  • 登录机智云官方网站下载并解压最新版本的SDK。如果您还尚未下载,请 点击这里下载

  • 将解压后的 jar 文件 复制到 Android 项目的 libs 目录即可

第二步:引入头文件和注册 SDK 的 AppID

  • 登录机智云官方网站查看产品信息获得 AppID 。如果尚未注册,请点击这里注册
  • 初始化 SDK

在 Application的 onCreate() 方法来初始化 SDK,指定APPID.

public void onCreate() {
    // 启动SDK,参数为机智云官网中查看产品信息得到的AppID 
    GizDataAccess.startWithAppId(getApplicationContext(), “APP_ID”);
}

第三步:用户登录

  • 注册用户登录的监听

代码示例:

GizDataAccessLogin gdalogin = new GizDataAccessLogin(this);
  • 实现用户登录的回调方法

代码示例:

public void didLogin(String uid, String token, GizDataAccessErrorCode result, String message) {
    if (result.getResult() == 0 && uid != null && token != null) {
        // 登录成功
        // ……
}
  • 匿名登录

    匿名登录时,不需要传入任何用户信息,SDK会生成默认的用户名。登录结果通过用户登录的回调返回。

代码示例:

gdaLogin.loginAnonymous();
  • 实名登录

    需要传入注册时的用户账号和密码,用户账号可以是用户名、手机号或邮箱,以及密码。登录结果通过用户登录的回调返回。

代码示例:

gdaLogin.login(“YOUR_USERNAME”, “YOUR_PASSWORD”);
  • 第三方账号登录

    支持百度、腾讯、新浪账号登录。需要传入登录需要用到的uid和token,以及账号类型。登录结果通过用户登录的回调返回。

代码示例:

gdaLogin.loginWithThirdAccountType(THIRD_ACCOUNT_TYPE, “YOUR_THIRD _ACCOUNT_UID”, “YOUR_THIRD _ACCOUNT_TOKEN”);

第四步:数据接入

  • 注册数据接入的监听

代码示例:

GizDataAccessSource gdaSource = new GizDataAccessSource(this);

数据上传

  • 实现数据上传的回调方法

代码示例:

public void didSaveData(GizDataAccessSource source, GizDataAccessErrorCode result, String message) {
    if (result.getResult() == 0) {
        // 上传成功
        // ……
    }
}
  • 上传数据

    支持批量数据上传。最后一个参数data为数组类型,可以指定每一组数据的产生时间和内容,格式为标准的JSON。上传结果,通过数据上传的委托返回。

data示例: {"ts": 1420732800000, "attrs": { “weight": 50, “fat": 0.2, “remark": “too thin" } }

代码示例:

gdaSource.saveData(“YOUR_LOGIN_TOKEN”, “YOUR_BLE_PRODUCT_KEY”, “YOUR_BLE_DEVICE_SN”, “YOUR_DATA”);

数据获取

  • 实现数据获取的委托方法

    获取到的数据内容,按以下键值对方式提供:

    "attrs" : { [dynamic_keys] : [dynamic_values], ... },

    "uid" : [uid],

    "sn" : [sn],

    "ts" : [ts],

    "product_key" : [product_key]

代码示例:

public void didLoadData(GizDataAccessSource arg0, JSONArray jsonArray, GizDataAccessErrorCode result, String message) {
    if (result.getResult() == 0) {
        if (jsonArray != null) { 
            for (int i = 0; i < jsonArray.length(); i++) {
                try {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    System.out.println("uid: " + jsonObject.get("uid"));
                    System.out.println("device_sn: " + jsonObject.get("device_sn"));
                    System.out.println("product_key: " + jsonObject.get("product_key"));
                    System.out.println("ts: " + jsonObject.get("ts"));
                    System.out.println("attrs: " + jsonObject.get("attrs"));
                    System.out.println("\n");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        } else { 
            System.out.println("暂无数据");
        }
    } else {
        System.out.println("读取失败:" + message);
    }
}
  • 获取数据

    获取数据时,需指定起止时间段。如果limit值为0将只返回20条数据,若skip值为负数,则获取失败。数据获取结果,通过获取数据的回调返回。获取到的数据,按照时间排序,最新的数据排在最前面。

代码示例:

gdaSource.loadData(“YOUR_LOGIN_TOKEN”, “YOUR_BLE_PRODUCT_KEY”, “YOUR_BLE_DEVICE_SN”, START_DATA_TIME, END_DATA_TIME, 20, 0);

第四步:用户账号注册、信息修改和匿名转换

用户注册

  • 注册用户账号注册的监听

代码示例:

GizDataAccessLogin gdaRegister = new GizDataAccessLogin(this);
  • 实现用户账号注册的回调方法

代码示例

public void didRegisterUser(String uid, String token, GizDataAccessErrorCode result, String message) {
    if(result == kGizDataAccessErrorNone) {
        // 用户注册成功
        // ……
    }
}
  • 用户账号注册

    通过accountType参数指定账号注册方式:用户名注册、手机号注册、邮箱注册。只有手机号注册时,需要传入验证码,验证码可以通过获取手机验证码的接口获取。其他注册方式,验证码传nil。注册结果通过用户账号注册的回调返回。

代码示例:

gdaRegister.registerUser(“YOUR_USERNAME”, “YOUR_PASSWORD”, “YOUR_PHONE_VERIFYCODE”, YOUR_THIRD_ACCOUNT_TYPE];

修改密码

  • 注册密码修改的监听

代码示例:

    GizDataAccessLogin gdaResetPassword = new GizDataAccessLogin(this);
  • 实现密码修改的回调方法

代码示例:

public void didChangeUserPassword(GizDataAccessErrorCode result, String message) {
    if(result == kGizDataAccessErrorNone) {
        // 密码重置成功
        // ……
    }
}
  • 重置密码

    可以通过手机号和邮箱重置密码。accountType指定是手机号重置还是邮箱重置,只有手机号重置时,需要传入验证码,验证码可以通过获取手机验证码的接口获取。邮箱重置时,手机验证码传nil。重置结果通过密码修改的回调返回。

代码示例:

    gdaResetPassword.resetPassword(“YOUR_USERNAME”, “YOUR_PHONE_VERIFYCODE”, “YOUR_NEW_PASSWORD”, YOUR_THIRD_ACCOUNT_TYPE);
  • 修改密码

    用户实名登录后可以修改密码,修改结果通过密码修改的回调返回。

代码示例:

    gdaLogin.changeUserPassword(“YOUR_LOGIN_TOKEN”, “YOUR_OLD_PASSWORD”, “YOUR_NEW_PASSWORD”);

修改用户信息

  • 注册修改用户信息的监听

代码示例:

    GizDataAccessLogin gdaChangeUserInfo = new GizDataAccessLogin(this);
  • 实现修改用户信息的回调方法

代码示例:

public void didChangeUserPassword(GizDataAccessErrorCode result, String message) {
    if(result == kGizDataAccessErrorNone) {
        // 密码重置成功
        // ……
    }
}
  • 修改用户信息

    用户实名登录后可以修改手机号或邮箱,accountType指定是要修改手机号还是邮箱。只有修改手机号时,需要传入验证码,验证码可以通过获取手机验证码的接口获取。修改邮箱时,验证码传nil。修改结果通过用户信息修改的回调返回。

代码示例:

    gdaLogin.changeUserInfo(“YOUR_TOKEN”, “YOUR_USERNAME”, “YOUR_PHONE_VERIFYCODE”, YOUR_THIRD_ACCOUNT_TYPE];

匿名转换

  • 注册匿名转换的监听

代码示例:

    GizDataAccessLogin gdaLogin = new GizDataAccessLogin(this);
  • 实现匿名转换的回调方法

代码示例:

public void didTransAnonymousUser(GizDataAccessErrorCode result, String message) {
    if(result == kGizDataAccessErrorNone) {
        // 匿名转换成功
        // ……
    }
}
  • 匿名转换

    匿名登录后,可以转换成普通用户、手机号用户或邮箱用户,您可以通过accountType参数指定要转换的用户类型。转成手机号用户时,需要传入验证码,验证码可以通过获取手机验证码的接口获取。其他用户类型,验证码传nil。转换结果通过匿名转换的回调返回。

代码示例:

    gdaLogin.transAnonymousUser(“YOUR_TOKEN”, “YOUR_USERNAME”, “YOUR_NEW_PASSWORD”, “YOUR_PHONE_VERIFYCODE”, accountType:YOUR_THIRD_ACCOUNT_TYPE];

获取手机验证码

  • 注册手机验证码的监听

代码示例: GizDataAccessLogin gdaVerifyCode = new GizDataAccessLogin(this);

  • 实现手机验证码的回调方法

代码示例:

public void didRequestSendVerifyCode(GizDataAccessErrorCode result, String message) {
    if(result == kGizDataAccessErrorNone) {
        // 获取到了手机验证码
        // ……
    }
}
  • 获取手机验证码

    在用户注册、信息修改、匿名用户转换等过程中,手机验证码可以通过此方法获取。验证码通过手机验证码的回调返回。

代码示例:

    gdaLogin.requestSendVerifyCode(“PHONE_VERIFY_CODE”);

用户账号类型

codemessage
0 normal user
1 phone user
2 email user

第三方账号类型

codemessage
0 sina account
1 baidu account
2 qq account

错误码

codemessage
0success
8001 connection_failed
8002 connection_timeout
8003 invalid parameters
9002 product_key invalid
9003 appid invalid
9004 token invalid
9005 user not exists
9006 token expired
9008 server error
9009 code expired
9010 code invalid
9015 form invalid
9018 phone unavailable
9019 username unavailable
9020 username or password error
9999 reserved