1

私はアンドロイドアプリからBleno Periphecal GATTサーバーに接続しようとしています。Android App:UUIDを使用してGATTサーバーに接続する

GATTサーバには、独自のUUIDを持つカスタムサービスと特性があります。

このサーバに接続してテキストを送信する方法を教えてください。

最小SDKは21、ターゲットSDKは24ですので、古いBluetoothLEスキャン方式は廃止されました。現在はBluetoothLEScannerを使用する必要があります。

答えて

1

Bleを接続するには、この方法でBTデバイスのMACアドレスを渡します。

private boolean connectGatt(final String address) { 
    if (mBluetoothAdapter == null || address == null) { 
     Log.w(TAG, "BluetoothAdapter not initialized or unspecified address."); 
     return false; 
    } 

    if (mBluetoothGatt != null) { 
     Log.d(TAG, "Trying to use an existing mBluetoothGatt for connection."); 
     if (mBluetoothGatt.connect()) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    final BluetoothDevice device = mBluetoothAdapter 
      .getRemoteDevice(address); 
    if (device == null) { 
     Log.w(TAG, "Device not found. Unable to connect."); 
     return false; 
    } 

    mBluetoothGatt = device.connectGatt(mContext, false, mGattCallback); 
    Log.d(TAG, "Trying to create a new connection."); 
    return mBluetoothGatt.connect(); 
} 

接続が成功したかどうかを確認するコールバックを登録する必要があります。

private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { 
    @Override 
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { 

     if (newState == BluetoothProfile.STATE_CONNECTED) { 
      //bluetooth is connected so discover services 
      mBluetoothGatt.discoverServices(); 

     } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { 
      //Bluetooth is disconnected 
     } 
    } 

    @Override 
    public void onServicesDiscovered(BluetoothGatt gatt, int status) { 
     if (status == BluetoothGatt.GATT_SUCCESS) { 
      // services are discoverd 
     } 


    } 

    @Override 
    public void onCharacteristicRead(BluetoothGatt gatt, 
            BluetoothGattCharacteristic characteristic, 
            int status) { 
     if (status == BluetoothGatt.GATT_SUCCESS) { 

     } 
    } 

    @Override 
    public void onCharacteristicChanged(BluetoothGatt gatt, 
             BluetoothGattCharacteristic characteristic) { 

    } 

    @Override 
    public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { 
     super.onCharacteristicWrite(gatt, characteristic, status); 

    } 
}; 

サービスが一度検出されると、サービスに書き込みや読み取りができます。この方法にサービス利用にアドバイスを

private boolean writeRXCharacteristic(byte[] value) { 
    BluetoothGattService RxService = mBluetoothGatt.getService(/*Place service UUID*/); 
    if (RxService == null) { 
     //Service not supported 
     return false; 
    } 
    BluetoothGattCharacteristic RxChar = RxService.getCharacteristic(/*RX_CHAR_UUID*/); 
    if (RxChar == null) { 
     // service not supported 
     return false; 
    } 
    RxChar.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE); 
     RxChar.setValue(arr); 
     return iGatt.writeCharacteristic(iChar); 
} 
+0

感謝を書き込むための

。 iGatt、iChar、およびArrはどこから来たのですか?私はそれらのことに精通していません。 writeRXCharacteristic関数でこれらの値を初期化する必要はありますか?また、私はwriteRXCharacteristic関数を呼び出す必要がありますか? –

関連する問題