Passwords and Notes Manager in Android Application
Passwords and Notes Manager in Android Application
On
(Notes and Password Manager)
Certified that this project report “NOTES AND PASSWORD MANAGER” an automatic
password generator and Notes manager application” is the bonafide work of
“20BCA1699(Gitanshu Kumar)” and “20BCA1263(Tamanna Chandel)” who carried out the
project work under my/our supervision.
SIGNATURE SIGNATURE
ACKNOWLEDGEMENT
I express my sincere regard and indebtedness to my project guide Ms. Pritpal Kaur,
Supervisor, Department of UNIVERSITY INSTITUTE OF COMPUTING,
Chandigarh University, Punjab for his valuable time, guidance, encouragement,
support and cooperation throughout the duration of our project. I would sincerely
like to thank our Department for giving me the opportunity to work on enhancing
my technical skills while undergoing this project.
We are really thankful to all of my friends who always advised and motivated me
throughout the course.
ABSTRACT
The main objective of the Notes and Password Manager is to provide random
password every time when clicked, It can customized according to user like if
whether they want to add symbols, numbers small case letters or upper case
letters, even length of the password can be customized. The project is totally
built at user end and thus anyone can guaranteed the access. The purpose of the
project is to build an program to reduce the manual work for thinking about
security and creating strong password.
As well as Notes also very secure we can use any time, in this application
notes data also never lost because Notes data auto save on Firbase.
Table Of Contents
Title
Page……………………………………………………………………………………
…… 1
Bonafide
Certificate………………………………………………………………………… 2
Acknowledgement……………………………………………………………………
…… 3
Abstract………………………………………………………………………………
………….. 4
1) Operational Feasibility
2) Technical Feasibility
3) Economical Feasibility
1.3.1 OPERATIONAL FEASIBILITY
Operational feasibility is the measure of how well a proposed system solves the
problems, and takes advantage of the opportunities identified during scope definition and
how it satisfies the requirements identified in the requirements analysis phase of system
development.The operational feasibility assessment focuses on the degree to which the
proposed development projects fits in with the existing business environment and
objectives with regard to development schedule, delivery date, corporate culture and
existing business processes.To ensure success, desired operational outcomes must be
imparted during design and development. These include such design-dependent
parameters as reliability, maintainability, supportability, usability, producibility,
disposability, sustainability, affordability and others. These parameters are required to be
considered at the early stages of design if desired operational behaviours are to be
realised. A system design and development requires appropriate and timely application of
engineering and management efforts to meet the previously mentioned parameters. A
system may serve its intended purpose most effectively when its technical and operating
characteristics are engineered into the design. Therefore, operational feasibility is a
critical aspect of systems engineering that needs to be an integral part of the early design
phases.
1.3.2 TECHNICAL FEASIBILITY
This involves questions such as whether the technology needed for the system
exists, how difficult it will be to build, and whether the firm has enough
experience using that technology. The assessment is based on outline design of
system requirements in terms of input, processes, output, fields, programs and
procedures. This can be qualified in terms of volume of data, trends, frequency
of updating inorder to give an introduction to the technical system. The
application is the fact that it has been developed on windows XP platform and
a high configuration of 1GB RAM on Intel Pentium Dual core processor. This
is technically feasible .The technical feasibility assessment is focused on
gaining an understanding of the present technical resources of the organization
and their applicability to the expected needs of the proposed system. It is an
evaluation of the hardware and software and how it meets the need of the
proposed system.
1.3.3 ECONOMICAL FEASIBILITY
Week 1
Research and planning of project with team members and submitting project proposal.
Week 2-4
Start working on the project and decide the roles of team members and give 2nd project
report.
Week 5-7
Week 8-9
Bug fixes and changes in the project if required and making project report of progress.
Week 10-13
Check and test the project output and fix any bugs or complete any changes required and
make presentation of final project and report.
Total weeks: 13
One of the advantages of NOTES AND PASSWORD MANAGER for users is that it ensures
passwords are accurate and there’s less room for error. By giving it format of browser
extension. By every, click it will generate random and strong password for user that
they can use it for different purposes.
User got Two task on single platform.
They can also use Notes and save their notes. In this application User never Lost
their data.
2.3 What is the purpose of NOTES AND PASSWORD MANAGER?
So, keeping above things in mind I’ll make an algorithm which will automatically
generate strong password using different symbols, number and alphabets. By giving
it format of browser extension. By every, click it will generate random and strong
password for user that they can use it for different purposes.
As well as Notes also Very secure. E can access our Notes data Anywhere and
anytime After Login.
2.4 Feature/Characteristic
Password: m#P52s@ap$V
This is a great example of a strong password. It's strong, long,
and difficult for someone else to guess. It uses more than
10 characters with letters
(both uppercase and lowercase), numbers, and symbols, and
includes no obvious personal information or common words.
Like this I would create an algorithm which will generate
strong password like this, to enhance user security over
internet.
We can also save and create notes any time in this application.
2.6 Importance
So, here the clint will be the normal user and students,
they are login in so many websites these days for
different purposes, websites like google, Facebook,
Instagram, GitHub, LinkedIn, and many more. For
different purposes.
And as even google suggest not to use same password
for different purposes.
The waterfall model was selected as the SDLC model due to the following
reasons:
2. Logic & Working Java. Whole logic of the code and working
will be embedded in Java.
3. At last, I’ll will be connecting it to Firebase which would we
very useful for every user .
In this Section we will do Analysis of Technologies to use for implementing
the project.
JAVA was developed by James Gosling at Sun Microsystems Inc in the year
1995, later acquired by Oracle Corporation. It is a simple programming
language. Java makes writing, compiling, and debugging programming easy. It
helps to create reusable code and modular programs. Java is a class-based,
object-oriented programming language and is designed to have as few
implementation dependencies as possible. A general-purpose programming
language made for developers to write once run anywhere that is compiled
Java code can run on all platforms that support Java. Java applications are
compiled to byte code that can run on any Java Virtual Machine. The syntax of
Java is similar to c/c++.
In 1997, Sun Microsystems approached the ISO standards body and later
formalized Java, but it soon withdrew from the process. At one time, Sun made
most of its Java implementations available without charge, despite their
proprietary software status. Sun generated revenue from Java through the
selling of licenses for specialized products such as the Java Enterprise System.
On November 13, 2006, Sun released much of its Java virtual machine as free,
open-source software. On May 8, 2007, Sun finished the process, making all of
its JVM’s core code available under open-source distribution terms.
3.2.2
Firebase
This feature mainly includes backend services that help developers to build
and manage their applications in a better way. Services included under this
feature are :
3.4 Features –
So, here the clint will be the normal user and students,
they are login in so many websites these days for
different purposes, websites like google, Facebook,
Instagram, GitHub, LinkedIn, and many more. For
different purposes.
Design ethics concerns moral behavior and responsible choices in the practice of
design. It guides how designers work with clients, colleagues, and the end users of
products, how they conduct the design process, how they determine the features of
products, and how they assess the ethical significance or moral worth of the
products that result from the activity of designing. Ethical considerations have
always played a role in design thinking, but the development of scientific
knowledge and technology has deepened awareness of the ethical dimensions of
design. As designers incorporate new knowledge of physical and human nature as
well as new forms of technology into their products, people are increasingly aware
of the consequences of design for individuals, societies, cultures, and the natural
environment
3.5.4 Analysis and feature finalization subject to constraint :-
With any project, there are limitations and risks that need to be addressed to ensure the
project’s ultimate success. The three primary constraints that project managers should be
familiar with are time, scope, and cost. These are frequently known as the triple constraints
or the project management triangle. Each constraint is connected to the other two; so, for
example, increasing the scope of the project will likely require more time and money, while
speeding up the timeline for the project may cut costs, but also diminish the scope.
When a product is available in different designs where all the designs share the same
components, but the arrangement of those components is different in different designs,
they are referred as design alternatives .Good designers try to generate as many
possible solutions as they can before choosing one that they feel is the best. This
creative process of developing ideas is called ideation.
Project design is so important that there is no structure for the project development process to
stand on and make the project a success in the future. It is such a crucial stage in a project's
lifecycle that it identifies key elements and sets the overall tone of the project. To have a
successful project, you need to understand the steps involved in project design
1. ERRORS:- The term error is used to verified the log in password, balance
amount and account searching stage.Due to this the correct user and correct
utilization of software responsible.
Security Testing:- It will ensure that a software does not have any security
flows. During test preparation quality, analysis team need to include both
negative as well as positive scenario so as to break into the system and report
it before any unauthorized individual access.
4.3.1 Introduction
In software project management, software testing, and software engineering, verification
and validation (V&V) is the process of checking that a software system meets
specifications and that it fulfills its intended purpose. It may also be referred to
as software quality control. It is normally the responsibility of software testers as part of
the software development lifecycle. Validation checks that the product design satisfies or
fits the intended use (high-level checking), i.e., the software meets the user
requirements.This is done through dynamic testing and other forms of review.
Verification and validation are not the same thing, although they are often
confused. Boehm succinctly expressed the difference between
Software Validation: The process of evaluating software during or at the end of the
development process to determine whether it satisfies specified requirements.
In other words, software verification is ensuring that the product has been built according
to the requirements and design specifications, while software validation ensures that the
product meets the user's needs, and that the specifications were correct in the first place.
Software verification ensures that "you built it right". Software validation ensures that
"you built the right thing". Software validation confirms that the product, as provided,
will fulfill its intended use.
Problem 2
At only five characters, this password is way too short. It
also includes part of her address, which is publicly
available information.
SOLUTION
A stronger version of this password would be much
longer, ideally more than 10 characters. We could also
substitute a nearby street name instead of her current
address. For example, Pemberly Ave could
become p3MberLY%Av.
Problem 3
While patterns like this are easy to remember, they're
also some of the first things a hacker might guess when
attempting to access your account.
SOLUTION
Remember that random passwords are much stronger
than simple patterns. If you're having trouble creating a
new password, try using a Notes and password Manager
instead which is automatic password generator. Here's
an example of a generated password: #eV$pIg&qf.
Problem 3
There's nothing really wrong with this password, but
remember that you should never use the same password
with different accounts.
SOLUTION
Create a unique password for each of your online
accounts.
Analysis
A strong password should contain a combination of
lower and upper-case letters, numbers, and special
characters. Password cracking tools will start with
shorter password guesses before going on to larger
phrases, therefore the overall length of the password is
even more crucial than the characters utilized. A strong
password should be at least 12 characters long and
contain a variety of characters. So it's up to you to
customize your password with these informations.
Why Randomness is important?
Another typical kind of password attack is to use
common English words that many people are familiar
with. The attackers will guess combinations of common
dictionary words in an attempt to get access, which is
known as a "dictionary attack." As a result, the best
passwords will contain a mix of characters, symbols,
numbers, and words.
Design/Implement Structure
Random Password Generator and Password manager
built with Java and xml.
NOTES AND PASSWORD MANAGER
It is an application that generates random or
personalized passwords for users. It assists users in
creating stronger passwords that are more secure for a
certain sort of access.
And also user create their Notes.
Built Using
Java
Firebase
xml
For others plugins and dependencies take a look at
package.
Setup
Task 1
Environment & Firebase setup
Before the start of any development procedure, we need
to set up the environment
according to our application needs. Then connect your
Android Studio with Firebase.
Requirements
• Install Android Studio on your machine.
• Install and set up JDK.
• Create a new Android project.
• Like any typical application, the source code of Java
should be in a java folder and the
source code of XML should be in a res folder.
• Connect with Firebase.
Task 2
Setting up Firebase and Authentication
Firebase is a great service provided by Google for
configuring the backend of any
application with all the general necessities like database
preparation, authentication using
various methods, etc. In this milestone, we’ll be
preparing our database and setting up
authentication using email and password.
[Note: Use the references provided to implement the
following requirements.]
Requirements
• Setup sign-in method using Email/Password.
• Declare the dependency for the Firebase Authentication
Android library in your
module ( app-level ) Gradle file ( usually app/build.gradle
).
dependencies {
// Import from the Firebase platform
implementation
platform('com.google.firebase:firebase-bom:26.3.0')
Task 3
Creating home activity
Now we will create an activity where there will be two
options note and password.
• Style the activity so that it looks similar to the one
shown below
Things used in project
Coding
1. HomeActivity
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
setContentView(R.layout.activity_pass);
move=findViewById(R.id.button1);
move=findViewById(R.id.button2);
move.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(HomeActivity.this,NotesActivity.class);
Intent intent1=new Intent(HomeActivity.this,PassActivity.class);
startActivity(intent);
}
});
}
2.Login Activity
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
setContentView((R.layout.activity_login));
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
inputEmail = findViewById(R.id.inputEmail);
inputPassword = findViewById(R.id.inputConformPassword);
btnLogin = findViewById(R.id.btnlogin);
progressDialog = new ProgressDialog(this);
mAuth = FirebaseAuth.getInstance();
mUser = mAuth.getCurrentUser();
if (!email.matches(emailPattern)) {
inputEmail.setError("Enter Correct Email");
} else if (password.isEmpty() || password.length() < 6) {
inputPassword.setError("Enter Proper Password");
} else {
progressDialog.setMessage(" Please Wait while Login");
progressDialog.setTitle("Login");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new
OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful())
{
progressDialog.dismiss();
sendUserToNextActivity();
Toast.makeText(LoginActivity.this,"Login
Successful",Toast.LENGTH_SHORT).show();
}
else
{
progressDialog.dismiss();
Toast.makeText(LoginActivity.this,
""+task.getException(),Toast.LENGTH_SHORT).show();
}
}
});
}
}
private void sendUserToNextActivity() {
Intent intent=new Intent(LoginActivity.this,HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
3Notes
package com.example.myapplication;
import com.google.firebase.Timestamp;
public Note() {
}
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.firebase.ui.firestore.FirestoreRecyclerAdapter;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
@Override
protected void onBindViewHolder(@NonNull NoteViewHolder holder, int position, @NonNull
Note note) {
holder.titleTextView.setText(note.title);
holder.contentTextView.setText(note.content);
holder.timestampTextView.setText(Utility.timestampToString(note.timestamp));
@NonNull
@Override
public NoteViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view =
LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_note_item,parent,false)
;
return new NoteViewHolder(view);
}
}
}
}
5.NotesDetailsActivity
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.ImageButton;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.Timestamp;
import com.google.firebase.firestore.DocumentReference;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_details);
titleEditText=findViewById(R.id.notes_title_text);
contentEditText=findViewById(R.id.notes_content_text);
saveNoteBtn=findViewById(R.id.save_note_btn);
saveNoteBtn.setOnClickListener((v)-> saveNote());
}
void saveNote() {
String noteTitle = titleEditText.getText().toString();
String noteContent = contentEditText.getText().toString();
if (noteTitle == null || noteTitle.isEmpty()) {
titleEditText.setError("Title is Required");
return;
}
Note note = new Note();
note.setTitle(noteTitle);
note.setContent(noteContent);
note.setTimestamp(Timestamp.now());
saveNoteToFirebase(note);
}
void saveNoteToFirebase(Note note){
DocumentReference documentReference;
documentReference = Utility.getCollectionReferenceForNotes().document();
documentReference.set(note).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Utility.showToast(NoteDetailsActivity.this,"Note added Successfully");
finish();
}
else {
Utility.showToast(NoteDetailsActivity.this,"Faild wile adding the
note");
}
}
});
}
}
5.NotesActivity
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageButton;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.firestore.Query;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notes);
addNoteBtn = findViewById(R.id.add_note_btn);
recyclerView = findViewById(R.id.recyler_view);
menuBtn = findViewById(R.id.menu_btn);
addNoteBtn.setOnClickListener((v)-> startActivity(new
Intent(NotesActivity.this,NoteDetailsActivity.class)));
menuBtn.setOnClickListener((v)->showMenu());
setupRecycleView();
}
void showMenu() {
}
void setupRecycleView(){
Query query = Utility.getCollectionReferenceForNotes().orderBy("timestamp",
Query.Direction.DESCENDING);
FirestoreRecyclerOptions<Note> options = new
FirestoreRecyclerOptions.Builder<Note>().setQuery(query,Note.class).build();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
noteAdapter = new NoteAdapter(options,this);
recyclerView.setAdapter(noteAdapter);
@Override
protected void onStart() {
super.onStart();
noteAdapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
noteAdapter.stopListening();
}
@Override
protected void onResume() {
super.onResume();
noteAdapter.notifyDataSetChanged();
}
6.PassActivity
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Random;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pass);
password = (TextView) findViewById(R.id.password);
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
password.setText(generateString(8));
}
});
}
private String generateString(int length){
char[] chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz".toCharArray();
Random r = new Random();
StringBuilder sb = new StringBuilder();
for (int i=0;i<length;i++){
char c = chars[r.nextInt(chars.length)];
sb.append(c);
}
return sb.toString();
}
}
7.RegisterActivity
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
TextView btn = findViewById(R.id.alreadyHaveAccounnt);
inputEmail = findViewById(R.id.inputEmail);
inputPassword = findViewById(R.id.inputPassord);
inputConformPassword = findViewById(R.id.inputConformPassword);
btnRegister = findViewById(R.id.btnRegister);
progressDialog = new ProgressDialog(this);
mAuth = FirebaseAuth.getInstance();
mUser = mAuth.getCurrentUser();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
}
});
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
perforAuth();
}
});
}
private void perforAuth() {
String email = inputEmail.getText().toString();
String password = inputPassword.getText().toString();
String confirmPassword = inputConformPassword.getText().toString();
if (!email.matches(emailPattern)) {
inputEmail.setError("Enter Correct Email");
} else if (password.isEmpty() || password.length() < 6) {
inputPassword.setError("Enter Proper Password");
} else if (!password.equals(confirmPassword)) {
inputConformPassword.setError("Password Not Matched");
} else {
progressDialog.setMessage(" Please Wait while Registration....");
progressDialog.setTitle("Registration");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
mAuth.createUserWithEmailAndPassword(email,
password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
progressDialog.dismiss();
sendUserToNextActivity();
Toast.makeText(RegisterActivity.this, "Registration Successful",
Toast.LENGTH_SHORT).show();
} else {
progressDialog.dismiss();
Toast.makeText(RegisterActivity.this, "" + task.getException(),
Toast.LENGTH_SHORT).show();
}
}
});
}
}
<EditText
android:id="@+id/inputEmail"
android:layout_width="346dp"
android:layout_height="53dp"
android:layout_marginStart="40dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:drawableLeft="@android:drawable/sym_action_email"
android:drawablePadding="10dp"
android:ems="10"
android:hint="Email"
android:inputType="textPersonName"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/inputUsername"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/inputUsername"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.256" />
<EditText
android:id="@+id/inputConformPassword"
android:layout_width="342dp"
android:layout_height="53dp"
android:layout_marginStart="20dp"
android:background="@drawable/input_bg"
android:drawableLeft="@android:drawable/ic_lock_lock"
android:drawablePadding="10dp"
android:ems="10"
android:hint="Password"
android:inputType="textPersonName|textPassword"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/inputUsername"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="@+id/inputUsername"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.398" />
<TextView
android:id="@+id/frgtpass"
android:layout_width="147dp"
android:layout_height="28dp"
android:text="Forgot Password"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="normal|bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.712"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.499" />
<Button
android:id="@+id/btnlogin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="8dp"
android:background="@drawable/btn_bg"
android:text="Login"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/inputConformPassword"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.576" />
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:orientation="horizontal"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="@+id/btnlogin"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/btnlogin"
app:layout_constraintTop_toBottomOf="@+id/btnlogin">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dont have an Account?"
android:textColor="@color/white" />
<TextView
android:id="@+id/textViewSignUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SignUp"
android:textColor="@color/purple_700" />
</LinearLayout>
2.Home
<?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"
tools:context=".HomeActivity">
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.2" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Notes"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.141"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.098" />
</androidx.constraintlayout.widget.ConstraintLayout>
3.Notes_Details.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="@color/teal_200"
android:padding="16dp"
tools:context=".NoteDetailsActivity">
<TextView
android:id="@+id/page_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add New note"
android:textColor="@color/white"
android:textSize="32sp"
android:textStyle="bold" />
<ImageButton
android:id="@+id/save_note_btn"
android:layout_width="57dp"
android:layout_height="51dp"
android:layout_marginStart="87dp"
android:layout_toEndOf="@+id/page_title"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_baseline_done_24"
app:tint="@color/white"
tools:ignore="SpeakableTextPresentCheck"
android:contentDescription="TODO" />
<LinearLayout
android:layout_width="382dp"
android:layout_height="508dp"
android:layout_marginVertical="26dp"
android:background="@drawable/btn_bg"
android:backgroundTint="@color/white"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/notes_title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp"
android:hint="Title"
android:padding="12dp"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold" />
<EditText
android:id="@+id/notes_content_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp"
android:gravity="top"
android:hint="Content"
android:minLines="15"
android:padding="12dp"
android:textColor="@color/black"
android:textSize="20sp" />
</LinearLayout>
</RelativeLayout>
4.Notes_activity
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="@color/purple_200"
android:padding="16dp"
tools:context=".NotesActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/title_bar_layout">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/page_title"
android:text="notes"
android:textSize="32sp"
android:textColor="@color/white"
android:textStyle="bold"/>
<ImageButton
android:layout_width="36dp"
android:layout_height="36dp"
android:id="@+id/menu_btn"
android:src="@drawable/ic_baseline_menu_24"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:background="?attr/selectableItemBackgroundBorderless"
app:tint="@color/white"
/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/title_bar_layout"
android:id="@+id/recyler_view"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/add_note_btn"
android:backgroundTint="@color/white"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:src="@drawable/ic_baseline_add_24"
/>
</RelativeLayout>
5.Pass_Activity
</LinearLayout>
6.Register
<EditText
android:id="@+id/inputPassord"
android:layout_width="347dp"
android:layout_height="51dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:drawableLeft="@android:drawable/ic_lock_idle_lock"
android:drawablePadding="10dp"
android:ems="10"
android:hint="Password"
android:inputType="textVisiblePassword"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
app:layout_constraintEnd_toEndOf="@+id/inputEmail"
app:layout_constraintTop_toBottomOf="@+id/inputEmail" />
<EditText
android:id="@+id/inputConformPassword"
android:layout_width="342dp"
android:layout_height="53dp"
android:layout_marginTop="12dp"
android:background="@drawable/input_bg"
android:drawableLeft="@android:drawable/ic_lock_lock"
android:drawablePadding="10dp"
android:ems="10"
android:hint="Conform Password"
android:inputType="textVisiblePassword"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
app:layout_constraintEnd_toEndOf="@+id/inputPassord"
app:layout_constraintTop_toBottomOf="@+id/inputPassord" />
<EditText
android:id="@+id/inputUsername"
android:layout_width="340dp"
android:layout_height="51dp"
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="32dp"
android:background="@drawable/input_bg"
android:drawableLeft="@android:drawable/presence_invisible"
android:drawablePadding="10dp"
android:ems="10"
android:hint="Username"
android:inputType="textPersonName"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/logo" />
<EditText
android:id="@+id/inputEmail"
android:layout_width="344dp"
android:layout_height="56dp"
android:layout_marginTop="16dp"
android:background="@drawable/input_bg"
android:drawableLeft="@android:drawable/sym_action_email"
android:drawablePadding="10dp"
android:ems="10"
android:hint="Email"
android:inputType="textPersonName"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
app:layout_constraintEnd_toEndOf="@+id/inputUsername"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/inputUsername"
app:layout_constraintTop_toBottomOf="@+id/inputUsername" />
<Button
android:id="@+id/btnRegister"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:background="@drawable/btn_bg"
android:text="Register"
app:layout_constraintEnd_toEndOf="@+id/inputConformPassword"
app:layout_constraintStart_toStartOf="@+id/inputConformPassword"
app:layout_constraintTop_toBottomOf="@+id/inputConformPassword"
app:rippleColor="@color/material_dynamic_neutral90" />
<TextView
android:id="@+id/alreadyHaveAccounnt"
android:layout_width="177dp"
android:layout_height="31dp"
android:shadowColor="@color/black"
android:text="Already Have an Account"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.807"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnRegister"
app:layout_constraintVertical_bias="0.081" />
</androidx.constraintlayout.widget.ConstraintLayout>
6.Recycler_Notes
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/note_title_text_view"
android:text="note title"
android:textColor="@color/black"
android:textSize="18sp"
android:layout_marginVertical="4dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/note_content_text_view"
android:text="This can be note content that can be long"
android:maxLines="2"
android:ellipsize="end"
android:textSize="17sp"
android:layout_marginVertical="4dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="note title"
android:id="@+id/note_timestamp_text_view"
android:textSize="12sp"
android:gravity="right"
android:layout_marginVertical="4dp"
/>
</LinearLayout>
REFERENCES
https://www.crio.do/projects/java-android-notes-password-manager/
https://www.youtube.com/