Android蓝牙ScanFilter部分字符串匹配

问题描述

是的,您可以使用 和 类

使用以下regex匹配字符串地址

00:A0:50:([A-Fa-f0-9]{2}:){2}[A-Fa-f0-9]

见演示演示

我很惊讶没有将数组作为输入,我认为这将是比单个MAC地址更常见的用例。

现在,您可以使用循环(例如,,while ..等)并匹配地址

解决方法

我正在寻找使用ScanFilter搜索一组蓝牙设备。我知道所有这些设备的地址都以00:A0:50开头,然后最后6位数字有所不同,因此所有地址看起来都像00:A0:50:XX:XX:XX。我正在寻找一种使用setDeviceAddress来查找地址以那6位数字开头的设备的方法。这将字符串作为输入。相关代码如下。

ScanFilter cypressFilter = new ScanFilter().Builder()
    //we know that their mac address will always start with 00:A0:50
    //so we should filter out any devices without that
    .setDeviceAddress(/* Address string goes here */)
    .build();

我想我需要为此使用诸如正则表达式之类的东西,但是我对Java,Android和regex还是相当陌生,我不确定是否可以将正则表达式传递给该函数?看文档,我想我需要一个Pattern或Matcher类来找到相关的字符串。但是,我不确定这是否可以与需要特定字符串作为输入的特定方法一起使用。我很惊讶没有将数组作为输入,我认为这将是比单个MAC地址更常见的用例。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”