diff --git a/Lookify/app/build.gradle b/Lookify/app/build.gradle index 43e036d..5b0cb79 100644 --- a/Lookify/app/build.gradle +++ b/Lookify/app/build.gradle @@ -19,6 +19,10 @@ android { } } +repositories { + jcenter() +} + dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.0.2' @@ -27,4 +31,6 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' implementation project(path: ':openCVLibrary348') + implementation 'com.journeyapps:zxing-android-embedded:3.0.2@aar' + implementation 'com.google.zxing:core:3.2.0' } diff --git a/Lookify/app/src/main/AndroidManifest.xml b/Lookify/app/src/main/AndroidManifest.xml index 93d05cf..165dde3 100644 --- a/Lookify/app/src/main/AndroidManifest.xml +++ b/Lookify/app/src/main/AndroidManifest.xml @@ -12,10 +12,11 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + + - + diff --git a/Lookify/app/src/main/java/com/example/lookifyv2/Decode.java b/Lookify/app/src/main/java/com/example/lookifyv2/Decode.java new file mode 100644 index 0000000..6c6a7f8 --- /dev/null +++ b/Lookify/app/src/main/java/com/example/lookifyv2/Decode.java @@ -0,0 +1,126 @@ +package com.example.lookifyv2; + +import android.graphics.Bitmap; +import android.os.Bundle; +import android.util.Log; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.BinaryBitmap; +import com.google.zxing.DecodeHintType; +import com.google.zxing.LuminanceSource; +import com.google.zxing.MultiFormatReader; +import com.google.zxing.NotFoundException; +import com.google.zxing.RGBLuminanceSource; +import com.google.zxing.Result; +import com.google.zxing.common.HybridBinarizer; + +import org.opencv.android.BaseLoaderCallback; +import org.opencv.android.LoaderCallbackInterface; +import org.opencv.android.OpenCVLoader; +import org.opencv.android.Utils; +import org.opencv.core.Mat; +import org.opencv.imgcodecs.Imgcodecs; + +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.List; + +public class Decode extends AppCompatActivity { + + //inicjacja logów OpenCV + private static final String TAG = "OCVSample::Activity"; + + String filePath; + Mat matPic; + + //OpenCV domyślnie uruchamia się po onCreate co powoduje problemy - zapobiegamy więc temu + private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { + @Override + public void onManagerConnected(int status) { + switch (status) { + case LoaderCallbackInterface.SUCCESS: { + Log.i(TAG, "OpenCV loaded successfully"); + decodePic(); + } + break; + default: { + super.onManagerConnected(status); + } + break; + } + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_decode); + } + + public void decodePic() { + //pobieramy adres pliku przekazywany przez poprzednie activity + Bundle extras = getIntent().getExtras(); + filePath = extras.getString("takenPic"); + matPic = Imgcodecs.imread(filePath); + + String contents = null; + Bitmap bMap = Bitmap.createBitmap(matPic.width(), matPic.height(), Bitmap.Config.ARGB_8888); + Utils.matToBitmap(matPic, bMap); + int[] intArray = new int[bMap.getWidth() * bMap.getHeight()]; + + bMap.getPixels(intArray, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight()); + LuminanceSource source = new RGBLuminanceSource(bMap.getWidth(), bMap.getHeight(), intArray); + BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); + + //Zwiększanie efektywności wykrywania kodów + Hashtable hints = new Hashtable<>(); + + List formats = new ArrayList<>(); + formats.add(BarcodeFormat.AZTEC); + formats.add(BarcodeFormat.CODABAR); + formats.add(BarcodeFormat.CODE_39); + formats.add(BarcodeFormat.CODE_93); + formats.add(BarcodeFormat.CODE_128); + formats.add(BarcodeFormat.DATA_MATRIX); + formats.add(BarcodeFormat.EAN_8); + formats.add(BarcodeFormat.EAN_13); + formats.add(BarcodeFormat.ITF); + formats.add(BarcodeFormat.PDF_417); + formats.add(BarcodeFormat.QR_CODE); + formats.add(BarcodeFormat.RSS_14); + formats.add(BarcodeFormat.RSS_EXPANDED); + formats.add(BarcodeFormat.UPC_A); + formats.add(BarcodeFormat.UPC_E); + + hints.put(DecodeHintType.POSSIBLE_FORMATS, formats); + hints.put(DecodeHintType.TRY_HARDER, true); + + //Szukanie kodu na wczytanym zdjęciu + MultiFormatReader reader = new MultiFormatReader(); + try { + Result result = reader.decode(bitmap, hints); + contents = result.getText(); + } catch (NotFoundException e) { + e.printStackTrace(); + } + + Toast toast = Toast.makeText(this, contents, Toast.LENGTH_LONG); + toast.show(); + } + + //Druga część potrzebna do ładowania OpenCV w odpowiednim momencie + @Override + protected void onResume() { + super.onResume(); + if (!OpenCVLoader.initDebug()) { + Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization"); + OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); + } else { + Log.d(TAG, "OpenCV library found inside package. Using it!"); + mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); + } + } +} \ No newline at end of file diff --git a/Lookify/app/src/main/java/com/example/lookifyv2/MainActivity.java b/Lookify/app/src/main/java/com/example/lookifyv2/MainActivity.java index 78555bb..87652d1 100644 --- a/Lookify/app/src/main/java/com/example/lookifyv2/MainActivity.java +++ b/Lookify/app/src/main/java/com/example/lookifyv2/MainActivity.java @@ -72,7 +72,7 @@ public class MainActivity extends AppCompatActivity { } public void openScan(){ - Intent intent_Scan = new Intent(this, Scan.class); + Intent intent_Scan = new Intent(this, TakePhoto.class); startActivity(intent_Scan); } } diff --git a/Lookify/app/src/main/java/com/example/lookifyv2/Scan.java b/Lookify/app/src/main/java/com/example/lookifyv2/TakePhoto.java similarity index 59% rename from Lookify/app/src/main/java/com/example/lookifyv2/Scan.java rename to Lookify/app/src/main/java/com/example/lookifyv2/TakePhoto.java index ce1cc51..41a61b4 100644 --- a/Lookify/app/src/main/java/com/example/lookifyv2/Scan.java +++ b/Lookify/app/src/main/java/com/example/lookifyv2/TakePhoto.java @@ -1,18 +1,21 @@ package com.example.lookifyv2; -import androidx.appcompat.app.AppCompatActivity; + import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; + +import androidx.appcompat.app.AppCompatActivity; + import java.io.File; -import java.text.SimpleDateFormat; -import java.util.Date; //klasa napisana z pomocą tutorialu dostępnego na https://androidkennel.org/android-camera-access-tutorial/ -public class Scan extends AppCompatActivity { +public class TakePhoto extends AppCompatActivity { - private Uri file; + private Uri photoFileUri; + public File photoFile; + String path; @Override protected void onCreate(Bundle savedInstanceState) { @@ -22,37 +25,48 @@ public class Scan extends AppCompatActivity { } //Uruchomienie androidowego modułu kamery - public void openCamera(){ + public void openCamera() { Intent intent_Camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - file = Uri.fromFile(getOutputMediaFile()); - intent_Camera.putExtra(MediaStore.EXTRA_OUTPUT, file); + photoFile = getOutputMediaFile(); + photoFileUri = Uri.fromFile(photoFile); + intent_Camera.putExtra(MediaStore.EXTRA_OUTPUT, photoFileUri); startActivityForResult(intent_Camera, 100); } - //Jeśli moduł kamery zostanie zamknięty zanim zrobione zostanie zdjęcie to activity skanowania się kończy + //Jeśli moduł kamery zostanie zamknięty zanim zrobione zostanie zdjęcie to activity skanowania się kończy, w innym razie przechodzi dalej @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 100) { if (resultCode == RESULT_CANCELED) { finish(); } + else { + goDecode(); + } } } //Tworzenie katalogu dla danych aplikacji jesli nie istnieje; umieszczanie w nim tymczasowego pliku zdjecia w formacie .jpg - private static File getOutputMediaFile(){ + private static File getOutputMediaFile() { File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), "Lookify"); - if (!mediaStorageDir.exists()){ - if (!mediaStorageDir.mkdirs()){ + if (!mediaStorageDir.exists()) { + if (!mediaStorageDir.mkdirs()) { return null; } } - String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); return new File(mediaStorageDir.getPath() + File.separator + - "TEMP_"+ timeStamp + ".jpg"); //DO EDYCJI + "TEMP" + ".jpg"); } + //Przejście do activity odpowiedzialnego za odczytywanie kodu wraz z przekazaniem jej ścieżki zdjęcia + public void goDecode(){ + path = photoFile.getAbsolutePath(); + Intent intent_Decode = new Intent(this, Decode.class); + intent_Decode.putExtra("takenPic", path); + startActivity(intent_Decode); + finish(); + } } diff --git a/Lookify/app/src/main/res/layout/activity_decode.xml b/Lookify/app/src/main/res/layout/activity_decode.xml new file mode 100644 index 0000000..a4899ff --- /dev/null +++ b/Lookify/app/src/main/res/layout/activity_decode.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/Lookify/app/src/main/res/layout/activity_scan.xml b/Lookify/app/src/main/res/layout/activity_scan.xml index efd3fc6..918d907 100644 --- a/Lookify/app/src/main/res/layout/activity_scan.xml +++ b/Lookify/app/src/main/res/layout/activity_scan.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".Scan"> + tools:context=".TakePhoto"> - \ No newline at end of file + \ No newline at end of file diff --git a/Lookify/openCVLibrary348/build/intermediates/incremental/mergeDebugShaders/merger.xml b/Lookify/openCVLibrary348/build/intermediates/incremental/mergeDebugShaders/merger.xml index fc44f8e..bfe426f 100644 --- a/Lookify/openCVLibrary348/build/intermediates/incremental/mergeDebugShaders/merger.xml +++ b/Lookify/openCVLibrary348/build/intermediates/incremental/mergeDebugShaders/merger.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugAssets/merger.xml b/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugAssets/merger.xml index 7c4859b..3dcd28c 100644 --- a/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugAssets/merger.xml +++ b/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugAssets/merger.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugResources/compile-file-map.properties b/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugResources/compile-file-map.properties index e237e24..d8dc314 100644 --- a/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +++ b/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugResources/compile-file-map.properties @@ -1 +1 @@ -#Wed Dec 18 23:21:27 CET 2019 +#Fri Dec 20 20:43:57 CET 2019 diff --git a/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugResources/merger.xml b/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugResources/merger.xml index 7abbe16..5c0e98f 100644 --- a/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugResources/merger.xml +++ b/Lookify/openCVLibrary348/build/intermediates/incremental/packageDebugResources/merger.xml @@ -1,12 +1,12 @@ - + - + diff --git a/Lookify/openCVLibrary348/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt b/Lookify/openCVLibrary348/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt index 4ba812f..cc62139 100644 --- a/Lookify/openCVLibrary348/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +++ b/Lookify/openCVLibrary348/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt @@ -6,8 +6,8 @@ 6 7 C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml +8-->C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml 9 android:targetSdkVersion="29" /> -9-->C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml +9-->C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml 10 11 diff --git a/Lookify/openCVLibrary348/build/outputs/logs/manifest-merger-debug-report.txt b/Lookify/openCVLibrary348/build/outputs/logs/manifest-merger-debug-report.txt index e555323..f115171 100644 --- a/Lookify/openCVLibrary348/build/outputs/logs/manifest-merger-debug-report.txt +++ b/Lookify/openCVLibrary348/build/outputs/logs/manifest-merger-debug-report.txt @@ -1,37 +1,37 @@ -- Merging decision tree log --- manifest -ADDED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 +ADDED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:2:1-7:12 package - ADDED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:3:7-27 - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml + ADDED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:3:7-27 + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml android:versionName - ADDED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:5:7-34 - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml + ADDED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:5:7-34 + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml xmlns:android - ADDED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:2:11-69 + ADDED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:2:11-69 android:versionCode - ADDED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml:4:7-33 - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml + ADDED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml:4:7-33 + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml uses-sdk -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml reason: use-sdk injection requested -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml -INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml reason: use-sdk injection requested +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml +INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml android:targetSdkVersion - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml - ADDED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml + ADDED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml android:minSdkVersion - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml - ADDED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml - INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookifyv2kopia\openCVLibrary348\src\main\AndroidManifest.xml + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml + ADDED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml + INJECTED from C:\HDD\Moi\Studia\Informatyka\Lookify\openCVLibrary348\src\main\AndroidManifest.xml