Added the Alexandre's updated code.

This commit is contained in:
Batuhan Berk Başoğlu 2021-02-25 23:33:45 -05:00
parent 304fb5a204
commit f288b6e81a
307 changed files with 8423 additions and 5873 deletions

View file

@ -8,11 +8,13 @@
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:label="Keyless Auto"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".add"></activity>
<activity android:name=".Apps"></activity>
<activity android:name=".Email" />
<activity android:name=".add" />
<activity android:name=".About" />
<activity android:name=".Support" />
<activity android:name=".Password" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -22,4 +22,8 @@ public class About extends AppCompatActivity {
startActivity(new Intent(getApplicationContext(), Login.class));
finish();
}
public void back(View view){
startActivity(new Intent(getApplicationContext(), Settings.class));
}
}

View file

@ -0,0 +1,29 @@
package com.example.capstone;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.google.firebase.auth.FirebaseAuth;
public class Apps extends AppCompatActivity {
FirebaseAuth fAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_apps);
fAuth = FirebaseAuth.getInstance();
}
public void logout(View view){
fAuth.signOut();
startActivity(new Intent(getApplicationContext(), Login.class));
finish();
}
public void back(View view){
startActivity(new Intent(getApplicationContext(), homepage.class));
}
}

View file

@ -129,4 +129,8 @@ public class Drivers extends AppCompatActivity{
startActivity(new Intent(getApplicationContext(), Login.class));
finish();
}
public void back(View view){
startActivity(new Intent(getApplicationContext(), Settings.class));
}
}

View file

@ -0,0 +1,59 @@
package com.example.capstone;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.FirebaseFirestore;
public class Email extends AppCompatActivity {
FirebaseAuth fauth;
FirebaseFirestore fstore;
Button resend, con;
FirebaseUser user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_email);
fauth = FirebaseAuth.getInstance();
fstore = FirebaseFirestore.getInstance();
resend = findViewById(R.id.resend);
con = findViewById(R.id.con);
user = fauth.getCurrentUser();
con.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), Login.class));
}
});
resend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
user.sendEmailVerification().addOnSuccessListener(new OnSuccessListener<Void>() {
public void onSuccess(Void aVoid) {
Toast.makeText(Email.this, "Verification Email has been sent.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Email.this, "Please use valid Email address", Toast.LENGTH_SHORT).show();
}
});
}
});
}
}

View file

@ -125,4 +125,8 @@ public class Enrollment extends AppCompatActivity {
}
public void back(View view){
startActivity(new Intent(getApplicationContext(), Settings.class));
}
}

View file

@ -1,8 +1,10 @@
package com.example.capstone;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
@ -13,14 +15,17 @@ import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class Login extends AppCompatActivity {
private EditText email, password;
private Button save;
private TextView account;
private TextView account, pass;
FirebaseAuth fAuth;
private String em, pw;
@ -33,6 +38,8 @@ public class Login extends AppCompatActivity {
password = (EditText) findViewById(R.id.password);
save = (Button) findViewById(R.id.signin);
account = findViewById(R.id.account);
pass = findViewById(R.id.pass);
fAuth = FirebaseAuth.getInstance();
account.setOnClickListener(new View.OnClickListener() {
@ -42,6 +49,43 @@ public class Login extends AppCompatActivity {
}
});
pass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final EditText mail = new EditText(v.getContext());
final AlertDialog.Builder passwordReset = new AlertDialog.Builder(v.getContext());
passwordReset.setTitle("Reset Password?");
passwordReset.setMessage("Don't worry! Just fill in your email and we'll send you a link to reset your password.");
passwordReset.setView(mail);
passwordReset.setPositiveButton("Reset password", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String mail2 = mail.getText().toString();
fAuth.sendPasswordResetEmail(mail2).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(Login.this, "Reset password link has been sent to your email.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Login.this, "Error! Email not sent "+ e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
});
passwordReset.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
passwordReset.create().show();
}
});
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -62,8 +106,13 @@ public class Login extends AppCompatActivity {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
Toast.makeText(Login.this, "Successful Login", Toast.LENGTH_LONG).show();
openHomepage();
FirebaseUser fuser = fAuth.getCurrentUser();
if(fuser != null && fuser.isEmailVerified()){
Toast.makeText(Login.this, "Successful Login", Toast.LENGTH_LONG).show();
openHomepage();
} else {
startActivity(new Intent(getApplicationContext(), Email.class));
}
} else {
Toast.makeText(Login.this, task.getException().toString(), Toast.LENGTH_LONG).show();
}

