Software Testing: System Development and Implementation Report
VerifiedAdded on 2023/01/19
|47
|11428
|1
Report
AI Summary
This report details a software testing project focused on mobile application development. It outlines the research design, data collection methods (interviews, observations, and questionnaires), and data analysis techniques used to gather information from stakeholders. The report discusses the iterative SDLC methodology and system implementation using Android Java for Android Studio. It explores various testing phases, including usability, functionality, and non-functional requirements, as well as black box and white box testing. The report includes JUnit tests and validation procedures, covering user acceptance testing and system evaluation based on research objectives. The project also involves system analysis and design, utilizing Use Case Diagrams, Sequence Diagrams, and Entity Relationship Diagrams to refine the mobile application's physical and logical designs. The report emphasizes the importance of testing and validation in ensuring the quality and functionality of the developed mobile application.
Contribute Materials
Your contribution can guide someone’s learning journey. Share your
documents today.

SOFTWARE TESTING
System Development
Introduction
Rigorous research and design methodology has to be undertaken to explicitly describe how
each research objective for this study will be fulfilled. The results from this analysis guided
the mobile development and testing phases to ensure that an application that effectively
facilitates the activities regarding the subject of study via the use of mobile app technology
Deak, Stålhane and Sindre, (2016).
Research Design and Development
Research design is the plan and structure of investigation so convinced to obtain answers to
research questions. It is the glue that holds together all the elements in a research project Pei,
Cao Yang and Jana, (2017). There are many activities that are fundamental for the success of
this project each to be carried out as specified in different sections.
This objective has been achieved by the use of iterative SDLC methodology testing every
module of the system once it is completed.
System Development
Introduction
Rigorous research and design methodology has to be undertaken to explicitly describe how
each research objective for this study will be fulfilled. The results from this analysis guided
the mobile development and testing phases to ensure that an application that effectively
facilitates the activities regarding the subject of study via the use of mobile app technology
Deak, Stålhane and Sindre, (2016).
Research Design and Development
Research design is the plan and structure of investigation so convinced to obtain answers to
research questions. It is the glue that holds together all the elements in a research project Pei,
Cao Yang and Jana, (2017). There are many activities that are fundamental for the success of
this project each to be carried out as specified in different sections.
This objective has been achieved by the use of iterative SDLC methodology testing every
module of the system once it is completed.
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

Data Collection
The research focuses on getting information and data from relevant stakeholders in
institutions encompassing the software and the learners in higher institutions. The methods
used to achieve this are interviews, observations and questionnaires. To supplement the data
The research focuses on getting information and data from relevant stakeholders in
institutions encompassing the software and the learners in higher institutions. The methods
used to achieve this are interviews, observations and questionnaires. To supplement the data

collected from interviews the research also uses observation and questionnaires as methods of
data collection.
Data Analysis and Synthesis
The data collected via the above means will be analysed by and presented in a systematic
manner. Data was collected regarding various types of animals and their different behaviours
with some information on how to tame the animals. Bar graph, pie chart diagrams will be
used to show the relationship between the various factors in the wild field and the effects.
This is the link between the raw data and the significant results leading to relevant conclusion
and inferences, the analysis is intended to be result oriented, for that matter data will also be
tabulated, from this analysis the application requirements and specifications will be drawn
and forwarded on for the design and implementation.
Planning and Requirement Analysis
It was imperative for the study to capture user opinions of the shortcomings of the current e-
learning platforms in the country especially in the institutions of higher learning, to do this a
survey was conducted in the planning phase by the use of Google Forms and sent to a sample
of 80 people in the researcher’s mailing list. A copy of the survey can be found on Appendix
A. The criteria of choosing the sample respondents for the survey familiarity with Google
Surveys and Internet-savvy. Google Survey was the appropriate tool since it is free and
guides the outcomes into a shareable spread sheet (Randal, 2015). With this, it is easier to
disseminate as compared to the Microsoft counterparts. The results informed the requirement
analysis as the respondents clarified the type of mobile application would meet their
requirements.
data collection.
Data Analysis and Synthesis
The data collected via the above means will be analysed by and presented in a systematic
manner. Data was collected regarding various types of animals and their different behaviours
with some information on how to tame the animals. Bar graph, pie chart diagrams will be
used to show the relationship between the various factors in the wild field and the effects.
This is the link between the raw data and the significant results leading to relevant conclusion
and inferences, the analysis is intended to be result oriented, for that matter data will also be
tabulated, from this analysis the application requirements and specifications will be drawn
and forwarded on for the design and implementation.
Planning and Requirement Analysis
It was imperative for the study to capture user opinions of the shortcomings of the current e-
learning platforms in the country especially in the institutions of higher learning, to do this a
survey was conducted in the planning phase by the use of Google Forms and sent to a sample
of 80 people in the researcher’s mailing list. A copy of the survey can be found on Appendix
A. The criteria of choosing the sample respondents for the survey familiarity with Google
Surveys and Internet-savvy. Google Survey was the appropriate tool since it is free and
guides the outcomes into a shareable spread sheet (Randal, 2015). With this, it is easier to
disseminate as compared to the Microsoft counterparts. The results informed the requirement
analysis as the respondents clarified the type of mobile application would meet their
requirements.

System Implementation Tools and Techniques
This chapter discusses on how the system was implemented from scratch from the stage of
conceptualizing the idea to the point of actualizing it through coding.
Mobile application
There are various ways of developing mobile applications, the chosen method all depends on
the requirements of the users, for instance there are various frameworks for mobile
development such as Framework7, Ionic, Cordova and even xamrin, all of them could
facilitate this project however they support multi-platform aspect of mobile development
which was not necessary for the project, this hence led to the settling on Android Java for
android studio.
Cordova mobile
The mobile application platform is a cross-platform such that it supports; IOS, android and
windows phones. The source code has been written in TypeScript utilizing the cross-platform
Apache Cordova tools for visual studio and Node.JS tools for mobile development.
JavaScript Object Notation (JSON) have been used to provide the linkage between mobile
application and the firebase database.
Android mobile (Kotlin and Java)
It can also be done by Java or Kotlin for Android studio exclusively, in this case the project is
developed in Java for android implementing the use of Object Oriented aspects of
inheritance, polymorphism and abstraction.
This chapter discusses on how the system was implemented from scratch from the stage of
conceptualizing the idea to the point of actualizing it through coding.
Mobile application
There are various ways of developing mobile applications, the chosen method all depends on
the requirements of the users, for instance there are various frameworks for mobile
development such as Framework7, Ionic, Cordova and even xamrin, all of them could
facilitate this project however they support multi-platform aspect of mobile development
which was not necessary for the project, this hence led to the settling on Android Java for
android studio.
Cordova mobile
The mobile application platform is a cross-platform such that it supports; IOS, android and
windows phones. The source code has been written in TypeScript utilizing the cross-platform
Apache Cordova tools for visual studio and Node.JS tools for mobile development.
JavaScript Object Notation (JSON) have been used to provide the linkage between mobile
application and the firebase database.
Android mobile (Kotlin and Java)
It can also be done by Java or Kotlin for Android studio exclusively, in this case the project is
developed in Java for android implementing the use of Object Oriented aspects of
inheritance, polymorphism and abstraction.
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

System Testing and Validation
Usability testing
Usability testing is done in three dimensions to ensure the quality of the system; these include
as per Garousi and Mäntylä, 2016).:
Moderated in-person: A organiser is co-spotted with the member frequently in a workroom.
Moderated remote: The contributor and organiser are in diverse places. Screen distribution
software such as the GoTo meeting or WebEx permits the organiser to at all timepiece the
contributor tries errands with software or a website and permits for searching on glitches.
Unmoderated remote: Software from Measuring-U or Loop11 manages responsibilities
mechanically to contestants everywhere the domain. You can gather a great deal of
information rapidly and for a portion of the price of in-person challenging. In numerous bags
you have a footage of the member’s screen and webcam, but there’s no method to
concurrently interrelate with all members.
With the type of border and dissimilar challenging approaches in attention here are the five
kinds of usability tests, apiece lecturing a dissimilar investigation objective.
Learn tracking, Benchmarking, eye tracking and competitive methods.
Usability testing has been conducted to determine the usability of the application, the APK
will be given to a sample of users to try use the application and give a feedback on the
experience.
Functionality testing
The functionality testing will be conducted to ensure the developed mobile application
conforms to the requirements as specified in the early stages.
Usability testing
Usability testing is done in three dimensions to ensure the quality of the system; these include
as per Garousi and Mäntylä, 2016).:
Moderated in-person: A organiser is co-spotted with the member frequently in a workroom.
Moderated remote: The contributor and organiser are in diverse places. Screen distribution
software such as the GoTo meeting or WebEx permits the organiser to at all timepiece the
contributor tries errands with software or a website and permits for searching on glitches.
Unmoderated remote: Software from Measuring-U or Loop11 manages responsibilities
mechanically to contestants everywhere the domain. You can gather a great deal of
information rapidly and for a portion of the price of in-person challenging. In numerous bags
you have a footage of the member’s screen and webcam, but there’s no method to
concurrently interrelate with all members.
With the type of border and dissimilar challenging approaches in attention here are the five
kinds of usability tests, apiece lecturing a dissimilar investigation objective.
Learn tracking, Benchmarking, eye tracking and competitive methods.
Usability testing has been conducted to determine the usability of the application, the APK
will be given to a sample of users to try use the application and give a feedback on the
experience.
Functionality testing
The functionality testing will be conducted to ensure the developed mobile application
conforms to the requirements as specified in the early stages.

Functional testing is a quality assurance (QA) procedure[1] and a kind of black-box
challenging that centres its test bags on the riders of the software constituent underneath test.
Purposes are verified by nourishing them input and investigative the production, and interior
program assembly is infrequently careful unlike white-box challenging[2] Useful challenging
is directed to assess the acquiescence of a system or constituent with quantified
handy necessities.[3] Practical challenging typically defines what the system does ,Barr,
Harman, McMinn, Shahbaz, and Yoo, (2015).
Practical challenging does not suggest that you are challenging a purpose or a technique of
your unit or class. Practical challenging examinations a slice of functionality of the entire
system.
Practical challenging varies from system testing in that practical challenging "settles a
program by inspection it in contradiction of ... design document(s) or requirement(s)",
whereas system testing "validate[s] a program by inspection it in contradiction of the
available user or system supplies" (Kaner, Falk, Nguyen 1999, p. 52).
Non-functional requirements
The regulator system requires at least 3G internet connection for the peer-to-peer connection
Hardware & Software requirements
At least 4GB RAM
At least 2.0GZ processor speed
100GB Hard disk and above
Mobile phone; Android, IOS or windows phone, any of the three
System requirements
Operating system; windows or MAC OS
IDE: Android Studio or Eclipse
Programming language: Android Java
challenging that centres its test bags on the riders of the software constituent underneath test.
Purposes are verified by nourishing them input and investigative the production, and interior
program assembly is infrequently careful unlike white-box challenging[2] Useful challenging
is directed to assess the acquiescence of a system or constituent with quantified
handy necessities.[3] Practical challenging typically defines what the system does ,Barr,
Harman, McMinn, Shahbaz, and Yoo, (2015).
Practical challenging does not suggest that you are challenging a purpose or a technique of
your unit or class. Practical challenging examinations a slice of functionality of the entire
system.
Practical challenging varies from system testing in that practical challenging "settles a
program by inspection it in contradiction of ... design document(s) or requirement(s)",
whereas system testing "validate[s] a program by inspection it in contradiction of the
available user or system supplies" (Kaner, Falk, Nguyen 1999, p. 52).
Non-functional requirements
The regulator system requires at least 3G internet connection for the peer-to-peer connection
Hardware & Software requirements
At least 4GB RAM
At least 2.0GZ processor speed
100GB Hard disk and above
Mobile phone; Android, IOS or windows phone, any of the three
System requirements
Operating system; windows or MAC OS
IDE: Android Studio or Eclipse
Programming language: Android Java

