将ELM 327与安卓手机(蓝牙)连接-获取UUID

3

我从互联网上得到了以下代码

try {
    BluetoothDevice device = btAdapter.getRemoteDevice(bdDevice.toString());

    UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

    socket = device.createInsecureRfcommSocketToServiceRecord(uuid);
    socket.connect();
    Toast.makeText(MainActivity.this,"socket bonded", Toast.LENGTH_LONG).show();
} catch(Exception e) {
    tv.setText(e.toString());
}

当然,UUID只是一个示例中的随机代码,那么我该如何获取所需的UUID?它应该是我的ELM327设备的UUID还是其他UUID?请原谅我对UUID和Android开发都很陌生。


这个回答解决了你的问题吗?LELink、Automatic、Carista等OBD BLE适配器使用哪些GATT配置文件和服务? - DrMickeyLauer
2个回答

1
我刚刚检查了之前项目中使用的UUID,它是相同的。 我是这样使用它的。
try {
        mSocket = device.createRfcommSocketToServiceRecord(UUID
                .fromString("00001101-0000-1000-8000-00805F9B34FB"));
        mSocket.connect();
    } catch (IOException e) {

    }

在我开发应用程序时,它运行得非常完美。

但市场上可用的ELM327设备存在问题,有时会出现配对问题。

也许您应该使用getAddress()函数而不是bdDevice.toString()

getAddress将提供唯一的设备MAC地址。

 public String getAddress ()
   Added in API level 5

   Returns the hardware address of this BluetoothDevice.

   For example, "00:11:22:AA:BB:CC".

`getRemoteDevice` 期望一个设备地址。
  getRemoteDevice(byte[] address)
   Get a BluetoothDevice object for the given Bluetooth hardware address. 

1
在这种情况下,UUID不是“随机代码”,而是蓝牙串行端口服务配置文件的识别键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接