轻量级设备方案 Android APP SDK文档

1 SDK概述

1.1 SDK功能概述

SDK包含设备绑定、设备控制、设备信息获取、设备解绑以及OTA升级等接口,方便开发者在App开发过程中对设备进行相关操作。SDK包含一个原型App开发者可以通过在原型App的基础上开发自己的App,也可以参照原型App开发自己的App。

1.2 名词解释

Status Code Method
AppKey 开发者在开放平台申请的账号后创建应用后会生成对应的AppKey
SecretKey 开发者在开放平台申请的账号后创建应用后会生成对应的SecretKey
AccessToken 表示用户身份的Token,调用各类App时需要,用户登录百度账号授权后可获得。注:也可使用第三方账号体系,登陆后将其传入即可
HttpCode 调用网络请求接口Http状态码
ResponseCode 调用网络请求接口时内部状态码
Message 调用网络请求时对应ResponseCode的状态信息

1.2.1 HttpCode说明

Status Code Method 说明
200 GET/POST 成功返回用户数据
201 POST/PUT 用户新建或者修改数据成功
202 * 成功收到一个请求(异步处理)
204 DELETE 成功删除
401 * 用户验证错误(比如token错误,密码错误)
403 * 用户不具备权限(但是用户本身的验证是通过的)
404 * URI或者资源不存在
405 * method不支持
406 * request格式错误(比如是xml格式,或者缺少某些关键参数)
500 * 服务器本身错误

1.2.2 ResponseCode说明

code 含义
0 正常返回,此时message为空
1001 认证失败
2001 资源不存在
2002 参数错误
2003 内部数据错误
3000 数据库错误
1201 项目名称无效
1202 项目描述无效
1203 项目名称不存在
1204 项目id错误
1205 注册版本无效
1206 注册硬件版本无效
1207 注册设备数目无效
1208 设备id无效
1210 设备已经被绑定
1223 app没有绑定产品
1301 一组设备id无效
1302 地域无效
1303 账号无效
1304 项目id无效
1305 relativeUri无效
1306 超时时长无效
1307 protocol无效
1308 method无效
1309 taskId无效
1310 设备id无效
1401 时间无效
1501 文件不存在
1502 文件格式出错
1503 创建ota包出错
1504 ota版本出错
1505 ota状态出错

2 集成准备

2.1 Android Studio集成

下载 aar文件 并复制到项目 /app/src/aar/ 目录,在gradle文件中添加依赖

repositories{
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile(name: 'duer-light-android-sdk-{$version}-release', ext: 'aar')
    compile 'com.google.code.gson:gson:2.4'
}

注意:上述{$version}指的是SDK版本,请根据下载的SDK进行导入

2.2 apk Android签名证书的MD5值获取方式

调用如下类中的getAppSignature方法即可获取其sha1值

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.text.TextUtils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SignatureUtils {
    private static final char[] HEXCHARS = {
            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
    };

    public static String getAppSignature(Context context) {
        String signStr = null;
        if (TextUtils.isEmpty(signStr)) {
            PackageManager pm = context.getPackageManager();
            try {
                PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
                signStr = computeMd5HexString(packageInfo.signatures[0].toByteArray());
            } catch (PackageManager.NameNotFoundException e) {
            }
        }
        return signStr;
    }

    private static String computeMd5HexString(byte[] data) {
        try {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(data);
            return encodeHexString(md5.digest());
        } catch (NoSuchAlgorithmException e) {
        }
        return null;
    }

    private static String encodeHexString(byte[] data) {
        StringBuilder sb = new StringBuilder(data.length * 2);
        for (int i = 0; i < data.length; i++) {
            sb.append(HEXCHARS[(data[i] & 0xf0) >>> 4]);
            sb.append(HEXCHARS[data[i] & 0x0f]);
        }
        return sb.toString();
    }
}

2.3 AndroidManifest.xml配置

在AndroidManifest.xml添加如下配置

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name">
    <!-- begin: duer iot sdk -->
    <meta-data
        android:name="com.baidu.dueriot.APP_KEY"
        android:value="your app key" />
    <meta-data
        android:name="com.baidu.dueriot.SECRET_KEY"
        android:value="your api secret" />
    <!-- end : duer iot sdk -->
    <activity
        android:name="com.baidu.iot.sdk.iam.SdkOauthActivity"
        android:screenOrientation="portrait" />
