Perancangan Aplikasi Tes Toefl Berbasis Android

L
A
M
P
I
R
A
N

Universitas Sumatera Utara

Universitas Sumatera Utara

Universitas Sumatera Utara

LAMPIRAN

Listing Program
ToeflSchoolActivity.java
package com.nurul.toeflschool;


import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

Universitas Sumatera Utara

import com.nurul.toeflschool.database.DatabaseHelper;

import com.nurul.toeflschool.database.DatabaseHelper1;

public class ToeflSchoolActivity extends Activity {

Button playButton, rulesButton, exitButton,aboutButton;
//private DatabaseHelper1 mDBHelper;
private DatabaseHelper dbHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_toefl_school);

playButton = (Button) findViewById(R.id.btnPlay);
rulesButton = (Button) findViewById(R.id.btnRules);
exitButton = (Button) findViewById(R.id.btnExit);
aboutButton = (Button) findViewById(R.id.btnAbout);

playButton.setOnClickListener(new View.OnClickListener() {
@Override

public void onClick(View v) {
Intent

i

=

new

Intent(ToeflSchoolActivity.this,

MainMenuActivity.class);
startActivity(i);

Universitas Sumatera Utara

}
});

rulesButton.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {
Intent rules = new Intent(ToeflSchoolActivity.this,
RulesActivity.class);
startActivity(rules);

}
});
exitButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {

close();

}
});
aboutButton.setOnClickListener(new View.OnClickListener() {


@Override

Universitas Sumatera Utara

public void onClick(View v) {
Intent

i

=

new

Intent(ToeflSchoolActivity.this,AboutActivity.class);
startActivity(i);
}
});

dbHelper = new DatabaseHelper(this);
//dbHelper.getReadableDatabase();

//

mDBHelper = new DatabaseHelper(this);
prepareDatabase();
}

public void close() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Do you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public

void

onClick(DialogInterface dialog, int id) {

ToeflSchoolActivity.this.finish();
}

})

Universitas Sumatera Utara

.setNegativeButton("No",

new

DialogInterface.OnClickListener() {
public

void

onClick(DialogInterface

dialog,

int id) {
dialog.cancel();


}
}).show();
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
close();

}
return super.onKeyDown(keyCode, event);
}

private void prepareDatabase(){
//Check exists database
File

database

=


getApplicationContext().getDatabasePath(DatabaseHelper.DB_NAME);
if(!database.exists()) {
//mDBHelper.getReadableDatabase();
dbHelper.getReadableDatabase();
//Copy db

Universitas Sumatera Utara

if(copyDatabase(this)) {
//Toast.makeText(this,

"Copy

database

success",

data

error",


Toast.LENGTH_SHORT).show();
} else {
//Toast.makeText(this,

"Copy

Toast.LENGTH_SHORT).show();
return;
}
}
}

private boolean copyDatabase(Context context) {
try {
InputStream

inputStream

=


context.getAssets().open(DatabaseHelper.DB_NAME);
String

outFileName

=

DatabaseHelper.DB_PATH

+

DatabaseHelper.DB_NAME;
OutputStream

outputStream

=

new

FileOutputStream(outFileName);
byte[]buff = new byte[1024];
int length = 0;
while ((length = inputStream.read(buff)) > 0) {
outputStream.write(buff, 0, length);
}
outputStream.flush();
outputStream.close();
Log.w("MainActivity","DB copied");

Universitas Sumatera Utara

return true;
}catch (Exception e) {
e.printStackTrace();
return false;
}
}
}

ExamActivity.java
package com.nurul.toeflschool;

import java.util.concurrent.TimeUnit;

import android.app.Activity;
import android.content.Intent;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.nurul.toeflschool.database.DatabaseHelper;
import com.nurul.toeflschool.entity.Exam;
import com.nurul.toeflschool.entity.Question;
import com.nurul.toeflschool.util.ActionButtonDialog;
import com.nurul.toeflschool.util.MessageHelper;