HAXM emulator or real device such as phone of course android phone
Database; firebase database
At least 3G internet and above
Black box testing
This method examined functionality such as;
Black-box testing is a technique of software challenging that scrutinises the functionality of
an application deprived of scrutinising into its interior constructions or mechanisms. This
technique of test can be practical almost to every single neck and neck of software
challenging: component, incorporation, system and recognition. It is from time to time
denoted to as requirement-based challenging.[1]
Black box testing examines the real function of the system, checks if the system meets the
requirements that it was meant for. For this case black box testing checked the regulation
process of the mobile app user or users.
In the same package, we create a folder give it a name: Junit test
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* JUnit Test case for the Regulator1 class.
*
* @author Mihai Fonoage
*
*/
public class Regulator1Test {
private regulator1 regulator1;
/**
* Sets up the test fixture.
* (Called before every test case method.)
*/
@Before
Database; firebase database
At least 3G internet and above
Black box testing
This method examined functionality such as;
Black-box testing is a technique of software challenging that scrutinises the functionality of
an application deprived of scrutinising into its interior constructions or mechanisms. This
technique of test can be practical almost to every single neck and neck of software
challenging: component, incorporation, system and recognition. It is from time to time
denoted to as requirement-based challenging.[1]
Black box testing examines the real function of the system, checks if the system meets the
requirements that it was meant for. For this case black box testing checked the regulation
process of the mobile app user or users.
In the same package, we create a folder give it a name: Junit test
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* JUnit Test case for the Regulator1 class.
*
* @author Mihai Fonoage
*
*/
public class Regulator1Test {
private regulator1 regulator1;
/**
* Sets up the test fixture.
* (Called before every test case method.)
*/
@Before
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

public void setUp() {
regulator1 = new Regulator1(6, 4);
}
/**
* Tears down the test fixture.
* (Called after every test case method.)
*/
@After
public void tearDown() {
regulator1 = null;
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#add()}.
*/
@Test
public void testAdd() {
assertTrue(regulator1.add() == 10);
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#subtract()}.
*/
@Test
public void testSubtract() {
assertTrue(regulator1.subtract() == 2);
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#multiply()}.
*/
@Test
public void testMultiply() {
assertTrue(regulator1.multiply() == 24);
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#divide()}.
*/
@Test
public void testDivide() {
assertTrue(regulator1.divide() == 1.5);
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#divide()}.
*/
@Test(expected = ArithmeticException.class)
public void testDivideByZero() {
Regulator1 regulator1 = new Regulator1(6, 0);
regulator1.divide();
}
}
//Right click on the regulator test class
White box testing/ Structural Testing
regulator1 = new Regulator1(6, 4);
}
/**
* Tears down the test fixture.
* (Called after every test case method.)
*/
@After
public void tearDown() {
regulator1 = null;
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#add()}.
*/
@Test
public void testAdd() {
assertTrue(regulator1.add() == 10);
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#subtract()}.
*/
@Test
public void testSubtract() {
assertTrue(regulator1.subtract() == 2);
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#multiply()}.
*/
@Test
public void testMultiply() {
assertTrue(regulator1.multiply() == 24);
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#divide()}.
*/
@Test
public void testDivide() {
assertTrue(regulator1.divide() == 1.5);
}
/**
* Test method for {@link edu.fau.csi.junit.Regulator1#divide()}.
*/
@Test(expected = ArithmeticException.class)
public void testDivideByZero() {
Regulator1 regulator1 = new Regulator1(6, 0);
regulator1.divide();
}
}
//Right click on the regulator test class
White box testing/ Structural Testing

According to Jurj, Rotar, Opritoiu and Vladutiu, 2018) White-box challenging also known
as pure box challenging, glass box testing, see-through box challenging, and physical
challenging is a technique of challenging software that tests interior constructions or
mechanisms of an application, as opposite to its functionality i.e. black-box testing. In white-
box challenging an interior viewpoint of the system, as well as programming abilities, are
rummage-sale to plan test gears. The tester selects contributions to workout paths over and
done with the code and control the predictable productions. This is similar to challenging
protuberances in a circuit, e.g. in-circuit testing or commonly referred to as (ICT). White-box
challenging can be functional at the unit, addition and system stages of the software
challenging process. Although old-fashioned testers have a habit of to reason of white-box
testing as existence complete at the component neck and neck, it is rummage-sale for
incorporation and scheme challenging more commonly these days. It can test pathways in the
interior a component, pathways flanked by components all through incorporation, and amid
sub-systems all through a scheme–equal examination. Nevertheless, this technique of
examination plan can expose numerous mistakes or glitches, it has the possible to slip undone
portions of the requirement or absent specifications.
White-box test enterprise methods take in the next cypher attention criteria:
Control flow challenging
Data flow testing
Division challenging
Declaration attention
Choice attention
Adapted disorder or choice attention
Prime path testing
Trail challenging
This method examines internal structure of the application as far as programming skills are
concerned, checks for test cases. This ensured unnecessary codes are eliminated or
commented out for the efficiency of the system.
as pure box challenging, glass box testing, see-through box challenging, and physical
challenging is a technique of challenging software that tests interior constructions or
mechanisms of an application, as opposite to its functionality i.e. black-box testing. In white-
box challenging an interior viewpoint of the system, as well as programming abilities, are
rummage-sale to plan test gears. The tester selects contributions to workout paths over and
done with the code and control the predictable productions. This is similar to challenging
protuberances in a circuit, e.g. in-circuit testing or commonly referred to as (ICT). White-box
challenging can be functional at the unit, addition and system stages of the software
challenging process. Although old-fashioned testers have a habit of to reason of white-box
testing as existence complete at the component neck and neck, it is rummage-sale for
incorporation and scheme challenging more commonly these days. It can test pathways in the
interior a component, pathways flanked by components all through incorporation, and amid
sub-systems all through a scheme–equal examination. Nevertheless, this technique of
examination plan can expose numerous mistakes or glitches, it has the possible to slip undone
portions of the requirement or absent specifications.
White-box test enterprise methods take in the next cypher attention criteria:
Control flow challenging
Data flow testing
Division challenging
Declaration attention
Choice attention
Adapted disorder or choice attention
Prime path testing
Trail challenging
This method examines internal structure of the application as far as programming skills are
concerned, checks for test cases. This ensured unnecessary codes are eliminated or
commented out for the efficiency of the system.

User acceptance testing
The system was tested on Android phone, browser for web view and on Android browser
simulation to see how it functions on different platforms. This is tested in the real world, the
intended users are sampled out to use the given system for a while and user experience
feedback regarding the experience of using the software in terms of functionality and
reliability Takanen, Demott, Miller and Kettunen, (2018).
System Validation
The system was tested on Android phone, browser for web view and on Android browser
simulation to see how it functions on different platforms. This is tested in the real world, the
intended users are sampled out to use the given system for a while and user experience
feedback regarding the experience of using the software in terms of functionality and
reliability Takanen, Demott, Miller and Kettunen, (2018).
System Validation
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

Validation is done before and after use of the mobile application for its intended purposes.
Evaluation
The application will be evaluated basing on the research objectives for developing the
application that will facilitate work that it was meant for, data synchrony hence reduces the
current stress seen in systems aspect for use, evaluation,Beyer, 2019).
System Analysis and Designing Phase
In this phase, physical and logical designs of the mobile application have been constantly
refined using Use Case Diagrams and descriptions. Sequence Diagrams and Entity
Relationship Diagrams. These diagrams have been modified using Unified Modeling
Language (UML) notation Mustaqbal, Firdaus and Rahmadi, (2016).
Evaluation
The application will be evaluated basing on the research objectives for developing the
application that will facilitate work that it was meant for, data synchrony hence reduces the
current stress seen in systems aspect for use, evaluation,Beyer, 2019).
System Analysis and Designing Phase
In this phase, physical and logical designs of the mobile application have been constantly
refined using Use Case Diagrams and descriptions. Sequence Diagrams and Entity
Relationship Diagrams. These diagrams have been modified using Unified Modeling
Language (UML) notation Mustaqbal, Firdaus and Rahmadi, (2016).

A Use Case Diagram have been used to describe a set of actions that the system should
perform in association with one or more external actors (Bell, 2004). A Use Case Diagram
has been drawn to show the major actions that are performed by the mobile application. A
Use Case description has been used to expound on the major use cases depicted in the whole
use case diagram.
Below is a simple use case diagram of the system designed in Unified Modelling Notion
commonly known as UML notion.
Sequence Diagrams have also been used to show the interactions between objects in the
sequential order that the interactions occur Jacob and Prasanna, (2016).
Introduction
This section describes the tools that were used to analyse and design the system, they include
use case, ERD, logical and physical diagrams.
Logical design
perform in association with one or more external actors (Bell, 2004). A Use Case Diagram
has been drawn to show the major actions that are performed by the mobile application. A
Use Case description has been used to expound on the major use cases depicted in the whole
use case diagram.
Below is a simple use case diagram of the system designed in Unified Modelling Notion
commonly known as UML notion.
Sequence Diagrams have also been used to show the interactions between objects in the
sequential order that the interactions occur Jacob and Prasanna, (2016).
Introduction
This section describes the tools that were used to analyse and design the system, they include
use case, ERD, logical and physical diagrams.
Logical design

The main goal of designing the system logically was to come up with structured individual
system components that reflects the entities together with their attributes. The ELAN system
uses firebase cloud store, however some user authentication and authorization are necessary
for security.
Physical design
This was the physical realization of the logical design of the ELAN system, during this
design, the researcher translated the schemas into actual structures. Below is the physical
design of the system;
Class Diagrams:
system components that reflects the entities together with their attributes. The ELAN system
uses firebase cloud store, however some user authentication and authorization are necessary
for security.
Physical design
This was the physical realization of the logical design of the ELAN system, during this
design, the researcher translated the schemas into actual structures. Below is the physical
design of the system;
Class Diagrams:
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

The system entails of the above activities, all of them being called from the main activity
form which the java main method is invoked.
Sprint 1
Play Activity
The play activity is invoked from the main activity.
The regulator class contains most of the code for the functionality of the system, below is the
code in the regulator class: This class uses java Object Oriented property of inheritance to
call the properties of the class AppCompatActivity from elsewhere in the package for the
project.
public class AlphabetActivity extends AppCompatActivity {
// Declare buttons
private Button lettersButton;
private Button wordsButton;
form which the java main method is invoked.
Sprint 1
Play Activity
The play activity is invoked from the main activity.
The regulator class contains most of the code for the functionality of the system, below is the
code in the regulator class: This class uses java Object Oriented property of inheritance to
call the properties of the class AppCompatActivity from elsewhere in the package for the
project.
public class AlphabetActivity extends AppCompatActivity {
// Declare buttons
private Button lettersButton;
private Button wordsButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alphabet);
lettersButton = findViewById(R.id.button_letters);
//set custom font button letters
Typeface lettersFont=Typeface.createFromAsset(getAssets(),
"fonts/Splatch.ttf");
lettersButton.setTypeface(lettersFont);
wordsButton = findViewById(R.id.button_words);
//set custom font button words
Typeface wordsFont=Typeface.createFromAsset(getAssets(),
"fonts/Splatch.ttf");
wordsButton.setTypeface(wordsFont);
lettersButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(AlphabetActivity.this,
LettersActivity.class);
startActivity(intent);
}
});
wordsButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(AlphabetActivity.this, WordsActivity.class);
startActivity(intent);
}
});
}
}
Main Activity
The main activity has the android’s oncreate method which is initiated when the application
builds, it is invoked only once. Has buttons for buttons for instructions, play and options
referenced by findViewById method.
package com.example.giorg.readingtutor1;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alphabet);
lettersButton = findViewById(R.id.button_letters);
//set custom font button letters
Typeface lettersFont=Typeface.createFromAsset(getAssets(),
"fonts/Splatch.ttf");
lettersButton.setTypeface(lettersFont);
wordsButton = findViewById(R.id.button_words);
//set custom font button words
Typeface wordsFont=Typeface.createFromAsset(getAssets(),
"fonts/Splatch.ttf");
wordsButton.setTypeface(wordsFont);
lettersButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(AlphabetActivity.this,
LettersActivity.class);
startActivity(intent);
}
});
wordsButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(AlphabetActivity.this, WordsActivity.class);
startActivity(intent);
}
});
}
}
Main Activity
The main activity has the android’s oncreate method which is initiated when the application
builds, it is invoked only once. Has buttons for buttons for instructions, play and options
referenced by findViewById method.
package com.example.giorg.readingtutor1;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.giorg.readingtutor1.Utils.PrefUtils;
public class MainActivity extends AppCompatActivity {
// Declare buttons
private Button playButton;
private Button optionsButton;
private Button instructionsButton;
private Typeface menuFont;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
menuFont = Typeface.createFromAsset(getAssets(), "fonts/Splatch.ttf");
playButton = findViewById(R.id.button_play);
optionsButton = findViewById(R.id.button_options);
instructionsButton = findViewById(R.id.button_instructions);
//set custom font
playButton.setTypeface(menuFont);
optionsButton.setTypeface(menuFont);
instructionsButton.setTypeface(menuFont);
playButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this, PlayActivity.class);
startActivity(intent);
}
});
optionsButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this, OptionsActivity.class);
startActivity(intent);
}
});
instructionsButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this,
InstructionsActivity.class);
startActivity(intent);
}
});
}
Sprint 2
Letters Activity
The main function of this activity is to show words of the application by the method
import android.view.View;
import android.widget.Button;
import com.example.giorg.readingtutor1.Utils.PrefUtils;
public class MainActivity extends AppCompatActivity {
// Declare buttons
private Button playButton;
private Button optionsButton;
private Button instructionsButton;
private Typeface menuFont;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
menuFont = Typeface.createFromAsset(getAssets(), "fonts/Splatch.ttf");
playButton = findViewById(R.id.button_play);
optionsButton = findViewById(R.id.button_options);
instructionsButton = findViewById(R.id.button_instructions);
//set custom font
playButton.setTypeface(menuFont);
optionsButton.setTypeface(menuFont);
instructionsButton.setTypeface(menuFont);
playButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this, PlayActivity.class);
startActivity(intent);
}
});
optionsButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this, OptionsActivity.class);
startActivity(intent);
}
});
instructionsButton.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this,
InstructionsActivity.class);
startActivity(intent);
}
});
}
Sprint 2
Letters Activity
The main function of this activity is to show words of the application by the method
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

