Merge branch 'master' of ssh://git.average.org/~/NFCAuthCR
authorEugene Crosser <crosser@average.org>
Sat, 4 May 2013 06:11:12 +0000 (10:11 +0400)
committerEugene Crosser <crosser@average.org>
Sat, 4 May 2013 06:11:12 +0000 (10:11 +0400)
1  2 
src/org/average/nfcauthcr/Check.java

index 36f3b1d8fe17cdb342a25ae85eb90ea56be7f30a,eaf804d25a25353345e535ab5aeda8672830bae3..27a3d7161acfc7fe444c10564acb6d16ebf9d736
@@@ -1,60 -1,68 +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");
                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);