Universitas Sumatera Utara

public abstract class ExamActivity extends Activity {
public static final int TIME_MAX_LISTINING = 35; //menit
public static final int TIME_MAX_READING = 55; //menit
public static final int TIME_MAX_GRAMMAR = 25; //menit

private Button nextButton, backButton, submitSubmit;
private TextView paggingTextView, option1TextView,
option2TextView,
option3TextView, option4TextView;

protected Exam currentExam;
protected int currentExamLimitTimer;
protected int currentExamId;
protected DatabaseHelper dbAdapter;

protected int currentQuestNumber;
protected int maxQuestNumber;
protected Question currentQuestion;
protected TextView timerTextView;
// private ArrayList questionList;
// private int currentListeningSoundId;

protected CountDownTimer mCountDown;
private long timeRemaining;
private boolean onFirstLoaded;

protected void prepareUI() {
nextButton = (Button) findViewById(R.id.buttonNext);
backButton = (Button) findViewById(R.id.buttonBack);

Universitas Sumatera Utara

submitSubmit = (Button) findViewById(R.id.buttonSubmit);

paggingTextView = (TextView) findViewById(R.id.pagingTextView);
option1TextView = (TextView)
findViewById(R.id.option1TextView);
option2TextView = (TextView)
findViewById(R.id.option2TextView);
option3TextView = (TextView)
findViewById(R.id.option3TextView);
option4TextView = (TextView)
findViewById(R.id.option4TextView);
timerTextView = (TextView) findViewById(R.id.tvTimer);

nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentQuestNumber++;
displayQuestion(currentQuestNumber);
}
});

backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentQuestNumber--;
displayQuestion(currentQuestNumber);
}
});

submitSubmit.setOnClickListener(new View.OnClickListener() {
@Override

Universitas Sumatera Utara

public void onClick(View v) {
String message = "Are you sure to submit ?";
MessageHelper.showDialogYesNo(ExamActivity.this,
"Submit Test", message,
new
com.nurul.toeflschool.util.ActionButtonDialog() {
@Override
public void runAction() {
submitExam();
}
});
}
});

onFirstLoaded = true;
}

private boolean isPaused = false;

protected void runCountdownTimer(boolean resume){
int milisTimeExam = 0;
if(resume){
milisTimeExam = (int) timeRemaining;
}else{
milisTimeExam = currentExamLimitTimer * 60 * 1000;

}
mCountDown = new CountDownTimer(milisTimeExam,1000) {
@Override
public void onTick(long millisUntilFinished) {

Universitas Sumatera Utara

if(isPaused){
cancel();
}else{
long millis = millisUntilFinished;
timeRemaining = millisUntilFinished;
String hms = String.format("%02d:%02d",

TimeUnit.MILLISECONDS.toMinutes(millis) TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis) TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
timerTextView.setText(hms);
}
Log.d("Timer", "Run = " + timeRemaining);
}

@Override
public void onFinish() {
timeUp();
}
}.start();
}

protected void timeUp(){
MessageHelper.showMessageOK(this, "Times Up", "Ups!! You have
running out of time",
new ActionButtonDialog() {
@Override
public void runAction() {
submitExam();

Universitas Sumatera Utara

}
});
}

@Override
protected void onResume() {
super.onResume();
if(!onFirstLoaded){
isPaused = false;
runCountdownTimer(true);
}
onFirstLoaded = false;
}

@Override
public void onBackPressed() {
MessageHelper.showDialogYesNo(this, "Toefl School", "Do you
want to exit from the test?",
new ActionButtonDialog() {
@Override
public void runAction() {
finish();
}
});
}

@Override
protected void onPause() {
super.onPause();
isPaused = true;

Universitas Sumatera Utara

}

