以编程方式与计算机建立无服务器蓝牙连接

时间:2018-02-13 01:24:44

标签: java android bluetooth bluetooth-lowenergy

我制作了一个应用程序,可以使用Android蓝牙将手机(LGV20)变成PC键盘。我试图通过让我的应用程序将手机与键盘而不是手机配对来删除PC服务器代码。

我发现的唯一一款不需要PC设置或生根的应用程序是Blek。似乎当你打开应用程序时,它试图将你的手机配对为我想要的键盘。但是,我无法弄清楚他们是如何做到的。我想他们做了这样的事情:

public class MyBluetoothAdapter extends BluetoothAdapter {
    private static final String DEVICE_PAIR_TYPE = "Keyboard"
    ...
    }

这不是BluetoothAdapter中的真正变量,但我想像这样的东西被使用了。

1 个答案:

答案 0 :(得分:0)

提示应该是在你查看应用程序的描述时:

  

接收设备必须具有蓝牙4.0 ....

因此,搜索显示GATT的许多规范中包含:

https://www.bluetooth.com/specifications/gatt

有一个HID over GATT profile

看起来每个蓝牙LE芯片制造商都有一个键盘HID超过GATT的例子。

我怀疑每个蓝牙LE芯片SDK都有一些JNI / C级别的东西,可以通过GATT启用键盘HID。

从这篇SO帖子:is there any ble api in Ndk

看起来可以使用较低级别的蓝牙访问,但调用可能因芯片而异。

鉴于Android允许许多不同的芯片供应商,您引用的应用程序的作者可能已经安装了一些基于SDK的代码,但可能无法在所有设备上运行。

我发现但未经测试的一个开源(ish)实现是:

https://github.com/kshoji/BLE-HID-Peripheral-for-Android

似乎有一个21的最小SDK。然而,这个秘密的酱油'仍然是隐藏的'在作者的lib目录中的AAR中。

那还有什么可以做呢?

  1. 了解您的设备使用的蓝牙低功耗芯片组。我无法访问LGV20,但logcat中的某些内容可能会指向制造商。
  2. 了解制造商和芯片组系列后,看看您是否可以访问该芯片组制造商特定的蓝牙低功耗SDK,以获取可以通过GATT启用HID的任何示例代码/模块。
  3. 使用此类代码/模块编写应用程序,并了解您可能需要处理JNI / C.