WIP convert to service (not working)
[YkNeoCR.git] / src / org / average / nfcauthcr / Check.java
index f65ae1ba034536692c5ba0be8c216e329bac146f..eaf804d25a25353345e535ab5aeda8672830bae3 100644 (file)
@@ -1,60 +1,68 @@
 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");
@@ -76,19 +84,6 @@ public class Check extends Activity {
                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();
-       }
-
        private void enableDispatch(int slot) {
                Intent intent = getIntent();
                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);