private void submitExam(){
actionBeforeSubmit();

Intent intent = new Intent(ExamActivity.this,
ResultActivity.class);
intent.putExtra(ResultActivity.KEY_EXAM_ID, currentExamId);
intent.putExtra(ResultActivity.KEY_TEST, currentExam);
startActivity(intent);
finish();
}

protected abstract void actionBeforeSubmit();

protected void displayQuestion(int questionNumber) {
resetQuestionBgColor();

int qsIndex = questionNumber - 1;
currentQuestion = currentExam.getQuestion(qsIndex);
option1TextView.setText("A. " + currentQuestion.getOption1());
option2TextView.setText("B. " + currentQuestion.getOption2());
option3TextView.setText("C. " + currentQuestion.getOption3());
option4TextView.setText("D. " + currentQuestion.getOption4());

updatePagingView();
updateButton();

int questionAnswerIndex = currentExam.getAnswer(qsIndex);

Universitas Sumatera Utara

if (questionAnswerIndex != 0) {
updateQuestionBgColor(questionAnswerIndex);
}
}

protected void updateButton() {
nextButton.setVisibility(View.VISIBLE);
backButton.setVisibility(View.VISIBLE);

if (currentQuestNumber == maxQuestNumber) {
nextButton.setVisibility(View.INVISIBLE);
}

if (currentQuestNumber == 1) {
backButton.setVisibility(View.INVISIBLE);
}
}

public void onClickQuestion(View view) {
int tagId = Integer.valueOf(view.getTag().toString());

// reset all background textView;
resetQuestionBgColor();

updateQuestionBgColor(tagId);

currentExam.setAnswer(currentQuestNumber - 1, tagId);
}

Universitas Sumatera Utara

protected void resetQuestionBgColor() {
option1TextView.setBackgroundResource(R.color.white);
option2TextView.setBackgroundResource(R.color.white);
option3TextView.setBackgroundResource(R.color.white);
option4TextView.setBackgroundResource(R.color.white);
}

protected void updateQuestionBgColor(int questionIndex) {
switch (questionIndex) {
case 1:
option1TextView.setBackgroundResource(R.color.blue);
break;
case 2:
option2TextView.setBackgroundResource(R.color.blue);
break;
case 3:
option3TextView.setBackgroundResource(R.color.blue);
break;
case 4:
option4TextView.setBackgroundResource(R.color.blue);
break;

default:
break;
}
}

protected void updatePagingView() {
String pagingText = "Question " + currentQuestNumber + "/"

Universitas Sumatera Utara

+ maxQuestNumber;
paggingTextView.setText(pagingText);
}

}

MainMenuActivity.java

package com.nurul.toeflschool;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainMenuActivity extends Activity {

private Button listeningButton, readingButton, grammarButton,
scoreButton,
tipsButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

listeningButton = (Button) findViewById(R.id.btnListening);
readingButton = (Button) findViewById(R.id.btnReading);

Universitas Sumatera Utara

grammarButton = (Button) findViewById(R.id.btnGrammar);
scoreButton = (Button) findViewById(R.id.btnViewScore);
tipsButton = (Button) findViewById(R.id.btnTips);

listeningButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent i = new Intent(MainMenuActivity.this,
ListeningActivity.class);
startActivity(i);
}
});
readingButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent i = new Intent(MainMenuActivity.this,
ReadingActivity.class);
startActivity(i);
}
});
grammarButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent i = new Intent(MainMenuActivity.this,
GrammarActivity.class);
startActivity(i);
}

Universitas Sumatera Utara

});
scoreButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent i = new Intent(MainMenuActivity.this,
ScoreActivity.class);
startActivity(i);
}
});
tipsButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent i = new Intent(MainMenuActivity.this,
Tips.class);
startActivity(i);
}
});
}

}

ListeningActivity.java

package com.nurul.toeflschool;

import android.app.Activity;
import android.content.Intent;

Universitas Sumatera Utara

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class ListeningActivity extends Activity {
private Button nextButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listening);