private void showletter() {
String contentCapital = charactersCapital.charAt(currentCharacterCapitalIndex) + "";
letterCapitalTextView.setText(contentCapital);
String contentSmall = charactersSmall.charAt(currentCharacterSmallIndex) + "";
package com.example.giorg.readingtutor1;
import android.graphics.Typeface;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.Locale;
import com.example.giorg.readingtutor1.Utils.TTS;
public class LettersActivity extends AppCompatActivity {
private TextView letterCapitalTextView;
private TextView letterSmallTextView;
private ImageView nextButton;
private ImageView previousButton;
private final String charactersCapital = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private final String charactersSmall = "abcdefghijklmnopqrstuvwxyz";
private int currentCharacterCapitalIndex = 0;
private int currentCharacterSmallIndex = 0;
private TextToSpeech textToSpeech;
TextView text_letterCapital;
TextView text_letterSmall;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_letters);
nextButton = findViewById(R.id.button_next);
previousButton = findViewById(R.id.button_previous);
letterCapitalTextView = findViewById(R.id.text_letterCapital);
letterSmallTextView = findViewById(R.id.text_letterSmall);
//set custom font
text_letterCapital= (TextView) findViewById(R.id.text_letterCapital);
Typeface capitalFont=Typeface.createFromAsset(getAssets(),
"fonts/Romanica.ttf");
text_letterCapital.setTypeface(capitalFont);
//set custom font
text_letterSmall= (TextView) findViewById(R.id.text_letterSmall);
Typeface smallFont=Typeface.createFromAsset(getAssets(),
"fonts/Romanica.ttf");
text_letterSmall.setTypeface(smallFont);
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentCharacterCapitalIndex++;
currentCharacterSmallIndex++;
String contentCapital = charactersCapital.charAt(currentCharacterCapitalIndex) + "";
letterCapitalTextView.setText(contentCapital);
String contentSmall = charactersSmall.charAt(currentCharacterSmallIndex) + "";
package com.example.giorg.readingtutor1;
import android.graphics.Typeface;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.Locale;
import com.example.giorg.readingtutor1.Utils.TTS;
public class LettersActivity extends AppCompatActivity {
private TextView letterCapitalTextView;
private TextView letterSmallTextView;
private ImageView nextButton;
private ImageView previousButton;
private final String charactersCapital = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private final String charactersSmall = "abcdefghijklmnopqrstuvwxyz";
private int currentCharacterCapitalIndex = 0;
private int currentCharacterSmallIndex = 0;
private TextToSpeech textToSpeech;
TextView text_letterCapital;
TextView text_letterSmall;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_letters);
nextButton = findViewById(R.id.button_next);
previousButton = findViewById(R.id.button_previous);
letterCapitalTextView = findViewById(R.id.text_letterCapital);
letterSmallTextView = findViewById(R.id.text_letterSmall);
//set custom font
text_letterCapital= (TextView) findViewById(R.id.text_letterCapital);
Typeface capitalFont=Typeface.createFromAsset(getAssets(),
"fonts/Romanica.ttf");
text_letterCapital.setTypeface(capitalFont);
//set custom font
text_letterSmall= (TextView) findViewById(R.id.text_letterSmall);
Typeface smallFont=Typeface.createFromAsset(getAssets(),
"fonts/Romanica.ttf");
text_letterSmall.setTypeface(smallFont);
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentCharacterCapitalIndex++;
currentCharacterSmallIndex++;

showletter();
speak();
}
});
previousButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentCharacterCapitalIndex--;
currentCharacterSmallIndex--;
showletter();
speak();
}
});
showletter();
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);
speak();
if (result == TextToSpeech.LANG_MISSING_DATA || result ==
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
// letterCapitalTextView.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
}
private void showletter() {
String contentCapital =
charactersCapital.charAt(currentCharacterCapitalIndex) + "";
letterCapitalTextView.setText(contentCapital);
String contentSmall = charactersSmall.charAt(currentCharacterSmallIndex) +
"";
letterSmallTextView.setText(contentSmall);
if (currentCharacterCapitalIndex == 0) {
previousButton.setVisibility(View.INVISIBLE);
nextButton.setVisibility(View.VISIBLE);
} else if ((currentCharacterCapitalIndex == charactersCapital.length() -
1)) {
nextButton.setVisibility(View.INVISIBLE);
previousButton.setVisibility(View.VISIBLE);
} else {
nextButton.setVisibility(View.VISIBLE);
previousButton.setVisibility((View.VISIBLE));
}
}
private void speak() {
String text = letterCapitalTextView.getText().toString();
System.out.println("textToSpeech-->" + textToSpeech);
System.out.println("SPEAK-->" + text);
TTS.speak(textToSpeech, text);
}
@Override
speak();
}
});
previousButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentCharacterCapitalIndex--;
currentCharacterSmallIndex--;
showletter();
speak();
}
});
showletter();
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);
speak();
if (result == TextToSpeech.LANG_MISSING_DATA || result ==
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
// letterCapitalTextView.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
}
private void showletter() {
String contentCapital =
charactersCapital.charAt(currentCharacterCapitalIndex) + "";
letterCapitalTextView.setText(contentCapital);
String contentSmall = charactersSmall.charAt(currentCharacterSmallIndex) +
"";
letterSmallTextView.setText(contentSmall);
if (currentCharacterCapitalIndex == 0) {
previousButton.setVisibility(View.INVISIBLE);
nextButton.setVisibility(View.VISIBLE);
} else if ((currentCharacterCapitalIndex == charactersCapital.length() -
1)) {
nextButton.setVisibility(View.INVISIBLE);
previousButton.setVisibility(View.VISIBLE);
} else {
nextButton.setVisibility(View.VISIBLE);
previousButton.setVisibility((View.VISIBLE));
}
}
private void speak() {
String text = letterCapitalTextView.getText().toString();
System.out.println("textToSpeech-->" + textToSpeech);
System.out.println("SPEAK-->" + text);
TTS.speak(textToSpeech, text);
}
@Override

protected void onDestroy() {
super.onDestroy();
textToSpeech.stop();
textToSpeech.shutdown();
}
}
Words Activity
package com.example.giorg.readingtutor1;
import android.graphics.drawable.Drawable;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Locale;
import com.example.giorg.readingtutor1.Utils.AssetUtils;
import com.example.giorg.readingtutor1.Utils.ResourceUtils;
public class WordsActivity extends AppCompatActivity {
public static final String FILENAME = "words.txt";
private TextView textViewWord;
private ImageView imageViewA;
private ImageView imageViewB;
private ImageView imageViewC;
private ImageView imageViewD;
private ImageView imageViewE;
private ImageView imageViewF;
private ImageView imageViewG;
private ImageView imageViewH;
private ImageView imageViewI;
private ImageView imageViewJ;
private ImageView imageViewK;
private ImageView imageViewL;
private ImageView imageViewM;
private ImageView imageViewN;
private ImageView imageViewO;
private ImageView imageViewP;
private ImageView imageViewQ;
private ImageView imageViewR;
private ImageView imageViewS;
private ImageView imageViewT;
private ImageView imageViewU;
private ImageView imageViewV;
private ImageView imageViewW;
private ImageView imageViewX;
private ImageView imageViewY;
private ImageView imageViewZ;
private ImageView objectImage;
private ArrayList<String> words;
super.onDestroy();
textToSpeech.stop();
textToSpeech.shutdown();
}
}
Words Activity
package com.example.giorg.readingtutor1;
import android.graphics.drawable.Drawable;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Locale;
import com.example.giorg.readingtutor1.Utils.AssetUtils;
import com.example.giorg.readingtutor1.Utils.ResourceUtils;
public class WordsActivity extends AppCompatActivity {
public static final String FILENAME = "words.txt";
private TextView textViewWord;
private ImageView imageViewA;
private ImageView imageViewB;
private ImageView imageViewC;
private ImageView imageViewD;
private ImageView imageViewE;
private ImageView imageViewF;
private ImageView imageViewG;
private ImageView imageViewH;
private ImageView imageViewI;
private ImageView imageViewJ;
private ImageView imageViewK;
private ImageView imageViewL;
private ImageView imageViewM;
private ImageView imageViewN;
private ImageView imageViewO;
private ImageView imageViewP;
private ImageView imageViewQ;
private ImageView imageViewR;
private ImageView imageViewS;
private ImageView imageViewT;
private ImageView imageViewU;
private ImageView imageViewV;
private ImageView imageViewW;
private ImageView imageViewX;
private ImageView imageViewY;
private ImageView imageViewZ;
private ImageView objectImage;
private ArrayList<String> words;
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

private ArrayList<String> images;
private TextToSpeech textToSpeech;
private TextView wordsInstructionTextview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_words);
words = new ArrayList<>();
images = new ArrayList<>();
wordsInstructionTextview = findViewById(R.id.words_instruction);
textViewWord = findViewById(R.id.textViewWord);
imageViewA = findViewById(R.id.imageViewA);
imageViewB = findViewById(R.id.imageViewB);
imageViewC = findViewById(R.id.imageViewC);
imageViewD = findViewById(R.id.imageViewD);
imageViewE = findViewById(R.id.imageViewE);
imageViewF = findViewById(R.id.imageViewF);
imageViewG = findViewById(R.id.imageViewG);
imageViewH = findViewById(R.id.imageViewH);
imageViewI = findViewById(R.id.imageViewI);
imageViewJ = findViewById(R.id.imageViewJ);
imageViewK = findViewById(R.id.imageViewK);
imageViewL = findViewById(R.id.imageViewL);
imageViewM = findViewById(R.id.imageViewM);
imageViewN = findViewById(R.id.imageViewN);
imageViewO = findViewById(R.id.imageViewO);
imageViewP = findViewById(R.id.imageViewP);
imageViewQ = findViewById(R.id.imageViewQ);
imageViewR = findViewById(R.id.imageViewR);
imageViewS = findViewById(R.id.imageViewS);
imageViewT = findViewById(R.id.imageViewT);
imageViewU = findViewById(R.id.imageViewU);
imageViewV = findViewById(R.id.imageViewV);
imageViewW = findViewById(R.id.imageViewW);
imageViewX = findViewById(R.id.imageViewX);
imageViewY = findViewById(R.id.imageViewY);
imageViewZ = findViewById(R.id.imageViewZ);
objectImage = findViewById(R.id.objectImage);
//If file loading success:
if (loadFile()) {
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener()
{
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);
if (result == TextToSpeech.LANG_MISSING_DATA || result ==
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
imageViewA.setEnabled(true);
imageViewB.setEnabled(true);
imageViewC.setEnabled(true);
imageViewD.setEnabled(true);
imageViewE.setEnabled(true);
imageViewF.setEnabled(true);
imageViewG.setEnabled(true);
imageViewH.setEnabled(true);
imageViewI.setEnabled(true);
imageViewJ.setEnabled(true);
imageViewK.setEnabled(true);
imageViewL.setEnabled(true);
imageViewM.setEnabled(true);
imageViewN.setEnabled(true);
imageViewO.setEnabled(true);
private TextToSpeech textToSpeech;
private TextView wordsInstructionTextview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_words);
words = new ArrayList<>();
images = new ArrayList<>();
wordsInstructionTextview = findViewById(R.id.words_instruction);
textViewWord = findViewById(R.id.textViewWord);
imageViewA = findViewById(R.id.imageViewA);
imageViewB = findViewById(R.id.imageViewB);
imageViewC = findViewById(R.id.imageViewC);
imageViewD = findViewById(R.id.imageViewD);
imageViewE = findViewById(R.id.imageViewE);
imageViewF = findViewById(R.id.imageViewF);
imageViewG = findViewById(R.id.imageViewG);
imageViewH = findViewById(R.id.imageViewH);
imageViewI = findViewById(R.id.imageViewI);
imageViewJ = findViewById(R.id.imageViewJ);
imageViewK = findViewById(R.id.imageViewK);
imageViewL = findViewById(R.id.imageViewL);
imageViewM = findViewById(R.id.imageViewM);
imageViewN = findViewById(R.id.imageViewN);
imageViewO = findViewById(R.id.imageViewO);
imageViewP = findViewById(R.id.imageViewP);
imageViewQ = findViewById(R.id.imageViewQ);
imageViewR = findViewById(R.id.imageViewR);
imageViewS = findViewById(R.id.imageViewS);
imageViewT = findViewById(R.id.imageViewT);
imageViewU = findViewById(R.id.imageViewU);
imageViewV = findViewById(R.id.imageViewV);
imageViewW = findViewById(R.id.imageViewW);
imageViewX = findViewById(R.id.imageViewX);
imageViewY = findViewById(R.id.imageViewY);
imageViewZ = findViewById(R.id.imageViewZ);
objectImage = findViewById(R.id.objectImage);
//If file loading success:
if (loadFile()) {
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener()
{
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);
if (result == TextToSpeech.LANG_MISSING_DATA || result ==
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
imageViewA.setEnabled(true);
imageViewB.setEnabled(true);
imageViewC.setEnabled(true);
imageViewD.setEnabled(true);
imageViewE.setEnabled(true);
imageViewF.setEnabled(true);
imageViewG.setEnabled(true);
imageViewH.setEnabled(true);
imageViewI.setEnabled(true);
imageViewJ.setEnabled(true);
imageViewK.setEnabled(true);
imageViewL.setEnabled(true);
imageViewM.setEnabled(true);
imageViewN.setEnabled(true);
imageViewO.setEnabled(true);

imageViewP.setEnabled(true);
imageViewQ.setEnabled(true);
imageViewR.setEnabled(true);
imageViewS.setEnabled(true);
imageViewT.setEnabled(true);
imageViewU.setEnabled(true);
imageViewV.setEnabled(true);
imageViewW.setEnabled(true);
imageViewX.setEnabled(true);
imageViewY.setEnabled(true);
imageViewZ.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
}
//If failed to load file:
else {
Toast.makeText(this, "Failed to load file '" + FILENAME + "'",
Toast.LENGTH_LONG).show();
finish();
}
//Click listeners for image views:
imageViewA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(0);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewA.startAnimation(animation);
}
});
imageViewB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(1);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewB.startAnimation(animation);
}
});
imageViewC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(2);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewC.startAnimation(animation);
}
});
imageViewD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(3);
imageViewQ.setEnabled(true);
imageViewR.setEnabled(true);
imageViewS.setEnabled(true);
imageViewT.setEnabled(true);
imageViewU.setEnabled(true);
imageViewV.setEnabled(true);
imageViewW.setEnabled(true);
imageViewX.setEnabled(true);
imageViewY.setEnabled(true);
imageViewZ.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
}
//If failed to load file:
else {
Toast.makeText(this, "Failed to load file '" + FILENAME + "'",
Toast.LENGTH_LONG).show();
finish();
}
//Click listeners for image views:
imageViewA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(0);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewA.startAnimation(animation);
}
});
imageViewB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(1);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewB.startAnimation(animation);
}
});
imageViewC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(2);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewC.startAnimation(animation);
}
});
imageViewD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(3);

