1、初始化蓝牙
BluetoothManager mBluetoothManager;
BluetoothAdapter mBluetoothAdapter;
public static BleManager getBleManager(Context context) {
if (sBleManager == null) {
sBleManager = new BleManager(context);
if (!sBleManager.initialize()) {
// 初始化失败
sBleManager = null;
return null;
}
}
return sBleManager;
}
public boolean initialize() {
// API18(4.3)以上才可以使用BluetoothManager、得到BluetoothManager对象和BluetoothAdapter 对象
if (mBluetoothManager == null) {
mBluetoothManager = (BluetoothManager) mContext
.getSystemService(Context.BLUETOOTH_SERVICE);
if (mBluetoothManager == null) {
Log.e(TAG, "Unable to initialize BluetoothManager.");
return false;
}
}
mBluetoothAdapter = mBluetoothManager.getAdapter();
if (mBluetoothAdapter == null) {
Log.e(TAG, "Unable to obtain a BluetoothAdapter.");
return false;
}
return true;
}
/**
* 判断是否支持蓝牙4.0
*
* @return
*/
public boolean isSupportBle() {
return mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_BLUETOOTH_LE);
}
/**
* 扫描蓝牙设备
*
* @param enable
* @param handler
* @param scanCallback
*/
public void scanLeDevice(boolean enable, final Handler handler,
final BluetoothAdapter.LeScanCallback scanCallback) {
if (enable) {
// Stops scanning after a pre-defined scan period.
handler.postDelayed(new Runnable() {
@Override
public void run() {
mBluetoothAdapter.stopLeScan(scanCallback);
handler.sendEmptyMessage(MSG_SCANNING);
}
}, SCAN_PERIOD);
// 不要指定扫描指定UUID的设备,扫描到所有蓝牙设备后再进行过滤
// mBluetoothAdapter.startLeScan(UUID[] serviceUuids, LeScanCallback
// callback)
// UUID uuid = UUID.fromString("0000ffe0-0000-1000-8000-00805f9b34fb");
// UUID[] uuids = new UUID[]{uuid};
mBluetoothAdapter.startLeScan(scanCallback);
} else {
mBluetoothAdapter.stopLeScan(scanCallback);
handler.sendEmptyMessage(MSG_SCANNING);
}
}
/**
* 扫描蓝牙设备
*
* @param enable
* @param handler
* @param scanCallback
*/
public void scanLeDevice(boolean enable, final Handler handler,
final BluetoothAdapter.LeScanCallback scanCallback) {
if (enable) {
// Stops scanning after a pre-defined scan period.
handler.postDelayed(new Runnable() {
@Override
public void run() {
mBluetoothAdapter.stopLeScan(scanCallback);
handler.sendEmptyMessage(MSG_SCANNING);
}
}, SCAN_PERIOD);
// 不要指定扫描指定UUID的设备,扫描到所有蓝牙设备后再进行过滤
// mBluetoothAdapter.startLeScan(UUID[] serviceUuids, LeScanCallback
// callback)
// UUID uuid = UUID.fromString("0000ffe0-0000-1000-8000-00805f9b34fb");
// UUID[] uuids = new UUID[]{uuid};
mBluetoothAdapter.startLeScan(scanCallback);
} else {
mBluetoothAdapter.stopLeScan(scanCallback);
handler.sendEmptyMessage(MSG_SCANNING);
}
}