首页 > 解决方案 > 如何处理 Kotlin 中的未知字符?

问题描述

我目前正在用 Kotlin 编写一个 Android 应用程序(目标 API 25+),它将连接到自定义 BLE 外围设备。自定义 BLE 设备已使用 Lightblue Explorer ( iOS ) 和 nRF Connect ( iOS & Android ) 进行验证,以记录和验证数据流。设备名称在 Lightblue 和 nRF 应用程序中均正确显示。

问题是在我的 Kotlin 应用程序中扫描时,设备名称附加了未知字符,见下文:

预期的:ABC_DEF

实际的:ABC_DEF??

我在以下函数中获取设备名称:

override fun onScanResult(callbackType: Int, result: ScanResult?) {
    val name = result!!.scanRecord.deviceName
    System.out.print("onScanResult: $name")
    attemptConnect(result!!)
}

我的应用程序正在尝试连接到特定的设备名称,因此,由于未知字符,连接失败。

目前,name.chunked(7)[0]为我提供了预期的名称,尽管这个解决方案看起来很老套,而且我确信一旦我更改设备名称就会中断。

所以,我的问题有两个:

  1. 我应该如何最好地处理这些未知字符,以允许代码可以使用不同的设备名称重复使用?
  2. 这个问题的原因可能是什么?

谢谢,亚当

标签: androidbluetoothkotlinbluetooth-lowenergy

解决方案


推荐阅读