</application>

2.4 proguard规则

-allowaccessmodification

-keepattributes SourceFile,LineNumberTable,Signature,Exceptions,InnerClasses,EnclosingMethod
-keepparameternames
-keepattributes Signature

-dontwarn com.google.gson**
-dontwarn com.baidu.iot**

-keep class com.baidu.iot.sdk.* { *; }
-keep class com.baidu.iot.sdk.iam.** { *; }
-keep class com.baidu.iot.sdk.model.** { *; }
-keep class com.baidu.iot.sdk.net.** { *; }

3 SDK功能

3.1 整体结构介绍

  • IoTSDKManager:SDK API管理类,通过此类初始化SDK、获取各类API访问实例、获取用户信息、操作账号等功能
  • IoTRequestListener各类网络请求接口回调类
  • IAMWebView用于用户登录授权时封装的WebView
  • HttpStatus网络请求返回的状态信息,包含HttpCode、ResponseCode以及对应的Message 含义参照名词解释

3.2 接口说明

3.2.1 SDK初始化

IoTSDKManager.initSDK

接口功能描述

初始化SDK,在自定义Application或者MainActivity中调用如下方法,保证在调用IoT SDK接口前完成初始化,此方法可以在主线中调用。

前置条件

传入参数

类型 名称 描述
Context context 当前Context对象

回调函数

实例

IoTSDKManager.getInstance().initSDK(context);

3.2.2 登陆授权(百度账号有效)

IAMWebView.login

接口功能描述

登陆百度账号

前置条件

传入参数

类型 名称 描述
LoginCallback callback 登陆回调

回调函数

回调参数将在回调方法LoginCallback.onFinish中传递,返回登陆状态

实例

IAMWebView webView = (IAMWebView) findViewById(R.id.webview);
webView.login(new IAMWebView.LoginCallback() {
    @Override
    public void onFinish(boolean isSuccess) {
        if (isSuccess) {
           // login success
       }
    }
});
IoTSDKManager.getAccessToken

接口功能描述

获取用户AccessToken,包含token以及以及有效时间。AccessToken可以和开发者自身的账号体系进行对接。

前置条件

传入参数

回调函数

实例

IoTSDKManager.getInstance().getAccessToken();
IoTSDKManager.requestUserInfo

接口功能描述

异步获取用户UserInfo,UserInfo中包含用户名、账号类型等信息

前置条件

传入参数 类型 名称 描述
Context context
IoTRequestListener listener 请求回调

回调函数 回调参数UserInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().requestUserInfo(context,new IoTRequestListener<UserInfo>() {
    @Override
    public void onSuccess(HttpStatus code, UserInfo obj, PageInfo info) {
        // obj为UserInfo实例
    }
    @Override
    public void onFailed(HttpStatus code) {
    }
    @Override
    public void onError(IoTException error) {
    }
});
IoTSDKManager.logout

接口功能描述

退出当前用户账号

前置条件

传入参数

回调函数

实例

IoTSDKManager.getInstance().logout();
IoTSDKManager.setAccessToken

接口功能描述

设置第三方登陆后的AccessToken

前置条件

传入参数

类型 名称 描述
AccessToken accessToken 表示用户身份的Token

回调函数

实例

IoTSDKManager.getInstance().setAccessToken(accessToken);

3.2.3 设备相关接口

和设备相关的接口使用DeviceAPI调用,通过IoTSDKManager.createDeviceAPI()获取DeviceAPI实例。

DeviceAPI.bindDevice

接口功能描述

设备绑定需要设备的deviceUuid以及设备的token,开发者可以使用二维码扫描的方式扫描设备上二维码获取到,也可以通过用户手动输入获取。

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
String deviceToken 设备bind token
IoTRequestListener listener 请求回调

回调函数

回调参数DeviceInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().bindDevice(uuid, token, new IoTRequestListener<Boolean >() {
    @Override
    public void onSuccess(HttpStatus code, Boolean obj, PageInfo info) {
        if (obj.equals(true)) {
            // 绑定成功
        } else {
            if (code.getClientId() != null && code.getClientSecret() != null) {
            // needAuth
            // 使用bindNewDevice接口授权后再次绑定
            }
        }
    }

    @Override
    public void onFailed(HttpStatus code) {
        if (code.getResponseCode() == 1229){
            //该设备已被其他账号绑定
        } else if (code.getResponseCode() == 1223) {
            //App没有绑定该产品
        } else {
            //绑定失败
        }
    }

    @Override
    public void onError(IoTException error) {
        //绑定异常
    }
});
DeviceAPI.bindNewDevice

