diff --git a/.gitignore b/.gitignore index 99362e2..fe5af7a 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,7 @@ .externalNativeBuild .cxx local.properties +*.apk +*.log +*.jks +*.keystore \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..ad1ad43 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git "a/README RESOURCES/Obje Tan\304\261ma.apk" "b/README RESOURCES/Obje Tan\304\261ma.apk" deleted file mode 100644 index a3fa88b..0000000 Binary files "a/README RESOURCES/Obje Tan\304\261ma.apk" and /dev/null differ diff --git a/README.md b/README.md index 855555c..249f917 100644 --- a/README.md +++ b/README.md @@ -1,77 +1,75 @@ # A - Obje Tanıma +Logo + +
+ **İçindekiler** - - [1. Proje Hakkında](#1-proje-hakkında) - - [2. Ekran Görüntüleri](#2-ekran-görüntüleri) - - [3. Video](#3-video) - - [4. Kullanılan Teknolojiler](#4-kullanılan-teknolojiler) - - [5. Uygulamayı Çalıştırma](#5-uygulamayı-çalıştırma) - - [6. APK Dosyası](#6-apk-dosyası) - - [7. Lisans](#7-lisans) - - [8. İletişim](#8-i̇letişim) +- [1. Uygulama Hakkında](#1-uygulama-hakkında) +- [2. Ekran Görüntüleri](#2-ekran-görüntüleri) +- [3. Video](#3-video) +- [4. Kullanılan Teknoloji ve Kütüphaneler](#4-kullanılan-teknoloji-ve-kütüphaneler) +- [5. Uygulamayı Çalıştırma](#5-uygulamayı-çalıştırma) +- [6. Lisans](#6-lisans) +- [7. İletişim](#7-i̇letişim) --- -## 1. Proje Hakkında +## 1. Uygulama Hakkında - - **Tür:** Android Mobil Uygulama - - **Kullanılan İzinler:** - - Kamera - - Uyanma Kilidi (WAKE_LOCK) +- **Tür:** Android Mobil Uygulama +- **Kullanılan İzinler:** + - Kamera + - Uyanma Kilidi (WAKE_LOCK) -Bu Android uygulaması TensorFlow Lite kullanılarak `https://www.tensorflow.org/lite/examples/object_detection/overview?hl=tr` adresinden indirilen örnek meta verileri ile nesne tanıma işlemlerini gerçekleştirmek için geliştirilmiştir. Cihazın kamerasına erişim sağlandıktan sonra kameradan gelen görüntüler gerçek zamanlı olarak taranır ve tanımlanan nesneler kutu içinde gösterilir. +Bu Android uygulaması TensorFlow Lite kullanılarak `https://www.tensorflow.org/lite/examples/object_detection/overview?hl=tr` +adresinden indirilen örnek meta verileri ile nesne tanıma işlemlerini gerçekleştirmek için geliştirilmiştir. +Cihazın kamerasına erişim sağlandıktan sonra kameradan gelen görüntüler gerçek zamanlı olarak taranır ve tanımlanan nesneler kutu içinde gösterilir. ## 2. Ekran Görüntüleri -| ![Ekran Görüntüsü 1](./README%20RESOURCES/Ekran%20Görüntüsü%201.jpg) | ![Ekran Görüntüsü 2](./README%20RESOURCES/Ekran%20Görüntüsü%202.jpg) | -| ------------- | ------------- | -| ![Ekran Görüntüsü 3](./README%20RESOURCES/Ekran%20Görüntüsü%203.jpg) | ![Ekran Görüntüsü 4](./README%20RESOURCES/Ekran%20Görüntüsü%204.jpg) | | +| ![Ekran Görüntüsü 1](./Readme%20Resources/Ekran%20Görüntüleri/Ekran%20Görüntüsü%201.jpg) | ![Ekran Görüntüsü 2](./Readme%20Resources/Ekran%20Görüntüleri/Ekran%20Görüntüsü%202.jpg) | +| ------------- | ------------- | +| ![Ekran Görüntüsü 3](./Readme%20Resources/Ekran%20Görüntüleri/Ekran%20Görüntüsü%203.jpg) | ![Ekran Görüntüsü 4](./Readme%20Resources/Ekran%20Görüntüleri/Ekran%20Görüntüsü%204.jpg) | | ## 3. Video -[Proje Tanıtım Videosu](https://youtu.be/RpdR251bvqw) +[Uygulama Tanıtım Videosu](https://youtu.be/RpdR251bvqw) -## 4. Kullanılan Teknolojiler -- **Kütüphaneler:** - - androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 - - androidx.lifecycle:lifecycle-livedata-ktx:2.6.2 - - androidx.navigation:navigation-fragment-ktx:2.7.5 - - androidx.navigation:navigation-ui-ktx:2.7.5 -- **Teknolojiler:** - - ViewBinding - - Coroutines +## 4. Kullanılan Teknoloji ve Kütüphaneler +- `viewBinding` +- `mlModelBinding` +- `Kotlin Coroutines` +- `implementation("androidx.navigation:navigation-ui-ktx:2.7.7")` +- `implementation("androidx.navigation:navigation-fragment-ktx:2.7.7")` +- `implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0")` +- `implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0")` -## 5. Uygulamayı Çalıştırma - -Uygulamayı kendi bilgisayarınıza indirmek, çalıştırmak veya kodları incelemek için git bash'de projeyi indirmek istediğiniz dosya yoluna gidip `git clone https://github.com/mustafatoktas/A_ObjeTanima.git` komutunu çalıştırabilirsiniz. +## 5. Uygulamayı Çalıştırma -## 6. APK Dosyası - -[Obje Tanıma.apk](./README%20RESOURCES/Obje%20Tanıma.apk) - -| Min API | Target API | -| ------------- | ------------- | -| 26 - Android 8.0 Oreo | 34 - Android 14.0 | -- **Paket Adı:** `com.mustafatoktas.objetanima` -- **Versiyon Adı:** `1.1` -- **Versiyon Kodu:** `2` +Uygulamanın proje dosyasını kendi bilgisayarınıza indirmek, kodları incelemek ve +[lisans hakları](https://www.gnu.org/licenses/gpl-3.0.html) çerçevesinde geliştirme +yapabilmek için [git](https://git-scm.com) yüklü bir bilgisayarda projeyi indirmek +istediğiniz dosya yoluna gidip terminalde +`git clone https://github.com/mustafatoktas/A_ObjeTanima.git` +komutunu çalıştırabilirsiniz. -## 7. Lisans +## 6. Lisans Copyright 2024 Mustafa TOKTAŞ Licensed under the GNU General Public License v3.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.gnu.org/licenses/gpl-3.0.html + https://www.gnu.org/licenses/gpl-3.0.html Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -80,8 +78,8 @@ Uygulamayı kendi bilgisayarınıza indirmek, çalıştırmak veya kodları ince limitations under the License. -## 8. İletişim +## 7. İletişim -- E-posta: [info@mustafatoktas.com](mailto:info@mustafatoktas.com) -- Telegram: [Mustafa TOKTAŞ](https://t.me/mustafatoktas00) -- LinkedIn: [Mustafa TOKTAŞ](https://www.linkedin.com/in/mustafatoktas/) + Mail + Telegram + LinkedIn \ No newline at end of file diff --git "a/README RESOURCES/Ekran G\303\266r\303\274nt\303\274s\303\274 1.jpg" "b/Readme Resources/Ekran G\303\266r\303\274nt\303\274leri/Ekran G\303\266r\303\274nt\303\274s\303\274 1.jpg" similarity index 100% rename from "README RESOURCES/Ekran G\303\266r\303\274nt\303\274s\303\274 1.jpg" rename to "Readme Resources/Ekran G\303\266r\303\274nt\303\274leri/Ekran G\303\266r\303\274nt\303\274s\303\274 1.jpg" diff --git "a/README RESOURCES/Ekran G\303\266r\303\274nt\303\274s\303\274 2.jpg" "b/Readme Resources/Ekran G\303\266r\303\274nt\303\274leri/Ekran G\303\266r\303\274nt\303\274s\303\274 2.jpg" similarity index 100% rename from "README RESOURCES/Ekran G\303\266r\303\274nt\303\274s\303\274 2.jpg" rename to "Readme Resources/Ekran G\303\266r\303\274nt\303\274leri/Ekran G\303\266r\303\274nt\303\274s\303\274 2.jpg" diff --git "a/README RESOURCES/Ekran G\303\266r\303\274nt\303\274s\303\274 3.jpg" "b/Readme Resources/Ekran G\303\266r\303\274nt\303\274leri/Ekran G\303\266r\303\274nt\303\274s\303\274 3.jpg" similarity index 100% rename from "README RESOURCES/Ekran G\303\266r\303\274nt\303\274s\303\274 3.jpg" rename to "Readme Resources/Ekran G\303\266r\303\274nt\303\274leri/Ekran G\303\266r\303\274nt\303\274s\303\274 3.jpg" diff --git "a/README RESOURCES/Ekran G\303\266r\303\274nt\303\274s\303\274 4.jpg" "b/Readme Resources/Ekran G\303\266r\303\274nt\303\274leri/Ekran G\303\266r\303\274nt\303\274s\303\274 4.jpg" similarity index 100% rename from "README RESOURCES/Ekran G\303\266r\303\274nt\303\274s\303\274 4.jpg" rename to "Readme Resources/Ekran G\303\266r\303\274nt\303\274leri/Ekran G\303\266r\303\274nt\303\274s\303\274 4.jpg" diff --git "a/Readme Resources/Obje Tan\304\261ma Logo.png" "b/Readme Resources/Obje Tan\304\261ma Logo.png" new file mode 100644 index 0000000..1a9041d Binary files /dev/null and "b/Readme Resources/Obje Tan\304\261ma Logo.png" differ diff --git "a/Readme Resources/\304\260leti\305\237im/LinkedIn.png" "b/Readme Resources/\304\260leti\305\237im/LinkedIn.png" new file mode 100644 index 0000000..e58ed9f Binary files /dev/null and "b/Readme Resources/\304\260leti\305\237im/LinkedIn.png" differ diff --git "a/Readme Resources/\304\260leti\305\237im/Mail.png" "b/Readme Resources/\304\260leti\305\237im/Mail.png" new file mode 100644 index 0000000..148d8aa Binary files /dev/null and "b/Readme Resources/\304\260leti\305\237im/Mail.png" differ diff --git "a/Readme Resources/\304\260leti\305\237im/Telegram.png" "b/Readme Resources/\304\260leti\305\237im/Telegram.png" new file mode 100644 index 0000000..f8c8832 Binary files /dev/null and "b/Readme Resources/\304\260leti\305\237im/Telegram.png" differ diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 47c109e..29eb8d2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -27,11 +27,11 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } buildFeatures { @@ -42,24 +42,24 @@ android { dependencies { - implementation("androidx.core:core-ktx:1.12.0") + implementation("androidx.core:core-ktx:1.13.1") implementation("androidx.appcompat:appcompat:1.6.1") - implementation("com.google.android.material:material:1.10.0") + implementation("com.google.android.material:material:1.12.0") implementation("androidx.constraintlayout:constraintlayout:2.1.4") - implementation("org.tensorflow:tensorflow-lite-support:0.1.0") - implementation("org.tensorflow:tensorflow-lite-metadata:0.1.0") + implementation("org.tensorflow:tensorflow-lite-support:0.4.4") + implementation("org.tensorflow:tensorflow-lite-metadata:0.4.4") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") //lifecycle - val lifecycle_version = "2.6.2" - implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") + val lifecycle_version = "2.7.0" + implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0") implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") //navigation - val nav_version = "2.7.5" - implementation("androidx.navigation:navigation-fragment-ktx:2.7.5") + val nav_version = "2.7.7" + implementation("androidx.navigation:navigation-fragment-ktx:2.7.7") implementation("androidx.navigation:navigation-ui-ktx:$nav_version") } \ No newline at end of file diff --git a/app/release/baselineProfiles/0/app-release.dm b/app/release/baselineProfiles/0/app-release.dm new file mode 100644 index 0000000..4a7dc73 Binary files /dev/null and b/app/release/baselineProfiles/0/app-release.dm differ diff --git a/app/release/baselineProfiles/1/app-release.dm b/app/release/baselineProfiles/1/app-release.dm new file mode 100644 index 0000000..79d0923 Binary files /dev/null and b/app/release/baselineProfiles/1/app-release.dm differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json new file mode 100644 index 0000000..0846fcf --- /dev/null +++ b/app/release/output-metadata.json @@ -0,0 +1,37 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "com.mustafatoktas.objetanima", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 2, + "versionName": "1.1", + "outputFile": "app-release.apk" + } + ], + "elementType": "File", + "baselineProfiles": [ + { + "minApi": 28, + "maxApi": 30, + "baselineProfiles": [ + "baselineProfiles/1/app-release.dm" + ] + }, + { + "minApi": 31, + "maxApi": 2147483647, + "baselineProfiles": [ + "baselineProfiles/0/app-release.dm" + ] + } + ], + "minSdkVersionForDexing": 26 +} \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..532f46f Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/app/src/main/res/mipmap-anydpi/ic_launcher.xml deleted file mode 100644 index 6f3b755..0000000 --- a/app/src/main/res/mipmap-anydpi/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml deleted file mode 100644 index 6f3b755..0000000 --- a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index c209e78..d5994c8 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..f912547 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index b2dfe3d..1eb2629 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index 4f0f1d6..d9538c6 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..0fa9966 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 62b611d..9737985 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 948a307..bfb8832 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..75c176e Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 1b9a695..d91c25d 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp index 28d4b77..cef08af 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..6e76ee5 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 9287f50..edaef38 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index aa7d642..a7f90c9 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..86b85b0 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index 9126ae3..d1002a3 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..c02913f --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #474747 + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 174c2c7..54fb71e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.2.0" apply false + id("com.android.application") version "8.4.0" apply false id("org.jetbrains.kotlin.android") version "1.9.10" apply false } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 458e448..1f06420 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Dec 04 23:47:26 TRT 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists