am e0fbd3ff: Demo for NFC ACTION_TECHNOLOGY_DISCOVERED intent.

* commit 'e0fbd3ffe82e6e80c6b070c3afbdb8e7fdd9bb25':
  Demo for NFC ACTION_TECHNOLOGY_DISCOVERED intent.
This commit is contained in:
Jeff Hamilton
2011-01-29 09:32:16 -08:00
committed by Android Git Automerger
4 changed files with 104 additions and 7 deletions

View File

@@ -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

View File

@@ -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);
}
}