package br.com.rcksoftware.nfctest.Helper;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.NfcA;
import android.view.View;
import android.widget.Toast;
import br.com.rcksoftware.nfctest.MainActivity;
import static android.R.attr.tag;
/**
* Created by ricksam on 19/11/2016.
* <uses-permission android:name="android.permission.NFC" />
* <uses-feature
* android:name="android.hardware.nfc"
* android:required="false" />
*/
public class NfcHelper {
private Tag tag;
private NfcAdapter nfcAdapter;
private Activity activity;
public NfcHelper(Activity activity) {
this.activity = activity;
nfcAdapter = NfcAdapter.getDefaultAdapter(activity);
tag = activity.getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);
if (nfcAdapter != null && nfcAdapter.isEnabled()) {
Toast.makeText(activity, "NFC OK", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "NFC indisponível", Toast.LENGTH_LONG).show();
//activity.finish();
}
}
/* Uses in Activity
* @Override
* protected void onNewIntent(Intent intent) {
* super.onNewIntent(intent);
* text_epc.setText(nfcHelper.getEpc(intent));
* }
* */
public String getEpc(Intent intent) {
String epc = "";
if (nfcAdapter != null) {
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcA nfca = NfcA.get(tagFromIntent);
try {
nfca.connect();
byte[] ex = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
epc = byteToHex(ex);
//ss = new ScannedStudent(byteToHex(ex), registerID, classID);
//ss.execute();
Toast.makeText(activity, "NFC intent received", Toast.LENGTH_LONG).show();
nfca.close();
} catch (Exception e) {
epc = "Error";
}
}
return epc;
}
public String byteToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X ", b));
}
return sb.toString();
}
public void nfcResume() {
if (nfcAdapter != null) {
Intent intent = new Intent(activity, activity.getClass());
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
PendingIntent pendingIntent = PendingIntent.getActivity(activity, 0, intent, 0);
IntentFilter[] intentFilter = new IntentFilter[]{};
nfcAdapter.enableForegroundDispatch(activity, pendingIntent, intentFilter, null);
}
}
public void nfcPause() {
if (nfcAdapter != null) {
nfcAdapter.disableForegroundDispatch(activity);
}
}
}