# MinewToolsKit 说明文档
本套SDK仅支持Minew公司出品的蓝牙智能锁设备。通过SDK可以帮助开发者处理手机和智能锁之间的一切工作,包括:扫描蓝牙智能锁,广播数据、开锁,读取设备信息,固件升级等。
# 前期工作
整体框架:ScanLockManager
为设备管理类,在APP运行时始终是单例。LockModule
是设备实例类,此套件会为每一个设备生成一个实例,在扫描和连接后都会使用,内部包含设备广播数据,该数据会随着设备不停广播而更新
ScanLockManager
:设备管理类,可以扫描周围的智能锁设备,和停止蓝牙扫描。
LockModule
:扫描时获取到的设备实例,对应蓝牙智能锁设备,在扫描和连接后都会使用
# 导入到工程
开发环境
sdk最低支持Android 5.0,对应API Level为21。在module的
build.gradle
中设置minSdkVersion
为21或21以上android { defaultConfig { applicationId "com.xxx.xxx" minSdkVersion 21 } }
1
2
3
4
5
6
7将
MinewWristbandKit.jar
添加到module的libs文件夹下,并在该module
的build.gradle
中添加如下语句(直接添加依赖):implementation files('libs/MinewToolsKit.jar') implementation 'org.lucee:bcprov-jdk15on:1.52.0'
1
2或者右键该jar文件,选择
Add as Library
,添加到当前module在
AndroidManifest.xml
需要以下权限,如果targetSdkVersion
大于23,则需要做权限管理以获取权限<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
1
2
3
4
# 使用
# 开始扫描
Android6.0系统以上,进行BLE扫描,需要申请到定位权限后才可以进行,并且需要打开定位开关!
MinewLockCenterManager mLockCenterManager = MinewLockCenterManager.getInstance(context);
mLockCenterManager.getScanLockManager().startScan(new OnScanLockResultListener(){
@Override
public void onScanLockResult(List<LockModule> scanLockList) {
//scan result
}
});
2
3
4
5
6
7
8
sdk内部并没有对蓝牙扫描时长进行处理,但是扫描是耗电操作,一般90秒就可以停止扫描了,如果还需要继续扫描,可以提供刷新等操作以便继续扫描。
# 取出数据
在扫描期间,sdk获取到的广播数据存储在广播帧里,扫描到的设备 mac 地址放在了 List<LockModule> 里的 LockModule.getMacAddress() ,对设备的一系列操作都需要用到。 LockModule 中还存有帧信息 LockModule .getMinewFrame(FrameType type),
目前有这些帧:FrameType.DEVICE_INFO_FRAME;HISTORY_ERROR_INFO_FRAME,暂时未用到
# 对智能锁设备进行操作
目前智能锁的操作主要有:开锁,读取设备信息,固件升级,每个操作都是先连接智能锁,再发送相应的指令到智能锁执行相应的步骤,每个操作完成后,都会自动断开智能锁的连接,无需再进行断开设备处理
MinewLockCenterManager mCenterManager = MinewLockCenterManager.getInstance(context);
//在对智能锁进行操作前,调用才方法,初始化操作次数和并且开启 10 秒超时计时
mCenterManager.getConnLockManager().initOperaState();
/*
* 连接过程中的状态回调
*
* @param context上下文
* @param LockModule 要连接的设备
* @param OperationType 操作类型
* 开锁 OperationType.OPERA_OPEN_LOCK;读取设备信息 OperationType.OPERA_READ_DEVICE;
* 固件升级有两个步骤 OperationType.OPERA_OTA1,OperationType.OPERA_OT2,
* connect()方法用到OPERA_OTA1
* @param OnConnStateListener 操作的接口返回状态
*/
mCenterManager.getConnLockManager().connect(context, LockModule,OperationType,
new OnConnStateListener() {
@Override
public void onOperaLockState(String macAddress, ConnectionState connectionState,
ConnectionState operaState,
boolean operaResult, String result) {
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
固件升级;
/**
* 固件升级
*
* @param macAddress 设备mac
* @param data 升级包数据 byte[] data
* @param OperationType.OPERA_OTA2
* @param listener 监听器
*/
manager.firmwareUpgrade(macAddress, data, OperationType.OPERA_OTA2, new OnFirmwareUpgradeListener
new OnFirmwareUpgradeListener() {
/**
* 升级包数据写入进度
*/
@Override
public void startUpgrade() {
}
/**
* 升级包数据写入进度
*/
@Override
public void updateProgress(int progress) {
}
/**
* 升级成功
*/
@Override
public void upgradeSuccess() {
}
/**
* 升级失败
*/
@Override
public void upgradeFailed() {
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# API汇总
# 连接前
startScan(): 开始扫描。每次开始扫描都会清除上一次扫描的所有结果
stopScan(): 停止扫描
connect(Context context, LockModule lockModule,OperationType operationType, OnConnStateListener listener ): 对智能锁进行操作
disConnect(String macAddress): 断开连接
initOperaState(): 操作前的初始化
# 附表
无
# 更新历史
# 2020/10/15
- sdk使用说明;