我正在尝试通过GATT配置文件将Ardiuno连接到Android智能手机。看了几个教程和Android文档后,我有更多问题而不是答案...... On this tutorial作者在使用" BluetoothAdapter.LeScanCallback"实现设备发现后说。应该有一个设备。 " onLeScan"的实施缺少了,我完全不知道该放在那里以及如何访问他谈到的BluetoothDevice。设备不是返回值,而是此方法的初始值,因此如何获取它?
另一个非常基本(而且相当愚蠢)的问题是将所有这些BLE内容放在我的代码中?似乎它的一部分需要在一个活动中工作,但我已经有用于制作SPP蓝牙连接的类,我想将这两个合并在一起。那么我如何尽可能简单地实现这一目标呢?
最后但并非最不重要:有没有人知道API级别18的蓝牙GATT配置文件的简单示例,这可能会点亮我的情况?
我很遗憾问一些如此基本的东西,我想我还不太了解编程以了解所有这些,但是我发现的教程确实没有多大帮助......我很开心阅读你的所有评论。
尽管我仍然遇到UUIDS的问题,但我几乎已经开始运行了。 我认为第5点的uuidList
应该是我对要连接的设备的了解。所以我在我的主要活动中将其定义为:
String[] uuids={"6e400001-b5a3-f393-e0a9-e50e24dcca9e","6e400002-b5a3-f393-e0a9-e50e24dcca9e","6e400003-b5a3-f393-e0a9-e50e24dcca9e","00002902-0000-1000-8000-00805f9b34fb"
,"E20A39F4-73F5-4BC4-A12F-17D1AD07A961","08590F7E-DB05-467E-8757-72F6FAEB13D4","08590F7F-DB05-467E-8757-72F6FAEB13D4"};
因为我想要连接的LinkIt One的GATT程序中的这些部分:
static LGATTServiceInfo g_uart_decl[] =
{
{TYPE_SERVICE, "E20A39F4-73F5-4BC4-A12F-17D1AD07A961", TRUE, 0, 0, 0},
{TYPE_CHARACTERISTIC, "08590F7E-DB05-467E-8757-72F6FAEB13D4", FALSE, VM_GATT_CHAR_PROP_NOTIFY | VM_GATT_CHAR_PROP_READ, VM_GATT_PERM_READ, 0}, // tx for periphral; rx for central
{TYPE_CHARACTERISTIC, "08590F7F-DB05-467E-8757-72F6FAEB13D4", FALSE, VM_GATT_CHAR_PROP_WRITE, VM_GATT_PERM_WRITE, 0}, // rx for periphral; tx for central
{TYPE_END, 0, 0, 0, 0, 0}
};
和
static LGATTServiceInfo g_abc_decl[] =
{
{TYPE_SERVICE, "6e400001-b5a3-f393-e0a9-e50e24dcca9e", TRUE, 0, 0, 0},
{TYPE_CHARACTERISTIC, "6e400002-b5a3-f393-e0a9-e50e24dcca9e", FALSE, VM_GATT_CHAR_PROP_WRITE, VM_GATT_PERM_WRITE, 0},
{TYPE_CHARACTERISTIC, "6e400003-b5a3-f393-e0a9-e50e24dcca9e", FALSE, VM_GATT_CHAR_PROP_NOTIFY | VM_GATT_CHAR_PROP_INDICATE, VM_GATT_PERM_READ, 0},
{TYPE_DESCRIPTOR, "00002902-0000-1000-8000-00805f9b34fb", FALSE, VM_GATT_CHAR_PROP_NOTIFY, VM_GATT_PERM_READ | VM_GATT_PERM_WRITE, 0},
{TYPE_END, 0, 0, 0, 0, 0}
};
我在我的主要课程中调用了这样的扫描方法:
final GpsBoxScanningFactory scanningFactory=new GpsBoxScanningFactory();
scanningFactory.startScanning("LinkIt One",uuids);
final Handler handler=new Handler();
handler.postDelayed(new Runnable(){
@Override
public void run(){
List<GpsBoxBluetoothDevice> leBtDeviceList=scanningFactory.getFoundDeviceList();
scanningFactory.stopScanning();
}
},5000);
请注意,我宣布scanningFactory
是最终的,因为文档说的是......如果不是这样做的话,我很乐意改变它。
问题是,每次我扫描设备leBtDeviceList
的大小为0时,虽然LinkIt One(类似于Arduino,但板上有不同的芯片和蓝牙)正在运行并配对。
我想这是因为我错误地使用了uuids,有人可以解释一下uuidList
和我现在放置"LinkItOne"
的部分吗?
感谢您的帮助。