flutter_ble_peripheral icon indicating copy to clipboard operation
flutter_ble_peripheral copied to clipboard

Error when setting value for serviceData

Open ONLYstcm opened this issue 3 years ago • 3 comments

When trying to use serviceData in AdvertiseData, for example: serviceData: [7,8,9,10]

I get the following error at the beginning of a advertisment function:

E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): Failed to handle method call
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): java.lang.ClassCastException: java.util.ArrayList cannot be cast to byte[]
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at dev.steenbakker.flutter_ble_peripheral.FlutterBlePeripheralPlugin.startPeripheral(FlutterBlePeripheralPlugin.kt:167)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at dev.steenbakker.flutter_ble_peripheral.FlutterBlePeripheralPlugin.onMethodCall(FlutterBlePeripheralPlugin.kt:123)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:262)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at android.os.Handler.handleCallback(Handler.java:938)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at android.os.Handler.dispatchMessage(Handler.java:99)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at android.os.Looper.loopOnce(Looper.java:226)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at android.os.Looper.loop(Looper.java:313)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at android.app.ActivityThread.main(ActivityThread.java:8751)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
E/MethodChannel#dev.steenbakker.flutter_ble_peripheral/ble_state( 8553): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

ONLYstcm avatar Aug 28 '22 00:08 ONLYstcm

Hello @ONLYstcm have you been able to solve this?

I realized that when you set serviceData: Uint8List.fromList([0x41, 0x42, 0x43, 0x44]) and includeDeviceName: false it works, otherwise you get PlatformException (PlatformException(1, ADVERTISE_FAILED_DATA_TOO_LARGE, startAdvertising, null)). I guess it could be related to device name being too long or something. Is there a work around for this to keep the device name short since on android we cannot set the localName?

ahmdsdk avatar Aug 21 '23 01:08 ahmdsdk

I got the same error. Anyone resolves it?

khanhnmbk avatar Sep 05 '24 02:09 khanhnmbk