Exemple #1
0
 public void OnInsertedIntoCardboard(CardboardDeviceParams deviceParams)
 {
     mHandler.Post(() =>
     {
         mListener.OnInsertedIntoCardboard(deviceParams);
     });
 }
Exemple #2
0
        public CardboardDeviceParams getCardboardDeviceParams()
        {
            NdefMessage tagContents = null;

            lock (mTagLock) {
                try
                {
                    tagContents = mCurrentTag.CachedNdefMessage;
                }
                catch (Exception e)
                {
                    return(null);
                }
            }

            if (tagContents == null)
            {
                return(null);
            }

            return(CardboardDeviceParams.createFromNfcContents(tagContents));
        }
Exemple #3
0
        public void onNfcIntent(Intent intent)
        {
            if ((!isNfcEnabled()) || (intent == null) || (!"android.nfc.action.NDEF_DISCOVERED".Equals(intent.Action)))
            {
                return;
            }

            Android.Net.Uri uri    = intent.Data;
            Tag             nfcTag = (Tag)intent.GetParcelableExtra("android.nfc.extra.TAG");

            if ((uri == null) || (nfcTag == null))
            {
                return;
            }

            Ndef ndef = Ndef.Get(nfcTag);

            if ((ndef == null) || (!uri.Scheme.Equals(NFC_DATA_SCHEME)) || ((!uri.Host.Equals(FIRST_TAG_VERSION)) && (uri.PathSegments.Count == 2)))
            {
                return;
            }

            lock (mTagLock)
            {
                bool isSameTag = false;

                if (mCurrentTag != null)
                {
                    byte[] tagId1 = nfcTag.GetId();
                    byte[] tagId2 = mCurrentTag.Tag.GetId();
                    isSameTag = (tagId1 != null) && (tagId2 != null) && (Arrays.Equals(tagId1, tagId2));

                    closeCurrentNfcTag();
                    if (!isSameTag)
                    {
                        sendDisconnectionEvent();
                    }
                }

                NdefMessage nfcTagContents;
                try
                {
                    ndef.Connect();
                    nfcTagContents = ndef.CachedNdefMessage;
                }
                catch (Exception e)
                {
                    Log.Error(TAG, "Error reading NFC tag: " + e.ToString());

                    if (isSameTag)
                    {
                        sendDisconnectionEvent();
                    }

                    return;
                }

                mCurrentTag = ndef;

                if (!isSameTag)
                {
                    lock (mListeners)
                    {
                        foreach (ListenerHelper listener in mListeners)
                        {
                            listener.OnInsertedIntoCardboard(CardboardDeviceParams.createFromNfcContents(nfcTagContents));
                        }
                    }
                }

                mTagConnectionFailures = 0;
                mNfcDisconnectTimer    = new Timer("NFC disconnect timer");
                mNfcDisconnectTimer.Schedule(new MyTimerTask(this), NFC_POLLING_INTERVAL_MS, NFC_POLLING_INTERVAL_MS);
            }
        }