//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewD.startAnimation(animation);
}
});
imageViewE.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(4);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewE.startAnimation(animation);
}
});
imageViewF.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(5);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewF.startAnimation(animation);
}
});
imageViewG.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(6);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewG.startAnimation(animation);
}
});
imageViewH.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(7);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewH.startAnimation(animation);
}
});
imageViewI.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(8);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewI.startAnimation(animation);
}
});
imageViewJ.setOnClickListener(new View.OnClickListener() {
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewD.startAnimation(animation);
}
});
imageViewE.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(4);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewE.startAnimation(animation);
}
});
imageViewF.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(5);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewF.startAnimation(animation);
}
});
imageViewG.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(6);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewG.startAnimation(animation);
}
});
imageViewH.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(7);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewH.startAnimation(animation);
}
});
imageViewI.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(8);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewI.startAnimation(animation);
}
});
imageViewJ.setOnClickListener(new View.OnClickListener() {
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

@Override
public void onClick(View v) {
makeActionById(9);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewJ.startAnimation(animation);
}
});
imageViewK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(10);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewK.startAnimation(animation);
}
});
imageViewL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(11);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewL.startAnimation(animation);
}
});
imageViewM.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(12);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewM.startAnimation(animation);
}
});
imageViewN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(13);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewN.startAnimation(animation);
}
});
imageViewO.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(14);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewO.startAnimation(animation);
public void onClick(View v) {
makeActionById(9);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewJ.startAnimation(animation);
}
});
imageViewK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(10);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewK.startAnimation(animation);
}
});
imageViewL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(11);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewL.startAnimation(animation);
}
});
imageViewM.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(12);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewM.startAnimation(animation);
}
});
imageViewN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(13);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewN.startAnimation(animation);
}
});
imageViewO.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(14);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewO.startAnimation(animation);

}
});
imageViewP.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(15);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewP.startAnimation(animation);
}
});
imageViewQ.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(16);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewQ.startAnimation(animation);
}
});
imageViewR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(17);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewR.startAnimation(animation);
}
});
imageViewS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(18);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewS.startAnimation(animation);
}
});
imageViewT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(19);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewT.startAnimation(animation);
}
});
imageViewU.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(20);
});
imageViewP.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(15);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewP.startAnimation(animation);
}
});
imageViewQ.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(16);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewQ.startAnimation(animation);
}
});
imageViewR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(17);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewR.startAnimation(animation);
}
});
imageViewS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(18);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewS.startAnimation(animation);
}
});
imageViewT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(19);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewT.startAnimation(animation);
}
});
imageViewU.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(20);

//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewU.startAnimation(animation);
}
});
imageViewV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(21);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewV.startAnimation(animation);
}
});
imageViewW.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(22);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewW.startAnimation(animation);
}
});
imageViewX.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(23);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewX.startAnimation(animation);
}
});
imageViewY.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(24);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewY.startAnimation(animation);
}
});
imageViewZ.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(25);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewZ.startAnimation(animation);
}
});
}
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewU.startAnimation(animation);
}
});
imageViewV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(21);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewV.startAnimation(animation);
}
});
imageViewW.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(22);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewW.startAnimation(animation);
}
});
imageViewX.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(23);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewX.startAnimation(animation);
}
});
imageViewY.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(24);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewY.startAnimation(animation);
}
});
imageViewZ.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeActionById(25);
//create animation
Animation animation=
AnimationUtils.loadAnimation(WordsActivity.this, R.anim.fadein);
imageViewZ.startAnimation(animation);
}
});
}
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

private void makeActionById(int id) {
if (wordsInstructionTextview.getVisibility() != View.INVISIBLE) {
wordsInstructionTextview.setVisibility(View.INVISIBLE);
}
if (id >= 0 && id <= 25) {
textViewWord.setText(words.get(id));
Drawable d = ResourceUtils.getDrawableByName(WordsActivity.this,
images.get(id));
if (d == null) {
Toast.makeText(this, "Failed to fetch image resource '" +
images.get(id) + "'", Toast.LENGTH_LONG).show();
return;
}
else {
objectImage.setImageDrawable(d);
speak(words.get(id));
}
}
}
private boolean loadFile() {
ArrayList<String> lines = AssetUtils.readFileAsArray(FILENAME, this);
for (String l : lines) {
String[] words = l.split(",");
if (words.length == 2) {
this.words.add(words[0]);
images.add(words[1]);
}
else {
System.out.println("File parsing error on line: " + l);
return false;
}
}
if (words.size() == 26 && images.size() == 26) {
return true;
}
return false;
}
private void speak(String text) {
textToSpeech.speak(text, textToSpeech.QUEUE_FLUSH, null);
}
}
The words activity displays the words.
if (wordsInstructionTextview.getVisibility() != View.INVISIBLE) {
wordsInstructionTextview.setVisibility(View.INVISIBLE);
}
if (id >= 0 && id <= 25) {
textViewWord.setText(words.get(id));
Drawable d = ResourceUtils.getDrawableByName(WordsActivity.this,
images.get(id));
if (d == null) {
Toast.makeText(this, "Failed to fetch image resource '" +
images.get(id) + "'", Toast.LENGTH_LONG).show();
return;
}
else {
objectImage.setImageDrawable(d);
speak(words.get(id));
}
}
}
private boolean loadFile() {
ArrayList<String> lines = AssetUtils.readFileAsArray(FILENAME, this);
for (String l : lines) {
String[] words = l.split(",");
if (words.length == 2) {
this.words.add(words[0]);
images.add(words[1]);
}
else {
System.out.println("File parsing error on line: " + l);
return false;
}
}
if (words.size() == 26 && images.size() == 26) {
return true;
}
return false;
}
private void speak(String text) {
textToSpeech.speak(text, textToSpeech.QUEUE_FLUSH, null);
}
}
The words activity displays the words.

Learn Numbers activity
This activity trains by displaying the numbers of the application by the method:
tomato_1");
Drawable objectDrawable2 = ResourceUtils.
getDrawableByName(this, "banana_2");
Drawable objectDrawable3 = ResourceUtils.
getDrawableByName(this, "pig_3");
Drawable objectDrawable4 = ResourceUtils.
getDrawableByName(this, "hat_4");
Drawable objectDrawable5 = ResourceUtils.
getDrawableByName(this, "strawberry_1");
Drawable objectDrawable6 = ResourceUtils.
getDrawableByName(this, "apple_6");
Drawable objectDrawable7 = ResourceUtils.
getDrawableByName(this, "watermelon_7");
Drawable objectDrawable8 = ResourceUtils.
getDrawableByName(this, "hedgehog1");
Drawable objectDrawable9 = ResourceUtils.
getDrawableByName(this, "watch");
This activity trains by displaying the numbers of the application by the method:
tomato_1");
Drawable objectDrawable2 = ResourceUtils.
getDrawableByName(this, "banana_2");
Drawable objectDrawable3 = ResourceUtils.
getDrawableByName(this, "pig_3");
Drawable objectDrawable4 = ResourceUtils.
getDrawableByName(this, "hat_4");
Drawable objectDrawable5 = ResourceUtils.
getDrawableByName(this, "strawberry_1");
Drawable objectDrawable6 = ResourceUtils.
getDrawableByName(this, "apple_6");
Drawable objectDrawable7 = ResourceUtils.
getDrawableByName(this, "watermelon_7");
Drawable objectDrawable8 = ResourceUtils.
getDrawableByName(this, "hedgehog1");
Drawable objectDrawable9 = ResourceUtils.
getDrawableByName(this, "watch");

Drawable objectDrawable10 = ResourceUtils.
getDrawableByName(this, "pencil");
package com.example.giorg.readingtutor1;
import android.graphics.drawable.Drawable;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.Locale;
import com.example.giorg.readingtutor1.Utils.ResourceUtils;
import com.example.giorg.readingtutor1.Utils.TTS;
public class LearnNumbersActivity extends AppCompatActivity {
//declaration
private TextToSpeech textToSpeech;
private ImageView numberImageview;
private ImageView nextButtonImageView;
private ImageView previousButtonImageView;
private ArrayList<ImageView> objectImageviews;
private final int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
private final String[] numbersText = {"One", "Two", "Three", "Four", "Five",
"Six", "Seven", "Eight", "Nine", "Ten"};
private ArrayList<Drawable> numberDrawables;
private ArrayList<Drawable> objectDrawables;
private int index = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_learn_numbers);
numberImageview = findViewById(R.id.currentNumberImageview);
nextButtonImageView = findViewById(R.id.button_next);
previousButtonImageView = findViewById(R.id.button_previous);
ImageView objectImageview1 = findViewById(R.id.imageview1);
ImageView objectImageview2 = findViewById(R.id.imageview2);
ImageView objectImageview3 = findViewById(R.id.imageview3);
ImageView objectImageview4 = findViewById(R.id.imageview4);
ImageView objectImageview5 = findViewById(R.id.imageview5);
ImageView objectImageview6 = findViewById(R.id.imageview6);
ImageView objectImageview7 = findViewById(R.id.imageview7);
ImageView objectImageview8 = findViewById(R.id.imageview8);
ImageView objectImageview9 = findViewById(R.id.imageview9);
ImageView objectImageview10 = findViewById(R.id.imageview10);
objectImageviews = new ArrayList<>();
objectImageviews.add(objectImageview1);
objectImageviews.add(objectImageview2);
objectImageviews.add(objectImageview3);
getDrawableByName(this, "pencil");
package com.example.giorg.readingtutor1;
import android.graphics.drawable.Drawable;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.Locale;
import com.example.giorg.readingtutor1.Utils.ResourceUtils;
import com.example.giorg.readingtutor1.Utils.TTS;
public class LearnNumbersActivity extends AppCompatActivity {
//declaration
private TextToSpeech textToSpeech;
private ImageView numberImageview;
private ImageView nextButtonImageView;
private ImageView previousButtonImageView;
private ArrayList<ImageView> objectImageviews;
private final int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
private final String[] numbersText = {"One", "Two", "Three", "Four", "Five",
"Six", "Seven", "Eight", "Nine", "Ten"};
private ArrayList<Drawable> numberDrawables;
private ArrayList<Drawable> objectDrawables;
private int index = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_learn_numbers);
numberImageview = findViewById(R.id.currentNumberImageview);
nextButtonImageView = findViewById(R.id.button_next);
previousButtonImageView = findViewById(R.id.button_previous);
ImageView objectImageview1 = findViewById(R.id.imageview1);
ImageView objectImageview2 = findViewById(R.id.imageview2);
ImageView objectImageview3 = findViewById(R.id.imageview3);
ImageView objectImageview4 = findViewById(R.id.imageview4);
ImageView objectImageview5 = findViewById(R.id.imageview5);
ImageView objectImageview6 = findViewById(R.id.imageview6);
ImageView objectImageview7 = findViewById(R.id.imageview7);
ImageView objectImageview8 = findViewById(R.id.imageview8);
ImageView objectImageview9 = findViewById(R.id.imageview9);
ImageView objectImageview10 = findViewById(R.id.imageview10);
objectImageviews = new ArrayList<>();
objectImageviews.add(objectImageview1);
objectImageviews.add(objectImageview2);
objectImageviews.add(objectImageview3);
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

