From: Jeff Hamilton Date: Sun, 23 Jan 2011 18:49:04 +0000 (-0600) Subject: Demo for NFC ACTION_TECHNOLOGY_DISCOVERED intent. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=e0fbd3ffe82e6e80c6b070c3afbdb8e7fdd9bb25;p=android-x86%2Fdevelopment.git Demo for NFC ACTION_TECHNOLOGY_DISCOVERED intent. Change-Id: Ic537d209b07e81e80aeca5aa3e4a63657ac6fb76 --- diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index 867a56b0..61b12434 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -1959,6 +1959,22 @@ + + + + + + + + + + + + + + + + + + + android.nfc.tech.NfcF + + + + + android.nfc.tech.NfcA + android.nfc.tech.MifareClassic + android.nfc.tech.Ndef + + diff --git a/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.java b/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.java index 9b6bc345..f29c2684 100644 --- a/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.java +++ b/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.java @@ -24,17 +24,20 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.IntentFilter.MalformedMimeTypeException; import android.nfc.NfcAdapter; +import android.nfc.tech.NfcF; import android.os.Bundle; import android.util.Log; import android.widget.TextView; /** - * An example of how to use the NFC foreground dispatch APIs. + * An example of how to use the NFC foreground dispatch APIs. This will intercept any MIME data + * based NDEF dispatch as well as all dispatched for NfcF tags. */ public class ForegroundDispatch extends Activity { private NfcAdapter mAdapter; private PendingIntent mPendingIntent; private IntentFilter[] mFilters; + private String[][] mTechLists; private TextView mText; private int mCount = 0; @@ -54,26 +57,25 @@ public class ForegroundDispatch extends Activity { mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); - // Setup intent filters for all types of NFC dispatches to intercept all discovered tags + // Setup an intent filter for all MIME based dispatches IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); try { ndef.addDataType("*/*"); } catch (MalformedMimeTypeException e) { throw new RuntimeException("fail", e); } - IntentFilter tech = new IntentFilter(NfcAdapter.ACTION_TECHNOLOGY_DISCOVERED); - tech.addDataScheme("vnd.android.nfc"); mFilters = new IntentFilter[] { ndef, - tech, - new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED), }; + + // Setup a tech list for all NfcF tags + mTechLists = new String[][] { new String[] { NfcF.class.getName() } }; } @Override public void onResume() { super.onResume(); - mAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters); + mAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists); } @Override diff --git a/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.java b/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.java new file mode 100644 index 00000000..4042a810 --- /dev/null +++ b/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2011 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.example.android.apis.nfc; + +import com.example.android.apis.R; + +import android.app.Activity; +import android.content.Intent; +import android.nfc.NfcAdapter; +import android.os.Bundle; +import android.widget.TextView; + +public class TechFilter extends Activity { + private TextView mText; + private int mCount = 0; + + @Override + public void onCreate(Bundle savedState) { + super.onCreate(savedState); + + setContentView(R.layout.foreground_dispatch); + mText = (TextView) findViewById(R.id.text); + + Intent intent = getIntent(); + String action = intent.getAction(); + if (NfcAdapter.ACTION_TECHNOLOGY_DISCOVERED.equals(action)) { + mText.setText("Discovered tag " + ++mCount + " with intent: " + intent); + } else { + mText.setText("Scan a tag"); + } + } + + @Override + public void onNewIntent(Intent intent) { + mText.setText("Discovered tag " + ++mCount + " with intent: " + intent); + } +}