package cz.destil.glasquare.activity; import android.app.Activity; import android.content.Intent; import android.view.View; import com.google.android.glass.app.Card; import cz.destil.glasquare.R; /** * Base activity which show how to login. * * @author David 'Destil' Vavra (david@vavra.me) */ public class LoginActivity extends BaseActivity { public static final int REQUEST_CODE = 42; public static final String EXTRA_TOKEN = "token"; private Card mCard; public static void call(Activity activity) { activity.startActivityForResult(new Intent(activity, LoginActivity.class), REQUEST_CODE); } @Override public void onStart() { super.onStart(); acquireWakeLock(); } @Override public void onStop() { releaseWakeLock(); super.onStop(); } @Override protected View getLayoutView() { mCard = new Card(this); mCard.setText(R.string.login_hint); mCard.setFootnote(R.string.tap_to_scan_qr_code); return mCard.getView(); } @Override protected void onTap() { QrScanActivity.call(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == QrScanActivity.REQUEST_CODE) { if (resultCode==Activity.RESULT_OK) { String text = data.getStringExtra(QrScanActivity.EXTRA_TEXT); if (isValidQr(text)) { String token = parseToken(text); Intent intent = new Intent(); intent.putExtra(EXTRA_TOKEN, token); setResult(Activity.RESULT_OK, intent); finish(); } else { showStatus(R.string.invalid_qr); } } else { showStatus(R.string.qr_scanning_failed); } } } private void showStatus(int status) { mCard.setText(status); setContentView(mCard.getView()); } private String parseToken(String text) { return text.split("4sq=")[1]; } private boolean isValidQr(String text) { return text.startsWith("4sq="); } }