Menu

General Android Integration Guide


Part I: Including DyScan in your Android Studio Project

  • This assumes that all developers’ GitHub usernames have been added to our repo and that they can access GitHub from their machines using an SSH key without providing a password (i.e. by using ssh-agent).
  • In the project-level build.gradle add a plugin (the plugins block must be immediately below the buildscript block)
  • plugins {
       id "com.dyneti.android.distribution" version "0.1"
    }
  • Then in the app-level build.gradle add these dependencies:

  • dependencies {
        // Other dependencies are here
        implementation 'com.dyneti.android.dyscan:dyscan:0.1'
        implementation 'com.android.support:support-v13:28.0.0'
    }
    
  • If you are using AndroidX, you will need implementation 'androidx.legacy:legacy-support-v13:1.0.0' as a dependency rather than com.android.support:support-v13:28.0.0'

Part II: General Guide

First, we need to import two DyScan classes in your Activity that will launch DyScan:

import com.dyneti.android.dyscan.DyScanActivity;
import com.dyneti.android.dyscan.CreditCard;

This example assumes that you're going to launch the scanner from a button, and that you've set the button's onClick handler in the layout XML via android:onClick="onScanPress". (If not, the process is analogous, just use the code inside this function) Then, add the method as:


public void onScanPress(View v) {
    Intent scanIntent = new Intent(this, DyScanActivity.class);

    scanIntent.putExtra("api-key", "{api_key_string}");

    // MY_SCAN_REQUEST_CODE (e.g., 1) is arbitrary and is only used within this activity.
    startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE);
}

(Make sure to replace “{api_key_string}” with your API key from Dyneti) and replace MY_SCAN_REQUEST_CODE with the arbitrary value. Next, we'll override onActivityResult() to get the scan result.


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);

   if (requestCode == 1) {
       if (data != null && data.hasExtra(DyScanActivity.EXTRA_SCAN_RESULT)) {
           CreditCard scanResult = data.getParcelableExtra(DyScanActivity.EXTRA_SCAN_RESULT);
           // Do stuff with results in scanResult 
       }
   }
  // Do stuff when no scan result is available.
}

The CreditCard class contains fields String cardNumber, int expiryMonth, int expiryYear, and boolean isFraud. Note that isFraud is currently always set to false.

Get Started