View file

@ -1,20 +1,58 @@
package com.example.capstone;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
public class Password extends AppCompatActivity {
FirebaseAuth fAuth;
private Button reset, backb;
private EditText email;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_password);
fAuth = FirebaseAuth.getInstance();
email = (EditText) findViewById(R.id.email);
reset = (Button) findViewById(R.id.Resetpassword);
backb = (Button) findViewById(R.id.backb);
reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String mail = email.getText().toString();
fAuth.sendPasswordResetEmail(mail).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(Password.this, "Reset password link has been sent to your email.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Password.this, "Error! Email not sent "+ e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
});
backb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), Settings.class));
}
});
}
public void logout(View view){
@ -22,4 +60,8 @@ public class Password extends AppCompatActivity {
startActivity(new Intent(getApplicationContext(), Login.class));
finish();
}
public void back(View view){
startActivity(new Intent(getApplicationContext(), Settings.class));
}
}

View file

@ -67,4 +67,8 @@ public class Settings extends AppCompatActivity {
startActivity(new Intent(getApplicationContext(), Login.class));
finish();
}
public void back(View view){
startActivity(new Intent(getApplicationContext(), homepage.class));
}
}

View file

@ -23,4 +23,8 @@ public class Support extends AppCompatActivity {
startActivity(new Intent(getApplicationContext(), Login.class));
finish();
}
public void back(View view){
startActivity(new Intent(getApplicationContext(), Settings.class));
}
}

View file

@ -4,16 +4,15 @@ public class User {
private String Firstname;
private String Lastname;
private Long phone;
private String phone;
private String email;
private String password;
public User(String fn, String ln, Long ph, String em, String pw) {
public User(String fn, String ln, String ph, String em) {
Firstname = fn;
Lastname = ln;
phone = ph;
email = em;
password = pw;
}
public String getFirstname() {
@ -32,11 +31,11 @@ public class User {
Lastname = lastname;
}
public Long getPhone() {
public String getPhone() {
return phone;
}
public void setPhone(Long phone) {
public void setPhone(String phone) {
this.phone = phone;
}
@ -48,11 +47,4 @@ public class User {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

View file

@ -18,6 +18,8 @@ import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
@ -36,6 +38,7 @@ public class add extends AppCompatActivity {
String userID;
int numOfDrivers;
private String fn, ln, em, ph;
DatabaseReference reff;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -118,6 +121,11 @@ public class add extends AppCompatActivity {
public void onSuccess(Void aVoid) {
}
});
reff = FirebaseDatabase.getInstance().getReference().child("signal");
reff.child("2").child("E-Mail").setValue(em);
reff.child("2").child("First Name").setValue(fn);
reff.child("2").child("Last Name").setValue(ln);
reff.child("2").child("Phone").setValue(ph);
openDriver();
}
});
@ -152,4 +160,8 @@ public class add extends AppCompatActivity {
startActivity(new Intent(getApplicationContext(), Login.class));
finish();
}
public void back(View view){
startActivity(new Intent(getApplicationContext(), Drivers.class));
}
}

View file

@ -3,6 +3,7 @@ package com.example.capstone;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@ -11,6 +12,8 @@ import android.widget.EditText;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatDialogFragment;
import com.google.firebase.auth.FirebaseAuth;
public class addDriver extends AppCompatDialogFragment {
private EditText fn, ln, ph, em;
private addDriverListener listener;
@ -59,4 +62,5 @@ public class addDriver extends AppCompatDialogFragment {
public interface addDriverListener{
void applyTexts(String fn, String ln, String ph, String em);
}
}

View file

@ -23,7 +23,7 @@ import java.util.HashMap;
public class homepage extends AppCompatActivity {
FirebaseAuth fAuth;
private Button setting, poweron, alarmoff;
private Button setting, poweron, alarmoff, apps;
DatabaseReference reff;
Signal sig;
int check = 0;
@ -39,6 +39,7 @@ public class homepage extends AppCompatActivity {
setting = findViewById(R.id.settings);
poweron = findViewById(R.id.poweron);
alarmoff = findViewById(R.id.alarmoff);
apps = findViewById(R.id.apps);
at = findViewById(R.id.alarmtitle3);
a = findViewById(R.id.alarm);
et = findViewById(R.id.enginetitle3);
@ -58,6 +59,14 @@ public class homepage extends AppCompatActivity {
}
});
apps.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), Apps.class));
}
});
poweron.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -103,4 +112,9 @@ public class homepage extends AppCompatActivity {
startActivity(new Intent(getApplicationContext(), Login.class));
finish();
}
public void back(View view){
}
}

