MinewToolsKit 说明文档

本套SDK仅支持Minew公司出品的蓝牙智能锁设备。通过SDK可以帮助开发者处理手机和智能锁之间的一切工作,包括:扫描蓝牙智能锁,广播数据、开锁,读取设备信息,固件升级等。

前期工作

整体框架:ScanLockManager为设备管理类,在APP运行时始终是单例。LockModule是设备实例类,此套件会为每一个设备生成一个实例,在扫描和连接后都会使用,内部包含设备广播数据,该数据会随着设备不停广播而更新

ScanLockManager:设备管理类,可以扫描周围的智能锁设备,和停止蓝牙扫描。

LockModule:扫描时获取到的设备实例,对应蓝牙智能锁设备,在扫描和连接后都会使用

导入到工程

  1. 开发环境

    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
  2. MinewWristbandKit.jar添加到module的libs文件夹下,并在该modulebuild.gradle中添加如下语句(直接添加依赖):

    implementation files('libs/MinewToolsKit.jar')
    implementation 'org.lucee:bcprov-jdk15on:1.52.0'
    
    1
    2

    或者右键该jar文件,选择Add as Library,添加到当前module

  3. 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
    }
});

1
2
3
4
5
6
7
8

sdk内部并没有对蓝牙扫描时长进行处理,但是扫描是耗电操作,一般90秒就可以停止扫描了,如果还需要继续扫描,可以提供刷新等操作以便继续扫描。

取出数据

在扫描期间,sdk获取到的广播数据存储在广播帧里,扫描到的设备 mac 地址放在了 List 里的 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) {
        
    }                                                                           
                                             });
1
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() {

 }
});
1
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汇总

连接前

  1. startScan(): 开始扫描。每次开始扫描都会清除上一次扫描的所有结果

  2. stopScan(): 停止扫描

  3. connect(Context context, LockModule lockModule,OperationType operationType, OnConnStateListener listener ): 对智能锁进行操作

  4. disConnect(String macAddress): 断开连接

  5. initOperaState(): 操作前的初始化

附表

更新历史

2020/10/15

  1. sdk使用说明;
上次更新:: 2021/1/19 下午3:19:00