SDK使用rxjava
和lambda语法
制作,请务必熟悉rxjava
和lambda语法
的使用。
- 项目根目录下
build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
- app下
build.gradle
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
allprojects {
apply plugin: 'me.tatarka.retrolambda'
}
dependencies {
compile 'com.alibaba:fastjson:1.1.56.android'
}
- 添加2个jar包
- 添加
.so
文件
将jniLibs目录下文件拷贝到项目相同目录中
- 在
Application
中初始化sdk
StwSDK.init(this);
- 在合适的地方载入配置文件
StwSDK.getInstance().setConfig();
SDK未加入权限的判断和申请,请自行处理。anroid 6.0及以上需要gps权限。 结束activity时请务必解除所有订阅!
Subscription scanSub = StwSDK.getInstance().scan().subscribe(device -> {
});//开始扫描
scanSub.unsubscribe();//取消扫描
StwSDK.getInstance().connect("AA:BB:CC:DD:EE:FF");//不自动重连
StwSDK.getInstance().connect("AA:BB:CC:DD:EE:FF",1000);//自动重连,第二个参数为超时时间
StwSDK.getInstance().disConnect();
StwSDK.getInstance().bleState().subscribe(state -> {
switch (state) {
case CONNECTED:
break;
case DISCONNECT:
break;
case CONNECTTING:
break;
}
});
电子烟状态改变时会发射StwBean
,再通过switch获取StwBean
内的数据。
StwSDK.getInstance().bleData().subscribe(data -> {
switch (data.getCommandType()) {
case BATTERY:
data.getBattery();
break;
case POWER:
break;
case VOLTAGE:
break;
case TEMPERATURE:
break;
case BYPASS:
break;
case CUSTOM:
break;
case TCR:
break;
case VERSION:
break;
case LINE_DATA:
break;
case ATOMIZER:
break;
}
});
大部分api都加入了异常,当模式不支持或数值有误时进入异常。
传入数值为实际功率10倍
try
{
StwSDK.getInstance().setModePower(500);
}
catch (BleException e){}
传入数值为实际电压100倍
try
{
StwSDK.getInstance().setModeVoltage(500);
}
try
{
StwSDK.getInstance().setModeTemp(TemperatureUnit.Celsius, 300, Atomizer.Ni, true);
}
catch (BleException e){}
18个字节以内
StwSDK.getInstance().setName("STW");
StwSDK.getInstance().getWorkMode();
StwSDK.getInstance().updata(binbytes,OnUpdataLisener);
StwSDK.getInstance().updataCancel();
new StwSDK.OnUpdataLisener() {
@Override
public void onUpdata(int i) {
//升级进度 i 1~100
}
@Override
public void onSuccess() {
//升级成功
}
@Override
public void onFile(int i) {
//升级失败,错误码 i
}
}