I have a method channel setup on Flutter to send Uint8List to Android[Java]. Android is receiving the data but it looks like the bytes are getting wrapped at 127.
Ex: if I send [254, 100, 32] from flutter, it shows up as [-2, 100, 32] in Android.
Basically, any value in the list over 127 is getting converted to a negative value.
Here is how I have the method channel setup on the Fluter side:
static const MethodChannel platform = MethodChannel(SEND_SERIAL_MESSAGE_TO_ANDROID);
Future<void> sendMessageToAndroid(List<int> message) async {
final bool result = await platform.invokeMethod('parseMessage', message);
}
And this is how I am receiving it on the Android side
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
(call, result) -> {
if (call.method.equals("parseMessage")) {
byte[] message = call.arguments();
parseMessage(message);
} else {
result.notImplemented();
}
}
);
}
private void parseMessage(byte[] message){
Log.i(LOG_TAG, message.toString());
}
Question: how do I stop values over 127 in my Uint8List from getting converted to a negative value in Java?
Let me know if you need to see any more of my code.
from Trouble sending Uint8List from Flutter to Android[Java] using method channels
No comments:
Post a Comment