-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
*.iml | ||
.gradle | ||
/local.properties | ||
/.idea/caches | ||
/.idea/libraries | ||
/.idea/modules.xml | ||
/.idea/workspace.xml | ||
/.idea/navEditor.xml | ||
/.idea/assetWizardSettings.xml | ||
.DS_Store | ||
/build | ||
/captures | ||
.externalNativeBuild | ||
.cxx | ||
local.properties |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# Number Plate Scanner | ||
![Plate Number Detection](https://img.shields.io/badge/plate%20number%20detection-290064.svg?style=for-the-badge) | ||
![Number Plate Provider](https://img.shields.io/badge/number%20plate%20provider-6200ee?style=for-the-badge) | ||
![Number Plate Scanner](https://img.shields.io/badge/number%20plate%20scanner-9654f4?style=for-the-badge) | ||
![Mobile Application](https://img.shields.io/badge/mobile%20application-efe6fd?style=for-the-badge) | ||
|
||
Number Plate Scanner has been made to take a capture of a car with his | ||
plate number from device native camera and send it to remote back-end | ||
server for his identification. This mobile application has been built | ||
to make a quick presentation of automobile number plate detection | ||
software. | ||
|
||
## Table of contents | ||
1. [Access links](#links) | ||
2. [Reference](#ref) | ||
3. [Final result](#result) | ||
4. [Project installation](#install) | ||
5. [Sources code cloning](#cloning) | ||
|
||
## Access links <a id = "links"></a> | ||
The project distribution version can be accessible through the link below : | ||
- https://gitlab.com/obrymec/number_plate_scanner/-/blob/master/dist/numberplate_scanner_v0.1.4b10.apk?ref_type=heads | ||
|
||
## Reference <a id = "ref"></a> | ||
The project can be found via the link below : | ||
- https://github.com/obrymec/number_plate_scanner | ||
|
||
## Final result <a id = "result"></a> | ||
This is the final result of the project :<br/><br/> | ||
![First render](./render/render_1.jpg) | ||
![Second render](./render/render_2.jpg) | ||
|
||
## Project installation <a id = "install"></a> | ||
To be able to run this project in development | ||
mode, you will need to install <i> | ||
<a href = "https://developer.android.com">Android Studio</a></i>. | ||
Download it and then decompress the downloaded zip file into | ||
a folder called <b><i>soft</i></b> inside <b><i>home</i></b> | ||
folder like that : <b><i>/home/soft/android_studio</i></b>. | ||
Before start installation, run the following commands : | ||
```sh | ||
sudo apt-get -y install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386;\ | ||
sudo apt-get -y install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils;\ | ||
sudo adduser `id -un` libvirt;\ | ||
sudo adduser `id -un` kvm;\ | ||
virsh list --all | ||
``` | ||
Now, you can install Android Studio. After installation, don't | ||
forget to install <i>cmdline-tools</i> and <i>latest API levels</i> | ||
from SDK manager before restart Android Studio. For more information, | ||
you can visit the following links below : | ||
- https://help.ubuntu.com/community/KVM/Installation | ||
- https://developer.android.com/studio/install | ||
|
||
## Sources code cloning <a id = "cloning"></a> | ||
```sh | ||
git clone [email protected]:obrymec/number_plate_scanner.git number_plate_scanner/ | ||
``` | ||
|
||
Enjoy :) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
plugins { | ||
alias(libs.plugins.androidApplication) | ||
alias(libs.plugins.jetbrainsKotlinAndroid) | ||
} | ||
|
||
android { | ||
namespace = "org.cacybernet.numberplatescanner" | ||
compileSdk = 34 | ||
defaultConfig { | ||
applicationId = "org.cacybernet.numberplatescanner" | ||
minSdk = 26 | ||
targetSdk = 34 | ||
versionCode = 1 | ||
versionName = "0.1.4" | ||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
vectorDrawables { | ||
useSupportLibrary = true | ||
} | ||
} | ||
buildTypes { | ||
release { | ||
isMinifyEnabled = false | ||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") | ||
} | ||
} | ||
compileOptions { | ||
sourceCompatibility = JavaVersion.VERSION_1_8 | ||
targetCompatibility = JavaVersion.VERSION_1_8 | ||
} | ||
kotlinOptions { | ||
jvmTarget = "1.8" | ||
} | ||
buildFeatures { | ||
compose = true | ||
} | ||
composeOptions { | ||
kotlinCompilerExtensionVersion = "1.5.1" | ||
} | ||
packaging { | ||
resources { | ||
excludes += "/META-INF/{AL2.0,LGPL2.1}" | ||
} | ||
} | ||
} | ||
|
||
dependencies { | ||
implementation(libs.androidx.core.ktx) | ||
implementation(libs.androidx.lifecycle.runtime.ktx) | ||
implementation(libs.androidx.activity.compose) | ||
implementation(platform(libs.androidx.compose.bom)) | ||
implementation(libs.androidx.ui) | ||
implementation(libs.androidx.ui.graphics) | ||
implementation(libs.androidx.ui.tooling.preview) | ||
implementation(libs.androidx.material3) | ||
implementation(libs.androidx.appcompat) | ||
implementation(libs.material) | ||
implementation(libs.androidx.activity) | ||
implementation(libs.androidx.constraintlayout) | ||
testImplementation(libs.junit) | ||
androidTestImplementation(libs.androidx.junit) | ||
androidTestImplementation(libs.androidx.espresso.core) | ||
androidTestImplementation(platform(libs.androidx.compose.bom)) | ||
androidTestImplementation(libs.androidx.ui.test.junit4) | ||
debugImplementation(libs.androidx.ui.tooling) | ||
debugImplementation(libs.androidx.ui.test.manifest) | ||
//noinspection UseTomlInstead | ||
implementation("com.squareup.okhttp:okhttp:2.7.0") | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Add project specific ProGuard rules here. | ||
# You can control the set of applied configuration files using the | ||
# proguardFiles setting in build.gradle. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} | ||
|
||
# Uncomment this to preserve the line number information for | ||
# debugging stack traces. | ||
#-keepattributes SourceFile,LineNumberTable | ||
|
||
# If you keep the line number information, uncomment this to | ||
# hide the original source file name. | ||
#-renamesourcefileattribute SourceFile |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
<?xml version = "1.0" encoding = "utf-8"?> | ||
<manifest | ||
xmlns:android = "http://schemas.android.com/apk/res/android" | ||
xmlns:tools = "http://schemas.android.com/tools" | ||
> | ||
<!--Permissions--> | ||
<uses-feature android:name = "android.hardware.camera" android:required = "false"/> | ||
<uses-permission android:name = "android.permission.INTERNET"/> | ||
<uses-permission android:name = "android.permission.CAMERA"/> | ||
<uses-permission | ||
android:name = "android.permission.WRITE_EXTERNAL_STORAGE" | ||
tools:ignore = "ScopedStorage" | ||
/> | ||
<!--Numberplate Scanner--> | ||
<application | ||
android:theme = "@style/Theme.NumberplateScanner" | ||
android:roundIcon = "@mipmap/launcher_round" | ||
android:label = "@string/app_name" | ||
android:icon = "@mipmap/launcher" | ||
android:allowBackup = "true" | ||
android:supportsRtl = "true" | ||
tools:targetApi = "31" | ||
> | ||
<!--Main screen--> | ||
<activity | ||
tools:ignore = "DiscouragedApi,LockedOrientationActivity" | ||
android:theme = "@style/Theme.NumberplateScanner" | ||
android:name = ".presentation.MainScreen" | ||
android:screenOrientation = "portrait" | ||
android:exported = "false" | ||
/> | ||
<!--Splash screen--> | ||
<activity | ||
tools:ignore = "DiscouragedApi,LockedOrientationActivity" | ||
android:theme = "@style/Theme.NumberplateScanner" | ||
android:screenOrientation = "portrait" | ||
android:name = ".SplashScreen" | ||
android:exported = "true" | ||
> | ||
<intent-filter> | ||
<action android:name = "android.intent.action.MAIN"/> | ||
<category android:name = "android.intent.category.LAUNCHER"/> | ||
</intent-filter> | ||
</activity> | ||
<!--File provider configurations--> | ||
<provider | ||
android:authorities = "org.cacybernet.numberplatescanner.fileprovider" | ||
android:name = "androidx.core.content.FileProvider" | ||
android:grantUriPermissions = "true" | ||
android:exported = "false" | ||
> | ||
<meta-data | ||
android:name = "android.support.FILE_PROVIDER_PATHS" | ||
android:resource = "@xml/file_paths" | ||
/> | ||
</provider> | ||
</application> | ||
</manifest> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
/* | ||
* @project: Numberplate Scanner - https://gitlab.com/obrymec/number_plate_scanner | ||
* @author: Obrymec - [email protected] | ||
* @fileoverview: The startup screen. | ||
* @file: SplashScreen.java | ||
* @created: 2024-04-27 | ||
* @updated: 2024-05-11 | ||
* @supported: ANDROID | ||
* @version: 0.0.2 | ||
*/ | ||
|
||
/// Package name. | ||
package org.cacybernet.numberplatescanner; | ||
|
||
/// Android dependencies. | ||
import androidx.appcompat.app.AppCompatActivity; | ||
import android.annotation.SuppressLint; | ||
import android.content.Intent; | ||
import android.os.Handler; | ||
import android.os.Bundle; | ||
|
||
/// Custom dependencies. | ||
import org.cacybernet.numberplatescanner.presentation.MainScreen; | ||
import org.cacybernet.numberplatescanner.utils.System; | ||
|
||
/** | ||
* The application splash screen for the first startup. | ||
*/ | ||
@SuppressLint("CustomSplashScreen") | ||
@SuppressWarnings("unused") | ||
public class SplashScreen extends AppCompatActivity { | ||
/** | ||
* Called when this activity is loaded and ready to use. | ||
* @param savedInstanceState The saved instance state. | ||
*/ | ||
@Override | ||
protected void onCreate (Bundle savedInstanceState) { | ||
// Calls his parent method. | ||
super.onCreate(savedInstanceState); | ||
// Binds the xml file to this java class. | ||
this.setContentView(R.layout.splash_screen); | ||
// Changes native status bars color. | ||
System.getInstance().setBarsColor(R.color.primary_900, this); | ||
// Waits for (03) seconds before go to dashboard. | ||
new Handler().postDelayed(() -> { | ||
// Go to dashboard. | ||
this.startActivity(new Intent(this, MainScreen.class)); | ||
// Destroys splash screen. | ||
this.finish(); | ||
// After (03) seconds. | ||
}, 3000); | ||
} | ||
} |