package mobisocial.nfc.legacy; import mobisocial.ndefexchange.PendingNdefExchange; import mobisocial.nfc.ConnectionHandoverManager; import mobisocial.nfc.R; import android.app.Activity; import android.content.Intent; import android.nfc.NdefMessage; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class SendActivity extends Activity { private int QR_NFC_PAIR = 98743; private PendingNdefExchange mPartner; private NdefMessage mNdef; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_send); // TODO: This should be in data. // NdefFactory.ndefToUri(), uriToNdef(). mNdef = getIntent().getParcelableExtra("ndef"); if (mPartner == null && NfcBridgeActivity.getNdefExchange() != null) { mPartner = NfcBridgeActivity.getNdefExchange(); } else { findViewById(R.id.quicktap).setEnabled(false); } findViewById(R.id.quicktap).setOnClickListener(doQuicktap); findViewById(R.id.scanqr).setOnClickListener(doScanQR); findViewById(R.id.junction).setVisibility(View.GONE); findViewById(R.id.junction).setOnClickListener(doJunction); } private View.OnClickListener doQuicktap = new View.OnClickListener() { @Override public void onClick(View arg0) { if (mPartner != null) { toast("Exchanging messages."); mPartner.exchangeNdef(mNdef); finish(); } else { toast("No quicktap target set."); } } }; private View.OnClickListener doScanQR = new View.OnClickListener() { @Override public void onClick(View arg0) { toast("Scan to initiate ndef exchange."); Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, QR_NFC_PAIR); } }; private View.OnClickListener doJunction = new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO: // newJunction().sendMessage(content); } }; private void tryToSend() { if (mNdef != null) { if (mPartner != null) { toast("Exchanging messages."); mPartner.exchangeNdef(mNdef); finish(); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == QR_NFC_PAIR) { try { if (resultCode != RESULT_OK) { throw new Exception(); } String data = intent.getStringExtra("SCAN_RESULT"); if (!data.startsWith(ConnectionHandoverManager.USER_HANDOVER_PREFIX)) { throw new Exception(); } NdefMessage ndef = new NdefMessage(android.util.Base64.decode( data.substring(ConnectionHandoverManager.USER_HANDOVER_PREFIX.length()), android.util.Base64.URL_SAFE)); mPartner = new PendingNdefExchange(ndef, NfcBridgeService.getInstance()); tryToSend(); } catch (Exception e) { toast("No valid vNFC device found."); } } } private void toast(String text) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } }