Android Nfc Sample Demo - 仅从Tag中读取虚假信息

时间:2011-02-22 13:18:40

标签: android sample demo nfc

我刚从谷歌安装了Nfc Demo,但它没有从标签中读取信息.->它只是提供了一些fakeTag信息。有没有人有想法,我可以在哪里更改样本以从nfc标签中读取?或者有人为nexus做了一个有效的nfc演示?

如果我们可以带一个nfc演示工作,很多人都有可能自己开发一个nfc演示。

祝你好运 亚历山大

4 个答案:

答案 0 :(得分:2)

我在获取标记ID方面遇到了同样的问题。我得到了一些B @ 2346323143样式数据到屏幕。我让它像这样工作:

byte[] byte_id = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);

您需要将byte []转换为十六进制字符串。例如,使用以下方法。

private static final byte[] HEX_CHAR_TABLE = { (byte) '0', (byte) '1',
        (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6',
        (byte) '7', (byte) '8', (byte) '9', (byte) 'A', (byte) 'B',
        (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F' };

public static String getHexString(byte[] raw, int len) {
    byte[] hex = new byte[2 * len];
    int index = 0;
    int pos = 0;

    for (byte b : raw) {
        if (pos >= len)
            break;

        pos++;
        int v = b & 0xFF;
        hex[index++] = HEX_CHAR_TABLE[v >>> 4];
        hex[index++] = HEX_CHAR_TABLE[v & 0xF];
    }

    return new String(hex);
}

答案 1 :(得分:1)

NfcDemo有两个部分。有探测器活动,响应NFC标签意图,然后有FakeTag活动,允许您向第一部分发送假标签意图。但只要NFC启用,第一部分也将检测真正的NFC标签。检查设置 - >无线以查看NFC是否已打开。如果是,并且您安装了NfcDemo,您应该能够检测到NFC标签。但是,NfcDemo仅配置为检测NDEF标签,因此如果您有其他类型的NFC标签(例如,Mifare Classic),您将需要获取另一个应用程序,或修改NfcDemo以处理其他NFC标签类型。

答案 2 :(得分:0)

我写过一个具有一些基本NFC功能的课程,希望它可以帮助其他人获得阅读某些NFC标签的解决方案。

public class StatusMessage extends Activity {

/**
 * Returns the Status of the Nfc Device with a String "enabled" or "disabled"
 * \return Status NfcDevice
 * @author Falkenstein
 * 
 */
public static String getStatusNfcDevice () {
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter();
if (nfcAdapter.isEnabled()) { 
    String status = "enabled";

return status;
    }
    else {
        String status = "disabled";
        return status;


    }

}
/**
 * Returns the TagId. Needs an Intent. So you have to get you intent from your "main" activity and give it to the method -> just add the following   *lines in your "main class"
     *Intent intent =new Intent();
    *System.out.println(com.example.StatusMessage.getNfcAdapterExtraID(intent));
 *@author Falkenstein
 */ 
public static String getNfcAdapterExtraID (Intent intent) {
    byte[] byte_id = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
    return byte_id.toString();
}


/**
 * Converts a byte to a String.
 * @param input
 * @return byte
 */
public String byteToStr(byte[] input) {
    StringBuffer buffer = new StringBuffer();
    for (int i = 0; i < input.length; i++)
        if (input[i] != 0) {
            buffer.append( new Character((char)input[i]).toString());
        }
    return buffer.toString();
}



/**
 * Converts a String to a Byte
 * @param input
 * @return
 */ 
public byte[] strToByte(String input) {

    byte[] buffer = new byte[(input.length()+1)*2];
    for (int i = 0; i < buffer.length-2; i = i+2) {

        buffer[i] = (byte)input.charAt(i/2);
        buffer[i+1] = 0;
    }
    buffer[buffer.length-2] = 0;
    buffer[buffer.length-1] = 0;


    return buffer;
}

答案 3 :(得分:0)

我已在Android上为NFC写了一些tools,其中包括用于阅读和编写真实标签的example project。我还做了一个你可能感兴趣的NFCDemo项目的简单rewrite

我还为NFC Developer应用添加了广播发送/接收功能,以便更多人可以使用NFC,即无需NFC设备。