nextButton = (Button) findViewById(R.id.btnNext);
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(ListeningActivity.this,
ListeningExamActivity.class);
startActivity(i);
finish();
}
});
}
}

ListeningExamActivity.java

Universitas Sumatera Utara

package com.nurul.toeflschool;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.nurul.toeflschool.database.DatabaseHelper;
import com.nurul.toeflschool.database.model.ModelListening;
import com.nurul.toeflschool.entity.Exam;
import com.nurul.toeflschool.entity.Listening;
import com.nurul.toeflschool.util.MusicManager;
import com.nurul.toeflschool.util.RandomHelper;

public class ListeningExamActivity extends ExamActivity {

private MusicManager musicManager;
private Listening listening;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listeningexam2);

prepareUI();

dbAdapter = new DatabaseHelper(this);
dbAdapter.openDatabase();

Universitas Sumatera Utara

int randomListeningId = RandomHelper.GenerateRandom();

ModelListening modelListening = new ModelListening(dbAdapter);
listening =
modelListening.getListeningSound(randomListeningId);
this.currentExam = listening;

dbAdapter.closeDatabase();

//currentListeningSoundId =
listening.getListeningSound().getId();
musicManager = new MusicManager();

currentQuestNumber = 1;
maxQuestNumber = listening.getCountQuestion();
currentExamId = ResultActivity.EXAM_LISTENING_ID;
currentExamLimitTimer = ExamActivity.TIME_MAX_LISTINING;

displayQuestion(currentQuestNumber);
updateButton();

runCountdownTimer(false);
}

public void onPlayClicked(View view){
int idListeningSound = listening.getListeningSound().getId();
String listeningFileName =
listening.getListeningSound().getFileName();

Universitas Sumatera Utara

Log.d("TOEFL", "filename = " + listeningFileName);
int mp3res = getResources().getIdentifier(listeningFileName,
"raw", getPackageName());

musicManager.stop();
//

if(list){

//
//

}
musicManager.start(this, mp3res);
}

public void onStopClicked(View view){
musicManager.pause();
}

private void stopSound(){
if (musicManager != null){
musicManager.stop();
}
}

@Override
protected void onStop() {
super.onStop();
musicManager.pause();
}

@Override
protected void onDestroy() {
super.onDestroy();

Universitas Sumatera Utara

musicManager.release();
}

@Override
protected void actionBeforeSubmit() {
stopSound();
}

}

ReadingPassageActivity.java

package com.nurul.toeflschool;

import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ReadingPassageActivity extends Activity {
public static final String KEY_PASSAGE_CONTENT =
"passagecontent";

private String currentPassageContent;
private Button buttonBack;
private TextView tvContent;

Universitas Sumatera Utara

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_readingpassage);

Bundle bundle = getIntent().getExtras();
currentPassageContent = bundle.getString(KEY_PASSAGE_CONTENT);

buttonBack = (Button) findViewById(R.id.btnBack);
buttonBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});

tvContent = (TextView) findViewById(R.id.tvContent);
tvContent.setText(Html.fromHtml(currentPassageContent));
}
}

ResultActivity.java

package com.nurul.toeflschool;

import android.app.Activity;
import android.os.Bundle;

Universitas Sumatera Utara

import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.nurul.toeflschool.app.ToeflApplication;
import com.nurul.toeflschool.database.DatabaseHelper;
import com.nurul.toeflschool.database.model.ModelScoreConvert;
import com.nurul.toeflschool.entity.Exam;
import com.nurul.toeflschool.entity.Question;

public class ResultActivity extends Activity {
public static final String KEY_TEST = "test";
public static final String KEY_EXAM_ID = "exam_id";

public static final int EXAM_LISTENING_ID = 1;
public static final int EXAM_GRAMMAR_ID = 2;
public static final int EXAM_READING_ID = 3;

private Button doneButton;
private LinearLayout linearResultAnswer;
private TextView tvTrue, tvFalse;

private Exam resultExam;
private int examId;

private DatabaseHelper dbAdapter;

Universitas Sumatera Utara

private int convertResult;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);

