# MinewToolsKit Documentation
This set of SDK only supports Bluetooth smart lock devices produced by Minew. The SDK can help developers handle all the work between the mobile phone and the smart lock, including: scanning the Bluetooth smart lock, broadcasting data, unlocking, reading device information, firmware upgrades, etc.
# Preliminary work
Overall framework: ScanLockManager
is a device management class, which is always a singleton when the APP is running. LockModule
is a device instance class. This kit will generate an instance for each device, which will be used after scanning and connection. It contains device broadcast data, which will be updated as the device continuously broadcasts.
ScanLockManager
:Device management, you can scan the surrounding smart lock devices and stop Bluetooth scanning.
LockModule
:The device instance obtained during scanning corresponds to the Bluetooth smart lock device and will be used after scanning and connecting
# Import to project
Development environment
The SDK supports Android 5.0 at a minimum, and the corresponding API Level is 21. Set
minSdkVersion
to 21or above in module'sbuild.gradle
android { defaultConfig { applicationId "com.xxx.xxx" minSdkVersion 21 } }
1
2
3
4
5
6
7Add
MinewWristbandKit.jar
to the libs folder of the module, and add the following statement inbuild.gradle
of themodule
(add dependencies directly):implementation files('libs/MinewToolsKit.jar') implementation 'org.lucee:bcprov-jdk15on:1.52.0'
1
2Or right click on the jar file and select
Add as Library
to add to the current moduleThe following permissions are required in
AndroidManifest.xml
. IftargetSdkVersion
is greater than 23, you need to do Permission Management to obtain permissions<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
# Usage
# Start scan
For Android 6.0 and above, BLE scanning is only possible after applying for positioning permission, and the positioning switch must be turned on!
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
The sdk does not process the Bluetooth scan duration, but the scan is a power-consuming operation. Generally, the scan can be stopped in 90 seconds. If you still need to continue the scan, you can provide refresh and other operations to continue the scan.
# Take out the data
During scanning, the broadcast data obtained by the SDK is stored in the broadcast frame, and the scanned device mac address is placed in LockModule.getMacAddress() in List<LockModule>, which is required for a series of operations on the device. Frame information is also stored in LockModuleLockModule .getMinewFrame(FrameType type),
There are currently these frames:FrameType.DEVICE_INFO_FRAME;HISTORY_ERROR_INFO_FRAME,暂时未用到
# Operate the smart lock device
At present, the operations of smart locks mainly include: unlocking, reading device information, and firmware upgrades. Each operation is to connect the smart lock first, and then send the corresponding instructions to the smart lock to perform the corresponding steps. After each operation is completed, it will be automatically disconnected. Open the smart lock connection, no need to disconnect the device
MinewLockCenterManager mCenterManager = MinewLockCenterManager.getInstance(context);
//Before operating the smart lock, call the method, initialize the number of operations //and start the 10-second timeout timer
mCenterManager.getConnLockManager().initOperaState();
/*
* Status callback during connection
*
* @param context
* @param LockModule: Device to connect
* @param OperationType: Operation type
* unlock OperationType.OPERA_OPEN_LOCK;
* Read device information: OperationType.OPERA_READ_DEVICE;
* There are two steps to firmware upgrade: OperationType.OPERA_OTA1, OperationType.OPERA_OT2,
* connect()Method used OPERA_OTA1
* @param OnConnStateListener: Operation interface return status
*/
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
24
固件升级;
/**
* Firmware upgrade
*
* @param macAddress: Device mac
* @param data: Upgrade package data byte[] data
* @param OperationType.OPERA_OTA2
* @param listener Listener
*/
manager.firmwareUpgrade(macAddress, data, OperationType.OPERA_OTA2, new OnFirmwareUpgradeListener
new OnFirmwareUpgradeListener() {
/**
* Start firmware upgrade
*/
@Override
public void startUpgrade() {
}
/**
* Upgrade package data writing progress
*/
@Override
public void updateProgress(int progress) {
}
/**
* update successed
*/
@Override
public void upgradeSuccess() {
}
/**
* upgrade unsuccessful
*/
@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 summary
# Before connecting
startScan(): Start scanning. Every time you start a scan, all results of the previous scan will be cleared
stopScan():Stop scanning
connect(Context context, LockModule lockModule,OperationType operationType, OnConnStateListener listener ): Operate the smart lock
disConnect(String macAddress): Disconnect
initOperaState(): Initialization before operation
# Schedule
nothing
# Update history
# 2020/10/15
- Create SDK instructions;