Skip to content

Commit 0f39a04

Browse files
committed
Project done !
1 parent 4f842b8 commit 0f39a04

File tree

86 files changed

+3748
-3
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+3748
-3
lines changed

.gitignore

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
*.iml
2+
.gradle
3+
/local.properties
4+
/.idea/caches
5+
/.idea/libraries
6+
/.idea/modules.xml
7+
/.idea/workspace.xml
8+
/.idea/navEditor.xml
9+
/.idea/assetWizardSettings.xml
10+
.DS_Store
11+
/build
12+
/captures
13+
.externalNativeBuild
14+
.cxx
15+
local.properties

.idea/.gitignore

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/.name

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/compiler.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/deploymentTargetDropDown.xml

+23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/kotlinc.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/migrations.xml

+10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

LICENSE

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1616
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1717
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1818
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21-
SOFTWARE.
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21+
DEALINGS IN THE SOFTWARE.

README.md

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Number Plate Scanner
2+
![Plate Number Detection](https://img.shields.io/badge/plate%20number%20detection-290064.svg?style=for-the-badge)
3+
![Number Plate Provider](https://img.shields.io/badge/number%20plate%20provider-6200ee?style=for-the-badge)
4+
![Number Plate Scanner](https://img.shields.io/badge/number%20plate%20scanner-9654f4?style=for-the-badge)
5+
![Mobile Application](https://img.shields.io/badge/mobile%20application-efe6fd?style=for-the-badge)
6+
7+
Number Plate Scanner has been made to take a capture of a car with his
8+
plate number from device native camera and send it to remote back-end
9+
server for his identification. This mobile application has been built
10+
to make a quick presentation of automobile number plate detection
11+
software.
12+
13+
## Table of contents
14+
1. [Access links](#links)
15+
2. [Reference](#ref)
16+
3. [Final result](#result)
17+
4. [Project installation](#install)
18+
5. [Sources code cloning](#cloning)
19+
20+
## Access links <a id = "links"></a>
21+
The project distribution version can be accessible through the link below :
22+
- https://gitlab.com/obrymec/number_plate_scanner/-/blob/master/dist/numberplate_scanner_v0.1.4b10.apk?ref_type=heads
23+
24+
## Reference <a id = "ref"></a>
25+
The project can be found via the link below :
26+
- https://github.com/obrymec/number_plate_scanner
27+
28+
## Final result <a id = "result"></a>
29+
This is the final result of the project :<br/><br/>
30+
![First render](./render/render_1.jpg)
31+
![Second render](./render/render_2.jpg)
32+
33+
## Project installation <a id = "install"></a>
34+
To be able to run this project in development
35+
mode, you will need to install <i>
36+
<a href = "https://developer.android.com">Android Studio</a></i>.
37+
Download it and then decompress the downloaded zip file into
38+
a folder called <b><i>soft</i></b> inside <b><i>home</i></b>
39+
folder like that : <b><i>/home/soft/android_studio</i></b>.
40+
Before start installation, run the following commands :
41+
```sh
42+
sudo apt-get -y install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386;\
43+
sudo apt-get -y install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils;\
44+
sudo adduser `id -un` libvirt;\
45+
sudo adduser `id -un` kvm;\
46+
virsh list --all
47+
```
48+
Now, you can install Android Studio. After installation, don't
49+
forget to install <i>cmdline-tools</i> and <i>latest API levels</i>
50+
from SDK manager before restart Android Studio. For more information,
51+
you can visit the following links below :
52+
- https://help.ubuntu.com/community/KVM/Installation
53+
- https://developer.android.com/studio/install
54+
55+
## Sources code cloning <a id = "cloning"></a>
56+
```sh
57+
git clone git@gitlab.com:obrymec/number_plate_scanner.git number_plate_scanner/
58+
```
59+
60+
Enjoy :)

app/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

app/build.gradle.kts

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
plugins {
2+
alias(libs.plugins.androidApplication)
3+
alias(libs.plugins.jetbrainsKotlinAndroid)
4+
}
5+
6+
android {
7+
namespace = "org.cacybernet.numberplatescanner"
8+
compileSdk = 34
9+
defaultConfig {
10+
applicationId = "org.cacybernet.numberplatescanner"
11+
minSdk = 26
12+
targetSdk = 34
13+
versionCode = 1
14+
versionName = "0.1.4"
15+
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
16+
vectorDrawables {
17+
useSupportLibrary = true
18+
}
19+
}
20+
buildTypes {
21+
release {
22+
isMinifyEnabled = false
23+
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
24+
}
25+
}
26+
compileOptions {
27+
sourceCompatibility = JavaVersion.VERSION_1_8
28+
targetCompatibility = JavaVersion.VERSION_1_8
29+
}
30+
kotlinOptions {
31+
jvmTarget = "1.8"
32+
}
33+
buildFeatures {
34+
compose = true
35+
}
36+
composeOptions {
37+
kotlinCompilerExtensionVersion = "1.5.1"
38+
}
39+
packaging {
40+
resources {
41+
excludes += "/META-INF/{AL2.0,LGPL2.1}"
42+
}
43+
}
44+
}
45+
46+
dependencies {
47+
implementation(libs.androidx.core.ktx)
48+
implementation(libs.androidx.lifecycle.runtime.ktx)
49+
implementation(libs.androidx.activity.compose)
50+
implementation(platform(libs.androidx.compose.bom))
51+
implementation(libs.androidx.ui)
52+
implementation(libs.androidx.ui.graphics)
53+
implementation(libs.androidx.ui.tooling.preview)
54+
implementation(libs.androidx.material3)
55+
implementation(libs.androidx.appcompat)
56+
implementation(libs.material)
57+
implementation(libs.androidx.activity)
58+
implementation(libs.androidx.constraintlayout)
59+
testImplementation(libs.junit)
60+
androidTestImplementation(libs.androidx.junit)
61+
androidTestImplementation(libs.androidx.espresso.core)
62+
androidTestImplementation(platform(libs.androidx.compose.bom))
63+
androidTestImplementation(libs.androidx.ui.test.junit4)
64+
debugImplementation(libs.androidx.ui.tooling)
65+
debugImplementation(libs.androidx.ui.test.manifest)
66+
//noinspection UseTomlInstead
67+
implementation("com.squareup.okhttp:okhttp:2.7.0")
68+
}

app/numberplatescanner.jks

2.71 KB
Binary file not shown.

app/proguard-rules.pro

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Add project specific ProGuard rules here.
2+
# You can control the set of applied configuration files using the
3+
# proguardFiles setting in build.gradle.
4+
#
5+
# For more details, see
6+
# http://developer.android.com/guide/developing/tools/proguard.html
7+
8+
# If your project uses WebView with JS, uncomment the following
9+
# and specify the fully qualified class name to the JavaScript interface
10+
# class:
11+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12+
# public *;
13+
#}
14+
15+
# Uncomment this to preserve the line number information for
16+
# debugging stack traces.
17+
#-keepattributes SourceFile,LineNumberTable
18+
19+
# If you keep the line number information, uncomment this to
20+
# hide the original source file name.
21+
#-renamesourcefileattribute SourceFile

app/src/main/AndroidManifest.xml

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?xml version = "1.0" encoding = "utf-8"?>
2+
<manifest
3+
xmlns:android = "http://schemas.android.com/apk/res/android"
4+
xmlns:tools = "http://schemas.android.com/tools"
5+
>
6+
<!--Permissions-->
7+
<uses-feature android:name = "android.hardware.camera" android:required = "false"/>
8+
<uses-permission android:name = "android.permission.INTERNET"/>
9+
<uses-permission android:name = "android.permission.CAMERA"/>
10+
<uses-permission
11+
android:name = "android.permission.WRITE_EXTERNAL_STORAGE"
12+
tools:ignore = "ScopedStorage"
13+
/>
14+
<!--Numberplate Scanner-->
15+
<application
16+
android:theme = "@style/Theme.NumberplateScanner"
17+
android:roundIcon = "@mipmap/launcher_round"
18+
android:label = "@string/app_name"
19+
android:icon = "@mipmap/launcher"
20+
android:allowBackup = "true"
21+
android:supportsRtl = "true"
22+
tools:targetApi = "31"
23+
>
24+
<!--Main screen-->
25+
<activity
26+
tools:ignore = "DiscouragedApi,LockedOrientationActivity"
27+
android:theme = "@style/Theme.NumberplateScanner"
28+
android:name = ".presentation.MainScreen"
29+
android:screenOrientation = "portrait"
30+
android:exported = "false"
31+
/>
32+
<!--Splash screen-->
33+
<activity
34+
tools:ignore = "DiscouragedApi,LockedOrientationActivity"
35+
android:theme = "@style/Theme.NumberplateScanner"
36+
android:screenOrientation = "portrait"
37+
android:name = ".SplashScreen"
38+
android:exported = "true"
39+
>
40+
<intent-filter>
41+
<action android:name = "android.intent.action.MAIN"/>
42+
<category android:name = "android.intent.category.LAUNCHER"/>
43+
</intent-filter>
44+
</activity>
45+
<!--File provider configurations-->
46+
<provider
47+
android:authorities = "org.cacybernet.numberplatescanner.fileprovider"
48+
android:name = "androidx.core.content.FileProvider"
49+
android:grantUriPermissions = "true"
50+
android:exported = "false"
51+
>
52+
<meta-data
53+
android:name = "android.support.FILE_PROVIDER_PATHS"
54+
android:resource = "@xml/file_paths"
55+
/>
56+
</provider>
57+
</application>
58+
</manifest>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* @project: Numberplate Scanner - https://gitlab.com/obrymec/number_plate_scanner
3+
* @author: Obrymec - obrymecsprinces@gmail.com
4+
* @fileoverview: The startup screen.
5+
* @file: SplashScreen.java
6+
* @created: 2024-04-27
7+
* @updated: 2024-05-11
8+
* @supported: ANDROID
9+
* @version: 0.0.2
10+
*/
11+
12+
/// Package name.
13+
package org.cacybernet.numberplatescanner;
14+
15+
/// Android dependencies.
16+
import androidx.appcompat.app.AppCompatActivity;
17+
import android.annotation.SuppressLint;
18+
import android.content.Intent;
19+
import android.os.Handler;
20+
import android.os.Bundle;
21+
22+
/// Custom dependencies.
23+
import org.cacybernet.numberplatescanner.presentation.MainScreen;
24+
import org.cacybernet.numberplatescanner.utils.System;
25+
26+
/**
27+
* The application splash screen for the first startup.
28+
*/
29+
@SuppressLint("CustomSplashScreen")
30+
@SuppressWarnings("unused")
31+
public class SplashScreen extends AppCompatActivity {
32+
/**
33+
* Called when this activity is loaded and ready to use.
34+
* @param savedInstanceState The saved instance state.
35+
*/
36+
@Override
37+
protected void onCreate (Bundle savedInstanceState) {
38+
// Calls his parent method.
39+
super.onCreate(savedInstanceState);
40+
// Binds the xml file to this java class.
41+
this.setContentView(R.layout.splash_screen);
42+
// Changes native status bars color.
43+
System.getInstance().setBarsColor(R.color.primary_900, this);
44+
// Waits for (03) seconds before go to dashboard.
45+
new Handler().postDelayed(() -> {
46+
// Go to dashboard.
47+
this.startActivity(new Intent(this, MainScreen.class));
48+
// Destroys splash screen.
49+
this.finish();
50+
// After (03) seconds.
51+
}, 3000);
52+
}
53+
}

0 commit comments

Comments
 (0)