View file

@ -1,6 +1,10 @@
package com.example.capstone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
@ -16,14 +20,22 @@ import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;
import java.util.HashMap;
import java.util.Map;
@ -34,9 +46,11 @@ private Button save;
FirebaseAuth fAuth;
private TextView account;
private String fn, ln, em, pw, ph;
private boolean check;
private boolean check, check2, check3, check4;
FirebaseFirestore fstore;
String userID;
DatabaseReference reff, sigR;
private String uCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -52,6 +66,7 @@ String userID;
fAuth = FirebaseAuth.getInstance();
account = findViewById(R.id.account1);
fstore = FirebaseFirestore.getInstance();
account.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -90,7 +105,7 @@ String userID;
}
if(ph.length() < 10){
phone.setError("Invalid phone number");
phone.setError("Invalid phone number length");
return;
}
@ -105,15 +120,42 @@ String userID;
}
if(pw.length() < 6){
password.setError("Password must be more than 6 characters.");
password.setError("Password must be minumum of 6 characters.");
return;
}
check2 = FindUpperCase(pw);
if(!check2){
password.setError("Password must contain one uppercase letter");
return;
}
check3 = FindNumber(pw);
if(!check3){
password.setError("Password must contain one number");
return;
}
check4 = FindSpecialCharacter(pw);
if(!check4){
password.setError("Password must contain one special character");
return;
}
fAuth.createUserWithEmailAndPassword(em, pw).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
Toast.makeText(signup.this, "Successful Registration", Toast.LENGTH_LONG).show();
FirebaseUser fuser = fAuth.getCurrentUser();
fuser.sendEmailVerification().addOnSuccessListener(new OnSuccessListener<Void>() {
public void onSuccess(Void aVoid) {
Toast.makeText(signup.this, "Successful Registration. Verification Email has been sent.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(signup.this, "Please use valid Email address", Toast.LENGTH_SHORT).show();
}
});
userID = fAuth.getCurrentUser().getUid();
DocumentReference documentReference = fstore.collection("users").document(userID);
Map<String,Object> user = new HashMap<>();
@ -127,7 +169,28 @@ String userID;
public void onSuccess(Void aVoid) {
}
});
openHomepage();
reff = FirebaseDatabase.getInstance().getReference().child("signal");
/*DocumentReference noteRef = fstore.document("UserNum/Num");
noteRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
if (value.exists()) {
uCount = value.getString("UNum");
}
}
});
Map<String, Object> note = new HashMap<>();
note.put("UNum", String.valueOf(uCount+1));
noteRef.set(note);*/
reff.child("2").child("E-Mail").setValue(em);
reff.child("2").child("First Name").setValue(fn);
reff.child("2").child("Last Name").setValue(ln);
reff.child("2").child("Phone").setValue(ph);
openEmail();
} else {
Toast.makeText(signup.this, task.getException().toString(), Toast.LENGTH_LONG).show();
}
@ -137,8 +200,8 @@ String userID;
});
}
public void openHomepage() {
Intent intent = new Intent(this, homepage.class);
public void openEmail() {
Intent intent = new Intent(this, Email.class);
startActivity(intent);
}
@ -153,4 +216,39 @@ String userID;
}
return false;
}
public static boolean FindUpperCase(String str){
int count = 0;
for(int i = 0; i<str.length(); i++){
if(Character.isUpperCase(str.charAt(i))){
count++;
}
}
if(count >= 1){
return true;
} else {
return false;
}
}
public static boolean FindNumber(String str){
int count = 0;
for(int i = 0; i<str.length(); i++){
if(Character.isDigit(str.charAt(i))){
count++;
}
}
if(count >= 1){
return true;
} else {
return false;
}
}
public boolean FindSpecialCharacter(String s) {
Pattern p = Pattern.compile("[^A-Za-z0-9]");
Matcher m = p.matcher(s);
boolean b = m.find();
return b;
}
}

