我希望有人帮助我创建一个包含所有if语句的函数,我尝试使用switch,但是它仍然太长了。 感谢您的帮助,我的代码如下 我阅读了Nfc标签,然后处理内容。 代码运行良好,但是很难更改,因为它太长了,我想尽可能地简化它。 我的Java水平还没有很高,这就是为什么我不能凭自己做到这一点,如果有人有能力我会很感激
private void readFromIntent(Intent intent) {
String action = intent.getAction();
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage[] msgs = null;
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
}
buildTagViews(msgs);
}
}
private void buildTagViews(NdefMessage[] msgs) {
if (msgs == null || msgs.length == 0) return;
String text = "";
// String tagId = new String(msgs[0].getRecords()[0].getType());
byte[] payload = msgs[0].getRecords()[0].getPayload();
String textEncoding = ((payload[0] & 128) == 0) ? "UTF-8" : "UTF-16"; // Get the Text Encoding
int languageCodeLength = payload[0] & 0063; // Get the Language Code, e.g. "en"
// String languageCode = new String(payload, 1, languageCodeLength, "US-ASCII");
try {
// Get the Text
text = new String(payload, languageCodeLength + 1, payload.length - languageCodeLength - 1, textEncoding);
} catch (UnsupportedEncodingException e) {
Log.e("UnsupportedEncoding", e.toString());
}
tvNFCContent.setText(text+"(( taille de la trame: " + text.length () +"))");
//lenght.setText(text.length ());
//tramemail.setText(text+"(( taille de la trame: " + text.length () +"))" + Version);
Nbre_defauts1.setText("Le Nombre de défauts enregistrés sur le détecteur 1 est de "+ text.charAt(39)+ text.charAt(40));
Nbre_defauts2.setText("Le Nombre de défauts enregistrés sur le détecteur 2 est de "+ text.charAt(41)+ text.charAt(42));
Nbre_defauts3.setText("Le Nombre de défauts enregistrés sur le détecteur 3 est de "+ text.charAt(43)+ text.charAt(44));
Nbre_defauts4.setText("Le Nombre de défauts enregistrés sur le détecteur 4 est de "+ text.charAt(45)+ text.charAt(46));
Nbre_defauts_pion.setText("Le Nombre de défauts enregistrés sur l'autoprotection est de "+ text.charAt(57)+ text.charAt(58));
Nbre_defauts_capot.setText("Le Nombre de défauts enregistrés sur le capot est de "+ text.charAt(55)+ text.charAt(56));
Telecommande_trame.setText("La Télécommande actuelle a comme numéro "+ text.charAt(63)+ text.charAt(64)+ text.charAt(65)+ text.charAt(66) );
if (text.charAt(6) == 'O')
{
Etat_centrale_texte.setText( "Centrale en Parfait état");
Etat_centrale_couleur.setBackgroundResource(R.color.vert);
} else if (text.charAt(6) == 'A')
{
Etat_centrale_texte.setText( " Centrale en Alarme");
Etat_centrale_couleur.setBackgroundResource(R.color.rouge);
}
else
{
Etat_centrale_texte.setText( "Centrale à revoir");
Etat_centrale_couleur.setBackgroundResource(R.color.orange);
}
if (text.charAt(7) == 'A') {
D1.setBackgroundResource(R.drawable.ic_warning_red);
} else if (text.charAt(7) == 'O') {
D1.setBackgroundResource(R.drawable.ic_ok);
} else if (text.charAt(7) == 'W') {
D1.setBackgroundResource(R.drawable.ic__warning_orange);
} else {
D1.setBackgroundResource(R.drawable.ic_baseline_block_24);
}
if (text.charAt(8) == 'A') {
D2.setBackgroundResource(R.drawable.ic_warning_red);
} else if (text.charAt(8) == 'O') {
D2.setBackgroundResource(R.drawable.ic_ok);
} else if (text.charAt(8) == 'W') {
D2.setBackgroundResource(R.drawable.ic__warning_orange);
} else {
D2.setBackgroundResource(R.drawable.ic_baseline_block_24);
}
if (text.charAt(9) == 'A') {
D3.setBackgroundResource(R.drawable.ic_warning_red);
} else if (text.charAt(9) == 'O') {
D3.setBackgroundResource(R.drawable.ic_ok);
} else if (text.charAt(9) == 'W') {
D3.setBackgroundResource(R.drawable.ic__warning_orange);
} else {
D3.setBackgroundResource(R.drawable.ic_baseline_block_24);
}
if (text.charAt(10) == 'A') {
D4.setBackgroundResource(R.drawable.ic_warning_red);
} else if (text.charAt(10) == 'O') {
D4.setBackgroundResource(R.drawable.ic_ok);
} else if (text.charAt(10) == 'W') {
D4.setBackgroundResource(R.drawable.ic__warning_orange);
} else {
D4.setBackgroundResource(R.drawable.ic_baseline_block_24);
}
if (text.charAt(59) == 'A') {
Capot.setBackgroundResource(R.drawable.capot_rouge);
Capot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Le capot est en alarme", Toast.LENGTH_SHORT).show();
}
});}
else if (text.charAt(59)== 'O'){
Capot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Le capot est en Bon état", Toast.LENGTH_SHORT).show();
}
});
Capot.setBackgroundResource(R.drawable.capot_vert);
}
else {
Capot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Attention au capot!", Toast.LENGTH_SHORT).show();
}
});
Capot.setBackgroundResource(R.drawable.capot_orange);
}
if (text.charAt(60) == 'A') {
Autoprotection.setBackgroundResource(R.drawable.tamper_rouge);}
else if (text.charAt(60)== 'O'){
Autoprotection.setBackgroundResource(R.drawable.pion_vert);
}
else {
Autoprotection.setBackgroundResource(R.drawable.tamper_rouge);
}
if (text.charAt(61) == 'P') {
Mode_alimentation.setText("L'Alimentation est en mode Secteur");
Alimentation.setBackgroundResource(R.drawable.ic_baseline_power_vert);
}
else if (text.charAt(61)== 'B') {
Mode_alimentation.setText("L'Alimentation est en mode Boost");
Alimentation.setBackgroundResource(R.drawable.ic_baseline_power_bleu);
}
else {
Mode_alimentation.setText("L'Alimentation est absente");
Alimentation.setBackgroundResource(R.drawable.ic_baseline_power_rouge);
}
if (text.charAt(62) == 'H') {
Batterie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Batterie pleine", Toast.LENGTH_SHORT).show();
}
});
Batterie.setBackgroundResource(R.drawable.ic_baseline_battery_full_24); }
else if (text.charAt(62)== 'M'){
Batterie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Batterie à moitié chargée", Toast.LENGTH_SHORT).show();
}
});
Batterie.setBackgroundResource(R.drawable.ic_baseline_battery_alert_24);
}
else if (text.charAt(62)== 'L'){
Batterie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Batterie faible", Toast.LENGTH_SHORT).show();
}
});
Batterie.setBackgroundResource(R.drawable.ic_baseline_battery_alert_rouge);
}
else {
Batterie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Batterie absente", Toast.LENGTH_SHORT).show();
}
});
Batterie.setBackgroundResource(R.drawable.batt_absente);
}
//int version = (int)text.charAt(4);
if (text.charAt(67)=='R') {
Telecommande_centrale.setText("La Télécommande arret centrale est Rouge "+ text.charAt(68)+ text.charAt(69)+ text.charAt(70)+ text.charAt(71));
}
else if(text.charAt(67)=='B') {
Telecommande_centrale.setText("La Télécommande arret centrale est Bleu "+ text.charAt(68)+ text.charAt(69)+ text.charAt(70)+ text.charAt(71));
}
else{
Telecommande_centrale.setText("La Télécommande arret centrale est Inconnue "+ text.charAt(68)+ text.charAt(69)+ text.charAt(70)+ text.charAt(71));
}
if (text.charAt(72)=='R') {
Telecommande_arret.setText("La Télécommande arret alarme est Rouge "+ text.charAt(73)+ text.charAt(74)+ text.charAt(75)+ text.charAt(76));
}
else if(text.charAt(72)=='B') {
Telecommande_arret.setText("La Télécommande arret alarme est Bleu "+ text.charAt(73) + text.charAt(74) + text.charAt(75) + text.charAt(76));
}
else{
Telecommande_arret.setText("La Télécommande arret alarme est Inconnue "+ text.charAt(73) + text.charAt(74) + text.charAt(75) + text.charAt(76));
}
}