Android蓝牙低能耗Gatt服务执行错误

问题描述:

我在我的项目中使用了android.bluetooth包,但我尝试实现IBluetoothGatt的读写特性。但我有一个像下面IBluetoothGatt接口Android蓝牙低能耗Gatt服务执行错误

public final class BluetoothGatt implements BluetoothProfile { 
    private static final String TAG = "BluetoothGatt"; 
    private static final boolean DBG = true; 
    private static final boolean VDBG = false; 

    private IBluetoothGatt mService; // IBluetoothGatt red highlights. Some functions in IBluetoothGatt interface just work by put breakpoints. 

    private BluetoothGattCallback mCallback; 
    private int mClientIf; 
    private boolean mAuthRetry = false; 
    private BluetoothDevice mDevice; 
    private boolean mAutoConnect; 
    private int mConnState; 
    private final Object mStateLock = new Object(); 
    private Boolean mDeviceBusy = false; 
    private int mTransport; 

    private static final int CONN_STATE_IDLE = 0; 
    private static final int CONN_STATE_CONNECTING = 1; 
    private static final int CONN_STATE_CONNECTED = 2; 
    private static final int CONN_STATE_DISCONNECTING = 3; 
    private static final int CONN_STATE_CLOSED = 4; 

    private List<BluetoothGattService> mServices; 

writeCharacteristic红色亮点

public void onCharacteristicWrite(String address, int status, int handle) { 
      if (VDBG) Log.d(TAG, "onCharacteristicWrite() - Device=" + address 
         + " handle=" + handle + " Status=" + status); 

      if (!address.equals(mDevice.getAddress())) { 
       return; 
      } 

      synchronized(mDeviceBusy) { 
       mDeviceBusy = false; 
      } 

      BluetoothGattCharacteristic characteristic = getCharacteristicById(mDevice, handle); 
      if (characteristic == null) return; 

      if ((status == GATT_INSUFFICIENT_AUTHENTICATION 
       || status == GATT_INSUFFICIENT_ENCRYPTION) 
       && mAuthRetry == false) { 
       try { 
        mAuthRetry = true; 
        mService.writeCharacteristic(mClientIf, address, handle, 
         characteristic.getWriteType(), AUTHENTICATION_MITM, 
         characteristic.getValue()); 
        return; 
       } catch (RemoteException e) { 
        Log.e(TAG,"",e); 
       } 
      } 
+1

你到底想要做什么 –

+0

我想用写入特征方法与ble设备进行通信。但在Ibluetoothgatt接口(在android.bluetooth中)编写特征方法“无法解决”,我不能这样做。 – Hilal

+0

编辑您的代码并编写完整的活动和服务代码。 在写入数据之前,您需要扫描并连接到设备。 –

使用这篇文章是非常有用的一些问题。如果您有任何问题

这里 BLE

评论是连接到BLE装置的代码。

public boolean connect(final String address) 
{ 

    if (mBluetoothAdapter == null || address == null) 
    { 
     Log.e(TAG, "BluetoothAdapter not initialized or unspecified address."); 
     return false; 
    } 
    final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 
    if (device == null) 
    { 
     Log.e(TAG, "Device not found. Unable to connect."); 
     return false; 
    } 
    // We want to directly connect to the device, so we are setting the autoConnect 
    // parameter to false. 
    mBluetoothGatt = device.connectGatt(this, false, mGattCallback); 

    return true; 
} 
+0

我试过你的建议设备已连接,但我在BluetothGatt.java中有同样的错误,就像定义IBluetoothGatt(红色),clientConnect在IBluetoothGattCallback方法中是红色的,我无法写入任何设备。 – Hilal

+0

IBluetoothGatt在Android中是内部的,而不是公共API的一部分。因此你不应该在IDE中打开这个文件。 BluetoothGatt也不是您应该在IDE中打开的文件。如果你不能编译你的项目,你应该再看看你的SDK设置。 – Emil