接口功能描述

绑定其他新产品的设备时需要调用此接口授权后绑定

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
String deviceToken 设备bind token
String clientid 新产品clientid
String clientSecret 新产品client secret
IoTRequestListener listener 请求回调

回调函数

回调参数DeviceInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().bindDevice(uuid, token, clientid, clientSecret, new IoTRequestListener<Boolean >() {
    @Override
    public void onSuccess(HttpStatus code, Boolean obj, PageInfo info) {
        if (obj.equals(true)) {
            // 绑定成功
        }
    }

    @Override
    public void onFailed(HttpStatus code) {
        if (code.getResponseCode() == 1229){
            //该设备已被其他账号绑定
        } else if (code.getResponseCode() == 1223) {
            //App没有绑定该产品
        } else {
            //绑定失败
        }
    }

    @Override
    public void onError(IoTException error) {
        //绑定异常
    }
});
DeviceAPI.unBindDevice

接口功能描述

根据设备uuid解除设备绑定,解除绑定后无法再控制设备与获取设备信息

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
IoTRequestListener listener 请求回调

回调函数

回调参数DeviceInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().unBindDevice(uuid, new IoTRequestListener<Boolean>() {
    @Override
    public void onSuccess(HttpStatus code, Boolean obj, PageInfo info) {
        if (obj) {
            //解绑成功
        }
    }

    @Override
    public void onFailed(HttpStatus code) {
        //解绑失败
    }

    @Override
    public void onError(IoTException error) {
        //解绑异常
    }
});
DeviceAPI.getDeviceInfo

接口功能描述

根据deviceUuid获取到单个设备的信息,异步返回DeviceInfo

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
IoTRequestListener listener 请求回调

回调函数

