我将以下代码用于Arduino Uno:
#include <SoftwareSerial.h>
SoftwareSerial device(2, 3);
void setup()
{
device.begin(9600);
}
void loop()
{
device.println("33,89,156,203,978,0,0;");
}
未设置要发送的特定设备。
如果我想在笔记本电脑上接收数据(运行Ubuntu 14.04),我只需致电:
sudo rfcomm bind rfcomm0 [MAC ADDRESS] 1
和
screen /dev/rfcomm0
在另一个终端实例中,它可以工作。
如何使用Android应用程序实现相同的行为? 以下example code指定设备。我找不到任何其他代码。此外,它只适用于我在笔记本电脑上听取这样的传入连接:
sudo rfcomm listen rfcomm0 [MAC ADDRESS]
我希望我的Android应用程序与Arduino示例完全一样。我怎样才能做到这一点?
答案 0 :(得分:1)
不幸的是,Android似乎没有低级别的经典蓝牙API,这将允许您进行广播类型行为。这是有道理的,因为Android旨在进入功率受限的设备,而有源无线电使用能量。如果您需要使用经典蓝牙(3.x)和Android来处理发送或接收广播类型的行为,您可能需要编写自定义ROM。
然而,有一种称为蓝牙低功耗(4.x)的规范允许更少的能量消耗但更慢/更少的数据吞吐量。特别是广告模式。正在扫描的Android设备可以获取由称为“信标”的设备广播的短广告数据包。使用此模式的协议是Apple的iBeacon和Google的Eddystone。
在这里查看涉及广告的示例应用:
另请注意,Android设备并不总是支持BLE外设模式,这是您的Android设备需要像信标一样的功能。
相关链接: Can an Android device act as an iBeacon?
一个很好的已测试设备清单: http://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html
因此,在您的情况下,您仍然可以使用Sony Xperia Z3作为扫描仪,但必须购买/构建信标进行测试。