Exemplo de como lançar e detectar NFC PushRegistry
Dados do artigo
Artigo
Tradução:
Originado de NFC PushRegistry launch and detect example
Por valderind4
Última alteração feita por hamishwillee
em 19 Dec 2011
MIDlet exemplo de registro e lançamento usando NFC push registry e de captura do evento que o MIDlet lançou da tag. Note que o push registration pode ser feito no arquivo JAD.
package com.nokia.nfc.sample.app;
import javax.microedition.contactless.ContactlessException;
import javax.microedition.contactless.DiscoveryManager;
import javax.microedition.contactless.ndef.NDEFMessage;
import javax.microedition.contactless.ndef.NDEFRecordListener;
import javax.microedition.contactless.ndef.NDEFRecordType;
import javax.microedition.io.PushRegistry;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/*
* Example of launching midlet using push registry
* and getting event of the tag that launched the midlet.
*/
public class PushAndDetectExample extends MIDlet implements NDEFRecordListener {
private Form form;
private TextField pushTextField;
private DiscoveryManager dm;
protected void startApp() throws MIDletStateChangeException {
// Create UI
form = new Form("Form");
pushTextField = new TextField("Pushregistration", "", 255,
TextField.UNEDITABLE);
form.append(pushTextField);
Display.getDisplay(this).setCurrent(form);
// Register target to discovery
dm = DiscoveryManager.getInstance();
try {
dm.addNDEFRecordListener(this, new NDEFRecordType(
NDEFRecordType.EXTERNAL_RTD,
"urn:nfc:ext:yourcompany.com:pushdetectexample"));
} catch (ContactlessException e) {
// Catch ContactlessException
}
try {
// Make list of connections that are already registered
String[] regConns = PushRegistry.listConnections(false);
// Boolean to tell if wanted TargetType is already registered
boolean registered = false;
// Go trough list to see if wanted TargetType is already registered
for (int i = 0; i < regConns.length; i++) {
if (regConns[i]
.equals("ndef:external_rtd?name=urn:nfc:ext:yourcompany.com:pushdetectexample")) {
registered = true;
}
}
// If TargetType is not registered - register it
if (!registered) {
// Register this MIDlet to be launched when any tag with right
// TargetType is touched
PushRegistry
.registerConnection(
"ndef:external_rtd?name=urn:nfc:ext:yourcompany.com:pushdetectexample",
"com.nokia.nfc.sample.app.PushAndDetectExample", "*");
pushTextField.setString("Succeeded");
} else {
// If target was alredy regisered write that on screen
pushTextField.setString("Connection already registered");
}
} catch (Exception e) {
// In case of exception write message on screen
pushTextField.setString("Exception: " + e.getMessage());
}
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
public void recordDetected(NDEFMessage ndefMessage) {
// Write notification on the form when NDEF message is detected
form.append("Record detected\n");
}
}


(no comments yet)