public void OnInsertedIntoCardboard(CardboardDeviceParams deviceParams) { mHandler.Post(() => { mListener.OnInsertedIntoCardboard(deviceParams); }); }
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)); }
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); } }