On Wed, Feb 23, 2011 at 7:26 PM, davemac <[email protected]> wrote:

> I hate to seem like a nag on this topic, but I've got some more
> concerns about the documentation, and your answer. Let's consider an
> example as described in the reference page for NfcAdapter, which seems
> to be more correct than the DevGuide for NFC:
>
>  <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
>      <!-- capture anything using NfcF -->
>     <tech-list>
>         <tech>android.nfc.tech.NfcF</tech>
>     </tech-list>
>
>     <!-- OR -->
>
>     <!-- capture all MIFARE Classics with NDEF payloads -->
>      <tech-list>
>         <tech>android.nfc.tech.NfcA</tech>
>          <tech>android.nfc.tech.MifareClassic</tech>
>         <tech>android.nfc.tech.Ndef</tech>
>     </tech-list>
>  </resources>
>
> If I have a tag that enumerates NfcA and MifareClassic but does not
> enumerate Ndef, I'm assuming that this activity would not receive that
> NFC tech intent. Correct?


Correct. The tag is neither NfcF OR (NfcA AND MifareClassic AND Ndef)


> None of the intent-filter's tech-list sets
> is a subset of
> Tag.getTechList().
>
> If I have a tag that enumerates NfcF and Ndef, I'm assuming that this
> activity *would* receive that NFC tech intent, right? The intent-
> filter tech-list of NfcF *is* a sub-set of Tag.getTechList(). Correct?
>

correct


>
> And this jives with your earlier answer about not having to specify
> both MifareUltralight *and* NfcA in a tech-list since if the tech-list
> has both and my tech-list only has one, it's still a sub-set so it
> will match. It could actually be dangerous to specify both in case
> some tag doesn't enumerate NfcA, then the tech-list would not be a sub-
> set of the Tag's tech list so there'd be no match.
>

correct

>
> Just one more thing about the <category> tag with the intent filters
> for NFC tags. In the NFCDemo, for the intent-filter for TAG_DISCOVERED
> there is a <category> tag within the <intent-filter>, as one would
> expect in order to receive an intent that carries no data. This
> <category> tag is not present in the NfcAdapter reference page or the
> NFC DevGuide page, but I think it should be. Correct?
>

we're looking into this.


>
> What I can't tell is whether or not the <category> tag is required
> within the <intent-filter> when the action is TECH_DISCOVERED. I
> haven't been able to figure out the bytes to generate a fake non-Ndef
> tag to send from FakeTagsActivity. And when I save my manifest.xml
> file either way, I get no errors.
>
> I appreciate any help that I can get. Thanks!
>
> - dave
>
> On Feb 23, 1:01 pm, Nick Pelly <[email protected]> wrote:
> > On Wed, Feb 23, 2011 at 8:45 AM, davemac <[email protected]> wrote:
> > > What you're saying doesn't jive with the documentation, which says the
> > > following (onhttp://developer.android.com/guide/topics/nfc/index.html
> ):
> >
> > > Specifiying [sic] multiple technologies within the same list tells the
> > > system to filter tags that support all of the technologies.
> >
> > This particular sentence is a little confusing in the docs, i'll try and
> > have it improved.
> >
> > > The
> > > example below never filters a tag because no tag supports all of the
> > > technologies at once. You can remove the ones that you do not need.
> > > The docs say a tag will only match if all tag technologies are listed
> > > in my tech-list,
> >
> > No the docs don't say that.
> >
> > There is a better explanation here, which matches with how I explained
> it,
> > which is how it is :)
> >
> > http://developer.android.com/reference/android/nfc/NfcAdapter.html#AC...
> >
> > """
> > A tag matches if any of the tech-list sets is a subset of
> > Tag.getTechList()<
> http://developer.android.com/reference/android/nfc/Tag.html#getTechList()
> >.
> > Each of the tech-lists is considered independently and the activity is
> > considered a match is any single tech-list matches the tag that was
> > discovered. This provides AND and OR semantics for filtering desired
> techs.
> > """
> >
> > and all tech-list technologies are implemented by the
> >
> > > tag. You're saying that the tag's technologies only need to match a
> > > sub-set of the tech-list.
> >
> > yes
> >
> > > Or are you saying that a MifareUltralight
> > > tag only reports MifareUltralight technology?
> >
> > No.
> >
> > > Or that the docs are
> > > wrong?
> >
> > No they're just a little confusing.
> >
> > > I have a related question that I hope you don't mind answering here as
> > > well. To build an intent filter in code that supports tech, how do you
> > > specify the techlists on it? Or does this only work in foreground
> > > dispatch mode?
> >
> > I am a little hazy on the details for this one, but I believe the best
> > practice is to define all the intent filters you might want in the
> manifest,
> > and then turn intent-filters on and off at run-time.
> >
> > > - dave
> >
> > > On Feb 23, 12:41 am, Nick Pelly <[email protected]> wrote:
> > > > On Tue, Feb 22, 2011 at 6:50 PM, davemac <[email protected]>
> wrote:
> > > > > I'm reading the documentation on NFC tags and intent filters to
> match
> > > > > on. For an action of ACTION_TECH_DISCOVERED, the intent filter must
> > > > > list the technologies to match on, using a filter file. What I
> wanted
> > > > > clarification on is whether or not I need to also specify for
> example
> > > > > NfcA when I'm looking for a Mifare Utralight tag.
> >
> > > > > For the Mifare Ultralight tag, the documentation says this:
> > > > > NfcA will also be enumerated on the tag, because all MIFARE
> Ultralight
> > > > > tags are also NfcA tags.
> >
> > > > > This suggests to me that my XML filter file should say this:
> >
> > > > > <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
> > > > >    <tech-list>
> > > > >        <tech>android.nfc.tech.NfcA</tech>
> > > > >        <tech>android.nfc.tech.MifareUltralight</tech>
> > > > >    </tech-list>
> > > > > </resources>
> >
> > > > > because if the tag is enumerating NfcA in addition to
> > > > > MifareUltralight, my intent filter will only match if I specify
> both
> > > > > technologies, not just MifareUltralight. Is that true? This applies
> to
> > > > > IsoDep as well, which enumerates both NfcA and NfcB, in which case
> I
> > > > > would need to specify all three. True? I don't have available
> hardware
> > > > > to test this for myself. Thanks for your help.
> >
> > > > You do not need to specify both NfcA and MifareUltralight. You can
> just
> > > > specify MifareUltralight. The <tech-list> only requires a subset of
> > > tech's
> > > > in order to match.
> >
> > > > In the case of MIFARE Ultralight, it happens to always be based on
> NfcA
> > > > technology. So tags with the MifareUltralight tech will always also
> have
> > > the
> > > > NfcA tech. So there is no harm also putting NfcA in the <tech-list>.
> But
> > > it
> > > > is not strictly required.
> >
> > > > Nick
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to
> [email protected]
> > > To unsubscribe from this group, send email to
> > > [email protected]
> > > For more options, visit this group at
> > >http://groups.google.com/group/android-developers?hl=en
> >
> >
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to