Bundle bundle = getIntent().getExtras();
resultExam = (Exam) bundle.getSerializable(KEY_TEST);
examId = bundle.getInt(KEY_EXAM_ID);

linearResultAnswer = (LinearLayout)
findViewById(R.id.linearResultAnswer);
tvTrue = (TextView) findViewById(R.id.tvTrue);
tvFalse = (TextView) findViewById(R.id.tvFalse);
doneButton = (Button) findViewById(R.id.btnDone);

doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});

int[] resultTrueFalse = resultExam.checkExam();
int scoreTrue = resultTrueFalse[0];
int scoreFalse = resultTrueFalse[1];
tvTrue.setText("" + scoreTrue);
tvFalse.setText("" + scoreFalse);

Universitas Sumatera Utara

dbAdapter = new DatabaseHelper(this);
dbAdapter.openDatabase();
ModelScoreConvert modelScoreConvert = new
ModelScoreConvert(dbAdapter);
convertResult = modelScoreConvert.getConvert(scoreTrue,
resultExam.getName());
dbAdapter.closeDatabase();

if(examId == EXAM_LISTENING_ID){

ToeflApplication.getInstance().saveData(ToeflApplication.KEYPREF_
SC_LISTENING, scoreTrue);

ToeflApplication.getInstance().saveData(ToeflApplication.KEYPREF_
CV_LISTENING, convertResult);
}else if(examId == EXAM_GRAMMAR_ID){

ToeflApplication.getInstance().saveData(ToeflApplication.KEYPREF_
SC_GRAMMAR, scoreTrue);

ToeflApplication.getInstance().saveData(ToeflApplication.KEYPREF_
CV_GRAMMAR, convertResult);
}else{

ToeflApplication.getInstance().saveData(ToeflApplication.KEYPREF_
SC_READING, scoreTrue);

ToeflApplication.getInstance().saveData(ToeflApplication.KEYPREF_
CV_READING, convertResult);
}

displayQuestion();
}

private void displayQuestion(){

Universitas Sumatera Utara

int countNumber = 1;
for (Question question : resultExam.getListQuestion()) {
LinearLayout layoutQuestion = (LinearLayout)
getLayoutInflater().inflate(R.layout.result_item, null);

TextView tvQuestion = (TextView)
layoutQuestion.findViewById(R.id.tvQuestion);
TextView tvNumber = (TextView)
layoutQuestion.findViewById(R.id.tvNumber);
TextView tvOption1 = (TextView)
layoutQuestion.findViewById(R.id.tvOption1);
TextView tvOption2 = (TextView)
layoutQuestion.findViewById(R.id.tvOption2);

//TextView tvAnswer = (TextView)
layoutQuestion.findViewById(R.id.tvAnswer);

String [] abcd = { "A", "B", "C", "D" };
int selectedIndex = question.getSelectedIndex();

if(selectedIndex > 0){
if(question.getQuestion() != null){

tvQuestion.setText(Html.fromHtml(question.getQuestion()));
}else{
tvQuestion.setVisibility(View.GONE);
}

String selectedUser =
getOptionStringbyIndex(selectedIndex, question);

if(question.isRight()){

Universitas Sumatera Utara

+

selectedUser = abcd[selectedIndex - 1] + ". "
selectedUser + " (T)";

tvOption1.setText(selectedUser);
tvOption2.setVisibility(View.GONE);
}else{
String selectedAnswer =
getOptionStringbyIndex(question.getAnswerIndex(), question);
selectedAnswer =
abcd[question.getAnswerIndex() - 1] + ". " +
(T)";

selectedAnswer + "

tvOption1.setText(selectedAnswer);

+

selectedUser = abcd[selectedIndex - 1] + ". "
selectedUser + " (F)";
tvOption2.setText(selectedUser);
tvOption2.setBackgroundResource(R.color.red);
}
}else{
String noAnswer = "-";
tvQuestion.setText(noAnswer);
tvOption1.setVisibility(View.GONE);
tvOption2.setVisibility(View.GONE);
}

tvNumber.setText("" + countNumber + ". ");
linearResultAnswer.addView(layoutQuestion);
countNumber++;
}
}

