0% found this document useful (0 votes)
45 views38 pages

Maharashtra State Board of Techinic Education, Mumbai: A Project Report On

The document is a project report on 'Type Speed Testing' submitted by students of the Diploma in Computer Engineering at Sant Gajanan Maharaj Rural Polytechnic. It outlines the rationale for developing an Android app to enhance typing speed, details the methodology, resources, and outcomes of the project, and includes a program code for the application. The report serves as a certification of the project's completion for the academic year 2023-2024 under the guidance of Mr. V.S. Redekar.

Uploaded by

Sanket Karade
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views38 pages

Maharashtra State Board of Techinic Education, Mumbai: A Project Report On

The document is a project report on 'Type Speed Testing' submitted by students of the Diploma in Computer Engineering at Sant Gajanan Maharaj Rural Polytechnic. It outlines the rationale for developing an Android app to enhance typing speed, details the methodology, resources, and outcomes of the project, and includes a program code for the application. The report serves as a certification of the project's completion for the academic year 2023-2024 under the guidance of Mr. V.S. Redekar.

Uploaded by

Sanket Karade
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 38

MAHARASHTRA STATE BOARD OF TECHINIC EDUCATION, MUMBAI

A Project Report
On
“Type Speed Testing”

DIPLOMA
In
COMPUTER ENGINEERING
Submitted by
MR. OM NARAYAN SUTAR
MR. OMKAR PRADIP SARDESAI
MR. ANIRUDDHA ANANDA AJAGEKAR

MR. MUKUND NARAYAN KHANDEKAR

DEPARTMENT OF COMPUTER ENGINEERING


UNDER THE GUIDANCE OF
MR. V.S.REDEKAR
SANT GAJANAN MAHARAJ RURAL POLYTECHNIC, MAHAGAON
ACADEMIC YEAR 2023-2024
SANT GAJANAN MAHARAJ RURAL HOSPITAL & RESEARCH CENTER, MAHAGAON

“SANT GAJANAN MAHARAJ RURAL POLYTECHNIC”


AP-MAHAGAON, SITE-CHINCHEWADI, TAL- GADHINGLAL, KOLHAPUR

Certificate
This is to certify that the following students of VI semester of Diploma in COMPUTER
ENGINEERING of Institute SANT GAJANAN MAHARAJ RURAL POLYTECHNIC
MAHAGAON-416503 (CODE-0965) has completed Micro-project on “Type Speed
Testing” satisfactory in subject Mobile Application Development subject code 22617
for academic year 2023 to 2024 as prescribed in the curriculum.

ROLL ENROLLMENT NO. SEAT STUDENT NAME


NO. NO.
27 2109650160 Mr. Om Narayan Sutar
10 2109650129 Mr. Omkar Pradip Sardesai
01 2109650117 Mr. Aniruddha Ananda Ajagekar
15 2109650135 Mr. Mukund Narayan Khandekar

DATE: PLACE: MAHAGAON

MR.V.S.Redekar Mr. G. K. Birangaddi Mrs. R. S. Patil


(Project Guide) (Head of Department) (Principal)
INDEX

Sr.No Content Page No

1 Part – A: Micro-Project Proposal 4-7

2 Part – B: Micro-Project Report 8-9

3 Program 10-31

4 Output 32-34

5 Conclusion, Reference 35
PART A-Plan
Title:- Type Speed Testing

1.0 Rationale:-

With the increasing reliance on digital communication, typing speed has become a crucial skill.
Creating an Android Type Speed Testing app provides users with a tool to track and improve their
typing speed convenient.Mobile devices, especially Android smartphones, are ubiquitous in
today's world. By developing a typing speed testing app for Android, we make this useful tool
accessible to a broad audience, including students, professionals, and anyone looking to enhance
their typing proficiency on their mobile devices.

2.0 Literature Review:-

The literature on typing speed testing applications for Android offers valuable insights into
various aspects of their design, effectiveness, and impact. Studies such as "The Effects of Typing
Practice on Keyboarding Skills"

Additionally, research on the accessibility of typing speed testing tools, exemplified by