objectImageviews.add(objectImageview4);
objectImageviews.add(objectImageview5);
objectImageviews.add(objectImageview6);
objectImageviews.add(objectImageview7);
objectImageviews.add(objectImageview8);
objectImageviews.add(objectImageview9);
objectImageviews.add(objectImageview10);
numberDrawables = new ArrayList<>();
Drawable numberDrawable1 = ResourceUtils.getDrawableByName(this, "one");
Drawable numberDrawable2 = ResourceUtils.getDrawableByName(this, "two");
Drawable numberDrawable3 = ResourceUtils.getDrawableByName(this, "three");
Drawable numberDrawable4 = ResourceUtils.getDrawableByName(this, "four");
Drawable numberDrawable5 = ResourceUtils.getDrawableByName(this, "five");
Drawable numberDrawable6 = ResourceUtils.getDrawableByName(this, "six");
Drawable numberDrawable7 = ResourceUtils.getDrawableByName(this, "seven");
Drawable numberDrawable8 = ResourceUtils.getDrawableByName(this, "eight");
Drawable numberDrawable9 = ResourceUtils.getDrawableByName(this, "nine");
Drawable numberDrawable10 = ResourceUtils.getDrawableByName(this, "ten");
numberDrawables.add(numberDrawable1);
numberDrawables.add(numberDrawable2);
numberDrawables.add(numberDrawable3);
numberDrawables.add(numberDrawable4);
numberDrawables.add(numberDrawable5);
numberDrawables.add(numberDrawable6);
numberDrawables.add(numberDrawable7);
numberDrawables.add(numberDrawable8);
numberDrawables.add(numberDrawable9);
numberDrawables.add(numberDrawable10);
objectDrawables = new ArrayList<>();
Drawable objectDrawable1 = ResourceUtils.getDrawableByName(this,
"tomato_1");
Drawable objectDrawable2 = ResourceUtils.getDrawableByName(this,
"banana_2");
Drawable objectDrawable3 = ResourceUtils.getDrawableByName(this, "pig_3");
Drawable objectDrawable4 = ResourceUtils.getDrawableByName(this, "hat_4");
Drawable objectDrawable5 = ResourceUtils.getDrawableByName(this,
"strawberry_1");
Drawable objectDrawable6 = ResourceUtils.getDrawableByName(this,
"apple_6");
Drawable objectDrawable7 = ResourceUtils.getDrawableByName(this,
"watermelon_7");
Drawable objectDrawable8 = ResourceUtils.getDrawableByName(this,
"hedgehog1");
Drawable objectDrawable9 = ResourceUtils.getDrawableByName(this, "watch");
Drawable objectDrawable10 = ResourceUtils.getDrawableByName(this,
"pencil");
objectDrawables.add(objectDrawable1);
objectDrawables.add(objectDrawable2);
objectDrawables.add(objectDrawable3);
objectDrawables.add(objectDrawable4);
objectDrawables.add(objectDrawable5);
objectDrawables.add(objectDrawable6);
objectDrawables.add(objectDrawable7);
objectDrawables.add(objectDrawable8);
objectDrawables.add(objectDrawable9);
objectDrawables.add(objectDrawable10);
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);
objectImageviews.add(objectImageview5);
objectImageviews.add(objectImageview6);
objectImageviews.add(objectImageview7);
objectImageviews.add(objectImageview8);
objectImageviews.add(objectImageview9);
objectImageviews.add(objectImageview10);
numberDrawables = new ArrayList<>();
Drawable numberDrawable1 = ResourceUtils.getDrawableByName(this, "one");
Drawable numberDrawable2 = ResourceUtils.getDrawableByName(this, "two");
Drawable numberDrawable3 = ResourceUtils.getDrawableByName(this, "three");
Drawable numberDrawable4 = ResourceUtils.getDrawableByName(this, "four");
Drawable numberDrawable5 = ResourceUtils.getDrawableByName(this, "five");
Drawable numberDrawable6 = ResourceUtils.getDrawableByName(this, "six");
Drawable numberDrawable7 = ResourceUtils.getDrawableByName(this, "seven");
Drawable numberDrawable8 = ResourceUtils.getDrawableByName(this, "eight");
Drawable numberDrawable9 = ResourceUtils.getDrawableByName(this, "nine");
Drawable numberDrawable10 = ResourceUtils.getDrawableByName(this, "ten");
numberDrawables.add(numberDrawable1);
numberDrawables.add(numberDrawable2);
numberDrawables.add(numberDrawable3);
numberDrawables.add(numberDrawable4);
numberDrawables.add(numberDrawable5);
numberDrawables.add(numberDrawable6);
numberDrawables.add(numberDrawable7);
numberDrawables.add(numberDrawable8);
numberDrawables.add(numberDrawable9);
numberDrawables.add(numberDrawable10);
objectDrawables = new ArrayList<>();
Drawable objectDrawable1 = ResourceUtils.getDrawableByName(this,
"tomato_1");
Drawable objectDrawable2 = ResourceUtils.getDrawableByName(this,
"banana_2");
Drawable objectDrawable3 = ResourceUtils.getDrawableByName(this, "pig_3");
Drawable objectDrawable4 = ResourceUtils.getDrawableByName(this, "hat_4");
Drawable objectDrawable5 = ResourceUtils.getDrawableByName(this,
"strawberry_1");
Drawable objectDrawable6 = ResourceUtils.getDrawableByName(this,
"apple_6");
Drawable objectDrawable7 = ResourceUtils.getDrawableByName(this,
"watermelon_7");
Drawable objectDrawable8 = ResourceUtils.getDrawableByName(this,
"hedgehog1");
Drawable objectDrawable9 = ResourceUtils.getDrawableByName(this, "watch");
Drawable objectDrawable10 = ResourceUtils.getDrawableByName(this,
"pencil");
objectDrawables.add(objectDrawable1);
objectDrawables.add(objectDrawable2);
objectDrawables.add(objectDrawable3);
objectDrawables.add(objectDrawable4);
objectDrawables.add(objectDrawable5);
objectDrawables.add(objectDrawable6);
objectDrawables.add(objectDrawable7);
objectDrawables.add(objectDrawable8);
objectDrawables.add(objectDrawable9);
objectDrawables.add(objectDrawable10);
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);

if (result == TextToSpeech.LANG_MISSING_DATA || result ==
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
}
else {
TTS.speak(textToSpeech, numbersText[index]);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
numberImageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speakCurrentNumber();
}
});
for (ImageView v : objectImageviews) {
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speakCurrentNumber();
}
});
}
showImages();
nextButtonImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
index++;
checkButtons();
showImages();
TTS.speak(textToSpeech, numbersText[index]);
}
});
previousButtonImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
index--;
checkButtons();
showImages();
TTS.speak(textToSpeech, numbersText[index]);
}
});
}
//Enables and disables buttons
private void checkButtons() {
if (index > 0) {
previousButtonImageView.setVisibility(View.VISIBLE);
}
else {
previousButtonImageView.setVisibility(View.INVISIBLE);
}
if (index < 9) {
nextButtonImageView.setVisibility(View.VISIBLE);
}
else {
nextButtonImageView.setVisibility(View.INVISIBLE);
}
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
}
else {
TTS.speak(textToSpeech, numbersText[index]);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
numberImageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speakCurrentNumber();
}
});
for (ImageView v : objectImageviews) {
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speakCurrentNumber();
}
});
}
showImages();
nextButtonImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
index++;
checkButtons();
showImages();
TTS.speak(textToSpeech, numbersText[index]);
}
});
previousButtonImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
index--;
checkButtons();
showImages();
TTS.speak(textToSpeech, numbersText[index]);
}
});
}
//Enables and disables buttons
private void checkButtons() {
if (index > 0) {
previousButtonImageView.setVisibility(View.VISIBLE);
}
else {
previousButtonImageView.setVisibility(View.INVISIBLE);
}
if (index < 9) {
nextButtonImageView.setVisibility(View.VISIBLE);
}
else {
nextButtonImageView.setVisibility(View.INVISIBLE);
}

}
private void speakCurrentNumber() {
if (index >= 0 && index <= 9) {
TTS.spell(textToSpeech, numbersText[index]);
TTS.speak(textToSpeech, numbersText[index]);
}
}
private void showImages() {
if (index >= 0 && index <= 9) {
numberImageview.setImageDrawable(numberDrawables.get(index));
}
for (int i = 0; i < 10; i++) {
ImageView v = objectImageviews.get(i);
if (i <= index) {
v.setImageDrawable(objectDrawables.get(index));
v.setVisibility(View.VISIBLE);
}
else {
v.setVisibility(View.INVISIBLE);
}
}
}
@Override
protected void onDestroy() {
textToSpeech.shutdown();
super.onDestroy();
}
}
Learn Colours activity
The learn colours activity is a fragment from the colours activity
Learn Animals activity
Also an activity extending the animal activity as the main activity by the use of java’s
inheritance property
Learn shape activity
Implements the shape activity with various image view properties to hold images of the
shapes.
This activity displays the shapes of different entities within the android application, though
not a major activity, it is an essential activity in the working of the program.
private void speakCurrentNumber() {
if (index >= 0 && index <= 9) {
TTS.spell(textToSpeech, numbersText[index]);
TTS.speak(textToSpeech, numbersText[index]);
}
}
private void showImages() {
if (index >= 0 && index <= 9) {
numberImageview.setImageDrawable(numberDrawables.get(index));
}
for (int i = 0; i < 10; i++) {
ImageView v = objectImageviews.get(i);
if (i <= index) {
v.setImageDrawable(objectDrawables.get(index));
v.setVisibility(View.VISIBLE);
}
else {
v.setVisibility(View.INVISIBLE);
}
}
}
@Override
protected void onDestroy() {
textToSpeech.shutdown();
super.onDestroy();
}
}
Learn Colours activity
The learn colours activity is a fragment from the colours activity
Learn Animals activity
Also an activity extending the animal activity as the main activity by the use of java’s
inheritance property
Learn shape activity
Implements the shape activity with various image view properties to hold images of the
shapes.
This activity displays the shapes of different entities within the android application, though
not a major activity, it is an essential activity in the working of the program.
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

Sprint 3
Practice Numbers activity
Practice Animals activity
AnimalsPractice Activity
This kind of activity is referred to as fragment in Android, it is a sub activity of the animal
activity using java inheritance property.
package com.example.giorg.readingtutor1;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.giorg.readingtutor1.Model.Animal;
import com.example.giorg.readingtutor1.Model.PracticeLimitOption;
import com.example.giorg.readingtutor1.Model.PracticeTimeoutOption;
import com.example.giorg.readingtutor1.Utils.CountdownTimer;
import com.example.giorg.readingtutor1.Utils.PrefUtils;
import com.example.giorg.readingtutor1.Utils.TTS;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Locale;
import java.util.Random;
public class AnimalsPracticeActivity extends AppCompatActivity {
//declaration
private TextToSpeech textToSpeech;
private ImageView imageview1;
private ImageView imageview2;
private ImageView imageview3;
private TextView pointsTextview;
private TextView instructionsTextview;
private Button finishButton;
private TextView timerTextview;
private ArrayList<Animal> animals;
Practice Numbers activity
Practice Animals activity
AnimalsPractice Activity
This kind of activity is referred to as fragment in Android, it is a sub activity of the animal
activity using java inheritance property.
package com.example.giorg.readingtutor1;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.giorg.readingtutor1.Model.Animal;
import com.example.giorg.readingtutor1.Model.PracticeLimitOption;
import com.example.giorg.readingtutor1.Model.PracticeTimeoutOption;
import com.example.giorg.readingtutor1.Utils.CountdownTimer;
import com.example.giorg.readingtutor1.Utils.PrefUtils;
import com.example.giorg.readingtutor1.Utils.TTS;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Locale;
import java.util.Random;
public class AnimalsPracticeActivity extends AppCompatActivity {
//declaration
private TextToSpeech textToSpeech;
private ImageView imageview1;
private ImageView imageview2;
private ImageView imageview3;
private TextView pointsTextview;
private TextView instructionsTextview;
private Button finishButton;
private TextView timerTextview;
private ArrayList<Animal> animals;

private int correctAnimalIndex = -1;
private int points = 0;
private int currentGamePoints = 0;
private CountdownTimer timer;
private SharedPreferences statsPreferences;
private SharedPreferences optionPreferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_animals_practice);
// // Add an Up Button to the AppBar
// getSupportActionBar().setTitle("LEVEL 1");
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
imageview1 = (ImageView) findViewById(R.id.imageview1);
imageview2 = (ImageView) findViewById(R.id.imageview2);
imageview3 = (ImageView) findViewById(R.id.imageview3);
pointsTextview = findViewById(R.id.points);
instructionsTextview = findViewById(R.id.textview_instructions);
finishButton = findViewById(R.id.finish);
timerTextview = findViewById(R.id.timer_textview);
statsPreferences = getSharedPreferences(PrefUtils.STATS_FILE,
Context.MODE_PRIVATE);
optionPreferences = getSharedPreferences(PrefUtils.OPTIONS_FILE,
Context.MODE_PRIVATE);
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
String dateKey = dateFormat.format(new Date());
PracticeLimitOption practiceLimitOption =
PracticeLimitOption.valueOf(optionPreferences.getString(PrefUtils.PRACTICE_LIMIT_KE
Y, PracticeLimitOption.TWENTY_MINUTES.toString()));
if (practiceLimitOption != PracticeLimitOption.INFINITE) {
if (statsPreferences.getLong(dateKey, 0) >=
practiceLimitOption.getMsPerDay()) {
Toast.makeText(this, "You have already reached the maximum limit
for today's practice (" + practiceLimitOption.getName() + ").",
Toast.LENGTH_LONG).show();
finish();
}
}
PracticeTimeoutOption timeoutOption =
PracticeTimeoutOption.valueOf(optionPreferences.getString(PrefUtils.PRACTICE_TIMEOU
T_KEY, PracticeTimeoutOption.TIMEOUT_30S.toString()));
timer = new CountdownTimer(timeoutOption.getDelayMS(), timerTextview,
pointsTextview, this);
timerTextview.setText(PracticeTimeoutOption.convertFromMS(timeoutOption.getDelayMS(
)));
finishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);
private int points = 0;
private int currentGamePoints = 0;
private CountdownTimer timer;
private SharedPreferences statsPreferences;
private SharedPreferences optionPreferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_animals_practice);
// // Add an Up Button to the AppBar
// getSupportActionBar().setTitle("LEVEL 1");
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
imageview1 = (ImageView) findViewById(R.id.imageview1);
imageview2 = (ImageView) findViewById(R.id.imageview2);
imageview3 = (ImageView) findViewById(R.id.imageview3);
pointsTextview = findViewById(R.id.points);
instructionsTextview = findViewById(R.id.textview_instructions);
finishButton = findViewById(R.id.finish);
timerTextview = findViewById(R.id.timer_textview);
statsPreferences = getSharedPreferences(PrefUtils.STATS_FILE,
Context.MODE_PRIVATE);
optionPreferences = getSharedPreferences(PrefUtils.OPTIONS_FILE,
Context.MODE_PRIVATE);
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
String dateKey = dateFormat.format(new Date());
PracticeLimitOption practiceLimitOption =
PracticeLimitOption.valueOf(optionPreferences.getString(PrefUtils.PRACTICE_LIMIT_KE
Y, PracticeLimitOption.TWENTY_MINUTES.toString()));
if (practiceLimitOption != PracticeLimitOption.INFINITE) {
if (statsPreferences.getLong(dateKey, 0) >=
practiceLimitOption.getMsPerDay()) {
Toast.makeText(this, "You have already reached the maximum limit
for today's practice (" + practiceLimitOption.getName() + ").",
Toast.LENGTH_LONG).show();
finish();
}
}
PracticeTimeoutOption timeoutOption =
PracticeTimeoutOption.valueOf(optionPreferences.getString(PrefUtils.PRACTICE_TIMEOU
T_KEY, PracticeTimeoutOption.TIMEOUT_30S.toString()));
timer = new CountdownTimer(timeoutOption.getDelayMS(), timerTextview,
pointsTextview, this);
timerTextview.setText(PracticeTimeoutOption.convertFromMS(timeoutOption.getDelayMS(
)));
finishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);

