ABSTRACT
Due to the widespread use of the internet, lots of information has
become available to us. Most of the information is unnecessary, as
people use more and more internet distraction and wastage of time
kills the person's creativity and productivity as one has to go through
lots of websites, ads, newsfeed as a person opens his web browser.
"SUPER TEXT EDITOR" helps you to enhance your productivity and
preserve your creativity. It has a "SEARCH APP" which filters the
information and brings it right to you without needing you to go to
the internet, it has embedded Virtual Assistant(AI) which uses Google
Speech API, it helps you with your tasks just with your voice, it also
has Voice-to-Text which allows you to write your thoughts as they
are, making your thoughts more clear, saving you time and
preserving your creativity and it also avoids spelling mistakes while
you speak to it as it is also made with Google Speech API. The Text-
to-Speech function helps you to revisit your document, without even
looking at it, so you can which words fit the best. This project is
developed in pure Python to provide the user with productivity,
reliability, availability, functionality, and compatibility. All these make
Python the best language for this project.
1
Introduction of project
This application is developed based on Python. This application is designed to help the
user to enhance his/her productivity, it provides a supportive environment in which the
user can produce his/her best work. It uses AI and Speech recognition to assist the user
with his/her work. Genos is a friendly assistant which will assist the user with his tasks,
the user only needs to give command through a microphone, it also has the Voice-To-
Text feature to reduce the effort needed for typing where the user need only say and it
will type everything. It has a search feature which brings the information right to the
user, without closing the app, it will reduce the drudgery of searching a piece of
information on the internet, going through a lot of websites, and getting distracted and
unproductive. This application will reduce the distraction of work because of the
internet and allow the user to go deep into his work and produce valuable results.
Motivation
Because of the internet lots of information has become available to us. Most of the
information is unnecessary, as people use more and more internet distraction and wastage
of time kills the person's creativity and productivity as one has to go through lots of
websites, ads, newsfeed as a person opens his web browser, so we wanted to create a app
that would help the users to make the most of their time and information available, what
the other text editors have failed to do.
Objectives of Project
The Super Text Editor is a software that will use Speech
Recognition to type as you speak, AI to bring you the
information you need, from opening websites to getting news
feed, getting weather forecast and playing music for you all on
the same place on your voice command one app gives it all to
optimize your performance and saving your time and effort
2
LITERATURE SURVEY
Problem Definition
In the age of automation where things can be done with minimum human
assistance, to make a document, speech, to make notes we still need to do a
lot of effort and when we need to find a piece of information regarding our
subject we are overwhelmed with the amount of information present online
and the adds notifications doesn’t make things any easier for us, stealing the
attention and making us less productive.
We are proposing a system that will use Speech Recognition to type as you
speak, AI to bring you the information you need, from opening websites to
getting news feed, getting weather forecast and playing music for you all on
the same place on your voice command one app gives it all
3
Hardware and Software Requirement
Software Requirements
OPERATING SYSTEM: Windows 10
SDK Version: 3.7.4
IDE: Android Studio
Notepad ++ sometimes
Its Front End is developed using XML
Hardware Requirements
Intel Core i3 Min 4Gb RAM
This system is built on Intel core i5-8250u CPU, having Processor
Base Frequency of 1.60 GHz and Max Turbo Frequency of 3.40GHz.
1TB Hard Disk Capacity
4
Future Scope
1) We can apply machine learning to make Genos learn from you.
2) Genos can be made more interactive and user friendly.
3) Auto correct can make it even more productive. 5) Features like
bullets and page formatting can make users work more meaningful.
Conclusion
By implementing this application, the users could produce more
valuable work in comparatively less amount of time this application
provides the value of time through the results. The main purpose of
this application is to make the user more efficient at work. The
proposed system is based on AI and Speech Recognition. The basic
aim of the system is to make the user more productive without
letting the user lose focus. It also makes the user more creative by
letting the user bring his/her thoughts to his/her notice by using
Voice-Type, so that the user can become more valuable in his/her
field.
Reference
www.stackoverflow.com
www.youtube.com
www.python.org
5
IMPLEMENTATION
Manifest File
<?xml version=”1.0” encoding=”utf-8”?>
<manifest xmlns: android=http://schemas.android.com/apk/res/android
Package=”com.ixidev.simplenotepad ”>
<application
android:allowBackup=”true”
android:icons=”@mipmap/ic_launcher”
android:label=”2string/app_name”
android:roundIcon=”@mipmap/ic_launcher_round”
android:asupportsRtl=”true”
android:theme=”@style/AppTheme”
<activity
android:name=”.MainActivity”
android:label=”@string/app_name”
android:theme=”@style/AppTheme.NoActionBar”>
<intent_filter>
<action android:name=”android.intent.action.MAIN”/>
<category
Android:name=”android.intent.category.LAUNCHER”/>
</intent_filter>
</activity>
<activity
android:name=”.EditNoteActivity”
android:parentActivityName=”>MainActivity”/>
</application>
</manifest>
6
Main activity
JAVA package com.ixidev.simplenotepad;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.ixidev.simplenotepad.adapters.NotesAdapter;
import com.ixidev.simplenotepad.callbacks.MainActionModeCallback;
import com.ixidev.simplenotepad.callbacks.NoteEventListener;
import com.ixidev.simplenotepad.db.NotesDB;
import com.ixidev.simplenotepad.db.NotesDao;
import com.ixidev.simplenotepad.model.Note;
import com.ixidev.simplenotepad.utils.NoteUtils;
import com.mikepenz.materialdrawer.AccountHeader;
import com.mikepenz.materialdrawer.AccountHeaderBuilder;
import com.mikepenz.materialdrawer.Drawer;
7
import com.mikepenz.materialdrawer.DrawerBuilder;
import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.ProfileDrawerItem;
import com.mikepenz.materialdrawer.model.SwitchDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import java.util.ArrayList;
import java.util.List;
import static
com.ixidev.simplenotepad.EditNoteActivity.NOTE_EXTRA_Key;
public class MainActivity extends AppCompatActivity implements
NoteEventListener, Drawer.OnDrawerItemClickListener {
private static final String TAG = "MainActivity";
private RecyclerView recyclerView;
private ArrayList notes;
private NotesAdapter adapter;
private NotesDao dao;
private MainActionModeCallback actionModeCallback;
private int chackedCount = 0;
private FloatingActionButton fab;
private SharedPreferences settings;
public static final String THEME_Key = "app_theme";
public static final String APP_PREFERENCES="notepad_settings";
private int theme;
@Override
protected void onCreate(Bundle savedInstanceState) {
settings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
theme = settings.getInt(THEME_Key, R.style.AppTheme);
setTheme(theme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
8
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setupNavigation(savedInstanceState, toolbar);
recyclerView = findViewById(R.id.notes_list);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onAddNewNote(); } });
dao = NotesDB.getInstance(this).notesDao();
private void setupNavigation(Bundle savedInstanceState, Toolbar toolbar) {
List iDrawerItems = new ArrayList<>(); fix error : removed on materialdrawer 7.0.0
List<IDrawerItem> iDrawerItems = new ArrayList<>();
iDrawerItems.add(new
PrimaryDrawerItem().withName("Home").withIcon(R.drawable.ic_home_black _24dp));
iDrawerItems.add(new
PrimaryDrawerItem().withName("Notes").withIcon(R.drawable.ic_note_blac k_24dp));
// sticky DrawItems ; footer menu items
// List stockyItems = new ArrayList<>(); removed on materialdrawer 7.0.0
List<IDrawerItem> stockyItems = new ArrayList<>();
SwitchDrawerItem switchDrawerItem = new SwitchDrawerItem()
.withName("Dark Theme") .withChecked(theme ==
R.style.AppTheme_Dark) .withIcon(R.drawable.ic_dark_theme)
.withOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(IDrawerItem
drawerItem, CompoundButton buttonView, boolean isChecked) {
// TODO: 02/10/2018 change to darck theme and
save it to settings
if (isChecked) {
9
settings.edit().putInt(THEME_Key,
R.style.AppTheme_Dark).apply();
} else {
settings.edit().putInt(THEME_Key, R.style.AppTheme).apply();
MainActivity.this.recreate();
TaskStackBuilder.create(MainActivity.this) .
addNextIntent(new
Intent(MainActivity.this, MainActivity.class))
.addNextIntent(getIntent())
.startActivities();
} });
stockyItems.add(new
PrimaryDrawerItem().withName("Settings").withIcon(R.drawable.ic_settin gs_black_24dp));
stockyItems.add(switchDrawerItem);
AccountHeader header = new
AccountHeaderBuilder().withActivity(this) .
addProfiles(new ProfileDrawerItem()
.withEmail("[email protected]")
.withName("Mangesh Thorat")
.withIcon(R.mipmap.ic_launcher_round))
.withSavedInstance(savedInstanceState) .withHeaderBackground(R.drawable.ic_launcher_backgrou
nd) .withSelectionListEnabledForSingleProfile(false)
.build();
new DrawerBuilder()
.withActivity(this)
.withToolbar(toolbar)
.withSavedInstance(savedInstanceState)
.withDrawerItems(iDrawerItems)
withTranslucentNavigationBar(true)
.withStickyDrawerItems(stockyItems)
10
withAccountHeader(header)
withOnDrawerItemClickListener(this) .
build();
private void loadNotes() {
this.notes = new ArrayList<>();
List list = dao.getNotes();
listener to adapter this.adapter.setListener(this);
this.recyclerView.setAdapter(adapter);
L1(list); showEmptyView();
swipeToDeleteHelper.attachToRecyclerView(recyclerView);
* when no notes show msg in main_layout
*/
private void showEmptyView()
{ if (notes.size() == 0) {
this.recyclerView.setVisibility(View.GONE);
findViewById(R.id.empty_notes_view).setVisibility(View.VISIBLE);
} else {
this.recyclerView.setVisibility(View.VISIBLE);
findViewById(R.id.empty_notes_view).setVisibility(View.GONE);
/**
* Start EditNoteActivity.class for Create New Note
*/ private void onAddNewNote() {
startActivity(new Intent(this, EditNoteActivity.class)); }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
11
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
return super.onOptionsItemSelected(item);
@Override
protected void onResume() {
super.onResume();
loadNotes();
@Override
public void onNoteClick(Note note) {
// TODO: 22/07/2018 note clicked : edit note
Intent edit = new Intent(this, EditNoteActivity.class);
edit.putExtra(NOTE_EXTRA_Key, note.getId());
startActivity(edit);
@Override
public void onNoteLongClick(Note note) {
// TODO: 22/07/2018 note long clicked : delete , share ..
12
note.setChecked(true);
chackedCount = 1;
adapter.setMultiCheckMode(true);
// set new listener to adapter intend off MainActivity
listener that we have implement
adapter.setListener(new NoteEventListener() {
@Override
public void onNoteClick(Note note) {
note.setChecked(!note.isChecked()); // inverse
selected
if (note.isChecked())
chackedCount++;
else chackedCount--;
if (chackedCount > 1) {
actionModeCallback.changeShareItemVisible(false);
} else
actionModeCallback.changeShareItemVisible(true);
if (chackedCount == 0) {
// finish multi select mode wen checked count =0
actionModeCallback.getAction().finish();
notes.size());
}}
actionModeCallback.setCount(chackedCount + "/" +
adapter.notifyDataSetChanged();
});
@Override
public void onNoteLongClick(Note note) {
} actionModeCallback = new MainActionModeCallback() {
@Override
public boolean onActionItemClicked(ActionMode actionMode,
MenuItem menuItem) {
13
if (menuItem.getItemId() == R.id.action_delete_notes)
onDeleteMultiNotes();
else if (menuItem.getItemId() ==
R.id.action_share_note)
onShareNote();
actionMode.finish();
return false;
};
// start action mode
startActionMode(actionModeCallback);
// hide fab button
fab.setVisibility(View.GONE);
actionModeCallback.setCount(chackedCount + "/" +
notes.size());
private void onShareNote() {
// TODO: 22/07/2018 we need share just one Note not multi
Note note = adapter.getCheckedNotes().get(0);
// TODO: 22/07/2018 do your logic here to share note ; on
social or something else
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
String notetext = note.getNoteText() + "\n\n Create on : " +
NoteUtils.dateFromLong(note.getNoteDate()) + "\n By
:" +
getString(R.string.app_name);
share.putExtra(Intent.EXTRA_TEXT, notetext);
startActivity(share);
private void onDeleteMultiNotes() {
14
// TODO: 22/07/2018 delete multi notes
List chackedNotes = adapter.getCheckedNotes();
if (chackedNotes.size() != 0) {
for (Note note : chackedNotes) {
dao.deleteNote(note);
// refresh Notes
loadNotes();
Toast.makeText(this, chackedNotes.size() + " Note(s)
Delete successfully !", Toast.LENGTH_SHORT).show();
} else Toast.makeText(this, "No Note(s) selected",
Toast.LENGTH_SHORT).show();
//adapter.setMultiCheckMode(false);
@Override
public void onActionModeFinished(ActionMode mode) {
super.onActionModeFinished(mode);
adapter.setMultiCheckMode(false);
// uncheck the notes adapter.setListener(this);
// set back the old listener fab.setVisibility(View.VISIBLE);
// swipe to right or to left te delete
private ItemTouchHelper swipeToDeleteHelper = new ItemTouchHelper(
new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT
| ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
@Override
15
public void onSwiped(RecyclerView.ViewHolder
viewHolder, int direction) {
// TODO: 28/09/2018 delete note when swipe
if (notes != null) {
// get swiped note
Note swipedNote =
notes.get(viewHolder.getAdapterPosition());
if (swipedNote != null) {
swipeToDelete(swipedNote, viewHolder);
});
private void swipeToDelete(final Note swipedNote, final
RecyclerView.ViewHolder viewHolder) {
new AlertDialog.Builder(MainActivity.this)
.setMessage("Delete Note?")
.setPositiveButton("Delete", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface
dialogInterface, int i) {
// TODO: 28/09/2018 delete note
dao.deleteNote(swipedNote);
notes.remove(swipedNote);
adapter.notifyItemRemoved(viewHolder.getAdapterPosition());
showEmptyView();
})
.setNegativeButton("Cancel", new
DialogInterface.OnClickListener() {
16
@Override
public void onClick(DialogInterface
dialogInterface, int i) {
// TODO: 28/09/2018 Undo swipe and restore
swipedNote
recyclerView.getAdapter().notifyItemChanged(viewHolder.getAdapterPosit ion());
})
.setCancelable(false) .
create().show(); }
@Override
public boolean onItemClick(View view, int position, IDrawerItem
drawerItem) {
Toast.makeText(this, "" + position,
Toast.LENGTH_SHORT).show();
return false; }
17
Output
18
19
20
21
A
Micro Project Report
On
Subject :- Mobile Application Development
Semester : VI
22
Maharashtra State Board Of Technical Education ,Mumbai
Gokhale Education Society’s Sir Dr. M. S. Gosavi
Polytechnic Institute Nashik Road ,Nashik.
Department Of Computer Engineering
Academic Year : 2022 – 2023
Course Name: CO6I AcademicYear :
2022-20 23
Subject Name: Mobile Application
Development
Semester: SIXTH
Mobile Application Development
(MAD: 22519 )
MICROPROJECT:
23
Advanced Notepad App
Sr. No Roll No (Sem- Full Name of Enrollment No
VI) Student
01 13 Gholap Sakshi 2018000056
Somnath
02 14 Kurhade Isha 2018000057
Sanjay
03 33 Kashmire Priyal 2018000083
Gorakh
04 46 Patange 2118000121
Manasi
Dnyneshwar
Guided By :- Prof.G.P.Puranik Mam
Gokhale Education Society’s
Sir Dr. M. S. Gosavi Polytechnic
Institute Nashik Road ,Nashik.
CERTIFICATE
This is to certified that the project report entitled “Advanced
Notepad App” completed by sixth Semester of Computer
24
Engineering Diploma Programmer Engineering & Technology
at (1800) Sir Dr. M. S. Gosavi Polytechnic Institute ,Nashik
road Nashik-422101 has completed the micro-project
satisfactorily Web based application with MAD (MAD:22517)
in in the academic year 2022-23 as prescribed in the MSBTE
curriculum of I Scheme
Name of students Enrollment No. Seat No.
Sakshi SomnathGholap 2018000056
Isha Sanjay Kurhade 2018000057
Priyal Gorakh Kashmire 2018000083
Manasi Dnyneshwar 2018000121
Patange
Date= / /2023
Project Guide Head of Department Principal
Index
Sr.no Title
01 Abstract
02 Introduction of Project
03 Motivation
04 Objectives of Project
05 Literature Survey
25
06 Hardware and Software
Requirement
07 Implementation
08 Output
09 Future Scope
10 Conclusion
11 References
26