2

Google から Nfc Demo をインストールしましたが、Tag から情報を読み取らず、fakeTag 情報を提供するだけです。nfcタグから読み取るようにサンプルを変更できる場所はありますか? または、誰かが nexus 用の動作する nfc デモを持っていますか?

nfc デモを動作させることができれば、多くの人が自分で nfc デモを開発する可能性があります。

よろしくアレクサンダー

4

4 に答える 4

2

タグIDを取得するのと同じ問題がありました。B@2346323143 スタイル データを画面に表示しました。私はそれを次のように動作させました:

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

byte[] を 16 進文字列に変換する必要があります。たとえば、次の方法を使用します。

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);
}
于 2011-03-31T10:15:08.377 に答える
1

NfcDemo には 2 つの部分があります。NFC タグのインテントに応答するディテクタ アクティビティがあり、最初の部分に偽のタグ インテントを送信できるようにする FakeTag アクティビティがあります。ただし、最初の部分は、NFC が有効になっている限り、実際の NFC タグも検出します。[設定] -> [ワイヤレス] で、NFC がオンになっているかどうかを確認します。それがあり、NfcDemo がインストールされている場合は、NFC タグを検出できるはずです。ただし、NfcDemo は NDEF タグを検出するようにのみ構成されているため、他のタイプの NFC タグ (Mifare Classic など) がある場合は、別のアプリを入手するか、NfcDemo を変更して他の NFC タグ タイプを処理する必要があります。

于 2011-02-23T01:24:13.753 に答える
0

実際のタグを読み書きするための実用的なサンプル プロジェクトなど、Android での NFC 用のツールをいくつか作成しました。また、興味のある NFCDemo プロジェクトを簡単に書き直しました。

また、ブロードキャストの送受信機能をNFC 開発者アプリに追加して、より多くの人が NFC で遊べるように、つまり NFC デバイスを必要とせずに済むようにしました。

于 2012-11-25T23:00:41.167 に答える
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;
}
于 2011-03-01T13:24:02.483 に答える