涂鸦智能SDK提供了与硬件设备、涂鸦云通讯的接口封装,加速应用开发过程,主要包括了以下功能:
- 硬件设备相关(配网、控制、状态上报、定时任务、群组、固件升级、共享)
- 账户体系(手机号、邮箱的注册、登录、重置密码等通用的账户功能)
- 消息中心
- 意见反馈
- 涂鸦云HTTP API接口封装
- 增加了场景、头像上传、意见反馈等功能
- 增加了局域网通信的稳定性,修复了部分ANR问题。
- AndroidManifest.xml 有变更,请参考下面文档。
- GwDevResp 被DeviceBean替代,请及时修正。涉及到配网。
- ConfigDeviceErrorCode 被 ErrorCode 替代
- fix crash in some language.
- 4.1兼容问题修复
- 三方Mqtt库迁移出来,底层库稳定性增加,升级时注意添加相关依赖,可参考demo build.gradle配置。
- 增加蓝牙mesh相关功能
- 针对分享进行了升级
- rx混淆配置增加
- 修复定时接口传参有误的问题
- 修复安卓在低版本系统上崩溃的问题
- 修复安卓6.0、7.0个别手机兼容性问题。
- 修复一些空指针问题。
- 增强通信安全
- 第三方类库拆分出来,升级时注意添加相关依赖,可参考demo build.gradle配置。
- 修复个别设备出现非法请求的情况
- 修复异常若干
- 修复局域网连接问题
- 发布局域网搜索设备接口。
- 发布第三方登陆接口。
- IAddMemberCallback void onSuccess(Integer shareId) Integer 需要替换成Long。
- modifyMemberName(int **) 、removeMember(int **) int 需要替换成long 类型。
- Volley 去除。
- apache http server 替换成OKHttp3.0。
- 局域网通信优化。
- 退出接口崩溃bug 修复。
- 局域网通信不稳定问题修复
- 设备网络监听状态变化,导致设备显示离线。问题修复 IDevListener onNetworkStatusChanged();
- 修复只读dp无法上报问题
在Android Studio中建立你的工程。
在工程中新建一个libs目录,将下载好的tuyasmart-xxxx.aar复制到该目录中(如下图所示,建立了一个名为tuyaTest的工程,并把aar包复制到libs目录下)。请前往GitHub获取涂鸦智能Android SDK
build.gradle 文件里添加如下配置
defaultConfig {
ndk {
abiFilters "armeabi-v7a","x86"
}
gradle
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name: ‘tuyasmart-xxx’, ext: ‘aar')
compile 'com.alibaba:fastjson:1.1.45.android'
compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0'
compile 'de.greenrobot:eventbus:2.4.0'
compile 'io.reactivex:rxandroid:1.2.1'
}
android {
lintOptions {
abortOnError false
disable 'InvalidPackage'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/INDEX.LIST'
exclude 'META-INF/services/javax.annotation.processing.Processor'
}
}
涂鸦智能sdk默认只支持armeabi-v7a和x86架构的平台,如有其他平台需要可前往GitHub获取
minSdkVersion 16 targetSdkVersion 25
在AndroidManifest.xml文件里配置appkey和appSecret,在配置相应的权限等
<meta-data
android:name="TUYA_SMART_APPKEY"
android:value="应用id" />
<meta-data
android:name="TUYA_SMART_SECRET"
android:value="应用密钥" />
添加必要的权限支持
<!-- sdcard -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 网络 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
添加必要的service和receiver
<service android:name="org.eclipse.paho.android.service.MqttService" />
<receiver android:name="com.tuya.smart.android.base.broadcast.NetworkBroadcastReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<service
android:name="com.tuya.smart.android.hardware.service.GwBroadcastMonitorService"
android:exported="true"
android:label="UDPService"
android:process=":monitor">
<intent-filter>
<action android:name="tuya.intent.action.udp" />
<category android:name="tuya" />
</intent-filter>
</service>
<!-- 在1.12.0中被废弃了
<service
android:name="com.tuya.smart.android.hardware.service.GwTransferService"
android:exported="true"
android:label="TCPService"
android:process=":transfer">
<intent-filter>
<action android:name="tuya.intent.action.tcp" />
<category android:name="tuya" />
</intent-filter>
</service>
--!>
//新增了Service配置
<service android:name="com.tuya.smart.android.hardware.service.DevTransferService" />
联系我们获取appKey 和 appSercet 设置到xml里。
<meta-data
android:name="TUYA_SMART_APPKEY"
android:value=""/>
<meta-data
android:name="TUYA_SMART_SECRET"
android:value=""/>
主要用于初始化EventBus、通信服务等组件。
public class TuyaSmartApp extends Application {
@Override
public void onCreate() {
super.onCreate();
TuyaSdk.init(this);
}
}
appId和appSecret需要配置AndroidManifest.xml文件里,或者在build环境里配置,也可以在代码里写入。
在退出应用或者退出登陆的时候调用以下接口注销掉。
TuyaUser.getDeviceInstance().onDestroy();
Session由于可能存在一些异常或者在一段时间不操作(45天)会失效掉,这时候需要退出应用,重新登陆获取Session。
//session失效监听
TuyaSdk.setOnNeedLoginListener(INeedLoginListener needLoginListener);
needLoginListener.onNeedLogin(Context context);
TuyaSdk.setOnNeedLoginListener(new INeedLoginListener() {
@Override
public void onNeedLogin(Context context) {
}
});
【注意事项】
- 一旦出现此类回调,请跳转到登陆页面,让用户重新登陆。
错误码 | 描述 |
---|---|
101 | 网络异常 |
102 | json转义失败 |
103 | 网络错误,无法访问网络 |
104 | 手机时钟不对 https证书过期 |
105 | 登陆需要session信息 |
106 | 同步io错误 |
1001 | 配网网络错误 |
1002 | 配网绑定网关失败 |
1004 | 配网获取token失败 |
1005 | 配网检测设备在线状态失败 |
1006 | 配网超时 |
1007 | 配网错误设备列表 |
1100 | 手机号码不正确 |
1101 | 验证码不正确 |
1102 | 升级错误 |
10201 | 设备局域网不在线 |
10202 | 设备云端不在线 |
10203 | 设备不在线 |
11001 | 下发的command格式有误 |
11002 | 设备已被移除 |
11004 | 签名有误 |
11005 | 下发失败 |
11009 | 下发数据为空 |
12001 | 数据解析失败 |
12002 | 签名不一致 |
12003 | 数据过期 |
12004 | 协议号不存在 |