* 前几天售前拿来个电子秤,扔地上说,明天要拿这个取招商,功能就是称完之后在app显示重量...
* 内心一万个cnm,没有需求,没有原型,没有评估。还明天就要!大写的服。
* 抱怨太多也没用。问了下是什么通信协议,--->蓝牙发送数据。
*
* 不多说了,撸起袖子干吧。
* 问了生产商,没有sdk,没有文档。只有说明书,靠。等等...说明书上有解析协议。
* 然后开始。。。翻了下git.不太理想。自己撸吧。
都有注释。。
package com.basexhgx.xhgx.bthutils;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
/**
* Create: 2018/9/20 14:14
*
* @author: Winstronzeng zwq_ay@163.com
* Description: 扫描蓝牙工具类,扫描设置
* Version: 1.0
**/
public class SearchBluetooth {
BluetoothAdapter mBluetootadapter;
//TODO 静态单例内部类
private SearchBluetooth() {
mBluetootadapter = BluetoothAdapter.getDefaultAdapter();
}
public static SearchBluetooth getInstance() {
return SearchBluetooth2.t;
}
private static class SearchBluetooth2 {
private static SearchBluetooth t = new SearchBluetooth();
}
/**
* 扫描蓝牙设备
* <p>
* mBluetootadapter.cancelDiscovery();//停止扫描
* mBluetootadapter.startDiscovery();//开始扫描附件蓝牙
* 通过广播接收扫描到的蓝牙设备。并通过配对后进行 socket连接传输数据
*/
public void doSearchBluetooth() {
if (null == mBluetootadapter) {
mBluetootadapter = BluetoothAdapter.getDefaultAdapter();
}
if (!mBluetootadapter.isEnabled()) {
//TODO 校验蓝牙是否打开
//不做提示,强行打开,此方法需要权限<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" />
boolean enable = mBluetootadapter.enable();
if (enable) {
//TODO 扫描蓝牙设备
mBluetootadapter.cancelDiscovery();
mBluetootadapter.startDiscovery();
}
} else {
//TODO 扫描蓝牙设备
mBluetootadapter.cancelDiscovery();//停止扫描
mBluetootadapter.startDiscovery();//开始扫描附件蓝牙
}
}
public void stopSearchBluetooth() {
//TODO 停止扫描蓝牙
if (null != mBluetootadapter) {
mBluetootadapter.cancelDiscovery();
}
}
public void doConnetBluetooth(int states, BluetoothDevice btDevice, BluetoothAsyncTask bluetoothAsyncTask) {
if (states == BluetoothDevice.BOND_NONE || states == BluetoothDevice.BOND_BONDED) {
//TODO 没有配对
try {
//通过工具类ClsUtils,调用createBond方法
boolean bond = BluetoothClsUtils.createBond(btDevice.getClass(), btDevice);
if (bond) {
//创建连接
mBluetootadapter.cancelDiscovery();//创建连接前,最好关闭扫描。否则会导致连接上的蓝牙断开。
bluetoothAsyncTask.execute("98:D3:32:30:95:B4");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (states == BluetoothDevice.BOND_BONDED) {
//TODO 已经配对直接链接