View file

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

View file

@ -1,170 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#008577"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#1D3790"
android:endColor="#23252B"
android:angle="270"/>
</shape>

View file

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z"/>
</vector>

View file

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M19,7h-8v6h8L19,7zM21,3L3,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,1.98 2,1.98h18c1.1,0 2,-0.88 2,-1.98L23,5c0,-1.1 -0.9,-2 -2,-2zM21,19.01L3,19.01L3,4.98h18v14.03z"/>
</vector>

View file

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M15,9L9,9c-0.55,0 -1,0.45 -1,1v12c0,0.55 0.45,1 1,1h6c0.55,0 1,-0.45 1,-1L16,10c0,-0.55 -0.45,-1 -1,-1zM12,15c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM7.05,6.05l1.41,1.41C9.37,6.56 10.62,6 12,6s2.63,0.56 3.54,1.46l1.41,-1.41C15.68,4.78 13.93,4 12,4s-3.68,0.78 -4.95,2.05zM12,0C8.96,0 6.21,1.23 4.22,3.22l1.41,1.41C7.26,3.01 9.51,2 12,2s4.74,1.01 6.36,2.64l1.41,-1.41C17.79,1.23 15.04,0 12,0z"/>
</vector>

View file

@ -10,16 +10,30 @@
<include
layout="@layout/toolbar"/>
<TextView
android:id="@+id/ebouttitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginBottom="630dp"
android:gravity="center"
android:text="About us"
android:textColor="#ffffff"
android:textSize="30dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/ebouttitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginBottom="630dp"
android:gravity="center"
android:text="About us"
android:layout_width="384dp"
android:layout_height="607dp"
android:layout_marginStart="16dp"
android:layout_marginBottom="20dp"
android:gravity="center_vertical"
android:text="Keyless Auto Vehicle Anti-Theft Facial Recognition System\n\nComputer Engineering capstone 2020-2021\n\nVehicle Anti-Theft Facial Recognition System is designed to prevent burglary using facial recognition system. Hardware uses Raspberry Pi 4 and software uses the Python. The user interface of software is based on android studio. The administrators can choose their option for adding a new driver, delete the current driver, and update the face data of the current driver. The camera is going to be connected to a Raspberry Pi 4 board which is used for taking the picture of a user's face. Then the Raspberry Pi will use OpenCV library to recognize the user's face.\n\nCreated by: Alexandre Pereira, Qian Ma, Leyao Li, Feier Zhang, Batuhan Başoğlu and Sam Hermas Parada"
android:textColor="#ffffff"
android:textSize="30dp"
android:textSize="20dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />

View file

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
tools:context=".Apps">
<include
layout="@layout/toolbar"/>
<Button
android:id="@+id/remote"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginStart="40dp"
android:layout_marginBottom="560dp"
android:layout_x="118dp"
android:layout_y="95dp"
android:background="@drawable/ic_wireless"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/remotetitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="37dp"
android:layout_marginBottom="540dp"
android:gravity="center"
android:text="Remote access"
android:textColor="#ffffff"
android:textSize="13dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/thiefpic"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginStart="160dp"
android:layout_marginBottom="560dp"
android:layout_x="118dp"
android:layout_y="95dp"
android:background="@drawable/ic_photo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/remotetitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="160dp"
android:layout_marginBottom="540dp"
android:gravity="center"
android:text="Thief pictures"
android:textColor="#ffffff"
android:textSize="13dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:orientation="vertical"
tools:context=".Email">
<ImageView
android:id="@+id/imageView"
android:layout_width="235dp"
android:layout_height="240dp"
android:layout_marginBottom="470dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/caroutline2" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="KEYLESS AUTO"
android:textColor="#ffffff"
android:textSize="27dp"
app:fontFamily="normal"
android:layout_marginBottom="485dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/title2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Vehicle Anti-Theft Facial Recognition System"
android:textColor="#ffffff"
android:textSize="9dp"
app:fontFamily="normal"
android:layout_marginBottom="470dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/title3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="300dp"
android:gravity="center"
android:text="Please verify your email to continue using this application"
android:textColor="#ffffff"
android:textSize="20dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/resend"
android:layout_width="315dp"
android:layout_height="50dp"
android:layout_marginBottom="130dp"
android:background="@drawable/mybutton"
android:text="Resend code"
android:textColor="#1D3790"
android:textSize="16sp"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/con"
android:layout_width="315dp"
android:layout_height="50dp"
android:layout_marginBottom="60dp"
android:background="@drawable/mybutton"
android:text="Login"
android:textColor="#1D3790"
android:textSize="16sp"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -79,6 +79,21 @@
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="120dp"
android:gravity="center"
android:text="Forgot your password?"
android:textColor="#ffffff"
android:textSize="15dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />
<EditText
android:id="@+id/username"
android:layout_width="315dp"