if (result == TextToSpeech.LANG_MISSING_DATA || result ==
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
imageview2.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
imageview1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(0);
}
});
imageview2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(1);
}
});
imageview3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(2);
}
});
}
private void setUpPractice() {
editor = statsPreferences.edit();
points = statsPreferences.getInt(PrefUtils.ANIMAL_PRACTICE_CORRECT, 0);
updatePoints();
ArrayList<Animal> allAnimals = Animal.getAllAnimals(this);
Collections.shuffle(allAnimals);
animals = new ArrayList<>();
animals.add(allAnimals.get(0));
animals.add(allAnimals.get(1));
animals.add(allAnimals.get(2));
Random random = new Random();
correctAnimalIndex = random.nextInt(animals.size());
String instruction = "Touch " + animals.get(correctAnimalIndex).getName();
instructionsTextview.setText(instruction);
imageview1.setImageDrawable(animals.get(0).getDrawable());
imageview2.setImageDrawable(animals.get(1).getDrawable());
imageview3.setImageDrawable(animals.get(2).getDrawable());
}
private void answer(int id) {
if (id == correctAnimalIndex) {
TTS.speak(textToSpeech, "Correct!");
points++;
currentGamePoints++;
editor.putInt(PrefUtils.ANIMAL_PRACTICE_CORRECT, points).commit();
updatePoints();
setUpPractice();
}
else {
TTS.speak(textToSpeech, "Try again!");
int wrong = statsPreferences.getInt(PrefUtils.ANIMAL_PRACTICE_WRONG,
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
imageview2.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
imageview1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(0);
}
});
imageview2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(1);
}
});
imageview3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(2);
}
});
}
private void setUpPractice() {
editor = statsPreferences.edit();
points = statsPreferences.getInt(PrefUtils.ANIMAL_PRACTICE_CORRECT, 0);
updatePoints();
ArrayList<Animal> allAnimals = Animal.getAllAnimals(this);
Collections.shuffle(allAnimals);
animals = new ArrayList<>();
animals.add(allAnimals.get(0));
animals.add(allAnimals.get(1));
animals.add(allAnimals.get(2));
Random random = new Random();
correctAnimalIndex = random.nextInt(animals.size());
String instruction = "Touch " + animals.get(correctAnimalIndex).getName();
instructionsTextview.setText(instruction);
imageview1.setImageDrawable(animals.get(0).getDrawable());
imageview2.setImageDrawable(animals.get(1).getDrawable());
imageview3.setImageDrawable(animals.get(2).getDrawable());
}
private void answer(int id) {
if (id == correctAnimalIndex) {
TTS.speak(textToSpeech, "Correct!");
points++;
currentGamePoints++;
editor.putInt(PrefUtils.ANIMAL_PRACTICE_CORRECT, points).commit();
updatePoints();
setUpPractice();
}
else {
TTS.speak(textToSpeech, "Try again!");
int wrong = statsPreferences.getInt(PrefUtils.ANIMAL_PRACTICE_WRONG,
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

0);
wrong++;
editor.putInt(PrefUtils.ANIMAL_PRACTICE_WRONG, wrong).commit();
}
}
private void updatePoints() {
pointsTextview.setText(String.valueOf(currentGamePoints));
}
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Exit practice?");
builder.setMessage("Are you sure you would like to finish practice?");
builder.setPositiveButton("Finish", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
@Override
protected void onResume() {
if (optionPreferences.getBoolean(PrefUtils.MUSIC_KEY, true)) {
startService(new Intent(this, MusicService.class));
}
setUpPractice();
timer.start();
super.onResume();
}
@Override
protected void onPause() {
if (optionPreferences.getBoolean(PrefUtils.MUSIC_KEY, true)) {
stopService(new Intent(this, MusicService.class));
}
super.onPause();
}
@Override
protected void onStop() {
textToSpeech.shutdown();
timer.cancel();
super.onStop();
}
}
Practice shapes activity
Practice colours activity
wrong++;
editor.putInt(PrefUtils.ANIMAL_PRACTICE_WRONG, wrong).commit();
}
}
private void updatePoints() {
pointsTextview.setText(String.valueOf(currentGamePoints));
}
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Exit practice?");
builder.setMessage("Are you sure you would like to finish practice?");
builder.setPositiveButton("Finish", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
@Override
protected void onResume() {
if (optionPreferences.getBoolean(PrefUtils.MUSIC_KEY, true)) {
startService(new Intent(this, MusicService.class));
}
setUpPractice();
timer.start();
super.onResume();
}
@Override
protected void onPause() {
if (optionPreferences.getBoolean(PrefUtils.MUSIC_KEY, true)) {
stopService(new Intent(this, MusicService.class));
}
super.onPause();
}
@Override
protected void onStop() {
textToSpeech.shutdown();
timer.cancel();
super.onStop();
}
}
Practice shapes activity
Practice colours activity

Also a fragment of the activity colour, it is a sub activity inheriting most of its attributes.
package com.example.giorg.readingtutor1;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.giorg.readingtutor1.Model.RTColor;
import com.example.giorg.readingtutor1.Model.PracticeLimitOption;
import com.example.giorg.readingtutor1.Model.PracticeTimeoutOption;
import com.example.giorg.readingtutor1.Utils.CountdownTimer;
import com.example.giorg.readingtutor1.Utils.PrefUtils;
import com.example.giorg.readingtutor1.Utils.TTS;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Locale;
import java.util.Random;
public class ColoursPracticeActivity extends AppCompatActivity {
//declaration
private TextToSpeech textToSpeech;
private ImageView imageview1;
private ImageView imageview2;
private ImageView imageview3;
private TextView pointsTextview;
private TextView timerTextview;
private TextView instructionsTextview;
private Button finishButton;
private ArrayList<RTColor> colours;
private int correctColoursIndex = -1;
private int points = 0;
private int currentGamePoints = 0;
private CountdownTimer timer;
private SharedPreferences statsPreferences;
private SharedPreferences optionPreferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_colours_practice);
// // Add an Up Button to the AppBar
// getSupportActionBar().setTitle("LEVEL 1");
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
imageview1 = (ImageView) findViewById(R.id.imageview1);
imageview2 = (ImageView) findViewById(R.id.imageview2);
package com.example.giorg.readingtutor1;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.giorg.readingtutor1.Model.RTColor;
import com.example.giorg.readingtutor1.Model.PracticeLimitOption;
import com.example.giorg.readingtutor1.Model.PracticeTimeoutOption;
import com.example.giorg.readingtutor1.Utils.CountdownTimer;
import com.example.giorg.readingtutor1.Utils.PrefUtils;
import com.example.giorg.readingtutor1.Utils.TTS;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Locale;
import java.util.Random;
public class ColoursPracticeActivity extends AppCompatActivity {
//declaration
private TextToSpeech textToSpeech;
private ImageView imageview1;
private ImageView imageview2;
private ImageView imageview3;
private TextView pointsTextview;
private TextView timerTextview;
private TextView instructionsTextview;
private Button finishButton;
private ArrayList<RTColor> colours;
private int correctColoursIndex = -1;
private int points = 0;
private int currentGamePoints = 0;
private CountdownTimer timer;
private SharedPreferences statsPreferences;
private SharedPreferences optionPreferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_colours_practice);
// // Add an Up Button to the AppBar
// getSupportActionBar().setTitle("LEVEL 1");
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
imageview1 = (ImageView) findViewById(R.id.imageview1);
imageview2 = (ImageView) findViewById(R.id.imageview2);

imageview3 = (ImageView) findViewById(R.id.imageview3);
pointsTextview = findViewById(R.id.points);
instructionsTextview = findViewById(R.id.textview_instructions);
finishButton = findViewById(R.id.finish);
timerTextview = findViewById(R.id.timer_textview);
statsPreferences = getSharedPreferences(PrefUtils.STATS_FILE,
Context.MODE_PRIVATE);
optionPreferences = getSharedPreferences(PrefUtils.OPTIONS_FILE,
Context.MODE_PRIVATE);
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
String dateKey = dateFormat.format(new Date());
PracticeLimitOption practiceLimitOption =
PracticeLimitOption.valueOf(optionPreferences.getString(PrefUtils.PRACTICE_LIMIT_KE
Y, PracticeLimitOption.TWENTY_MINUTES.toString()));
if (practiceLimitOption != PracticeLimitOption.INFINITE) {
if (statsPreferences.getLong(dateKey, 0) >=
practiceLimitOption.getMsPerDay()) {
Toast.makeText(this, "You have already reached the maximum limit
for today's practice (" + practiceLimitOption.getName() + ").",
Toast.LENGTH_LONG).show();
finish();
}
}
PracticeTimeoutOption timeoutOption =
PracticeTimeoutOption.valueOf(optionPreferences.getString(PrefUtils.PRACTICE_TIMEOU
T_KEY, PracticeTimeoutOption.TIMEOUT_30S.toString()));
timer = new CountdownTimer(timeoutOption.getDelayMS(), timerTextview,
pointsTextview, this);
timerTextview.setText(PracticeTimeoutOption.convertFromMS(timeoutOption.getDelayMS(
)));
finishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);
if (result == TextToSpeech.LANG_MISSING_DATA || result ==
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
imageview2.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
imageview1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(0);
}
});
pointsTextview = findViewById(R.id.points);
instructionsTextview = findViewById(R.id.textview_instructions);
finishButton = findViewById(R.id.finish);
timerTextview = findViewById(R.id.timer_textview);
statsPreferences = getSharedPreferences(PrefUtils.STATS_FILE,
Context.MODE_PRIVATE);
optionPreferences = getSharedPreferences(PrefUtils.OPTIONS_FILE,
Context.MODE_PRIVATE);
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
String dateKey = dateFormat.format(new Date());
PracticeLimitOption practiceLimitOption =
PracticeLimitOption.valueOf(optionPreferences.getString(PrefUtils.PRACTICE_LIMIT_KE
Y, PracticeLimitOption.TWENTY_MINUTES.toString()));
if (practiceLimitOption != PracticeLimitOption.INFINITE) {
if (statsPreferences.getLong(dateKey, 0) >=
practiceLimitOption.getMsPerDay()) {
Toast.makeText(this, "You have already reached the maximum limit
for today's practice (" + practiceLimitOption.getName() + ").",
Toast.LENGTH_LONG).show();
finish();
}
}
PracticeTimeoutOption timeoutOption =
PracticeTimeoutOption.valueOf(optionPreferences.getString(PrefUtils.PRACTICE_TIMEOU
T_KEY, PracticeTimeoutOption.TIMEOUT_30S.toString()));
timer = new CountdownTimer(timeoutOption.getDelayMS(), timerTextview,
pointsTextview, this);
timerTextview.setText(PracticeTimeoutOption.convertFromMS(timeoutOption.getDelayMS(
)));
finishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.ENGLISH);
if (result == TextToSpeech.LANG_MISSING_DATA || result ==
TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
imageview2.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
imageview1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(0);
}
});
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