Universitas Sumatera Utara

private String getOptionStringbyIndex(int index, Question
question){
String option = null;
switch (index) {
case 1:
option = question.getOption1();
break;
case 2:
option = question.getOption2();
break;
case 3:
option = question.getOption3();
break;
case 4:
option = question.getOption4();
break;

default:
break;
}

return option;
}

public void onDoneClicked(View view){
finish();
}
}

Universitas Sumatera Utara

ScoreActivity.java

package com.nurul.toeflschool;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.nurul.toeflschool.app.ToeflApplication;
import com.nurul.toeflschool.util.MessageHelper;

public class ScoreActivity extends Activity {

private TextView tvListeningConvert, tvReadingConvert,
tvGrammarConvert, tvToeflScore;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_score);

tvListeningConvert = (TextView)
findViewById(R.id.tvListeningConvert);
tvReadingConvert = (TextView)
findViewById(R.id.tvReadingConvert);
tvGrammarConvert = (TextView)
findViewById(R.id.tvGrammarConvert);
tvToeflScore = (TextView) findViewById(R.id.tvToeflScore);

ToeflApplication.getInstance().readResultExam();

Universitas Sumatera Utara

int listeningConvert =
ToeflApplication.getInstance().getConvertListening();
int readingConvert =
ToeflApplication.getInstance().getConvertReading();
int grammarConvert =
ToeflApplication.getInstance().getConvertGrammar();
float toeflScore =
ToeflApplication.getInstance().getToeflScore();

tvListeningConvert.setText("" + listeningConvert);
tvReadingConvert.setText("" + readingConvert);
tvGrammarConvert.setText("" + grammarConvert);
tvToeflScore.setText("" + toeflScore);
}

public void onDoneClicked(View view){
finish();
}

public void onRetryClicked(View view){
String message = "Are you sure to retry the test? ?";
MessageHelper.showDialogYesNo(this, "Retry Test", message,
new com.nurul.toeflschool.util.ActionButtonDialog()
{
@Override
public void runAction() {

ToeflApplication.getInstance().clearData();
finish();
}
});
}

Universitas Sumatera Utara

}

ToeflApplication.java

package com.nurul.toeflschool.app;

import android.app.Application;
import android.content.SharedPreferences;

