Ich schreibe eine App zum Lesen von binären Infos von NFC-Tags. Hier ist der Code der NFC Absicht Handler-Funktion:Android NfcV erhalten Informationen Befehl gibt nur ein Byte
protected void onNewIntent(@NonNull Intent intent)
{
try
{
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcV nfcV = NfcV.get(tag);
byte[] cmdInfo = new byte[]{(byte) 0x02, (byte) 0x2b}; // 'Get info' command
byte[] answer = nfcV.transceive(cmdInfo); // Read info from tag.
...
}
catch(IOException e)
{
...
}
}
Wenn ich diese Funktion Lesen eines NFC-Tag auf einem Samsung S3 Neo alles laufen funktioniert gut, die Antwort Variable wird mit dem erwarteten Daten gefüllt:
00 04 4B A0 14 01 00 A0 07 E0 F3 07
Howewer wenn ich laufe die gleiche Funktion den gleichen NFC-Tag auf einem Huawei P8lite liest die Antwort Variable mit nur einem Byte gefüllt ist:
03
Im Fall eines Fehlers, die ISO 1569 3-3 Standard sagt, dass ich etwas wie
empfangen sollte01 03
I.e. mindestens zwei Bytes, wobei das zweite Byte der Fehlercode ist. Die Antwort, die ich eigentlich bekomme, ist theoretisch nicht möglich.
Was mache ich falsch? Kommt es auf die mobile Hardware an? Und wie kann ich es reparieren?
Die angesprochene Version des Befehls löste das Problem. Vielen Dank! – Carlo
@CarloCe Haben Sie auch verschiedene Einstellungen für die Data_rate_flag versucht? Es könnte für andere SO-Leser interessant sein zu wissen, ob beide Optionen auf dem P8lite unterstützt werden ... –
Wenn ich adressierten Befehl verwende, akzeptiert er sowohl data_rate gesetzt als auch unset – Carlo