java - 通过蓝牙 LE 发送数据的两种方法

标签 java android eclipse

我正在研究一个通过蓝牙 LE 发送数据的 Android 应用程序。这里有两种方法让我感到困惑。有人可以解释一下这两种方法及其相互关系吗:

private String localmessage = null;
public void Send_Oe_Ef(BluetoothDevice device,String message) 
{
    localmessage= message;
    Send_Oe_Ef(device);
}

public void Send_Oe_Ef(BluetoothDevice device) 
{
    boolean result = false;
    Log.i(TAG, "Send_Oe_Ef ");
    isNoti = true;
    BluetoothGattService mCC2540 = mBluetoothGatt.getService(device, CC2540_SERVICE);
    if (mCC2540 == null) 
    {
        Log.e(TAG, "CC2540 service not found!");
        return;
    }
    BluetoothGattCharacteristic mHRMcharac = mCC2540.getCharacteristic(CC2540_CHARACTERISTIC);
    if (mHRMcharac == null) {
        Log.e(TAG, "CC2540 charateristic not found!");
        return;
    }
    byte[] value = new byte[14];
    value[0] = (byte) 1;
    value[1] = (byte) 2;
    value[2] = (byte) 3;
    value[3] = (byte) 4;
    value[4] = (byte) 5;
    value[5] = (byte) 6;
    value[6] = (byte) 7;
    value[7] = (byte) 8;
    value[8] = (byte) 9;
    value[9] = (byte) 10;
    value[10] = (byte) 11;
    value[11] = (byte) 12;
    value[12] = (byte) 13;
    value[13] = (byte) 14;

    try 
    {           
        value = localmessage.getBytes("UTF-8");

    } catch (UnsupportedEncodingException e) 
    {
        e.printStackTrace();
    }


    mHRMcharac.setValue(value);
    mBluetoothGatt.writeCharacteristic(mHRMcharac);

    Log.e(TAG, "SetValue");

}

提前致谢

最佳答案

第一个方法正在调用第二个方法。有那么一瞬间,我以为它们是类的构造函数,但它们当然不是。

BLE 使用 GATT 协议(protocol)。简单来说,GATT 协议(protocol)由服务组成,而服务又由特性组成。特征描述了您想要在远程设备上访问的测量实体。通常,每个设备都有一个可以连接到它的特定 UUID。例如,如果您查看 TI SensorTag,您将使用 F0000000-0451-4000-B000-00000000AA01 连接到其温度传感器。 http://processors.wiki.ti.com/index.php/SensorTag_User_Guide

据我所知

BluetoothGattService mCC2540 = mBluetoothGatt.getService(device, CC2540_SERVICE);

正在尝试在远程设备上获取在常量 CC2540_SERVICE 上定义的服务。

这一行

BluetoothGattCharacteristic mHRMcharac = mCC2540.getCharacteristic(CC2540_CHARACTERISTIC);

正在尝试访问 CC2540_CHARACTERISTIC 引用的服务 mCC2540 内部的特征

关于java - 通过蓝牙 LE 发送数据的两种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17307648/

相关文章:

java - 为批量更新累积数据并在超过大小阈值限制或定时持续时间后发送?

java - BoneCP 和 Netty 基础知识

java - 为什么从抽象 Serialized 继承时会收到 InvalidClassException 'no valid constructor'?

android - 类型转换器不工作

java - CTRL-G 在 Eclipse 中做什么?

java - com.google.inject 包可从多个模块访问

java - JVM(64 位 1.5.0._22)在 GCTaskThread 崩溃

android - 使用微调器的错误 token 异常(android :entries ="@array/type") in fragment

eclipse - 如何增加 Eclipse 中的应用程序堆大小?

android - 关于 Google 的 Play API 最低级别要求