imageview2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(1);
}
});
imageview3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(2);
}
});
}
private void setUpPractice() {
editor = statsPreferences.edit();
points = statsPreferences.getInt(PrefUtils.COLOURS_PRACTICE_CORRECT, 0);
updatePoints();
ArrayList<RTColor> allColours = RTColor.getAllColours(this);
Collections.shuffle(allColours);
colours = new ArrayList<>();
colours.add(allColours.get(0));
colours.add(allColours.get(1));
colours.add(allColours.get(2));
Random random = new Random();
correctColoursIndex = random.nextInt(colours.size());
String instruction = "Tap the " +
colours.get(correctColoursIndex).getName();
instructionsTextview.setText(instruction);
imageview1.setImageDrawable(colours.get(0).getDrawable());
imageview2.setImageDrawable(colours.get(1).getDrawable());
imageview3.setImageDrawable(colours.get(2).getDrawable());
}
private void answer(int id) {
if (id == correctColoursIndex) {
TTS.speak(textToSpeech, "Correct!");
points++;
currentGamePoints++;
editor.putInt(PrefUtils.COLOURS_PRACTICE_CORRECT, points).commit();
updatePoints();
setUpPractice();
}
else {
TTS.speak(textToSpeech, "Try again!");
int wrong = statsPreferences.getInt(PrefUtils.COLOURS_PRACTICE_WRONG,
0);
wrong++;
editor.putInt(PrefUtils.COLOURS_PRACTICE_WRONG, wrong).commit();
}
}
private void updatePoints() {
pointsTextview.setText(String.valueOf(currentGamePoints));
}
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Exit practice?");
builder.setMessage("Are you sure you would like to finish practice?");
builder.setPositiveButton("Finish", new DialogInterface.OnClickListener() {
@Override
@Override
public void onClick(View v) {
answer(1);
}
});
imageview3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer(2);
}
});
}
private void setUpPractice() {
editor = statsPreferences.edit();
points = statsPreferences.getInt(PrefUtils.COLOURS_PRACTICE_CORRECT, 0);
updatePoints();
ArrayList<RTColor> allColours = RTColor.getAllColours(this);
Collections.shuffle(allColours);
colours = new ArrayList<>();
colours.add(allColours.get(0));
colours.add(allColours.get(1));
colours.add(allColours.get(2));
Random random = new Random();
correctColoursIndex = random.nextInt(colours.size());
String instruction = "Tap the " +
colours.get(correctColoursIndex).getName();
instructionsTextview.setText(instruction);
imageview1.setImageDrawable(colours.get(0).getDrawable());
imageview2.setImageDrawable(colours.get(1).getDrawable());
imageview3.setImageDrawable(colours.get(2).getDrawable());
}
private void answer(int id) {
if (id == correctColoursIndex) {
TTS.speak(textToSpeech, "Correct!");
points++;
currentGamePoints++;
editor.putInt(PrefUtils.COLOURS_PRACTICE_CORRECT, points).commit();
updatePoints();
setUpPractice();
}
else {
TTS.speak(textToSpeech, "Try again!");
int wrong = statsPreferences.getInt(PrefUtils.COLOURS_PRACTICE_WRONG,
0);
wrong++;
editor.putInt(PrefUtils.COLOURS_PRACTICE_WRONG, wrong).commit();
}
}
private void updatePoints() {
pointsTextview.setText(String.valueOf(currentGamePoints));
}
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Exit practice?");
builder.setMessage("Are you sure you would like to finish practice?");
builder.setPositiveButton("Finish", new DialogInterface.OnClickListener() {
@Override

public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
@Override
protected void onDestroy() {
textToSpeech.shutdown();
super.onDestroy();
}
@Override
protected void onResume() {
if (optionPreferences.getBoolean(PrefUtils.MUSIC_KEY, true)) {
startService(new Intent(this, MusicService.class));
}
setUpPractice();
timer.start();
super.onResume();
}
@Override
protected void onPause() {
if (optionPreferences.getBoolean(PrefUtils.MUSIC_KEY, true)) {
stopService(new Intent(this, MusicService.class));
}
super.onPause();
}
@Override
protected void onStop() {
textToSpeech.shutdown();
timer.cancel();
super.onStop();
}
}
Options activity
This activity displays different options available in the application, it implements android’s
package com.example.giorg.readingtutor1;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
finish();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
@Override
protected void onDestroy() {
textToSpeech.shutdown();
super.onDestroy();
}
@Override
protected void onResume() {
if (optionPreferences.getBoolean(PrefUtils.MUSIC_KEY, true)) {
startService(new Intent(this, MusicService.class));
}
setUpPractice();
timer.start();
super.onResume();
}
@Override
protected void onPause() {
if (optionPreferences.getBoolean(PrefUtils.MUSIC_KEY, true)) {
stopService(new Intent(this, MusicService.class));
}
super.onPause();
}
@Override
protected void onStop() {
textToSpeech.shutdown();
timer.cancel();
super.onStop();
}
}
Options activity
This activity displays different options available in the application, it implements android’s
package com.example.giorg.readingtutor1;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
import com.example.giorg.readingtutor1.Model.PracticeLimitOption;
import com.example.giorg.readingtutor1.Model.PracticeTimeoutOption;
import com.example.giorg.readingtutor1.Utils.PrefUtils;
import java.util.ArrayList;
import java.util.prefs.Preferences;
public class OptionsActivity extends AppCompatActivity {
private Switch musicSwitch;
private Spinner timeoutSpinner;
private Spinner practiceLimitSpinner;
private SharedPreferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_options);
musicSwitch = findViewById(R.id.settings_musicSwitch);
timeoutSpinner = findViewById(R.id.settings_practiceTimeoutSpinner);
practiceLimitSpinner = findViewById(R.id.settings_practiceLimitSpinner);
preferences = getSharedPreferences(PrefUtils.OPTIONS_FILE,
Context.MODE_PRIVATE);
musicSwitch.setChecked(preferences.getBoolean(PrefUtils.MUSIC_KEY, true));
musicSwitch.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
preferences.edit().putBoolean(PrefUtils.MUSIC_KEY,
musicSwitch.isChecked()).apply();
}
});
ArrayList<String> timeoutOptionNames = new ArrayList<>();
for (PracticeTimeoutOption o : PracticeTimeoutOption.values()) {
timeoutOptionNames.add(o.getName());
}
ArrayAdapter<String> timeoutAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, timeoutOptionNames);
timeoutSpinner.setAdapter(timeoutAdapter);
ArrayList<String> practiceLimitOptionNames = new ArrayList<>();
for (PracticeLimitOption o : PracticeLimitOption.values()) {
practiceLimitOptionNames.add(o.getName());
}
ArrayAdapter<String> limitAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, practiceLimitOptionNames);
practiceLimitSpinner.setAdapter(limitAdapter);
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
import com.example.giorg.readingtutor1.Model.PracticeLimitOption;
import com.example.giorg.readingtutor1.Model.PracticeTimeoutOption;
import com.example.giorg.readingtutor1.Utils.PrefUtils;
import java.util.ArrayList;
import java.util.prefs.Preferences;
public class OptionsActivity extends AppCompatActivity {
private Switch musicSwitch;
private Spinner timeoutSpinner;
private Spinner practiceLimitSpinner;
private SharedPreferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_options);
musicSwitch = findViewById(R.id.settings_musicSwitch);
timeoutSpinner = findViewById(R.id.settings_practiceTimeoutSpinner);
practiceLimitSpinner = findViewById(R.id.settings_practiceLimitSpinner);
preferences = getSharedPreferences(PrefUtils.OPTIONS_FILE,
Context.MODE_PRIVATE);
musicSwitch.setChecked(preferences.getBoolean(PrefUtils.MUSIC_KEY, true));
musicSwitch.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
preferences.edit().putBoolean(PrefUtils.MUSIC_KEY,
musicSwitch.isChecked()).apply();
}
});
ArrayList<String> timeoutOptionNames = new ArrayList<>();
for (PracticeTimeoutOption o : PracticeTimeoutOption.values()) {
timeoutOptionNames.add(o.getName());
}
ArrayAdapter<String> timeoutAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, timeoutOptionNames);
timeoutSpinner.setAdapter(timeoutAdapter);
ArrayList<String> practiceLimitOptionNames = new ArrayList<>();
for (PracticeLimitOption o : PracticeLimitOption.values()) {
practiceLimitOptionNames.add(o.getName());
}
ArrayAdapter<String> limitAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, practiceLimitOptionNames);
practiceLimitSpinner.setAdapter(limitAdapter);
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

timeoutSpinner.setSelection(PracticeTimeoutOption.getID(preferences.getString(PrefU
tils.PRACTICE_TIMEOUT_KEY, PracticeTimeoutOption.TIMEOUT_1M.toString())));
timeoutSpinner.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int
position, long id) {
preferences.edit().putString(PrefUtils.PRACTICE_TIMEOUT_KEY,
PracticeTimeoutOption.values()[position].toString()).apply();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
practiceLimitSpinner.setSelection(PracticeLimitOption.getID(preferences.getString(P
refUtils.PRACTICE_LIMIT_KEY, PracticeLimitOption.TWENTY_MINUTES.toString())));
practiceLimitSpinner.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int
position, long id) {
preferences.edit().putString(PrefUtils.PRACTICE_LIMIT_KEY,
PracticeLimitOption.values()[position].toString()).apply();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
<item android:id="@+id/new_game"
android:icon="@drawable/menu_addnew"
android:title="Νέο"
android:showAsAction="ifRoom"/>
<item android:id="@+id/help"
android:icon="@drawable/menu_addnew"
android:title="Βοήθεια" />
Instructions activity
This activity is invoked from the main activity of the regulator giving guidance to the
system’s users
tils.PRACTICE_TIMEOUT_KEY, PracticeTimeoutOption.TIMEOUT_1M.toString())));
timeoutSpinner.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int
position, long id) {
preferences.edit().putString(PrefUtils.PRACTICE_TIMEOUT_KEY,
PracticeTimeoutOption.values()[position].toString()).apply();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
practiceLimitSpinner.setSelection(PracticeLimitOption.getID(preferences.getString(P
refUtils.PRACTICE_LIMIT_KEY, PracticeLimitOption.TWENTY_MINUTES.toString())));
practiceLimitSpinner.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int
position, long id) {
preferences.edit().putString(PrefUtils.PRACTICE_LIMIT_KEY,
PracticeLimitOption.values()[position].toString()).apply();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
<item android:id="@+id/new_game"
android:icon="@drawable/menu_addnew"
android:title="Νέο"
android:showAsAction="ifRoom"/>
<item android:id="@+id/help"
android:icon="@drawable/menu_addnew"
android:title="Βοήθεια" />
Instructions activity
This activity is invoked from the main activity of the regulator giving guidance to the
system’s users

package com.example.giorg.readingtutor1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class InstructionsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_instructions);
}
}
Profile activity
AnimalsPracticeActivity.class);
startActivity(intent);
}
});
}
}
Learn Numbers activity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class InstructionsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_instructions);
}
}
Profile activity
AnimalsPracticeActivity.class);
startActivity(intent);
}
});
}
}
Learn Numbers activity

This class calls return animal method in which all the properties for animals are displayed
whenever it is invoked. It also inherits the properties of ApCombatActivity from elsewhere in
the package of the project.
whenever it is invoked. It also inherits the properties of ApCombatActivity from elsewhere in
the package of the project.
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

References
Ammann, P. and Offutt, J., 2016. Introduction to software testing. Cambridge University Press.
Barr, E.T., Harman, M., McMinn, P., Shahbaz, M. and Yoo, S., 2015. The oracle problem in software
testing: A survey. IEEE transactions on software engineering, 41(5), pp.507-525.
Garousi, V. and Mäntylä, M.V., 2016. When and what to automate in software testing? A multi-vocal
literature review. Information and Software Technology, 76, pp.92-117.
Beyer, D., 2019, April. International competition on software testing (Test-Comp). In International
Conference on Tools and Algorithms for the Construction and Analysis of Systems (pp. 167-175).
Springer, Cham.
Amalfitano, D., Fasolino, A.R., Tramontana, P., Ta, B.D. and Memon, A.M., 2015. MobiGUITAR:
Automated model-based testing of mobile apps. IEEE software, 32(5), pp.53-59.
Rapp, R., Gaillard, J.F., Aubert, C., Meola, J.P. and Olena, K., SAP SE, 2015. Software systems
testing interface. U.S. Patent 8,949,673.
Takanen, A., Demott, J.D., Miller, C. and Kettunen, A., 2018. Fuzzing for software security testing and
quality assurance. Artech House.
Arguelles, C.A. and Griffin, D.R., Amazon Technologies Inc, 2017. Distributed software testing. U.S.
Patent 9,811,451.
Deak, A., Stålhane, T. and Sindre, G., 2016. Challenges and strategies for motivating software testing
personnel. Information and software Technology, 73, pp.1-15.
Clegg, B.S., Rojas, J.M. and Fraser, G., 2017, May. Teaching software testing concepts using a
mutation testing game. In 2017 IEEE/ACM 39th International Conference on Software Engineering:
Software Engineering Education and Training Track (ICSE-SEET) (pp. 33-36). IEEE.
Ammann, P. and Offutt, J., 2016. Introduction to software testing. Cambridge University Press.
Barr, E.T., Harman, M., McMinn, P., Shahbaz, M. and Yoo, S., 2015. The oracle problem in software
testing: A survey. IEEE transactions on software engineering, 41(5), pp.507-525.
Garousi, V. and Mäntylä, M.V., 2016. When and what to automate in software testing? A multi-vocal
literature review. Information and Software Technology, 76, pp.92-117.
Beyer, D., 2019, April. International competition on software testing (Test-Comp). In International
Conference on Tools and Algorithms for the Construction and Analysis of Systems (pp. 167-175).
Springer, Cham.
Amalfitano, D., Fasolino, A.R., Tramontana, P., Ta, B.D. and Memon, A.M., 2015. MobiGUITAR:
Automated model-based testing of mobile apps. IEEE software, 32(5), pp.53-59.
Rapp, R., Gaillard, J.F., Aubert, C., Meola, J.P. and Olena, K., SAP SE, 2015. Software systems
testing interface. U.S. Patent 8,949,673.
Takanen, A., Demott, J.D., Miller, C. and Kettunen, A., 2018. Fuzzing for software security testing and
quality assurance. Artech House.
Arguelles, C.A. and Griffin, D.R., Amazon Technologies Inc, 2017. Distributed software testing. U.S.
Patent 9,811,451.
Deak, A., Stålhane, T. and Sindre, G., 2016. Challenges and strategies for motivating software testing
personnel. Information and software Technology, 73, pp.1-15.
Clegg, B.S., Rojas, J.M. and Fraser, G., 2017, May. Teaching software testing concepts using a
mutation testing game. In 2017 IEEE/ACM 39th International Conference on Software Engineering:
Software Engineering Education and Training Track (ICSE-SEET) (pp. 33-36). IEEE.

