package org.average.nfcauthcr;
- import android.app.Activity;
- import android.app.AlertDialog;
+ import android.app.Service;
import android.app.PendingIntent;
- import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
+ import android.content.SharedPreferences;
+ import android.content.SharedPreferences.Editor;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.TagLostException;
import android.nfc.tech.IsoDep;
+ import android.os.Binder;
+ import android.os.IBinder;
+ import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
+ import org.average.nfcauthcr.CheckConnector;
import org.average.nfcauthcr.YkNeo;
import org.average.nfcauthcr.CRException;
- public class Check extends Activity {
+ public class Check extends Service {
private final String TAG = getClass().getName();
- private AlertDialog swipeDialog;
+ private final CheckConnector checkConnector = new CheckConnector();
+ private SharedPreferences prefs;
+ private int startId;
private PendingIntent tagIntent;
@Override
- protected void onResume() {
- super.onResume();
- Log.v(TAG, "Starting the work");
+ public void onCreate() {
+ Log.v(TAG, "Created");
+ prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ }
- Intent intent = getIntent();
- setResult(RESULT_CANCELED);
- if (swipeDialog != null) {
- swipeDialog.dismiss();
- swipeDialog = null;
- }
- int slot = intent.getIntExtra("slot", -1);
+ @Override
+ public int onStartCommand (Intent intent, int flags, int startId) {
+ Log.v(TAG, "Starting service");
+ this.startId = startId;
+ int slot = prefs.getInt("slot_number", -1);
if (slot > 0) {
- swipeDialog = makeDialog();
- swipeDialog.show();
enableDispatch(slot);
+ } else {
+ stopSelf(startId);
}
+ return START_NOT_STICKY;
}
@Override
- protected void onPause() {
- super.onPause();
- Log.v(TAG, "Finished the work");
+ public IBinder onBind(Intent intent) {
+ Log.v(TAG, "Binding");
+ checkConnector.setService(this);
+ return checkConnector;
+ }
- if(swipeDialog != null) {
- swipeDialog.dismiss();
- swipeDialog = null;
- }
+ @Override
+ public void onDestroy() {
+ Log.v(TAG, "Finished the run");
disableDispatch();
}
- public void onNewIntent(Intent intent) {
+ @Override
+ protected void onNewIntent(Intent intent) {
Log.v(TAG, "NFC Intent arrived");
int slot = intent.getIntExtra("slot", -1);
byte[] challenge = intent.getByteArrayExtra("challenge");
finish();
}
+ private AlertDialog makeDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.challenging);
+ builder.setMessage(R.string.swipe);
+ builder.setOnCancelListener(
+ new DialogInterface.OnCancelListener() {
+ public void onCancel(DialogInterface dialog) {
+ finish();
+ }
+ });
+ return builder.create();
+ }
+
+/*
+<receiver android:name=".IsoDepReceiver"
+ android:label="IsoDepReceiver">
+ <intent-filter>
+ <action android:name="android.nfc.action.TECH_DISCOVERED" />
+ </intent-filter>
+
+ <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
+ android:resource="@xml/filter_nfc"
+ />
+ </receiver>
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- capture anything using IsoDep -->
+ <tech-list>
+ <tech>android.nfc.tech.IsoDep</tech>
+ </tech-list>
+ </resources>
+
+*/
+
private void enableDispatch(int slot) {
Intent intent = getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);