设置蓝牙GATT和BLE并使用UUID

时间:2016-10-06 12:53:26

标签: android bluetooth bluetooth-lowenergy uuid gatt

我正在尝试通过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"的部分吗?

感谢您的帮助。

0 个答案:

没有答案