View file

@ -24,4 +24,60 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/title"
android:layout_width="380dp"
android:layout_height="100dp"
android:layout_marginStart="15dp"
android:layout_marginBottom="440dp"
android:gravity="center"
android:text="To change the account password enter the email used to create the accout and a link will be sent with instructions to change the password"
android:textColor="#ffffff"
android:textSize="20dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<EditText
android:id="@+id/email"
android:layout_width="315dp"
android:layout_height="50dp"
android:background="@drawable/loginedittext"
android:hint="Email"
android:paddingLeft="10dp"
android:textColorHint="#ffffff"
tools:layout_editor_absoluteX="25dp"
tools:layout_editor_absoluteY="332dp"
android:layout_marginBottom="380dp"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<Button
android:id="@+id/Resetpassword"
android:layout_width="140dp"
android:layout_height="50dp"
android:layout_marginStart="50dp"
android:layout_marginBottom="280dp"
android:background="@drawable/mybutton"
android:text="Reset Password"
android:textColor="#1D3790"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/backb"
android:layout_width="140dp"
android:layout_height="50dp"
android:layout_marginEnd="50dp"
android:layout_marginBottom="280dp"
android:background="@drawable/mybutton"
android:text="Back"
android:textColor="#1D3790"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -26,7 +26,7 @@
android:id="@+id/imageView"
android:layout_width="125dp"
android:layout_height="142dp"
android:layout_marginBottom="540dp"
android:layout_marginBottom="550dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.15"

View file

@ -11,15 +11,69 @@
layout="@layout/toolbar"/>
<TextView
android:id="@+id/supporttitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/supporttitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginBottom="630dp"
android:gravity="center"
android:text="Support"
android:textColor="#ffffff"
android:textSize="30dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/contacttitle"
android:layout_width="365dp"
android:layout_height="40dp"
android:layout_marginStart="15dp"
android:layout_marginBottom="630dp"
android:gravity="center"
android:text="Support"
android:layout_marginBottom="550dp"
android:text="Contact us"
android:textColor="#ffffff"
android:textSize="30dp"
android:textSize="22dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/contacttitle2"
android:layout_width="365dp"
android:layout_height="100dp"
android:layout_marginStart="25dp"
android:layout_marginBottom="435dp"
android:text="Chat with a Customer Specialist\n\nHave questions? Email us for real-time help.\n\napere094@uottawa.ca"
android:textColor="#ffffff"
android:textSize="15dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/contacttitle3"
android:layout_width="365dp"
android:layout_height="25dp"
android:layout_marginStart="15dp"
android:layout_marginBottom="390dp"
android:text="Call us"
android:textColor="#ffffff"
android:textSize="15dp"
android:textStyle="bold"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/contacttitle4"
android:layout_width="365dp"
android:layout_height="100dp"
android:layout_marginStart="25dp"
android:layout_marginBottom="280dp"
android:text="Get in touch, free of charge. Just call 1-800-123-4567\n\nCustomer representatives are available from 3 a.m. to 10 p.m., daily."
android:textColor="#ffffff"
android:textSize="15dp"
app:fontFamily="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />

View file

@ -5,6 +5,14 @@
android:background="@color/colorPrimary"
android:elevation="4dp">
<ImageView
android:id="@+id/back"
android:layout_width="25dp"
android:layout_height="25dp"
android:onClick="back"
android:src="@drawable/ic_arrow"
android:layout_marginEnd="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -17,12 +25,13 @@
android:layout_width="60dp"
android:layout_height="30dp"
android:layout_marginTop="13dp"
android:layout_marginStart="220dp"
android:layout_marginStart="180dp"
android:background="@drawable/mybutton"
android:onClick="logout"
android:text="Sign Out"
android:textColor="#1D3790"
android:textSize="10sp" />
</androidx.appcompat.widget.Toolbar>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After