"Accessibility of Typing Speed Testing Tools for Individuals with Disabilities" emphasizes the
importance of inclusive design principles in ensuring that typing apps cater to the needs of users
with diverse abilities. Integrating findings from these studies can inform the development of an
Android Type Speed Testing app that is effective, engaging, and accessible to a broad range of
users.

4
3.0 Proposed Methodology:-

 Select the Topic of Micro-project.

 Collect all the data required for micro-project.

 Design layout of application.

 Created android typing speed test app and prepare its report.

 Organize all the information in proper order.

 Submit the hard copy of the micro-project to the subject teacher.

4.0 Action Plan:-

Process Process
Name of
started Finish
Sr. No Details of activity group
date date
members
All Team
2/3/2024 5/3/2024
To select the title of Member
1.
Project.
All Team
10/3/2024 15/3/2024
Member
Search the information
2.
related to micro-project

20/3/2024 21/3/2024
All Team
3. Design application
Member

23/3/2024 27/3/2024
Created app All Team
4.
Member

5
5.0 Resources Required:-

Name of Resource/
Sr No. Specification Qty Remarks
Material
Asus vivobook18
1 Desktop PC/Laptop Used
1

2 Internet Connection Browser Google 1 Used


Chrome
MS-Office (MS-word,
3 Software 1
MS-Excel, MS- Used
PowerPoint)
Type Speed
4 Application 1 Used
Testing

5.1 Software Requirements:-


 Windows 11
 Zomato Application
 Microsoft Word 2010

5.2 Hardware Components:-


 Processor – i5
 Hard Disk – 512GB
 Ram- 4GB DDR2

6
6.0 Name of responsible team members: -

Sr No. Roll Name of Student Enrollment Number


No

1 27 Om Narayan Sutar 2109650160

2 10 Omkar Pradip Sardesai 2109650129

3 01 Aniruddha Ananada Ajagekar 2109650117

4 15 Mukund Narayan Khandekar 2109650135

7
PART B (Outcomes after
Execution) Title:- Type Speed
Testing

1.0 Course Outcomes Integrated:-

1. Interpreted features of Android operating system.

2. Configure Android environment and development tools.

3. Develop rich user Interfaces by using layouts and controls.

4. Use User Interface components for android application development.

5. Create Android application using database.

6. Publish Android applications.

2.0 Literature Review:-

The literature on typing speed testing applications for Android offers valuable insights into
various aspects of their design, effectiveness, and impact. Studies such as "The Effects of Typing
Practice on Keyboarding Skills"
Additionally, research on the accessibility of typing speed testing tools, exemplified by
"Accessibility of Typing Speed Testing Tools for Individuals with Disabilities" emphasizes the
importance of inclusive design principles in ensuring that typing apps cater to the needs of users
with diverse abilities. Integrating findings from these studies can inform the development of an
Android Type Speed Testing app that is effective, engaging, and accessible to a broad range of
users.

8
3.0 Actual Procedure Followed:-

 Focus on selection of appropriate topic for Micro project.

 Select the topic type speed testing.

 To meet the subject teacher and take guidelines about it.

 Searching the information related to the topic of micro-project.

 Start the procedure for project and making soft copy of project report

 We organize all information about our topic in proper manner.

 Show the soft copy of the project report to subject teacher.

 Submitted hard copy to subject teacher.

4.0 Resources Required:-

Name of Resource/
Sr No. Specification Qty Remarks
Material
Asus vivobook18
1 Desktop PC/Laptop Used
1

2 Internet Connection Browser Google 1


Used
chrome
MS-Office (MS-word,
3 Software 1
MS-Excel, MS- Used
PowerPoint)
Type Speed
4 Application 1 Used
Testing

9
Program :-

activity flash screen xml file :-


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/image"
android:layout_centerInParent="true"
android:src="@drawable/computer_keyboard"
/>
</RelativeLayout>

Second activity xml file:-


<?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:padding="10dp"
tools:context=".MainActivity">
10
<TextView
android:id="@+id/txt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Typing Speed Test"
android:textStyle="bold"
android:textSize="40dp"
android:layout_marginTop="40dp"/>

