javaandroidandroid-studioandroid-application-class

Reading data from Android App using bluetooth


I have Java code to receive data in Android App via Bluetooth like the attached code

Java Code

so readMessage will equal = {\"Pin\":\"A4\",\"Value\":\"20\"},{\"Pin\":\"A5\",\"Value\":\"925\"},{\"Pin\":\"A0\",\"Value\":\"30\"}

So I want to take only the values after string \"Value\" from received data so

Can anyone suggest how to make do that? Thanks


Solution

  • you can parse the readMessage with JSON format

    example:

    String[] pinValueArr = readMessage.split(",")
    for (String pinValue : pinValueArr) {
        try {
            JSONObject pinValueJSON = new JSONObject(pinValue);
            String pin = pinValueJSON.optString("pin", "");  // opt means if parse failed, return default value what is ""
            int pin = pinValueJSON.optInt("Value", 0);   // opt means if parse failed, return default value what is "0"
        } catch (JSONParsedException e) {
            // catch exception when parse to JSONObject failed
        }
    }
    

    And if you want to manage them, you can make a List and add them all.

    List<JSONObject> pinValueList = new ArrayList<JSONObject>();
    for (String pinValue : pinValueArr) {
        JSONObject pinValueJSON = new JSONObject(pinValue);
        // ..
        pinValueList.add(pinValueJSON);
    }