From d192f5b3765fe87873dd4d30fb3bd91031854ce7 Mon Sep 17 00:00:00 2001 From: anonymouzz Date: Fri, 4 Aug 2017 10:41:54 +0700 Subject: [PATCH] Add javadoc, rename FindUserThread -> NetworkThread, introduce AbstractScannerActivity.handleBarcode, refs #9991 --- android/app/build.gradle | 6 ++- .../checker/AbstractScannerActivity.java | 40 ++++++++++++++++--- .../com/dinect/checker/CameraActivity.java | 8 ++-- ...FindUserThread.java => NetworkThread.java} | 26 +++++++----- .../dinect/checker/zxing/ScannerActivity.java | 8 +--- 5 files changed, 62 insertions(+), 26 deletions(-) rename android/app/src/main/java/com/dinect/checker/{FindUserThread.java => NetworkThread.java} (70%) diff --git a/android/app/build.gradle b/android/app/build.gradle index 1ebb7c9..04a9920 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -29,9 +29,11 @@ android { } buildTypes { + debug { + debuggable true + signingConfig signingConfigs.debug + } release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } } diff --git a/android/app/src/main/java/com/dinect/checker/AbstractScannerActivity.java b/android/app/src/main/java/com/dinect/checker/AbstractScannerActivity.java index 74c72a8..542d90a 100644 --- a/android/app/src/main/java/com/dinect/checker/AbstractScannerActivity.java +++ b/android/app/src/main/java/com/dinect/checker/AbstractScannerActivity.java @@ -33,6 +33,7 @@ import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.FrameLayout; +import android.widget.Toast; import com.dinect.net.ApiClient; @@ -47,12 +48,12 @@ public abstract class AbstractScannerActivity extends AppCompatActivity { static final String TAG = "C.ScannerActivity"; protected ApiClient apiClient; - protected FindUserThread findUserThread; + protected NetworkThread networkThread; LogoutDialogFragment logoutDialog; boolean isCameraAvailable() { - Log.d(TAG, "isCamerAvailable"); + Log.d(TAG, "isCameraAvailable"); PackageManager pm = getPackageManager(); return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA); } @@ -64,6 +65,12 @@ public abstract class AbstractScannerActivity extends AppCompatActivity { setResult(RESULT_CANCELED, response); } + /** + * initialize activity + * - removes windows title + * - set content view to layout id + * @param layoutID layout to use + * */ protected final boolean init(final int layoutID) { Log.d(TAG, "init"); if (!isCameraAvailable()) { @@ -77,6 +84,9 @@ public abstract class AbstractScannerActivity extends AppCompatActivity { return true; } + /** + * Configure toolbar of app + * */ protected final void setupToolbar(final int toolbarId, final @NonNull String title) { Log.d(TAG, "setupToolbar"); final Toolbar toolbar = (Toolbar) findViewById(toolbarId); @@ -90,12 +100,18 @@ public abstract class AbstractScannerActivity extends AppCompatActivity { } } + /** + * Adds scanner view to target frame layout + * */ protected final void setupScanner(final View view, final int targetFrameId) { Log.d(TAG, "setupScanner"); final FrameLayout root = (FrameLayout) findViewById(targetFrameId); root.addView(view, 0); } + /** + * Initialize network client + * */ protected final void setupApiClient(final Intent intent) { Log.d(TAG, "setupApiClient"); final String url = intent.getStringExtra(MainActivity.PREF_API_URL); @@ -106,20 +122,34 @@ public abstract class AbstractScannerActivity extends AppCompatActivity { + url + ", appToken " + appToken + ", token " + token); apiClient = new ApiClient(url, appToken, token); + networkThread = new NetworkThread(this, apiClient); } - protected final void networkCallback(final @NonNull Pair result) { + /** + * Handles barcode. + * Makes network call in separate thread and call + * networkResponseCallback + * @param card scanned card number + * */ + public void handleBarcode(final @NonNull String card) { + Log.d(TAG, "handleBarcode"); + if (BuildConfig.DEBUG) { + Toast.makeText(this, card, Toast.LENGTH_SHORT).show(); + } + networkThread.card(card).start(); + } + protected final void networkResponseCallback(final @NonNull Pair result) { + Log.d(TAG, "networkResponseCallback"); if (null != result.first) { Log.d(TAG, "user found, finish activity with result"); final Intent intent = new Intent(); intent.putExtra("user", result.second); intent.putExtra("card", result.first); setResult(RESULT_OK, intent); + networkThread.close(); finish(); } - findUserThread.close(); - findUserThread = null; } @Override diff --git a/android/app/src/main/java/com/dinect/checker/CameraActivity.java b/android/app/src/main/java/com/dinect/checker/CameraActivity.java index a09c3be..4a7a57f 100644 --- a/android/app/src/main/java/com/dinect/checker/CameraActivity.java +++ b/android/app/src/main/java/com/dinect/checker/CameraActivity.java @@ -62,7 +62,7 @@ public class CameraActivity extends AppCompatActivity implements Camera.PreviewC } @Override - protected void onCreate(Bundle savedInstanceState) { + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!isCameraAvailable()) { @@ -119,7 +119,7 @@ public class CameraActivity extends AppCompatActivity implements Camera.PreviewC } @Override - protected void onResume() { + public void onResume() { super.onResume(); // Open the default i.e. the first rear facing camera. @@ -137,7 +137,7 @@ public class CameraActivity extends AppCompatActivity implements Camera.PreviewC } @Override - protected void onPause() { + public void onPause() { super.onPause(); // Because the Camera object is a shared resource, it's very @@ -248,6 +248,7 @@ public class CameraActivity extends AppCompatActivity implements Camera.PreviewC } void handleResult(Response response, String card) { + Log.d("CameraActivity", "handleResult"); if (response == null) { mPreviewing = true; mCamera.startPreview(); @@ -317,6 +318,7 @@ public class CameraActivity extends AppCompatActivity implements Camera.PreviewC @Override public void run() { + Log.d("CameraActivity", "NetworkThread.run"); Request request = new Request.Builder() .addHeader("DM-Authorization", "dmapptoken " + mAppToken) .addHeader("Authorization", "dmtoken " + mToken) diff --git a/android/app/src/main/java/com/dinect/checker/FindUserThread.java b/android/app/src/main/java/com/dinect/checker/NetworkThread.java similarity index 70% rename from android/app/src/main/java/com/dinect/checker/FindUserThread.java rename to android/app/src/main/java/com/dinect/checker/NetworkThread.java index ce823d6..0d80aa2 100644 --- a/android/app/src/main/java/com/dinect/checker/FindUserThread.java +++ b/android/app/src/main/java/com/dinect/checker/NetworkThread.java @@ -19,30 +19,27 @@ import android.support.annotation.NonNull; import android.util.Log; import android.util.Pair; -import com.dinect.checker.zxing.*; import com.dinect.net.ApiClient; /** * Created by anonymous on 03.08.17. */ -public final class FindUserThread extends Thread { +public final class NetworkThread extends Thread { - private static final String TAG = "C.FindUserThread"; + private static final String TAG = "C.NetworkThread"; - private com.dinect.checker.zxing.ScannerActivity activity; + private AbstractScannerActivity activity; private final ApiClient client; - private final String card; + private String card; /** - * @param activity caller activity + * @param activity caller activity (with networkResponseCallback()) * @param client ApiClient instance - * @param card card number */ - public FindUserThread(final @NonNull com.dinect.checker.zxing.ScannerActivity activity, final @NonNull ApiClient client, final @NonNull String card) { + public NetworkThread(final @NonNull AbstractScannerActivity activity, final @NonNull ApiClient client) { this.activity = activity; this.client = client; - this.card = card; } @Override @@ -53,12 +50,21 @@ public final class FindUserThread extends Thread { activity.runOnUiThread(new Runnable() { @Override public void run() { - activity.networkCallback(response); + activity.networkResponseCallback(response); } }); } } + /** + * Set card for network call + * @parm card number to search + * */ + public NetworkThread card(final @NonNull String card) { + this.card = card; + return this; + } + void close() { activity = null; } diff --git a/android/app/src/main/java/com/dinect/checker/zxing/ScannerActivity.java b/android/app/src/main/java/com/dinect/checker/zxing/ScannerActivity.java index 392ceb4..03b304d 100644 --- a/android/app/src/main/java/com/dinect/checker/zxing/ScannerActivity.java +++ b/android/app/src/main/java/com/dinect/checker/zxing/ScannerActivity.java @@ -17,10 +17,8 @@ package com.dinect.checker.zxing; import android.os.Bundle; import android.os.Handler; -import android.widget.Toast; import com.dinect.checker.AbstractScannerActivity; -import com.dinect.checker.FindUserThread; import com.dinect.checker.R; import com.google.zxing.Result; @@ -68,10 +66,8 @@ public class ScannerActivity extends AbstractScannerActivity @Override public void handleResult(Result raw) { final String card = raw.getText(); - Toast.makeText(this, card, Toast.LENGTH_SHORT).show(); - findUserThread = new FindUserThread(this, apiClient, card); - findUserThread.start(); + handleBarcode(card); final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @@ -79,6 +75,6 @@ public class ScannerActivity extends AbstractScannerActivity public void run() { scannerView.resumeCameraPreview(ScannerActivity.this); } - }, 2000); + }, 500); } }