<TextView
android:id="@+id/txt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt1"
android:layout_marginTop="15dp"
android:textSize="18dp"
android:text="Test Your typing speed with speed test application and improve your typing skills"/>

<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:text="Start Game"
android:textSize="26dp"/>

11
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn1"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="Game History"
android:textSize="24dp"/>

</RelativeLayout>

Second activity java file:-


package com.example.typingtestproject;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class SecondActivity extends AppCompatActivity


{ Button btn1,btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
Intent HistoryIntent = new Intent(SecondActivity.this,TypingHistory.class);

12
Intent TestIntent = new Intent(SecondActivity.this,MainActivity.class);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(TestIntent);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(HistoryIntent);
}
});
}
}

typing speed xml file:-

<?xml version="1.0" encoding="utf-8"?>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/txt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
13
android:text="TypingSpeed"
android:textSize="25dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:textStyle="bold"/>
<TextView
android:id="@+id/stoptyping"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/txt1"
android:layout_marginTop="40dp"
android:text="Good Luck"
android:textSize="20dp"/>

<TextView
android:id="@+id/txt2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:layout_below="@+id/stoptyping"/>

<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txt2"
android:layout_marginTop="30dp"
android:id="@+id/table">

<TableRow android:padding="5dp">

14
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Correct" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Wrong" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Accuracy" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Speed" />
</TableRow>
<TableRow android:padding="5dp">
<TextView
android:id="@+id/correctTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0 " />

15
<TextView
android:id="@+id/wrongTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0 " />
<TextView
android:id="@+id/accuracyTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0" />
<TextView
android:id="@+id/speedTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0"/>
</TableRow>
</TableLayout>

<TextView
android:id="@+id/contentTxt"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/table"
android:layout_marginTop="100dp"
android:text="Click On Steart To Begin!"

16
android:textSize="18dp"/>

<EditText

android:minHeight="48dp"
android:id="@+id/edtContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/contentTxt"
android:layout_marginTop="40dp"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:hint="Enter Text"
android:ems="20"/>

<Button

android:id="@+id/starttyping"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/edtContent"
android:layout_marginTop="20dp"
android:text="Start Typing"
android:textSize="20dp"/>
<Button

android:id="@+id/Restarttyping"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/starttyping"
android:layout_marginTop="20dp"
android:text="Restart Typing"
17
android:textSize="20dp"/>

</RelativeLayout>

typing speed java file:-


package com.example.typingtestproject;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;

18
import java.util.Date;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity
{ HistoryDatabase db = new HistoryDatabase(this);
TextView correctTxt,wrongTxt,accuracyTxt,speedTxt,contentTxt,timer;
EditText edtContent;
Button startBtn,RestartBtn;
private int correctWords = 0;
private int totalWords = 0;
private int wrongWords = 0 ;
private long startTime = 0;
private static String randow_word = " ";
private CountDownTimer count_timer;

@Override
protected void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
correctTxt = findViewById(R.id.correctTxt);
wrongTxt = findViewById(R.id.wrongTxt);
accuracyTxt = findViewById(R.id.accuracyTxt);
speedTxt = findViewById(R.id.speedTxt);
contentTxt = findViewById(R.id.contentTxt);
startBtn = findViewById(R.id.starttyping);
RestartBtn = findViewById(R.id.Restarttyping);
timer = findViewById(R.id.stoptyping);
edtContent = findViewById(R.id.edtContent);
edtContent.setEnabled(false);

19
List<String> words = initailizeText();
edtContent.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@SuppressLint("SetTextI18n")
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{ if(edtContent.getText().toString().length() > contentTxt.getText().toString().length()) {
if(edtContent.getText().toString().trim().equals(contentTxt.getText().toString()))
{
correctWords++; totalWords+
+;
correctTxt.setText(Integer.toString(correctWords));
}
else{
wrongWords++; totalWords+
+;
wrongTxt.setText(Integer.toString(wrongWords));
}
MainActivity.randow_word = displayText(words);
edtContent.setText(" ");
}
}
@Override
public void afterTextChanged(Editable s) {

}
});

