1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-23 05:20:35 +02:00

Bangle.js: Attempt to fix some of the warnings generated by Android Studio - some addec null checks, and appending using StringBuilder

This commit is contained in:
Gordon Williams 2023-11-20 11:42:41 +00:00
parent 140c62ac55
commit 66b36564ab

View File

@ -306,7 +306,7 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
} }
} }
}; };
GBApplication.getContext().registerReceiver(globalUartReceiver, commandFilter); GBApplication.getContext().registerReceiver(globalUartReceiver, commandFilter); // should be RECEIVER_EXPORTED
} }
@Override @Override
@ -374,7 +374,7 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
if (v instanceof String) { if (v instanceof String) {
/* Convert a string, escaping chars we can't send over out UART connection */ /* Convert a string, escaping chars we can't send over out UART connection */
String s = (String)v; String s = (String)v;
String json = "\""; StringBuilder json = new StringBuilder("\"");
//String rawString = ""; //String rawString = "";
for (int i=0;i<s.length();i++) { for (int i=0;i<s.length();i++) {
int ch = (int)s.charAt(i); // 0..255 int ch = (int)s.charAt(i); // 0..255
@ -383,21 +383,21 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
if (ch<8) { if (ch<8) {
// if the next character is a digit, it'd be interpreted // if the next character is a digit, it'd be interpreted
// as a 2 digit octal character, so we can't use `\0` to escape it // as a 2 digit octal character, so we can't use `\0` to escape it
if (nextCh>='0' && nextCh<='7') json += "\\x0" + ch; if (nextCh>='0' && nextCh<='7') json.append("\\x0").append(ch);
else json += "\\" + ch; else json.append("\\").append(ch);
} else if (ch==8) json += "\\b"; } else if (ch==8) json.append("\\b");
else if (ch==9) json += "\\t"; else if (ch==9) json.append("\\t");
else if (ch==10) json += "\\n"; else if (ch==10) json.append("\\n");
else if (ch==11) json += "\\v"; else if (ch==11) json.append("\\v");
else if (ch==12) json += "\\f"; else if (ch==12) json.append("\\f");
else if (ch==34) json += "\\\""; // quote else if (ch==34) json.append("\\\""); // quote
else if (ch==92) json += "\\\\"; // slash else if (ch==92) json.append("\\\\"); // slash
else if (ch<32 || ch==127 || ch==173 || else if (ch<32 || ch==127 || ch==173 ||
((ch>=0xC2) && (ch<=0xF4))) // unicode start char range ((ch>=0xC2) && (ch<=0xF4))) // unicode start char range
json += "\\x"+Integer.toHexString((ch&255)|256).substring(1); json.append("\\x").append(Integer.toHexString((ch & 255) | 256).substring(1));
else if (ch>255) else if (ch>255)
json += "\\u"+Integer.toHexString((ch&65535)|65536).substring(1); json.append("\\u").append(Integer.toHexString((ch & 65535) | 65536).substring(1));
else json += s.charAt(i); else json.append(s.charAt(i));
} }
// if it was less characters to send base64, do that! // if it was less characters to send base64, do that!
if (json.length() > 5+(s.length()*4/3)) { if (json.length() > 5+(s.length()*4/3)) {
@ -406,24 +406,24 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
} }
// for debugging... // for debugging...
//addReceiveHistory("\n---------------------\n"+rawString+"\n---------------------\n"); //addReceiveHistory("\n---------------------\n"+rawString+"\n---------------------\n");
return json + "\""; return json.append("\"").toString();
} else if (v instanceof JSONArray) { } else if (v instanceof JSONArray) {
JSONArray a = (JSONArray)v; JSONArray a = (JSONArray)v;
String json = "["; StringBuilder json = new StringBuilder("[");
for (int i=0;i<a.length();i++) { for (int i=0;i<a.length();i++) {
if (i>0) json += ","; if (i>0) json.append(",");
Object o = null; Object o = null;
try { try {
o = a.get(i); o = a.get(i);
} catch (JSONException e) { } catch (JSONException e) {
LOG.warn("jsonToString array error: " + e.getLocalizedMessage()); LOG.warn("jsonToString array error: " + e.getLocalizedMessage());
} }
json += jsonToStringInternal(o); json.append(jsonToStringInternal(o));
} }
return json+"]"; return json.append("]").toString();
} else if (v instanceof JSONObject) { } else if (v instanceof JSONObject) {
JSONObject obj = (JSONObject)v; JSONObject obj = (JSONObject)v;
String json = "{"; StringBuilder json = new StringBuilder("{");
Iterator<String> iter = obj.keys(); Iterator<String> iter = obj.keys();
while (iter.hasNext()) { while (iter.hasNext()) {
String key = iter.next(); String key = iter.next();
@ -433,10 +433,10 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
} catch (JSONException e) { } catch (JSONException e) {
LOG.warn("jsonToString object error: " + e.getLocalizedMessage()); LOG.warn("jsonToString object error: " + e.getLocalizedMessage());
} }
json += "\""+key+"\":"+jsonToStringInternal(o); json.append("\"").append(key).append("\":").append(jsonToStringInternal(o));
if (iter.hasNext()) json+=","; if (iter.hasNext()) json.append(",");
} }
return json+"}"; return json.append("}").toString();
} else if (v==null) { } else if (v==null) {
// else int/double/null // else int/double/null
return "null"; return "null";
@ -652,7 +652,7 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
/** /**
* Handle "act" packet, used to send activity reports * Handle "act" packet, used to send activity reports
*/ */
private void handleActivity(JSONObject json) throws JSONException { private void handleActivity(JSONObject json) {
BangleJSActivitySample sample = new BangleJSActivitySample(); BangleJSActivitySample sample = new BangleJSActivitySample();
int timestamp = (int) (json.optLong("ts", System.currentTimeMillis()) / 1000); int timestamp = (int) (json.optLong("ts", System.currentTimeMillis()) / 1000);
int hrm = json.optInt("hrm", 0); int hrm = json.optInt("hrm", 0);
@ -1146,14 +1146,14 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
} }
if (hasCJK) { if (hasCJK) {
// split every 2 chars // split every 2 chars
String result = ""; StringBuilder result = new StringBuilder();
for (int i=0;i<word.length();i+=2) { for (int i=0;i<word.length();i+=2) {
int len = 2; int len = 2;
if (i+len > word.length()) if (i+len > word.length())
len = word.length()-i; len = word.length()-i;
result += renderUnicodeWordPartAsImage(word.substring(i, i+len)); result.append(renderUnicodeWordPartAsImage(word.substring(i, i + len)));
} }
return result; return result.toString();
} }
// else just render the word as-is // else just render the word as-is
return renderUnicodeWordPartAsImage(word); return renderUnicodeWordPartAsImage(word);
@ -1170,7 +1170,8 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
if (!devicePrefs.getBoolean(PREF_BANGLEJS_TEXT_BITMAP, false)) if (!devicePrefs.getBoolean(PREF_BANGLEJS_TEXT_BITMAP, false))
return EmojiConverter.convertUnicodeEmojiToAscii(txt, GBApplication.getContext()); return EmojiConverter.convertUnicodeEmojiToAscii(txt, GBApplication.getContext());
// Otherwise split up and check each word // Otherwise split up and check each word
String word = "", result = ""; String word = "";
StringBuilder result = new StringBuilder();
boolean needsTranslate = false; boolean needsTranslate = false;
for (int i=0;i<txt.length();i++) { for (int i=0;i<txt.length();i++) {
char ch = txt.charAt(i); char ch = txt.charAt(i);
@ -1181,16 +1182,16 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
else if (ch =='。') ch='.'; else if (ch =='。') ch='.';
else if (ch =='【') ch='['; else if (ch =='【') ch='[';
else if (ch =='】') ch=']'; else if (ch =='】') ch=']';
else if (ch=='' || ch=='' || ch =='' || ch=='' || ch=='' || ch=='ʹ') ch='\''; else if (ch=='' || ch=='' || ch=='' || ch=='' || ch=='ʹ') ch='\'';
else if (ch=='“' || ch=='”' || ch =='„' || ch=='‟' || ch=='″') ch='"'; else if (ch=='“' || ch=='”' || ch =='„' || ch=='‟' || ch=='″') ch='"';
// chars which break words up // chars which break words up
if (" -_/:.,?!'\"&*()[]".indexOf(ch)>=0) { if (" -_/:.,?!'\"&*()[]".indexOf(ch)>=0) {
// word split // word split
if (needsTranslate) { // convert word if (needsTranslate) { // convert word
LOG.info("renderUnicodeAsImage converting " + word); LOG.info("renderUnicodeAsImage converting " + word);
result += renderUnicodeWordAsImage(word)+ch; result.append(renderUnicodeWordAsImage(word)).append(ch);
} else { // or just copy across } else { // or just copy across
result += word+ch; result.append(word).append(ch);
} }
word = ""; word = "";
needsTranslate = false; needsTranslate = false;
@ -1202,11 +1203,11 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
} }
if (needsTranslate) { // convert word if (needsTranslate) { // convert word
LOG.info("renderUnicodeAsImage converting " + word); LOG.info("renderUnicodeAsImage converting " + word);
result += renderUnicodeWordAsImage(word); result.append(renderUnicodeWordAsImage(word));
} else { // or just copy across } else { // or just copy across
result += word; result.append(word);
} }
return result; return result.toString();
} }
/// Crop a text string to ensure it's not longer than requested /// Crop a text string to ensure it's not longer than requested
@ -1492,7 +1493,8 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
} else { } else {
o.put("value", card.getCardId()); o.put("value", card.getCardId());
} }
o.put("type", card.getBarcodeFormat().toString()); if (card.getBarcodeFormat() != null)
o.put("type", card.getBarcodeFormat().toString());
if (card.getExpiry() != null) if (card.getExpiry() != null)
o.put("expiration", card.getExpiry().getTime()/1000); o.put("expiration", card.getExpiry().getTime()/1000);
o.put("color", card.getColor()); o.put("color", card.getColor());
@ -1505,7 +1507,7 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
o.put("balance", renderUnicodeAsImage(cropToLength(card.getBalance() + o.put("balance", renderUnicodeAsImage(cropToLength(card.getBalance() +
" " + balanceType, 20))); " " + balanceType, 20)));
} }
if (card.getNote() != "") if (card.getNote() != null)
o.put("note", renderUnicodeAsImage(cropToLength(card.getNote(),200))); o.put("note", renderUnicodeAsImage(cropToLength(card.getNote(),200)));
a.put(o); a.put(o);
} }