回调参数DeviceInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().getDeviceInfo(uuid, new IoTRequestListener<DeviceInfo>() {
    @Override
    public void onSuccess(HttpStatus code, DeviceInfo obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
DeviceAPI.getUnbindDeviceInfo

接口功能描述

根据deviceUuid获取到单个未绑定的设备的信息,异步返回DeviceInfo

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
String bindToken 设备bindToken
IoTRequestListener listener 请求回调

回调函数

回调参数DeviceInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().getUnbindDeviceInfo(uuid, bindToken, new IoTRequestListener<DeviceInfo>() {
    @Override
    public void onSuccess(HttpStatus code, DeviceInfo obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
DeviceAPI.getUserAllDevices

接口功能描述

获取当前登录用户的所有设备信息,异步返回设备列表。支持分页,通过PageInfo设置start和limit,如果PageInfo为空则默认查询所有

前置条件

传入参数

类型 名称 描述
IoTRequestListener listener 请求回调
PageInfo pageInfo 分页信息

回调函数

回调参数DeviceInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().getUserAllDevices(new IoTRequestListener<List<DeviceInfo>>() {

    @Override
    public void onSuccess(HttpStatus code, List<DeviceInfo> obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
}, null);
DeviceAPI.setDeviceName

接口功能描述

通过设备deviceUuid修改设备别名,异步返回设备新信息

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
String name 新设备名称
IoTRequestListener listener 请求回调

回调函数

回调参数DeviceInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().setDeviceName(uuid, "New Name", new IoTRequestListener<DeviceInfo>() {
    @Override
    public void onSuccess(HttpStatus code, DeviceInfo obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
DeviceAPI.getDeviceResource

接口功能描述

根据设备deviceUuid获取设备的自描述资源 设备自描述资源是指设备支持的相关属性,通过DeviceResource对这些属性进行描述。开发者可以使用这些属性对设备进行控制,读取设备的信息

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
IoTRequestListener listener 请求回调

回调函数

回调参数DeviceResource将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().getDeviceResource(uuid, new IoTRequestListener<DeviceResource>() {
    @Override
    public void onSuccess(HttpStatus code, DeviceResource obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
DeviceAPI.controlDevice

接口功能描述

根据自描述资源中描述的参数类型,范围传入参数控制设备。成功调用后会返回对应的任务id。 支持对批量设备进行控制。

前置条件

根据DeviceAPI.getDeviceResource获取到的设备自描述资源控制设备。

传入参数

类型 名称 描述
String device 设备uuid
DeviceResource.Resource resource 设备自描述资源
RequestMethod protocol method
Object value 参数值
IoTRequestListener listener 请求回调

回调函数

回调参数ControlResult将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().controlDevices(device, resource, method, value, new IoTRequestListener<ControlResult>() {
    @Override
    public void onSuccess(HttpStatus code, ControlResult obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
}); 
DeviceAPI.getDeviceHistory

接口功能描述

根据设备的uuid,查询某个时间段内某个数据点上报的历史数据,支持分页查询

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
String propertyKey 数据点名称
String startTime 起始时间 格式"yyyy-MM-dd HH:mm:ss"
String endTime 结束时间 格式"yyyy-MM-dd HH:mm:ss"
IoTRequestListener listener 请求回调
PageInfo info 分页信息

回调函数

回调参数List PropertyData IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().getDeviceHistory(uuid, propertyKey, startTime, endTime, new IoTRequestListener
    @Override
    public void onSuccess(HttpStatus code, List<PropertyData> obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
}, null);
DeviceAPI.getDeviceHistory

接口功能描述

根据设备的uuid,查询某个时间段内某个数据类型(控制数据点、上报数据点)上报的历史数据,支持分页查询

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
PropertyType propertyType 数据点类型
String startTime 起始时间 格式"yyyy-MM-dd HH:mm:ss"
String endTime 结束时间 格式"yyyy-MM-dd HH:mm:ss"
IoTRequestListener listener 请求回调
PageInfo info 分页信息

回调函数

回调参数List PropertyData IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().getDeviceHistory(uuid, propertyType, startTime, endTime, new IoTRequestListener
    @Override
    public void onSuccess(HttpStatus code, List<PropertyData> obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
}, null);
DeviceAPI.getDevicePropertyData

接口功能描述

根据设备的uuid,查询某个数据点的实时数据

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
String propertyKey 数据点名称
IoTRequestListener listener 请求回调

回调函数

回调参数PropertyData IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().getDevicePropertyData(uuid, propertyKey, new IoTRequestListener
    @Override
    public void onSuccess(HttpStatus code, PropertyData obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
}, null);
DeviceAPI.getDevicesOnlineStatus

接口功能描述

查询一组设备的uuid在线状态

前置条件

传入参数

类型 名称 描述
String[] deviceUuids 一组设备uuid
IoTRequestListener listener 请求回调

回调函数

回调参数List DeviceOnlineStatus Listener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createDeviceAPI().getDevicesOnlineStatus(deviceUuids, new IoTRequestListener
    @Override
    public void onSuccess(HttpStatus code, List<DeviceOnlineStatus> obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
DeviceAPI.getPlayInfo

接口功能描述

获取设备当前播放的音频信息(仅能获取百度音乐和有声资源信息) 耗时同步接口,请在非UI线程里调用

前置条件

传入参数

类型 名称 描述
String[] deviceUuid 设备uuid

返回值

返回MusicSong或者AudioTrack

实例

Object audioObject = IoTSDKManager.getInstance().createDeviceAPI().getPlayInfo(deviceUuid);

3.2.4 OTA相关接口

和OTA升级相关的接口使用UpdateAPI调用,通过IoTSDKManager.createUpdateAPI()获取UpdateAPI实例。

UpdateAPI.checkOta

接口功能描述

根据设备uuid查询该设备OTA信息

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
IoTRequestListener listener 请求回调

回调函数

回调参数List将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createUpdateAPI().checkOta(uuid, new IoTRequestListener<DeviceOtaInfo>() {
    @Override
    public void onSuccess(HttpStatus code, DeviceOtaInfo otaInfo, PageInfo info) {
        if (otaInfo.isUpdating) {
            //正在更新固件
        } else if (otaInfo.newOsVersion != null) {
            //可更新到固件版本:otaInfo.newOsVersion
        } else {
            //当前是最新版本
       }
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
UpdateAPI.getOtaPackageInfo

接口功能描述

根据OTA packageId查询OTA升级包信息

前置条件

根据UpdateAPI.checkOta获取到的OTA packageId

传入参数

类型 名称 描述
String packageId OTA包id
IoTRequestListener listener 请求回调

回调函数

回调参数OtaPakageInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createUpdateAPI().getOtaPackageInfo(packageId, new IoTRequestListener<OtaPackageInfo>() {
    @Override
    public void onSuccess(HttpStatus code, OtaPackageInfo obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
UpdateAPI.createOtaTask

接口功能描述

根据DeviceOtaInfo传入参数执行设备升级。成功调用后会返回OTA任务是否创建成功。

前置条件

UpdateAPI.checkOta获取到的DeviceOtaInfo

传入参数

类型 名称 描述
DeviceOtaInfo otaInfo OTA信息实体
IoTRequestListener listener 请求回调

回调函数

回调参数DeviceOtaInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createUpdateAPI().createOtaTask(otaInfo, new IoTRequestListener<Boolean>() {
    @Override
    public void onSuccess(HttpStatus code, Boolean obj, PageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
UpdateAPI.getOtaTaskStatus

接口功能描述

根据设备uuid传入参数查询OTA状态

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
IoTRequestListener listener 请求回调

回调函数

回调参数OtaTaskInfo将在回调方法IoTRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createUpdateAPI().getOtaTaskStatus(deviceUuid, new IoTRequestListener<OtaTaskInfo>() {
    @Override
    public void onSuccess(HttpStatus code, OtaTaskInfo obj, PageInfo info) {
        if (obj.status == OtaTaskInfo.OtaStatus.SUCCESS) {
            //升级成功
        } else if (obj.status == OtaTaskInfo.OtaStatus.FAILED) {
            //升级失败
        }
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});

3.2.5 有声资源相关接口

和有声资源相关的接口使用AudioAPI调用,通过IoTSDKManager.createAudioAPI()获取AudioAPI实例。

AudioAPI.getCategoryList

接口功能描述

获取有声资源分类信息

前置条件

传入参数

类型 名称 描述
AudioRequestListener listener 请求回调

回调函数

回调参数List将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudionAPI().getCategoryList(new AudioRequestListener<List<AudioCategory>>() {
    @Override
    public void onSuccess(HttpStatus code, List<AudioCategory> obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
AudioAPI.getAlbumList

接口功能描述

获取有声资源专辑列表信息

前置条件 传入从getCategoryList获取的分类名称

传入参数

类型 名称 描述
String category 分类名称
AudioRequestListener listener 请求回调
AudioPageInfo pageInfo 分页信息

回调函数

回调参数List将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudioAPI().getAlbumList(category, new AudioRequestListener<List<AudioAlbum>>() {
    @Override
    public void onSuccess(HttpStatus code, List<AudioAlbum> obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
}, null);
AudioAPI.getAlbumDetail

接口功能描述

获取有声资源专辑详情

前置条件 传入获取到的专辑id

传入参数

类型 名称 描述
String albumId 专辑id
AudioRequestListener listener 请求回调

回调函数

回调参数AudioAlbum将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudioAPI().getAlbumDetail(albumId, new AudioRequestListener<AudioAlbum>() {
    @Override
    public void onSuccess(HttpStatus code, AudioAlbum obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
AudioAPI.getTrackList

接口功能描述

获取有声资源专辑资源列表

前置条件 传入获取到的专辑id

传入参数

类型 名称 描述
String albumId 专辑id
AudioRequestListener listener 请求回调
AudioPageInfo pageInfo 分页信息

回调函数

回调参数List将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudioAPI().getTrackList(albumId, new AudioRequestListener<List<AudioTrack>>() {
    @Override
    public void onSuccess(HttpStatus code, List<AudioTrack> obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
}, null);
AudioAPI.getTrackDetail

接口功能描述

获取有声资源track信息

前置条件 传入获取到的track id

传入参数

类型 名称 描述
String trackId track id
AudioRequestListener listener 请求回调

回调函数

回调参数AudioTrack将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudioAPI().getTrackDetail(trackId, new AudioRequestListener<AudioTrack>() {
    @Override
    public void onSuccess(HttpStatus code, AudioTrack obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
AudioAPI.getHistoryTrackList

接口功能描述

获取有声资源历史播放列表

前置条件

传入参数

类型 名称 描述
AudioRequestListener listener 请求回调
AudioPageInfo pageInfo 分页信息

回调函数

回调参数List将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudioAPI().getHistoryTrackList(new AudioRequestListener<List<AudioTrack>>() {
    @Override
    public void onSuccess(HttpStatus code, List<AudioTrack> obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
}, null);
AudioAPI.getInterestTrackList

接口功能描述

获取有声资源推荐列表

前置条件

传入参数

类型 名称 描述
AudioRequestListener listener 请求回调
AudioPageInfo pageInfo 分页信息

回调函数

回调参数List将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudioAPI().getInterestTrackList(new AudioRequestListener<List<AudioTrack>>() {
    @Override
    public void onSuccess(HttpStatus code, List<AudioTrack> obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
},null);
AudioAPI.subscribeAlbum

接口功能描述

订阅有声资源专辑

前置条件 传入获取到的track id

传入参数

类型 名称 描述
String albumId 专辑id
AudioRequestListener listener 请求回调

回调函数

回调参数AudioAlbum将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudioAPI().subscribeAlbum(albumId, new AudioRequestListener<AudioAlbum>() {
    @Override
    public void onSuccess(HttpStatus code, AudioAlbum obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
});
AudioAPI.getSubscribeAlbumList

接口功能描述

获取有声资源专辑订阅列表

前置条件

传入参数

类型 名称 描述
AudioRequestListener listener 请求回调
AudioPageInfo pageInfo 分页信息

回调函数

回调参数List将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createAudioAPI().getInterestTrackList(new AudioRequestListener<List<AudioAlbum>>() {
    @Override
    public void onSuccess(HttpStatus code, List<AudioAlbum> obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
},null);

3.2.6 音乐资源相关接口

和音乐资源相关的接口使用MusicAPI调用,通过IoTSDKManager.createMusicAPI()获取MusicAPI实例。

MusicAPI.getSongDetail

接口功能描述

获取音乐资源歌曲详情

前置条件 传入歌单id

传入参数

类型 名称 描述
String songId 歌曲id
MusicRequestListener listener 请求回调

回调函数

回调参数MusicSong将在回调方法AudioRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createMusicAPI().getSongDetail(sheetId,new AudioRequestListener<List<MusicSong>>() {
    @Override
    public void onSuccess(HttpStatus code, List<MusicSong> obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
},null);
MusicAPI.getPlayHistoryList

接口功能描述

获取音乐资源歌单里歌曲列表

前置条件

传入参数

类型 名称 描述
MusicRequestListener listener 请求回调
MusicPageInfo pageInfo 分页信息

回调函数

回调参数List将在回调方法MusicRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createMusicAPI().getPlayHistoryList(new MusicRequestListener<List<MusicSong>>() {
    @Override
    public void onSuccess(HttpStatus code, List<MusicSong> obj, MusicPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
},null);
MusicAPI.querySongSheet

接口功能描述

通过关键字查询歌单

前置条件

传入参数

类型 名称 描述
String queryString 歌单关键字
MusicQueryEnum type 查询类型(歌手、标签、榜单)
MusicRequestListener listener 请求回调
MusicPageInfo pageInfo 分页信息

回调函数

回调参数List将在回调方法MusicRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createMusicAPI().querySongSheet(String queryString, MusicQueryEnum type, new MusicRequestListener<List<MusicSong>>() {
    @Override
    public void onSuccess(HttpStatus code, List<MusicSong> obj, MusicPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
},null);
MusicAPI.getPlayList

接口功能描述

获取设备当前播放音乐列表

前置条件

传入参数

类型 名称 描述
String deviceUuid 设备uuid
MusicRequestListener listener 请求回调
MusicPageInfo pageInfo 分页信息

回调函数

回调参数List将在回调方法MusicRequestListener.onSuccess中传递,返回data

实例

IoTSDKManager.getInstance().createMusicAPI().getPlayList(deviceUuid, new AudioRequestListener<List<MusicSong>>() {
    @Override
    public void onSuccess(HttpStatus code, List<MusicSong> obj, AudioPageInfo info) {
    }

    @Override
    public void onFailed(HttpStatus code) {
    }

    @Override
    public void onError(IoTException error) {
    }
},null);