20
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startBtn.setEnabled(false);
correctTxt.setText("0");
correctWords=0;
wrongTxt.setText("0");
wrongWords=0;
speedTxt.setText("0");
accuracyTxt.setText("0");
edtContent.setText("");
MainActivity.randow_word = displayText(words);
Log.d("random word","value:-"+randow_word);
edtContent.setEnabled(true);
startTime = System.currentTimeMillis();
count_timer = new CountDownTimer(60000, 1000) {
@SuppressLint("SetTextI18n")
public void onTick(long millisUntilFinished)
{ timer.setText("Remaining Time :-"+(millisUntilFinished/1000));
}
public void onFinish() {
displayStats();
startBtn.setEnabled(true);
edtContent.setEnabled(false);

}
}.start();
}

});

21
RestartBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(startBtn.isEnabled()){
Toast.makeText(MainActivity.this, "Please start the test first !!",
Toast.LENGTH_SHORT).show();
}
else{
count_timer.cancel();
startBtn.setEnabled(false);
correctTxt.setText("0");
correctWords=0;
wrongTxt.setText("0");
wrongWords=0;
speedTxt.setText("0");
accuracyTxt.setText("0");
edtContent.setText("");
MainActivity.randow_word = displayText(words);
Log.d("random word","value:-"+randow_word);
edtContent.setEnabled(true);
startTime = System.currentTimeMillis();
count_timer.start();

}
}
});
}

@SuppressLint("SetTextI18n")

22
public void displayStats(){
double [] result = calculateSpeedAndAccuracy(correctWords,totalWords,60);
speedTxt.setText(Double.toString(result[0]));
accuracyTxt.setText(Integer.toString((int) result[1]));
alertDialog();

public String displayText(List<String> words){


Random rand = new Random(System.currentTimeMillis());
String randomWord = words.get(rand.nextInt(words.size()));
contentTxt.setText(randomWord);
return randomWord;
}
public List<String> initailizeText(){
String data = getResources().getString(R.string.words);
String[] wordsLine = data.split(" ");
return new ArrayList<String>(Arrays.asList(wordsLine));
}
public double[] calculateSpeedAndAccuracy(int correctWords, int totalWords, int timeTaken)
{ double[] stats = new double[2];
double speed = (60.0 * correctWords) / timeTaken;
double accuracy = ((double) correctWords / totalWords) * 100.0;
stats[0] = speed;
stats[1] = accuracy;
return stats;
}
private void alertDialog() {
AlertDialog.Builder dialog=new AlertDialog.Builder(this);

23
dialog.setCancelable(false);
dialog.setMessage("Are you want to store the history of your current typing test......");
dialog.setTitle("Storing In History");
dialog.setPositiveButton("YES",
new DialogInterface.OnClickListener()
{ public void onClick(DialogInterface
dialog,
int which)
{ DateTimeFormatter
formatter;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
{ LocalDateTime now = LocalDateTime.now();
formatter = DateTimeFormatter.ofPattern("EEE dd/MM h:mm a");
String formattedDateTime = now.format(formatter);

db.insert(formattedDateTime.toString(),accuracyTxt.getText().toString(),speedTxt.getText().toString(),
correctTxt.getText().toString(),wrongTxt.getText().toString());
Toast.makeText(getApplicationContext(),"Your Data is begin
Recorded",Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(MainActivity.this, "Please make sure your android is up to date",
Toast.LENGTH_SHORT).show();
}

}
});
dialog.setNegativeButton("cancel",new DialogInterface.OnClickListener() {
@Override

24
public void onClick(DialogInterface dialog, int which) {

25
Toast.makeText(getApplicationContext(),"Data is not stored in
History",Toast.LENGTH_SHORT).show();
}
});
AlertDialog alertDialog=dialog.create();
alertDialog.show();
}
}

History xml file:-


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".TypingHistory"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="History of Typing"
android:id="@+id/txtview"
android:textSize="30dp"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
/>

26
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtview"
android:layout_marginTop="30dp"
/>
</RelativeLayout>

History java file:-


package com.example.typingtestproject;
import androidx.appcompat.app.AppCompatActivity;
import
androidx.cursoradapter.widget.CursorAdapter;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import org.w3c.dom.Text;
import java.util.ArrayList;
public class TypingHistory extends AppCompatActivity
{ TextView txt;
ListView list;
HistoryDatabase db = new HistoryDatabase(this);

27
@Override

28
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_typing_history);
txt = findViewById(R.id.txtview);
list = findViewById(R.id.list);
displayRecords();
}
private void displayRecords() {
ArrayList<String> arrayList = new ArrayList<>();
Cursor cur = db.read();
if(cur == null){
txt.setText("OOP's You have not give typing test yet");
}
else {
while (cur.moveToNext())
{ String date =
cur.getString(1); String acc =
cur.getString(2); String speed =
cur.getString(3);
String correct_words = cur.getString(4);
String wrong_words = cur.getString(5);
String data = ("\nYour Typing test Date :- " + date + "\n Your Accuracy :- " + acc + "\n Your Speed
is :- " + speed +
"\n You have typed correct words :- " + correct_words + "\nwrong words :- " + wrong_words);
arrayList.add(data);
}
ArrayAdapter<String> adapater = new
ArrayAdapter<>(TypingHistory.this,android.R.layout.simple_list_item_1,arrayList);
list.setAdapter(adapater);

29
} }}

