From bb45d252f1fd5e0c9ba345e5c920a8c0c8502544 Mon Sep 17 00:00:00 2001 From: Ivan Murashov Date: Wed, 19 Jul 2017 18:59:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=AD=D0=BA=D1=80=D0=B0=D0=BD=20=D1=81=D0=BA?= =?UTF-8?q?=D0=B0=D0=BD=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 8 +- android/app/src/main/AndroidManifest.xml | 4 +- .../checker/activity/CameraActivity.java | 90 +++++++++++++----- .../dinect/checker/view/CameraPreview.java | 85 ----------------- .../res/drawable-xxxhdpi/help_outline.png | Bin 0 -> 1766 bytes .../src/main/res/drawable-xxxhdpi/logout.png | Bin 0 -> 1300 bytes .../drawable-xxxhdpi/shape_bottom_left.png | Bin 0 -> 413 bytes .../drawable-xxxhdpi/shape_bottom_right.png | Bin 0 -> 394 bytes .../res/drawable-xxxhdpi/shape_top_left.png | Bin 0 -> 419 bytes .../res/drawable-xxxhdpi/shape_top_right.png | Bin 0 -> 385 bytes .../app/src/main/res/drawable/button_blue.xml | 17 ++++ .../src/main/res/drawable/shadow_bottom.xml | 7 ++ android/app/src/main/res/layout/a_scanner.xml | 86 ++++++++++++++++- android/app/src/main/res/menu/menu.xml | 17 ++++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 0 bytes .../main/res/mipmap-hdpi/ic_launcher_app.png | Bin 0 -> 2453 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 0 bytes .../main/res/mipmap-mdpi/ic_launcher_app.png | Bin 0 -> 1763 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher_app.png | Bin 0 -> 3290 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_app.png | Bin 0 -> 6013 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_app.png | Bin 0 -> 8267 bytes android/app/src/main/res/values/dimens.xml | 5 + android/app/src/main/res/values/strings.xml | 7 ++ android/app/src/main/res/values/styles.xml | 6 ++ lib/activate_token.dart | 2 +- lib/main.dart | 5 +- lib/registration.dart | 9 +- lib/splash.dart | 2 +- 31 files changed, 223 insertions(+), 127 deletions(-) delete mode 100644 android/app/src/main/java/com/dinect/checker/view/CameraPreview.java create mode 100644 android/app/src/main/res/drawable-xxxhdpi/help_outline.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/logout.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/shape_bottom_left.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/shape_bottom_right.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/shape_top_left.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/shape_top_right.png create mode 100644 android/app/src/main/res/drawable/button_blue.xml create mode 100644 android/app/src/main/res/drawable/shadow_bottom.xml create mode 100644 android/app/src/main/res/menu/menu.xml delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_app.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_app.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_app.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_app.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_app.png create mode 100644 android/app/src/main/res/values/dimens.xml create mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 android/app/src/main/res/values/styles.xml diff --git a/android/app/build.gradle b/android/app/build.gradle index 1ea1db3..6b73299 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -15,8 +15,8 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 21 - buildToolsVersion '21.0.0' + compileSdkVersion 25 + buildToolsVersion '25.0.0' lintOptions { disable 'InvalidPackage' @@ -48,7 +48,5 @@ flutter { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile "com.google.android.gms:play-services-gcm:11.0.1" - androidTestCompile 'com.android.support:support-annotations:21.0.0' - androidTestCompile 'com.android.support.test:runner:0.5' - androidTestCompile 'com.android.support.test:rules:0.5' + compile 'com.android.support:appcompat-v7:25.0.0' } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index b28861b..d7a6f2b 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -17,7 +17,7 @@ In most cases you can leave this as-is, but you if you want to provide additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> - + + android:theme="@style/AppTheme"/> mContours = new HashMap<>(); - ImageScanner scanner; - - private boolean barcodeScanned = false; + private boolean mBarcodeScanned = false; private boolean previewing = true; static { @@ -49,28 +56,37 @@ public class CameraActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setContentView(R.layout.a_scanner); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - autoFocusHandler = new Handler(); + mAutoFocusHandler = new Handler(); mCamera = getCameraInstance(); + mScanner = new ImageScanner(); - /* Instance barcode scanner */ - scanner = new ImageScanner(); - scanner.setConfig(0, Config.X_DENSITY, 3); - scanner.setConfig(0, Config.Y_DENSITY, 3); + SurfaceView preview = (SurfaceView) findViewById(R.id.cameraPreview); + SurfaceHolder holder = preview.getHolder(); - mPreview = (SurfaceView) findViewById(R.id.cameraPreview); + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setTitle(getString(R.string.scanner_title)); + actionBar.setDisplayHomeAsUpEnabled(true); + } - SurfaceHolder holder = mPreview.getHolder(); holder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { try { + mCamera.setPreviewDisplay(holder); mCamera.startPreview(); mCamera.setPreviewCallback(previewCallback); mCamera.autoFocus(autoFocusCB); + mCamera.setDisplayOrientation(90); + initCountours(); } catch (Exception e) { e.printStackTrace(); } @@ -78,7 +94,6 @@ public class CameraActivity extends Activity { @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { - mCamera.setDisplayOrientation(270); } @Override @@ -88,6 +103,31 @@ public class CameraActivity extends Activity { }); } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.menu, menu); + return true; + } + + + private void initCountours() { + + DisplayMetrics displayMetrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + int width = displayMetrics.widthPixels; + + Resources res = getResources(); + mContours.put("left", (int) res.getDimension(R.dimen.scanner_contour_top)); + mContours.put("top", (int) res.getDimension(R.dimen.scanner_contour_left)); + mContours.put("width", (int) res.getDimension(R.dimen.scanner_contour_height)); + mContours.put("height", width - (2 * (int) res.getDimension(R.dimen.scanner_contour_left))); + + Log.d("kifio", "left: " + mContours.get("left")); + Log.d("kifio", "top: " + mContours.get("top")); + Log.d("kifio", "width: " + mContours.get("width")); + Log.d("kifio", "height: " + mContours.get("height")); + } + public void onPause() { super.onPause(); releaseCamera(); @@ -121,22 +161,24 @@ public class CameraActivity extends Activity { PreviewCallback previewCallback = new PreviewCallback() { public void onPreviewFrame(byte[] data, Camera camera) { - Camera.Parameters parameters = camera.getParameters(); + + Parameters parameters = camera.getParameters(); Size size = parameters.getPreviewSize(); Image barcode = new Image(size.width, size.height, "Y800"); barcode.setData(data); +// barcode.setCrop(mContours.get("left"), mContours.get("top"), mContours.get("width"), mContours.get("height")); - int result = scanner.scanImage(barcode); + int result = mScanner.scanImage(barcode); if (result != 0) { previewing = false; mCamera.setPreviewCallback(null); mCamera.stopPreview(); - SymbolSet syms = scanner.getResults(); + SymbolSet syms = mScanner.getResults(); for (Symbol sym : syms) { - barcodeScanned = true; + mBarcodeScanned = true; Toast.makeText(CameraActivity.this, sym.getData(), Toast.LENGTH_SHORT).show(); } } @@ -146,7 +188,7 @@ public class CameraActivity extends Activity { // Mimic continuous auto-focusing AutoFocusCallback autoFocusCB = new AutoFocusCallback() { public void onAutoFocus(boolean success, Camera camera) { - autoFocusHandler.postDelayed(doAutoFocus, 1000); + mAutoFocusHandler.postDelayed(doAutoFocus, 1000); } }; } \ No newline at end of file diff --git a/android/app/src/main/java/com/dinect/checker/view/CameraPreview.java b/android/app/src/main/java/com/dinect/checker/view/CameraPreview.java deleted file mode 100644 index 040215e..0000000 --- a/android/app/src/main/java/com/dinect/checker/view/CameraPreview.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.dinect.checker.view; - -import java.io.IOException; - -import android.app.Activity; -import android.os.Bundle; - -import android.util.Log; - -import android.view.View; -import android.view.Surface; -import android.view.SurfaceView; -import android.view.SurfaceHolder; - -import android.content.Context; - -import android.hardware.Camera; -import android.hardware.Camera.PreviewCallback; -import android.hardware.Camera.AutoFocusCallback; -import android.hardware.Camera.Parameters; - -public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { - - private SurfaceHolder mHolder; - private Camera mCamera; - private PreviewCallback previewCallback; - private AutoFocusCallback autoFocusCallback; - - public CameraPreview(Context context, Camera camera, - PreviewCallback previewCb, - AutoFocusCallback autoFocusCb) { - super(context); - mCamera = camera; - previewCallback = previewCb; - autoFocusCallback = autoFocusCb; - mHolder = getHolder(); - mHolder.addCallback(this); - - // deprecated setting, but required on Android versions prior to 3.0 - mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); - } - - public void surfaceCreated(SurfaceHolder holder) { - // The Surface has been created, now tell the camera where to draw the preview. - try { - mCamera.setPreviewDisplay(holder); - } catch (IOException e) { - Log.d("DBG", "Error setting camera preview: " + e.getMessage()); - } - } - - public void surfaceDestroyed(SurfaceHolder holder) { - // Camera preview released in activity - } - - public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { - /* - * If your preview can change or rotate, take care of those events here. - * Make sure to stop the preview before resizing or reformatting it. - */ - if (mHolder.getSurface() == null){ - // preview surface does not exist - return; - } - - // stop preview before making changes - try { - mCamera.stopPreview(); - } catch (Exception e){ - // ignore: tried to stop a non-existent preview - } - - try { - // Hard code camera surface rotation 90 degs to match Activity view in portrait - mCamera.setDisplayOrientation(90); - - mCamera.setPreviewDisplay(mHolder); - mCamera.setPreviewCallback(previewCallback); - mCamera.startPreview(); - mCamera.autoFocus(autoFocusCallback); - } catch (Exception e){ - Log.d("DBG", "Error starting camera preview: " + e.getMessage()); - } - } -} diff --git a/android/app/src/main/res/drawable-xxxhdpi/help_outline.png b/android/app/src/main/res/drawable-xxxhdpi/help_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4a2fc6cdd199430595ee069d2f37453a47543b GIT binary patch literal 1766 zcmV282?xJV-4Vwc2H}uMDl~W)#AR6tBTPnFWNmV@)0S4U9U#0$NYY4u?De;hn%^5#jUHP*qQ}ZZWmDV8B_&lgtPeaK%AGCm=lG zzsh)=8D>d18fRRZKo!Ut=mUEgd25GTdqwNX7FFRnNM zfiLZaq}3=Avh78YuzkwyC4op2xM`{vZC(I`hkBZwGqzftUCFJE`> z0k&*>MOC9J)-Vt(sOo#jy9%fh6|tcpgbCqYh1fw&b2vX)Y|<+j9YXA3Nms>ORF$;2 z7b}z!s?2+XNcE6(5wrJ7_`CdePe3EdUVUJ=HkeuXX}C@5c@91<<^9Rip|IPla+m8C z(K`d+4+-4xQe7mJ0q+4(Dh(#z=b8T@WS@ZW1S^%#GlHFaj+4$K%BSLO!aRnP*SWw5 z%K68-M)rc|f2$S2Wz*^fkLNu&z+tv)KE2oBLY*{qc@t^XrYk=)5AS{>>_dtKn?4WJ zb%+@z`aISzfenaAD@s@MP8{Kp^C%#qmV|y=fPvvvwV6^X@vnh#YK=%Vm-&q%1_WU* zHo8{ioc6VgFHQ+Wf){S6jEAj51_oU&UNc#$iSyj1ktq5iQm&b7Mrcv305C9<^ab&3 zZLSG=y_rw8c#TBSm)FpEZoacXn8%@2Ak)*80)cm@fY<;Ak6==q7{#4kCSy?|J(FDiWbb3sAe4ZZ z#TcA)wiR$XXgGxDs6M6g2s25#;W+t-1C|O^z6?rh#QaSInn|axKC|rd%WZ`D<5DFwZf_=3f!fmZHB_1dH8a<^yeql$?m{6Va2A4CYv4 z=Cj&4=AeiOG~z>nR%q9;&&=Ce;gDPe$RN7O%+Q*ub`He>`BF8St}~9)rcQKTDgy+< zI6|*W#`gQnptvLR?E*Dqyv{vler8#`i0n8UlIphF!mbQZLTA*n<`P-;21Eq*?QLd~ zZDz(ksvEmo23itpzj1>Qk=3%}cDR!m_kfwR#(dd8uwFoc8soMJwXa09UTV?ZwfQbG z_8BwZN`2NTfDBNMiRfWqanO*JQXs>48C&p(nKA!Dn+nJP1;^rcU|nWo7}*^Bo?j7- z2;LSV@|lS4RT~HW0AK)jVRwKck-p6gmx#o`?=mxPmGdSdpNQzbem_kmXX}AYi9v~~ zwsjdI5<8+HD6#cer!A2`W#-lYP)6t&twT-uLqyk0K68UUN6fs@BNUCJ)?oh&L%{vm zfJfXN6f9Ll9uU!cBD$8?{ZAsotNU*QLdU*q&?OWH1}}CP=o^VmBVL0Gp*mdP&(STE zDZz9NWhyY;L$QEi=Cua)W%eNK%6W@z$_2r4Hl~TgnS!$5ZI*ro5rH8L8BEh03NURV zZz2K<9*TR+9GOxOL%&SC#{9m@fI;9I`>ATs6aXZ7;h>GMN8nS$z2*K%Pb=59?BF&L|sFf zs)(ptC{q>@bqQtaBBEZQOj<-#4aL>BJaxXzP`X*{r1ellR0Snc@KcqGQ4|r)vUnxF zk+z7a7D}wdq8LmfQr9HhpeZ7%g%S%$<3kpKNz}452{$?;o-87&g_1LfW-y7AOS6ze zu861>3gV;Kc(Z(O4|%96C@##dwTxL32dr8=@%1|V0hiDVe+@|UF{V`{S!%^o!+<$#$#y|n`>G<$@SbHJ?o zw8$@1HuPdsaCGpxz33#^7}j}-W_Oz6r8AJiu%t0U8UaTxmq`0aL@yG*-iTFJHA~3n ziioN`S`VtGC^-9m>7j_I36z$<&FP_ts2YkAi0Y?t&NH68h^PumCXzLrEHw}ZW%44T zS}3t1!XhA^eVVk0s1{1<2TLXm8DC|Y0z!)~q>-I_LexTuRaRC3@s80XMMSkwLII{G zu~ZMt(u;_ypm+<%jR6CR|Hr^mMX6Ekr56!ZLs9Ljkkq^0u!0000< KMNUMnLSTXkYETIP literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/shape_bottom_left.png b/android/app/src/main/res/drawable-xxxhdpi/shape_bottom_left.png new file mode 100644 index 0000000000000000000000000000000000000000..15ffb91c28f53ec5a3249c8b154c93b5e72f295c GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$>^XU`+9JaSX|DemnbM;9&<5=cRlv zS}riIWVyq*^a5i5=Szm&!d5@doIfHdoHn8M_v@+ta@qXaFW372?mQ|i=+6+xAfq?m zongI-{j}Fnb?JF_O79qI^m^`9c|CTYbYFM&*}do6_Wv`qu9oq%Gs(A5n#Z_jt%=cu zn)sdDo*20unN?PPxk#!{H*|uHd~=w*blBOQiBkg%?|Q6u>e=G8Vn*JQP(`;W)es-^ zOREHw*9vJZlg9+>dbxLt))9}@EnP3&qC}IHggPB9QC`bscu8wv(yobNtrD4} z8Z&#M-nRO!bM3$H{hn9B_oV9nZt=sJe`@aURzI9s_2TS@8?zHjGA;fme1G+SpK$G| zw(UHXTi#XAI9^eeQK?iJ!Iw3+tmhlc14H(+b-pWNKAa2Ovv?}fltKqUB}oUtozQ`pOYAX!LoCfOv)rwpPvc!l-`Nk6p`yp# zKLM-(%zIl002?#g4>qj^zwZ79;OorjwXI_O!_1Dg82))+b})Z1v&G9BcK0QK?Zi%9 z)nIr^b;l}C%na=@clU_68Y(Qqk1DPTM|fa3D~A86f?ArPO(PoA(rW3;42aFJ^5e1w!;y*9_*;k~EI4mWBt0jk z7;dJzB}K(>X#6&pSDvUQ4VR6N8BYzKs-$b}()wHSaQ7Cf+?m<@{Kw^XV9fG#aSX|DemnbMAhV$WOS-Xw zun(I6rv6ntnt2)~|lg-6zbK9h|OHG)Sh&9G;>7~NQkE@hB zzPh|RRvx_1tm@?B8}e6tW_IYTihX?3X{XKI7mN0<_*&=q_H*Uqu8`lR|E;+G)V6D` ld$jfbm;IlQU1hFkoV$^Edf`OD+rYqQ@O1TaS?83{1OR;&x~u>I literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/shape_top_right.png b/android/app/src/main/res/drawable-xxxhdpi/shape_top_right.png new file mode 100644 index 0000000000000000000000000000000000000000..e392c7f05b935f6c2a9d561ee3cc01fc82f052a5 GIT binary patch literal 385 zcmV-{0e=38P)O1U8`Egbj?02($=+^XDYjuc-3JUCuAbMMo*o(+1c@P_@>I}fSBBP%fnenxV+>+sI#b%TFUPP9ns#^eug4;GndS`}P zNcWwxs%p*@m0oKJH)q&ZuzBgpdG)upXd!J&&7?d&cwAa&?T6v?J@;fgT2{;S#IP6q zNOifp3=Kz0&!dG2|CuGWw5N?C)v%@6($g6r!;$#(Xd%O7m<)SJiCaU4$uJp?%cn;f z879MI*h5O(8Zu0V$#7ggJ<7;1879LXQsUN-VKPjHS=3_K9-95S?>zumy&h_LR>Kl%zTEdV fqxKZ + + + + + + + + + + + + + + diff --git a/android/app/src/main/res/drawable/shadow_bottom.xml b/android/app/src/main/res/drawable/shadow_bottom.xml new file mode 100644 index 0000000..e53dff9 --- /dev/null +++ b/android/app/src/main/res/drawable/shadow_bottom.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/a_scanner.xml b/android/app/src/main/res/layout/a_scanner.xml index 41ae4bf..5adb5da 100644 --- a/android/app/src/main/res/layout/a_scanner.xml +++ b/android/app/src/main/res/layout/a_scanner.xml @@ -2,7 +2,7 @@ @@ -10,5 +10,89 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +