- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试一个适用于 Android 和 iOS 的实验性 Bluetooth LE
程序,现在我在 Android 端过滤 iOS 端发送的信标广告时遇到了一些问题。 Android 有一个功能可以通过带有掩码的 UUID 过滤广告(我需要这个功能,因为我试图获取以特定值开头的 UUID),但我无法让它工作。这是我正在尝试的:
private void freshen() {
// kill current scanner
if (mLEScanner != null)
mLEScanner.stopScan(mScanCallback);
// set new one to be a match scanner
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
List<ScanFilter> filters = new ArrayList<>();
// create data uuid starting with the value 1
ParcelUuid data = ParcelUuid.fromString("10000000-0000-0000-0000-000000000000");
// create a mask to ensure only that value is searched
ParcelUuid mask = ParcelUuid.fromString("10000000-0000-0000-0000-000000000000");
// build the filter
ScanFilter.Builder builder = new ScanFilter.Builder();
builder.setServiceUuid(data, mask);
ScanFilter filter = builder.build();
// add the filter to the scanner
filters.add(filter);
mLEScanner.startScan(filters, settings, mScanCallback);
}
它产生的结果为零。即使我将所有掩码值设置为 0(这是忽略的数字),它仍然会产生零结果。当我删除过滤器时,会出现大量以 1 开头的结果。这在当前版本的 Android 中是否有问题?
最佳答案
这不是解决此问题的方法,但我决定按 DeviceName 进行过滤,因为 Android 和 iOS 端都可以填充该名称。现在我专注于 iOS 到 Android 的通信 =>
iOS:
func centralManager(_: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi: NSNumber){
delegate?.didDiscoverPeripheral(peripheral)
let splitUp : [String] = "\(advertisementData)".components(separatedBy: "\n")
if (splitUp.count > 1)
{
var chop = splitUp[1]
let counter = chop.characters.count - 2
chop = chop[0..<counter]
let chopSplit : [String] = "\(chop)".components(separatedBy: "\"")
if !(chopSplit.count > 1 && chopSplit[1] == "Device Information" && !sending)
{
let hexString = chop[4..<7] + chop[12..<19] + chop[21..<26]
let hexArray = [hexString[0..<1], hexString[2..<3], hexString[4..<5], hexString[6..<7], hexString[8..<9], hexString[10..<11], hexString[12..<13], hexString[14..<15], hexString[16..<17]]
let charArray = hexArray.map { Character(hexToScalar(char: $0)) }
let string = String(charArray) as String
if (string == "GoTcHa" + stringify(number: writing))
{
writing += 1
let messageUUID = StringToUUID(hex: String(writing) + "hello" + String(writing))
peripheralManager.stopAdvertising()
let name = String(writing) as NSString
peripheralManager.startAdvertising([CBAdvertisementDataServiceUUIDsKey: [CBUUID(string: messageUUID)], CBAdvertisementDataLocalNameKey: name])
}
}
}
}
func StringToUUID(hex: String) -> String
{
var rev = String(hex.characters.reversed())
let hexData: NSData! = rev.data(using: String.Encoding.utf8, allowLossyConversion: false) as NSData!
rev = hexData.toHexString()
while(rev.characters.count < 31) {
rev = "0" + rev;
}
rev = String(writing % 10) + rev[0..<30]
let finalString = rev[0..<7] + "-" + rev[8..<11] + "-" + rev[12..<15] + "-" + rev[16..<19] + "-" + rev[20..<31]
return finalString
}
更重要的是 Android 扫描方法,现在可以通过始终通过 DeviceName 查找下一条消息来忽略来自 iOS 的重复消息:
private void freshen() {
if (mLEScanner != null)
mLEScanner.stopScan(mScanCallback);
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.setNumOfMatches(ScanSettings.MATCH_NUM_ONE_ADVERTISEMENT)
.build();
List<ScanFilter> filters = new ArrayList<>();
ScanFilter filter = new ScanFilter.Builder()
.setDeviceName("" + (reading % 10))
.build();
filters.add(filter);
mLEScanner.startScan(filters, settings, mScanCallback);
}
我现在需要让 iOS 端更好地过滤 Android 的响应,但它在 Android 接收端有效。
关于java - Android 蓝牙 LE 屏蔽 UUID 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39823416/
我需要创建一个 View (作为其他 View 的 mask ) 。圆圈是透明的,外部区域是半透明的。我可以使用 canvas.clipRegion(..) 来实现它,但是 http://develo
踏入爬虫的迷宫 多年以来,我一直是一个对编程充满了好奇心的人。探索着代码的世界,便如同探险家踏入密林深处,寻找未知的宝藏。最近,我将目光聚焦在了爬虫技术上,特别是百度搜索屏蔽问题上。 百度搜索的诱惑
我想将“www.adomain.com”重定向到“www.adomain.com/cms”。 cms 部分应该被屏蔽。 我无法让它安静地工作。因此“cms”始终是网址的一部分。 我尝试了这个解决方案:
我一直在我的 View Controller 中使用以下代码: UIView *view = [[CustomView alloc] init]; UIView *mask = [[CustomMas
如果是网页内容里面的alert,我们可以等网页加载完毕,也就是在webViewDidFinishLoad中执行下面的js代码,就可以屏蔽alert了
我正在使用 PyQt4 QLineEdit小部件接受密码。有一个setMasking属性,但不遵循如何设置屏蔽字符。 最佳答案 editor = QLineEdit() editor.setEchoM
我有一个包含员工信息的 Pandas 数据框,如下所示: df=pd.DataFrame({ 'Id':[1,2,3,4], 'Name':['Joe','Henry','Sam','
我正在为 iPhone 创建一个自定义开/关切换开关(类似于标准开关),并且我正在设置 slider 的蒙版,但调用 [[myView [layer] setMask:maskLayer] 设置
我如何能够在 Objective C 中屏蔽 nsimageview?例如,有一个带圆角的 nsimageview。 最佳答案 你不知道。如果你想以 NSImageView 不支持的方式绘制图像,则需
我正在开发一个可以更改边框或矩形 UIImage 的应用程序。边框会有所不同,但看起来 UIImage 是用剪刀剪掉的,或者有什么影响。 做到这一点的最佳方法是什么? 我的第一个想法是准备一堆具有我正
我需要屏蔽数据,就像在 Azure Pipelines 中一样,但位于 Azure 存储库文件内。有没有一种方法可以设置与脚本分开存储的变量,例如在 Azure 管道中: variable = $(S
我没有找到解决问题的简单方法。我想使用 TextInputDialog,您必须在其中键入用户密码,以重置数据库中的所有数据。 TextInputDialog 的问题是它没有屏蔽文本,我不知道有什么选择
我正在寻找一种自行开发的方法来扰乱生产数据以用于开发和测试。我已经构建了几个脚本来生成随机社会安全号码、轮类出生日期、打乱电子邮件等。但我在尝试打乱客户姓名时遇到了困难。我想保留真实姓名,这样我们仍然
我正在尝试使用过滤器来屏蔽 SSN 的前 5 位数字,它应该看起来像这样 XXX-XX-1234 到目前为止我想出了什么: // {{SocialSecurityNumber | ssn}} angu
我没有找到解决问题的简单方法。我想使用 TextInputDialog,您必须在其中键入用户密码,以重置数据库中的所有数据。 TextInputDialog 的问题是它没有屏蔽文本,我不知道有什么选择
我想屏蔽一个 Fortran 数组。这是我目前正在做的方式...... where (my_array <=15.0) mask_array = 1 elsewhere mask_ar
当用户在用户界面上输入时,我需要屏蔽数字,用户应该看到一个屏蔽的数字,但在 Java 代码上,我应该得到整个数字,包括屏蔽的字符用户应该看到什么 4545********9632但在 Java 代码(
我正在使用 javafx 文本字段。我需要输入数字以及应符合格式 ###.###.###.### 的小数其中小数点根本不可编辑,数字可以是任何数字;不允许其他输入。并非所有数字占位符都需要填写,例如它
我必须交付一个小型 C++ 软件。我想用一些实现(我使用了表达式模板)来掩盖头文件,以使最终用户难以辨认,因此他们无法修改它们。我无法将代码包含在静态或动态库中。有什么方法可以屏蔽头文件的内容吗? 谢
我正在开发一个与 gestureRecognizer 配合使用的应用程序。 使用手势可以选择 UIImage(例如 rectangle.png),并且可以使用 UIPopoverView 通过为所选图
我是一名优秀的程序员,十分优秀!