Как создать объект тега в Android?

Я пытался найти способ создать экземпляр объекта Tag. Я пытаюсь сделать это, чтобы имитировать различные типы тегов.

Кто-нибудь знает, как получить экземпляр объекта UltraLight, используя

Tag tag = ?????
UltraLight obj = UltraLight.get(tag);

Спасибо


person gaara87    schedule 24.02.2012    source источник


Ответы (1)


В примере приложения NFC для исходного кода ICS мы можем найти такой код, как:

Bundle extras = new Bundle();
extras.putParcelable(Ndef.EXTRA_NDEF_MSG, ndefMsg);
extras.putInt(Ndef.EXTRA_NDEF_MAXLENGTH, 0);
extras.putInt(Ndef.EXTRA_NDEF_CARDSTATE, Ndef.NDEF_MODE_READ_ONLY);
extras.putInt(Ndef.EXTRA_NDEF_TYPE, Ndef.TYPE_OTHER);
Tag tag = Tag.createMockTag(new byte[] { 0x00 },
    new int[] { TagTechnology.NDEF },
    new Bundle[] { extras });

Код для этого метода createMockTag следующий:

public static Tag createMockTag(byte[] id, int[] techList, Bundle[] techListExtras) {
    // set serviceHandle to 0 to indicate mock tag
    return new Tag(id, techList, techListExtras, 0, null);
}

Может быть, это может помочь.

person Romain R.    schedule 24.02.2012
comment
Спасибо. Я попробую и посмотрю... по моему мнению, я не могу понять, как это может работать, потому что для класса Tag нет такого конструктора, верно? - person gaara87; 25.02.2012
comment
Я проверил исходный код. Функция не может быть вызвана! :/ - person gaara87; 27.02.2012
comment
Ты прав. Может быть, еще одна идея: при использовании класса Tag мы можем использовать его константу с именем СОЗДАТЕЛЬ. Этот возвращает объект Creator‹Tag›. Такой объект имеет метод createFromParcel(Parcel) может помочь. - person Romain R.; 27.02.2012
comment
Я также попробовал это, так как это единственный оставшийся вариант, но я не думаю, что отправляю правильные значения для успешного создания объекта Tag. Просто указатель, я не смог найти ничего под названием Ndef.EXTRA_NDEF_CARDSTATE или каких-либо других констант Ndef.*, которые вы использовали. - person gaara87; 27.02.2012