我无法为我的BLE设备开发Android软件。 我的软件可以找到我的设备和GATT服务,但在我的服务中找不到任何特性。
我检查了android-sdk-4.4.2源码,发现了一些代码。 https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-sdk-4.4.2_r1 https://android.googlesource.com/platform/packages/apps/Bluetooth/+/android-sdk-4.4.2_r1static char BASE_UUID[16] = {
0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
int uuidType(unsigned char* p_uuid)
{
int i = 0;
int match = 0;
int all_zero = 1;
for(i = 0; i != 16; ++i)
{
if (i == 12 || i == 13)
continue;
if (p_uuid[i] == BASE_UUID[i])
++match;
if (p_uuid[i] != 0)
all_zero = 0;
}
if (all_zero)
return 0;
if (match == 12)
return LEN_UUID_32;
if (match == 14)
return LEN_UUID_16;
return LEN_UUID_128;
}
我的BLE设备UUID为0000XXXX-AABB-1000-8000-00805F9B34FB
。
这段代码会导致这个麻烦吗?
或者我的BLE设备UUID有问题吗?
答案 0 :(得分:1)
了解GATT的实施。虽然我不是来自android背景,但我真的无法通过您发布的代码看到您正在做的事情,我建议您尝试一些事情以使其工作。 首先,正如您的设备具有唯一的MAC ID一样,每个服务都有其UUID,服务中包含的特性也有自己的UUID。
答案 1 :(得分:1)
这就是你要找的东西。它是 private void button1_Click(object sender, RibbonControlEventArgs e) {
MessageBox.Show("Save and Send button was clicked.");
Outlook.Application application = new Outlook.Application();
Outlook.Explorer explorer = application.ActiveExplorer();
Outlook.Inspector inspector = application.ActiveInspector();
Outlook._MailItem mailItem = inspector.CurrentItem;
Outlook.NameSpace nameSpace = application.GetNamespace("MAPI");
MessageBox.Show("Select a location to save the email");
Outlook.MAPIFolder folder = (Outlook.Folder)nameSpace.PickFolder();
Outlook._MailItem newMailCopy = mailItem.Copy();
newMailCopy.Move(folder);
mailItem.Send();
MessageBox.Show(newMailCopy + " was copied to " + folder);
}
的回调函数,并返回每个服务的UUID,并为每个服务返回特征UUID。
gatt.discoverServices();
答案 2 :(得分:0)
我希望UUID的形式如下: 0000AABB-0000-1000-8000-00805F9B34FB。使用UUID.fromString("你的uuid")也会容易得多。如果您知道特征uuid,在onServicesDiscovered()内部,您可以通过以下方式直接启用char:
onServicesDiscovered()
{
BluetoothGattCharacteristic characteristic = gatt.getService(
UUID.fromString(SENSOR_SERVICE_UUID)).getCharacteristic(
UUID.fromString(CONFIG_UUID
));
characteristic.setValue(new byte[]{0x01});
gatt.writeCharacteristic(characteristic);
}