分享Android 蓝牙4.0(ble)开发的解决方案

2019-12-10 18:47:32于海丽

2.10、断开连接

/** 
  * Disconnects an existing connection or cancel a pending connection. The 
  * disconnection result is reported asynchronously through the 
  * {@code BluetoothGattCallback#onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int)} 
  * callback. 
  */ 
 public void disconnect() { 
  if (mBluetoothAdapter == null || mBluetoothGatt == null) { 
   Log.w(TAG, "BluetoothAdapter not initialized"); 
   return; 
  } 
  mBluetoothGatt.disconnect(); 
 } 

2.11、数据的转换方法

// byte转十六进制字符串 
 public static String bytes2HexString(byte[] bytes) { 
  String ret = ""; 
  for (byte aByte : bytes) { 
   String hex = Integer.toHexString(aByte & 0xFF); 
   if (hex.length() == 1) { 
    hex = '0' + hex; 
   } 
   ret += hex.toUpperCase(Locale.CHINA); 
  } 
  return ret; 
 } 
/** 
  * 将16进制的字符串转换为字节数组 
  * 
  * @param message 
  * @return 字节数组 
  */ 
 public static byte[] getHexBytes(String message) { 
  int len = message.length() / 2; 
  char[] chars = message.toCharArray(); 
  String[] hexStr = new String[len]; 
  byte[] bytes = new byte[len]; 
  for (int i = 0, j = 0; j < len; i += 2, j++) { 
   hexStr[j] = "" + chars[i] + chars[i + 1]; 
   bytes[j] = (byte) Integer.parseInt(hexStr[j], 16); 
  } 
  return bytes; 
 } 

大概整体就是如上的步骤,但是也是要具体根据厂家的协议来实现通信的过程。

就拿一个我们项目中的demo说一下。
一个蓝牙ble的血压计。 上位机---手机  下位机 -- 血压计