public class ToeflApplication extends Application {

public static final String KEYPREF_SC_LISTENING =
"score_listening";
public static final String KEYPREF_SC_GRAMMAR = "score_grammar";
public static final String KEYPREF_SC_READING = "score_reading";
public static final String KEYPREF_CV_LISTENING = "cv_listening";
public static final String KEYPREF_CV_GRAMMAR = "cv_grammar";
public static final String KEYPREF_CV_READING = "cv_reading";
public static final String KEYPREF_TOEFL_SCORE = "toelf_score";

private static ToeflApplication instance;
private SharedPreferences sharedPreferences;

private int scoreListening;
private int scoreGrammar;
private int scoreReading;

private int convertListening;

Universitas Sumatera Utara

private int convertGrammar;
private int convertReading;

private float toeflScore;

@Override
public void onCreate() {
super.onCreate();
instance = this;

sharedPreferences = this.getSharedPreferences("mypref",
MODE_PRIVATE);
}

public static synchronized ToeflApplication getInstance() {
return instance;
}

public void readResultExam() {

this.setScoreListening(sharedPreferences.getInt(KEYPREF_SC_LISTENING,
0));

this.setScoreGrammar(sharedPreferences.getInt(KEYPREF_SC_GRAMMAR,
0));

this.setScoreReading(sharedPreferences.getInt(KEYPREF_SC_READING,
0));

this.setConvertListening(sharedPreferences.getInt(KEYPREF_CV_LISTENIN
G, 0));

Universitas Sumatera Utara

this.setConvertGrammar(sharedPreferences.getInt(KEYPREF_CV_GRAMMAR,
0));

this.setConvertReading(sharedPreferences.getInt(KEYPREF_CV_READING,
0));

this.setToeflScore(sharedPreferences.getFloat(KEYPREF_TOEFL_SCORE,
0));
}

public float getToeflScore() {
return toeflScore;
}

public void setToeflScore(float toeflScore) {
this.toeflScore = toeflScore;
}

public void saveData(String key, int value){
//

Editor editor = sharedPreferences.edit();

//

editor.putInt(key, value);

//

editor.commit();
sharedPreferences.edit().putInt(key, value).commit();
updateToeflScore();
}

public void clearData(){
sharedPreferences.edit().clear().commit();
readResultExam();
}

Universitas Sumatera Utara

public void updateToeflScore(){
readResultExam();

int total = convertGrammar + convertListening + convertReading;
float toeflScore = (total / 3) * 10;

sharedPreferences.edit().putFloat(KEYPREF_TOEFL_SCORE,
toeflScore).commit();
}

public int getScoreListening() {
return scoreListening;
}

public void setScoreListening(int scoreListening) {
this.scoreListening = scoreListening;
}

public int getScoreGrammar() {
return scoreGrammar;
}

public void setScoreGrammar(int scoreGrammar) {
this.scoreGrammar = scoreGrammar;
}

public int getScoreReading() {
return scoreReading;
}

Universitas Sumatera Utara

public void setScoreReading(int scoreReading) {
this.scoreReading = scoreReading;
}

public int getConvertListening() {
return convertListening;
}

public void setConvertListening(int convertListening) {
this.convertListening = convertListening;
}

public int getConvertGrammar() {
return convertGrammar;
}

public void setConvertGrammar(int convertGrammar) {
this.convertGrammar = convertGrammar;
}

public int getConvertReading() {
return convertReading;
}

public void setConvertReading(int convertReading) {
this.convertReading = convertReading;
}
}

Universitas Sumatera Utara

DatabaseHelper.java

package com.nurul.toeflschool.database;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "toeflschool.db";
public final static String DB_PATH =
"/data/data/com.nurul.toeflschool/databases/";

String dbName;
Context context;

Universitas Sumatera Utara

File dbFile;
private SQLiteDatabase mDatabase;

public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 3);
this.context = context;
this.dbName = DB_NAME;
dbFile = new File(DB_PATH + dbName);
}

@Override
public synchronized SQLiteDatabase getWritableDatabase() {

if (!dbFile.exists()) {
SQLiteDatabase db = super.getWritableDatabase();
copyDataBase(db.getPath());
}
return super.getWritableDatabase();
}

// @Override
// public synchronized SQLiteDatabase getReadableDatabase() {
//

if (!dbFile.exists()) {

//

SQLiteDatabase db = super.getReadableDatabase();

//

copyDataBase(db.getPath());

//
//
//

}

//

return super.getReadableDatabase();

Universitas Sumatera Utara

// }

@Override
public void onCreate(SQLiteDatabase db) {
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
}

private void copyDataBase(String dbPath) {
try {
InputStream assestDB = context.getAssets().open(
"databases/" + dbName);

OutputStream appDB = new FileOutputStream(dbPath, false);

byte[] buffer = new byte[1024];
int length;
while ((length = assestDB.read(buffer)) > 0) {
appDB.write(buffer, 0, length);
}

appDB.flush();
appDB.close();
assestDB.close();
} catch (IOException e) {
e.printStackTrace();
}

Universitas Sumatera Utara

}