Henard, C., Papadakis, M., Harman, M., Jia, Y. and Le Traon, Y., 2016, May. Comparing white-box
and black-box test prioritization. In 2016 IEEE/ACM 38th International Conference on Software
Engineering (ICSE) (pp. 523-534). IEEE.
Zhauniarovich, Y., Philippov, A., Gadyatskaya, O., Crispo, B. and Massacci, F., 2015, August.
Towards black box testing of android apps. In 2015 10th International Conference on Availability,
Reliability and Security (pp. 501-510). IEEE.
Mustaqbal, M.S., Firdaus, R.F. and Rahmadi, H., 2016. Pengujian Aplikasi Menggunakan Black Box
Testing Boundary Value Analysis (Studi Kasus: Aplikasi Prediksi Kelulusan SMNPTN). Jurnal Ilmiah
Teknologi Informasi Terapan, 1(3).
Fink, S., Haviv, Y.A., Hay, R., Pistoia, M., Segal, O., Sharabani, A., Sridharan, M., Tip, F., Tripp, O.
and Weisman, O., International Business Machines Corp, 2017. Simulating black box test results
using information from white box testing. U.S. Patent 9,720,798.
Jacob, P.M. and Prasanna, M., 2016, August. A Comparative analysis on Black box testing strategies.
In 2016 International Conference on Information Science (ICIS) (pp. 1-6). IEEE.
Pei, K., Cao, Y., Yang, J. and Jana, S., 2017, October. Deepxplore: Automated whitebox testing of
deep learning systems. In proceedings of the 26th Symposium on Operating Systems Principles (pp.
1-18). ACM.
Henard, C., Papadakis, M., Harman, M., Jia, Y. and Le Traon, Y., 2016, May. Comparing white-box
and black-box test prioritization. In 2016 IEEE/ACM 38th International Conference on Software
Engineering (ICSE) (pp. 523-534). IEEE.
Huang, D.L., Wu, Z., Yu, L., Zhang, X. and Zhou, Y.J., International Business Machines Corp,
2018. White box testing. U.S. Patent Application 15/275,739.
and black-box test prioritization. In 2016 IEEE/ACM 38th International Conference on Software
Engineering (ICSE) (pp. 523-534). IEEE.
Zhauniarovich, Y., Philippov, A., Gadyatskaya, O., Crispo, B. and Massacci, F., 2015, August.
Towards black box testing of android apps. In 2015 10th International Conference on Availability,
Reliability and Security (pp. 501-510). IEEE.
Mustaqbal, M.S., Firdaus, R.F. and Rahmadi, H., 2016. Pengujian Aplikasi Menggunakan Black Box
Testing Boundary Value Analysis (Studi Kasus: Aplikasi Prediksi Kelulusan SMNPTN). Jurnal Ilmiah
Teknologi Informasi Terapan, 1(3).
Fink, S., Haviv, Y.A., Hay, R., Pistoia, M., Segal, O., Sharabani, A., Sridharan, M., Tip, F., Tripp, O.
and Weisman, O., International Business Machines Corp, 2017. Simulating black box test results
using information from white box testing. U.S. Patent 9,720,798.
Jacob, P.M. and Prasanna, M., 2016, August. A Comparative analysis on Black box testing strategies.
In 2016 International Conference on Information Science (ICIS) (pp. 1-6). IEEE.
Pei, K., Cao, Y., Yang, J. and Jana, S., 2017, October. Deepxplore: Automated whitebox testing of
deep learning systems. In proceedings of the 26th Symposium on Operating Systems Principles (pp.
1-18). ACM.
Henard, C., Papadakis, M., Harman, M., Jia, Y. and Le Traon, Y., 2016, May. Comparing white-box
and black-box test prioritization. In 2016 IEEE/ACM 38th International Conference on Software
Engineering (ICSE) (pp. 523-534). IEEE.
Huang, D.L., Wu, Z., Yu, L., Zhang, X. and Zhou, Y.J., International Business Machines Corp,
2018. White box testing. U.S. Patent Application 15/275,739.

Fink, S., Haviv, Y.A., Hay, R., Pistoia, M., Segal, O., Sharabani, A., Sridharan, M., Tip, F., Tripp, O.
and Weisman, O., International Business Machines Corp, 2017. Simulating black box test results
using information from white box testing. U.S. Patent 9,747,187.
Blackthorne, J., Bulazel, A., Fasano, A., Biernat, P. and Yener, B., 2016. AVLeak: fingerprinting
antivirus emulators through black-box testing. In 10th {USENIX} Workshop on Offensive Technologies
({WOOT} 16).
Khatri, S.K., Kaur, K. and Datta, R., 2019. Applying Statistical Usage Testing Along with White Box
Testing Techniques. In Software Engineering (pp. 457-475). Springer, Singapore.
Zhauniarovich, Y., Philippov, A., Gadyatskaya, O., Crispo, B. and Massacci, F., 2015, August.
Towards black box testing of android apps. In 2015 10th International Conference on Availability,
Reliability and Security (pp. 501-510). IEEE.
Mao, K., Harman, M. and Jia, Y., 2016, July. Sapienz: Multi-objective automated testing for Android
applications. In Proceedings of the 25th International Symposium on Software Testing and
Analysis (pp. 94-105). ACM.
Jacob, P.M. and Prasanna, M., 2016, August. A Comparative analysis on Black box testing strategies.
In 2016 International Conference on Information Science (ICIS) (pp. 1-6). IEEE.
Zeng, H., Mahajan, R., McKeown, N., Varghese, G., Yuan, L. and Zhang, M., 2015. Measuring and
troubleshooting large operational multipath networks with gray box testing. Mountain Safety Res.,
Seattle, WA, USA, Rep. MSR-TR-2015-55.
Sung, K.Y., 2016. Simplified Way of Learning White-Box Testing with JUnit. In Advanced Multimedia
and Ubiquitous Engineering (pp. 783-789). Springer, Singapore.
Farzan, A., Holzer, A. and Veith, H., 2015, April. Perspectives on White-Box Testing: Coverage,
Concurrency, and Concolic Execution. In 2015 IEEE 8th International Conference on Software
Testing, Verification and Validation (ICST) (pp. 1-11). IEEE.
and Weisman, O., International Business Machines Corp, 2017. Simulating black box test results
using information from white box testing. U.S. Patent 9,747,187.
Blackthorne, J., Bulazel, A., Fasano, A., Biernat, P. and Yener, B., 2016. AVLeak: fingerprinting
antivirus emulators through black-box testing. In 10th {USENIX} Workshop on Offensive Technologies
({WOOT} 16).
Khatri, S.K., Kaur, K. and Datta, R., 2019. Applying Statistical Usage Testing Along with White Box
Testing Techniques. In Software Engineering (pp. 457-475). Springer, Singapore.
Zhauniarovich, Y., Philippov, A., Gadyatskaya, O., Crispo, B. and Massacci, F., 2015, August.
Towards black box testing of android apps. In 2015 10th International Conference on Availability,
Reliability and Security (pp. 501-510). IEEE.
Mao, K., Harman, M. and Jia, Y., 2016, July. Sapienz: Multi-objective automated testing for Android
applications. In Proceedings of the 25th International Symposium on Software Testing and
Analysis (pp. 94-105). ACM.
Jacob, P.M. and Prasanna, M., 2016, August. A Comparative analysis on Black box testing strategies.
In 2016 International Conference on Information Science (ICIS) (pp. 1-6). IEEE.
Zeng, H., Mahajan, R., McKeown, N., Varghese, G., Yuan, L. and Zhang, M., 2015. Measuring and
troubleshooting large operational multipath networks with gray box testing. Mountain Safety Res.,
Seattle, WA, USA, Rep. MSR-TR-2015-55.
Sung, K.Y., 2016. Simplified Way of Learning White-Box Testing with JUnit. In Advanced Multimedia
and Ubiquitous Engineering (pp. 783-789). Springer, Singapore.
Farzan, A., Holzer, A. and Veith, H., 2015, April. Perspectives on White-Box Testing: Coverage,
Concurrency, and Concolic Execution. In 2015 IEEE 8th International Conference on Software
Testing, Verification and Validation (ICST) (pp. 1-11). IEEE.
Secure Best Marks with AI Grader
Need help grading? Try our AI Grader for instant feedback on your assignments.

Kumar, A.N. and Geetha, B.G., 2016. WHITE BOX TESTING TECHNIQUE FOR SOA
APPLICATION. Int J Adv Engg Tech/Vol. VII/Issue I/Jan.-March, 707, p.709.
Felderer, M., Büchler, M., Johns, M., Brucker, A.D., Breu, R. and Pretschner, A., 2016. Security
testing: A survey. In Advances in Computers (Vol. 101, pp. 1-51). Elsevier.
Howar, F., Jonsson, B. and Vaandrager, F., 2017. Combining black-box and white-box techniques for
learning register automata. Computing and Software Science. LNCS, 10000.
Iannillo, A.K., Natella, R., Cotroneo, D. and Nita-Rotaru, C., 2017, October. Chizpurfle: A gray-box
android fuzzer for vendor service customizations. In 2017 IEEE 28th International Symposium on
Software Reliability Engineering (ISSRE) (pp. 1-11). IEEE.
Rogstad, E. and Briand, L.C., 2016. Clustering deviations for black box regression testing of database
applications. IEEE Transactions on Reliability, 65(1), pp.4-18.
Hu, L., Wong, W.E., Kuhn, D.R. and Kacker, R., 2018, September. MCDC-Star: A White-Box Based
Automated Test Generation for High MC/DC Coverage. In 2018 5th International Conference on
Dependable Systems and Their Applications (DSA) (pp. 102-112). IEEE.
Jurj, S.L., Rotar, R., Opritoiu, F. and Vladutiu, M., 2018, October. White-Box Testing Strategy for a
Solar Tracking Device using NodeMCU Lua ESP8266 Wi-Fi Network Development Board Module.
In 2018 IEEE 24th International Symposium for Design and Technology in Electronic Packaging
(SIITME) (pp. 53-60). IEEE.
APPLICATION. Int J Adv Engg Tech/Vol. VII/Issue I/Jan.-March, 707, p.709.
Felderer, M., Büchler, M., Johns, M., Brucker, A.D., Breu, R. and Pretschner, A., 2016. Security
testing: A survey. In Advances in Computers (Vol. 101, pp. 1-51). Elsevier.
Howar, F., Jonsson, B. and Vaandrager, F., 2017. Combining black-box and white-box techniques for
learning register automata. Computing and Software Science. LNCS, 10000.
Iannillo, A.K., Natella, R., Cotroneo, D. and Nita-Rotaru, C., 2017, October. Chizpurfle: A gray-box
android fuzzer for vendor service customizations. In 2017 IEEE 28th International Symposium on
Software Reliability Engineering (ISSRE) (pp. 1-11). IEEE.
Rogstad, E. and Briand, L.C., 2016. Clustering deviations for black box regression testing of database
applications. IEEE Transactions on Reliability, 65(1), pp.4-18.
Hu, L., Wong, W.E., Kuhn, D.R. and Kacker, R., 2018, September. MCDC-Star: A White-Box Based
Automated Test Generation for High MC/DC Coverage. In 2018 5th International Conference on
Dependable Systems and Their Applications (DSA) (pp. 102-112). IEEE.
Jurj, S.L., Rotar, R., Opritoiu, F. and Vladutiu, M., 2018, October. White-Box Testing Strategy for a
Solar Tracking Device using NodeMCU Lua ESP8266 Wi-Fi Network Development Board Module.
In 2018 IEEE 24th International Symposium for Design and Technology in Electronic Packaging
(SIITME) (pp. 53-60). IEEE.
1 out of 47
Related Documents

Your All-in-One AI-Powered Toolkit for Academic Success.
+13062052269
info@desklib.com
Available 24*7 on WhatsApp / Email
Unlock your academic potential
© 2024 | Zucol Services PVT LTD | All rights reserved.