如何在android kotlin中将UUID转换为16位

2023-12-15

我正在我的应用程序中研究蓝牙。我找到了显示分配的 UUID 的文章doc。我找到的血压计的两个ID是0x1810, 0x2A35分别用于血压和血压测量。我对这些东西完全陌生,所以我不太理解。我找到了这个堆栈溢出1 and 堆栈溢出2。所以我正在增加我的价值btyeArrayof但这给了我错误。另请指导我如何将数据传递给具有多个 id 的扫描过滤器

private fun scanFilters() {
        val scanFilterList = mutableListOf<ScanFilter>()
        val serviceUuidMaskString = "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF"
        val setServiceData = byteArrayOf(
            0x1810, 0x2A35
        )
        val scanFilter = ScanFilter.Builder().setServiceUuid(setServiceData, serviceUuidMaskString).build()
        scanFilterList.add(scanFilter)
    }

Errors

The integer literal does not conform to the expected type Byte

这段代码来了

val setServiceData = byteArrayOf(0x1810, 0x2A35)

enter image description here

另一个错误

Type mismatch.
Required:
ParcelUuid!
Found:
ByteArray

or

Type mismatch.
Required:
ParcelUuid!
Found:
String

val scanFilter = ScanFilter.Builder().setServiceUuid(setServiceData, serviceUuidMaskString).build()

enter image description here


您可以将 16 位服务 UUID 表示为 128 位服务 UUID,如下所示:

0000xxxx-0000-1000-8000-00805F9B34FB

因此,对于具有 16 位服务 UUID 0x2A35 的血压管理,您可以使用:

00002A35-0000-1000-8000-00805F9B34FB

对于具有 16 位服务 UUID 0x1810 的血压,您可以使用:

00001810-0000-1000-8000-00805F9B34FB

您只能将一个服务 UUID 放入一个过滤器中,因此如果您想查找两者,则需要使用两个过滤器。操作方法如下:

val filter1 = ScanFilter.Builder().setServiceUuid(ParcelUuid(
  UUID.fromString("00002A35-0000-1000-8000-00805F9B34FB"))).build();

val filter2 = ScanFilter.Builder().setServiceUuid(ParcelUuid(
  UUID.fromString("00001810-0000-1000-8000-00805F9B34FB"))).build();

scanFilterList.add(scanFilter1)
scanFilterList.add(scanFilter2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android kotlin中将UUID转换为16位 的相关文章

随机推荐