Android BLE锁SDK 说明
<p>[TOC]</p>
<h2>Android BLE锁SDK 使用说明</h2>
<p>[售前咨询](<a href="https://www.showdoc.com.cn/1014034257250686/11408054792643053">https://www.showdoc.com.cn/1014034257250686/11408054792643053</a> "售前咨询")</p>
<p>仅支持Android6+</p>
<h3>用到的权限</h3>
<pre><code> &lt;uses-permission android:name=&quot;android.permission.BLUETOOTH&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.BLUETOOTH_ADMIN&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.ACCESS_COARSE_LOCATION&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.ACCESS_NETWORK_STATE&quot; /&gt;</code></pre>
<h3>下载地址</h3>
<ol>
<li>[SDK](<a href="https://xunmingiot.oss-cn-beijing.aliyuncs.com/Android/classes.jar">https://xunmingiot.oss-cn-beijing.aliyuncs.com/Android/classes.jar</a> "SDK")</li>
<li>[DEMO](<a href="https://xunmingiot.oss-cn-beijing.aliyuncs.com/Android/demo.zip">https://xunmingiot.oss-cn-beijing.aliyuncs.com/Android/demo.zip</a> "DEMO")</li>
</ol>
<h3><strong>使用方法</strong></h3>
<pre><code class="language-java">import com.xunmingiot.blesdk.ble.BleLockListener;
import com.xunmingiot.blesdk.ble.OpenApi;
public class OpenActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = &quot;OpenActivity&quot;;
private EditText edTextMac;
private EditText edTextPwd;
private Button btnStart;
private TextView resE;
private TextView resM;
private String mac = &quot;AA:BB:11:22:33:12&quot;;
private String pwd = &quot;00000000&quot;;
private final BleLockListener bleLockListener = new BleLockListener() {
@Override
public void onReadBleLockStatus(Map&lt;String, String&gt; res) {
}
@Override
public void onUnlock(Map&lt;String, String&gt; res) {
}
@Override
public void onFail(Map&lt;String, String&gt; res) {
}
@Override
public void onReadConfig(Map&lt;String, String&gt; res) {
}
@Override
public void onSetConfig(Map&lt;String, String&gt; res) {
}
@Override
public void onSetPassword(Map&lt;String, String&gt; res) {
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(&quot;开锁&quot;);
setContentView(R.layout.activity_open);
initView();
}
private void initView() {
edTextMac = (EditText) findViewById(R.id.ed_text_mac);
edTextPwd = (EditText) findViewById(R.id.ed_text_pwd);
btnStart = (Button) findViewById(R.id.btn_start);
resE = (TextView) findViewById(R.id.res_e);
resM = (TextView) findViewById(R.id.res_m);
btnStart.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_start:
//获取mac和pwd
// 1. mac地址
// 2. password
// 3. bleLockListener
// 4. 扫描超时时间(ms) 可不传默认25s
// 5. config 配置(16进制字符串20位)
// 6. 新旧密码8位字母/数字,区分大小写
OpenApi.openLock(OpenActivity.this, mac, pwd, bleLockListener, 10000);
OpenApi.getLockStatus(this, mac, password, bleLockListener);
OpenApi.getLockConfig(this, mac, password, bleLockListener);
String config = &quot;11044C100A000103200B&quot;;
OpenApi.setLockConfig(this, mac, password, config, bleLockListener);
String oldPwd_1 = &quot;11111111&quot;;
String newPwd_1 = &quot;00000000&quot;;
OpenApi.setLockPassword(this, mac, oldPwd_1, newPwd_1, bleLockListener);
}
}
private String isMac(String mac) {
if (BluetoothAdapter.checkBluetoothAddress(mac)) {
return mac;
} else {
return null;
}
}
}</code></pre>
<h3><strong>已暴露openApi接口</strong></h3>
<ul>
<li>openLock(Context ctx,String mac,String pwd,BleLockListener listener,int timeout)</li>
<li>getLockStatus(Context ctx,String mac,String pwd,BleLockListener listener,int timeout)</li>
<li>getLockConfig(Context ctx,String mac,String pwd,BleLockListener listener,int timeout)</li>
<li>setLockConfig(Context ctx,String mac,String pwd,String config,BleLockListener listener,int timeout)</li>
<li>setLockPassword(Context ctx,String mac,String pwd,String newPwd,BleLockListener listener,int timeout)</li>
</ul>
<h3><strong>config解析</strong></h3>
<p><strong>11044C100A000103200B</strong></p>
<ul>
<li>11 :11/10 是/否开启设备主动断开蓝牙连接</li>
<li>044C: 16进制(0-65535)主动断开蓝牙连接的时间,单位10ms(044C->1100->11秒)</li>
<li>10: 11/10 是/否开启开锁重试</li>
<li>0A:16进制 开锁重试次数(0-255)(0A->10次)</li>
<li>0001:16进制 每次开锁保持时间(单位10ms)范围0-65535</li>
<li>0320:16进制 蓝牙广播频率(单位0.625ms) 不可超过5s,正常使用在500ms-1000ms</li>
<li>0B: 16进制 信号发射功率 决定蓝牙设备的信号强度 范围 1-15,功率过高,频率过快会增加待机电量损耗,正常使用11</li>
</ul>
<h3><strong>onFail错误码</strong></h3>
<ul>
<li>0004: 扫描超时</li>
<li>0003: 非正常于设备断开连接</li>
<li>0001:密码错误</li>
<li>0002: 锁被卡住(用于钛丝锁未拉开钛丝的情况)</li>
</ul>
<h3><strong>注意</strong></h3>
<ul>
<li>Android 需要检查Location权限,请自行向用户申请权限</li>
<li>若开启蓝牙主动断开,则主动断开时间应大于开锁重试次数于每次开锁保持时间的乘积,否则会出现提示开锁失败但是锁过会儿才打开的情况</li>
</ul>