30
Database java file:-

package com.example.typingtestproject;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class HistoryDatabase extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "TypeHistory";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "TypeInfo";
public static final String DATE = "date";
public static final String ACC = "accuracy";
public static final String SPEED = "speed";
public static final String CORRECT_WORDS = "correct_words";
public static final String WRONG_WORDS = "wrong_words";
public HistoryDatabase(Context
context){super(context,DATABASE_NAME,null,DATABASE_VERSION);}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE IF NOT EXISTS "+TABLE_NAME+"( id INTEGER PRIMARY KEY
AUTOINCREMENT ,"+DATE+" TEXT,"+ACC+" TEXT ,"+SPEED+" TEXT, "+CORRECT_WORDS+"
TEXT,"+WRONG_WORDS+" TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db , int oldVersion,int newVersion){

31
}

public boolean insert(String date,String acc,String speed,String correct_words,String wrong_words)


{ SQLiteDatabase db = getWritableDatabase();
ContentValues con = new ContentValues();
con.put(DATE,date);
con.put(ACC,acc);
con.put(SPEED,speed);
con.put(WRONG_WORDS,wrong_words);
con.put(CORRECT_WORDS,correct_words);
long val = db.insert(TABLE_NAME,null,con);
return val > 0;
}
public Cursor read(){
SQLiteDatabase db = getReadableDatabase();
try {
String query = "SELECT * FROM " + TABLE_NAME ;
Cursor cur = db.rawQuery(query, null);

if(cur.getCount() > 0)
{
return cur;
}
else{
return null;
}
}
catch(Exception e){
e.printStackTrace();

32
return null;
}
}
}

Android manifest file:-


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.TypingTestProject"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="false" />
<activity
android:name=".SecondActivity"
android:exported="false" />
<activity
android:name=".TypingHistory"
android:exported="false" />

33
<activity
android:name=".HistoryDatabase"
android:exported="false" />
<activity
android:name=".FlashScreen"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

34
Output:-

35
36
37
Conclusion:-

In conclusion, the Android Type Speed Testing project offers a valuable tool for users to enhance their typing
proficiency. Through its user-friendly interface, comprehensive features, and accurate assessment capabilities,
the application aims to provide an engaging and effective platform for individuals to practice and improve
their typing speed and accuracy. With further refinement and potential integration of additional features, such
as customizable exercises and performance tracking, the project holds promise for continued development and
widespread utility in the realm of typing education and training.

Reference:-

https://www.tutlane.com/tutorial/android
https://developer.android.com/develop
https://stackoverflow.com/

38

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy