1 package com.android.cts.verifier.nfc.hce;
2 
3 import android.annotation.TargetApi;
4 import android.content.ComponentName;
5 import android.content.Context;
6 import android.content.Intent;
7 import android.os.Bundle;
8 
9 import com.android.cts.verifier.R;
10 import com.android.cts.verifier.nfc.NfcDialogs;
11 
12 @TargetApi(19)
13 public class PrefixPaymentEmulatorActivity extends BaseEmulatorActivity {
14     final static int STATE_IDLE = 0;
15     final static int STATE_SERVICE1_SETTING_UP = 1;
16     final static int STATE_SERVICE2_SETTING_UP = 2;
17     final static int STATE_MAKING_SERVICE1_DEFAULT = 3;
18 
19     boolean mReceiverRegistered = false;
20     int mState = STATE_IDLE;
21 
22     @Override
onCreate(Bundle savedInstanceState)23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.pass_fail_text);
26         setPassFailButtonClickListeners();
27         getPassButton().setEnabled(false);
28         mState = STATE_SERVICE1_SETTING_UP;
29         setupServices(this, PrefixPaymentService1.COMPONENT);
30     }
31 
32     @Override
onResume()33     protected void onResume() {
34         super.onResume();
35     }
36 
37     @Override
onServicesSetup(boolean result)38     void onServicesSetup(boolean result) {
39         if (mState == STATE_SERVICE1_SETTING_UP) {
40             mState = STATE_SERVICE2_SETTING_UP;
41             setupServices(this, PrefixPaymentService1.COMPONENT, PrefixPaymentService2.COMPONENT);
42             return;
43         }
44         // Verify HCE service 1 is the default
45         if (makePaymentDefault(PrefixPaymentService1.COMPONENT, R.string.nfc_hce_change_preinstalled_wallet)) {
46             mState = STATE_MAKING_SERVICE1_DEFAULT;
47         } else {
48             // Already default
49             NfcDialogs.createHceTapReaderDialog(this, getString(R.string.nfc_hce_payment_prefix_aids_help)).show();
50         }
51     }
52 
53     @Override
onPaymentDefaultResult(ComponentName component, boolean success)54     void onPaymentDefaultResult(ComponentName component, boolean success) {
55         if (success) {
56             NfcDialogs.createHceTapReaderDialog(this, getString(R.string.nfc_hce_payment_prefix_aids_help)).show();
57         }
58     }
59 
60     @Override
onPause()61     protected void onPause() {
62         super.onPause();
63         if (mReceiverRegistered) {
64             unregisterReceiver(mReceiver);
65         }
66     }
buildReaderIntent(Context context)67     public static Intent buildReaderIntent(Context context) {
68         Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
69         readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
70                 PrefixPaymentService1.APDU_COMMAND_SEQUENCE);
71         readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
72                 PrefixPaymentService1.APDU_RESPOND_SEQUENCE);
73         readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
74                 context.getString(R.string.nfc_hce_payment_prefix_aids_reader));
75         return readerIntent;
76     }
77 
78     @Override
onApduSequenceComplete(ComponentName component, long duration)79     void onApduSequenceComplete(ComponentName component, long duration) {
80         if (component.equals(PrefixPaymentService1.COMPONENT)) {
81             getPassButton().setEnabled(true);
82         }
83     }
84 }
85