public void openDatabase() {
String dbPath =
context.getDatabasePath(dbName).getPath();
if(mDatabase != null && mDatabase.isOpen()) {
return;
}
mDatabase = SQLiteDatabase.openDatabase(dbPath, null,
SQLiteDatabase.OPEN_READWRITE);

//

File dbFile = mContext.getDatabasePath(DBNAME);

//

if (!dbFile.exists()) {

//

try {

//

copyDatabase(dbFile);

//

} catch (IOException e) {

//
database", e);
//

throw new RuntimeException("Error creating source

}

//

}
//

//
mDatabase = SQLiteDatabase.openDatabase(dbFile.getPath(),
null, SQLiteDatabase.OPEN_READONLY);
}

public void closeDatabase() {
if(mDatabase!=null) {
mDatabase.close();
}
}

Universitas Sumatera Utara

public Cursor fetchAllRecords(String tableName, String[]
columns,
String filter) {
return mDatabase.query(tableName, columns, filter, null,
null, null, null);
}

}

ModelListening.java

package com.nurul.toeflschool.database.model;

import android.database.Cursor;

import com.nurul.toeflschool.database.DatabaseHelper;
import com.nurul.toeflschool.entity.Listening;
import com.nurul.toeflschool.entity.ListeningSound;
import com.nurul.toeflschool.entity.QuestionListening;

public class ModelListening {

//private final String TABLE_LISTENING = "Listening";
private final String TABLE_LISTENING_SOUND = "ListeningSound";
private final String TABLE_LISTENING_QUESTION =
"QuestionListening";

private DatabaseHelper dbAdapter;

Universitas Sumatera Utara

//private Listening listening;

public ModelListening(DatabaseHelper dbAdapter) {
this.dbAdapter = dbAdapter;
}

public Listening getAllListening(){
return null;
}

public Listening getListeningSound(int listeningId){
Listening listening = new Listening();
listening.setId(listeningId);

Cursor cursors =
dbAdapter.fetchAllRecords(TABLE_LISTENING_SOUND, new String[] {
"Id", "FileName" }, "ListeningId=" + listeningId);
ListeningSound listeningSound = null;
if (cursors.getCount() > 0) {
cursors.moveToFirst();
listeningSound = new ListeningSound();
listeningSound.setId(cursors.getInt(0));
listeningSound.setFileName(cursors.getString(1));
}
cursors.close();

if(listeningSound != null){
listening.setListeningSound(listeningSound);

Universitas Sumatera Utara

Cursor cursorQuestions =
dbAdapter.fetchAllRecords(TABLE_LISTENING_QUESTION, new String[] {
"Id", "Option1", "Option2", "Option3",
"Option4", "Answer" }, "ListeningSoundId=" + listeningSound.getId());
if (cursorQuestions.getCount() > 0) {
cursorQuestions.moveToFirst();
do {
QuestionListening qsListening = new
QuestionListening();
qsListening.setId(cursorQuestions.getInt(0));

qsListening.setOption1(cursorQuestions.getString(1));

qsListening.setOption2(cursorQuestions.getString(2));

qsListening.setOption3(cursorQuestions.getString(3));

qsListening.setOption4(cursorQuestions.getString(4));

qsListening.setAnswerIndex(cursorQuestions.getInt(5));
listening.addQuestion(qsListening);
} while (cursorQuestions.moveToNext());
}
cursorQuestions.close();
}

return listening;
}
}

activity_toefl_school.xml

Universitas Sumatera Utara















activity_main.xml
























activity_listening.xml

Universitas Sumatera Utara


















Universitas Sumatera Utara

activity_listeningexam2.xml















Universitas Sumatera Utara










Universitas Sumatera Utara

























Universitas Sumatera Utara

activity_readingpassage.xml
















Universitas Sumatera Utara






activity_result.xml


































Universitas Sumatera Utara






activity_score.xml













































r