• Tidak ada hasil yang ditemukan

Perancangan Aplikasi Tes Toefl Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perancangan Aplikasi Tes Toefl Berbasis Android"

Copied!
73
0
0

Teks penuh

(1)

L

A

M

P

I

R

A

(2)
(3)
(4)

LAMPIRAN

Listing Program

package com.nurul.toeflschool;

ToeflSchoolActivity.java

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;

(5)

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);

(6)

}

});

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() {

(7)

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();

}

(8)

.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();

(9)

if(copyDatabase(this)) {

//Toast.makeText(this, "Copy database success", Toast.LENGTH_SHORT).show();

} else {

//Toast.makeText(this, "Copy data error", 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();

(10)

return true;

}catch (Exception e) {

e.printStackTrace();

return false;

}

}

}

package com.nurul.toeflschool;

ExamActivity.java

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;

(11)

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<QuestionListening> questionList; // private int currentListeningSoundId;

protected CountDownTimer mCountDown; private long timeRemaining;

private boolean onFirstLoaded;

protected void prepareUI() {

(12)

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); }

});

(13)

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

(14)

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

(15)

} }); }

@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();

(16)

}

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();

(17)

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);

(18)

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() {

(19)

+ 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);

(20)

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);

(21)

});

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;

(22)

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(); }

}); } }

(23)

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();

(24)

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 =

(25)

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

(26)

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;

(27)

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;

(28)

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;

(29)

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];

(30)

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(); }

(31)

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);

(32)

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] + ". " + selectedAnswer + " (T)";

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++;

(33)

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();

(34)

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);

(35)

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();

(36)

}

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;

(37)

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));

(38)

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();

(39)

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;

(40)

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;

(41)

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/";

(42)

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());

// // // }

(43)

// }

@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) {

(44)

}

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) {

// throw new RuntimeException("Error creating source database", e);

// } // }

//

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

}

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

(45)

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";

(46)

//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){

(47)

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; }

}

(48)

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ced1"

android:orientation="vertical"

android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".ToeflSchoolActivity" >

<ImageView

android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"

android:src="@drawable/firstheader" />

<Button

android:id="@+id/btnPlay"

android:layout_width="wrap_content" android:layout_height="40dp"

android:layout_marginBottom="15dp" android:background="@drawable/play" android:scaleType="fitCenter" />

<Button

(49)

android:layout_width="wrap_content" android:layout_height="40dp"

android:layout_marginBottom="15dp" android:background="@drawable/rules" android:scaleType="fitCenter" />

<Button

android:id="@+id/btnAbout"

android:layout_width="wrap_content" android:layout_height="40dp"

android:layout_marginBottom="15dp" android:background="@drawable/about" android:scaleType="fitCenter" />

<Button

android:id="@+id/btnExit"

android:layout_width="wrap_content" android:layout_height="40dp"

android:layout_marginBottom="15dp" android:background="@drawable/exit" android:scaleType="fitCenter" />

</LinearLayout>

activity_main.xml

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

(50)

android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ced1"

android:orientation="vertical" >

<ImageView

android:id="@+id/imageView1"

android:layout_width="match_parent" android:layout_height="128dp"

android:background="@drawable/header" />

<ScrollView

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" >

<LinearLayout

android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

<Button

android:id="@+id/btnListening" android:layout_width="wrap_content" android:layout_height="70dp"

android:background="@drawable/listening" />

<Button

(51)

android:layout_width="wrap_content" android:layout_height="70dp"

android:background="@drawable/reading" />

<Button

android:id="@+id/btnGrammar"

android:layout_width="wrap_content" android:layout_height="70dp"

android:background="@drawable/grammar" />

<Button

android:id="@+id/btnViewScore" android:layout_width="wrap_content" android:layout_height="70dp"

android:background="@drawable/score" />

<Button

android:id="@+id/btnTips"

android:layout_width="wrap_content" android:layout_height="70dp"

android:background="@drawable/tips" /> </LinearLayout>

</ScrollView>

</LinearLayout>

(52)

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

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="match_parent" android:background="#7fffd4"

android:orientation="vertical" >

<ImageView

android:id="@+id/imageView1"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:src="@drawable/top" />

<TextView

android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"

android:text="LISTENING COMPREHENSION" android:textSize="20sp"

android:textStyle="bold" android:padding="15dp" />

<TextView

android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"

(53)

android:textSize="20sp" android:textStyle="bold" android:padding="15dp" />

<TextView

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"

android:text="In this section of the test, you will have an opportunity to demonstrate your ability to understand conversations and talks in English."

android:textAlignment="gravity" android:textColor="#000"

android:padding="20dp"/>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:orientation="horizontal" android:gravity="right">

<Button

android:id="@+id/btnNext" android:layout_width="33dp" android:layout_height="36dp" android:layout_marginRight="16dp" android:background="@drawable/next" /> </LinearLayout>

(54)

activity_listeningexam2.xml

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

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="match_parent" android:background="#7fffd4"

android:orientation="vertical" >

<ImageView

android:id="@+id/imageView1"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:adjustViewBounds="true" android:src="@drawable/top" />

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="5dp" >

(55)

android:id="@+id/pagingTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_weight="1"

android:text="Question 1/50" android:textColor="#000" android:textSize="20sp" />

<TextView

android:id="@+id/tvTimer"

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:layout_weight="1"

android:gravity="right" android:text="00.00" android:textColor="#000" android:textSize="20sp" /> </LinearLayout>

<LinearLayout

(56)

<Button

android:id="@+id/playButton"

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"

android:onClick="onPlayClicked" android:text="Play" />

<Button

android:id="@+id/stopButton"

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"

android:onClick="onStopClicked" android:text="Pause" />

</LinearLayout>

<ScrollView

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" >

<LinearLayout

(57)

<TextView

android:id="@+id/option1TextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dp" android:background="#fff"

android:onClick="onClickQuestion" android:tag="1"

android:text="A."

android:textColor="#000" android:textSize="15sp" />

<TextView

android:id="@+id/option2TextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dp" android:background="#fff"

android:onClick="onClickQuestion" android:tag="2"

android:text="B."

android:textColor="#000" android:textSize="15sp" />

<TextView

(58)

android:layout_marginBottom="15dp" android:background="#fff"

android:onClick="onClickQuestion" android:tag="3"

android:text="C."

android:textColor="#000" android:textSize="15sp" />

<TextView

android:id="@+id/option4TextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dp" android:background="#fff"

android:onClick="onClickQuestion" android:tag="4"

android:text="D."

android:textColor="#000" android:textSize="15sp" /> </LinearLayout>

</ScrollView>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:orientation="horizontal" >

(59)

android:id="@+id/buttonBack" android:layout_width="33dp" android:layout_height="36dp" android:layout_marginLeft="16dp"

android:background="@drawable/back" />

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1"

android:gravity="center" >

<Button

android:id="@+id/buttonSubmit" android:layout_width="85dp" android:layout_height="36dp"

android:background="@drawable/submit" /> </LinearLayout>

<Button

android:id="@+id/buttonNext" android:layout_width="33dp" android:layout_height="36dp" android:layout_marginRight="16dp" android:background="@drawable/next" /> </LinearLayout>

(60)

activity_readingpassage.xml

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

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="match_parent" android:background="#7fffd4"

android:orientation="vertical" >

<ImageView

android:id="@+id/ImageView01"

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_x="1dp"

android:layout_y="0dp"

android:adjustViewBounds="true" android:src="@drawable/top" />

<ScrollView

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"

android:layout_margin="10dp" android:background="#fff">

(61)

android:layout_width="match_parent" adipiscing elit. Quisque sed odio ante. Ut scelerisque lorem sem, et imperdiet justo fermentum in. Vivamus nec maximus sem. Suspendisse malesuada risus vitae odio venenatis dapibus. Donec consequat erat condimentum, gravida nisl sit amet, condimentum orci. Aliquam commodo risus vitae nisl facilisis aliquet. Aliquam nec feugiat massa. Etiam suscipit ultrices orci, sollicitudin accumsan felis sollicitudin ac. Vestibulum in ex sit amet augue malesuada lobortis. Nullam posuere eu dolor ac interdum. Fusce viverra metus id turpis consequat

sollicitudin. Etiam semper orci et enim cursus venenatis. Mauris feugiat libero suscipit dolor egestas, eu tempor mi lobortis. Vestibulum diam sapien, viverra et sem ut, venenatis eleifend dui. Nam semper rhoncus dui, eget tempor metus tristique at" />

</LinearLayout> </ScrollView>

<LinearLayout

(62)

<Button

android:id="@+id/btnBack" android:layout_width="33dp" android:layout_height="36dp" android:layout_marginLeft="16dp"

android:background="@drawable/back" /> </LinearLayout>

</LinearLayout>

activity_result.xml

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

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="match_parent" android:background="#00ced1"

android:orientation="vertical" >

<ImageView

android:id="@+id/imageView1"

android:layout_width="match_parent" android:layout_height="128dp"

android:adjustViewBounds="true"

android:background="@drawable/header" />

(63)

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" >

<LinearLayout

android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="10dp"

android:layout_marginTop="10dp">

<TextView

android:layout_width="0dp"

android:layout_height="wrap_content" android:layout_weight="0.5"

android:gravity="center" android:text="TRUE" android:textColor="#fff" android:textSize="20sp" android:textStyle="bold" />

<TextView

(64)

android:layout_height="wrap_content" android:layout_marginRight="20dp" android:layout_weight="0.5"

android:background="#fff" android:gravity="center" android:text="50"

android:textSize="20sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="10dp" >

<TextView

android:layout_width="0dp"

android:layout_height="wrap_content" android:layout_weight="0.5"

android:gravity="center" android:text="FALSE" android:textColor="#fff" android:textSize="20sp" android:textStyle="bold" />

<TextView

(65)

android:layout_height="wrap_content" android:layout_marginRight="20dp" android:layout_weight="0.5"

android:background="#fff" android:gravity="center" android:text="50"

android:textSize="20sp" android:textStyle="bold" /> </LinearLayout>

<!-- List semua kata kunci -->

<LinearLayout

android:id="@+id/linearResultAnswer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" >

</LinearLayout> </LinearLayout> </ScrollView>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"

(66)

<Button

android:id="@+id/btnDone" android:layout_width="82dp" android:layout_height="35dp"

android:background="@drawable/done" android:onClick="onDoneClicked" /> </LinearLayout>

</LinearLayout>

activity_score.xml

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

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="match_parent" android:background="#00ced1"

android:orientation="vertical" >

<ImageView

android:id="@+id/imageView1"

android:layout_width="match_parent" android:layout_height="128dp"

android:adjustViewBounds="true"

android:background="@drawable/header" />

(67)

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"

android:orientation="vertical" >

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal" android:padding="10dp" >

<TextView

android:layout_width="0dp"

android:layout_height="wrap_content" android:layout_weight="0.5"

android:gravity="center"

android:text="@string/menu_listening" android:textColor="#fff"

android:textSize="20sp" android:textStyle="bold" />

<TextView

android:id="@+id/tvListeningConvert" android:layout_width="0dp"

android:layout_height="wrap_content" android:layout_marginRight="20dp" android:layout_weight="0.5"

(68)

android:gravity="center" android:text="50"

android:textSize="20sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal" android:padding="10dp" >

<TextView

android:layout_width="0dp"

android:layout_height="wrap_content" android:layout_weight="0.5"

android:gravity="center"

android:text="@string/menu_reading" android:textColor="#fff"

android:textSize="20sp" android:textStyle="bold" />

<TextView

android:id="@+id/tvReadingConvert" android:layout_width="0dp"

(69)

android:background="#fff" android:gravity="center" android:text="50"

android:textSize="20sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal" android:padding="10dp" >

<TextView

android:layout_width="0dp"

android:layout_height="wrap_content" android:layout_weight="0.5"

android:gravity="center"

android:text="@string/menu_grammar" android:textColor="#fff"

android:textSize="20sp" android:textStyle="bold" />

<TextView

android:id="@+id/tvGrammarConvert" android:layout_width="0dp"

(70)

android:layout_weight="0.5" android:background="#fff" android:gravity="center"

android:layout_gravity="center_vertical" android:text="50"

android:textSize="20sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal" android:padding="10dp" >

<TextView

android:layout_width="0dp"

android:layout_height="wrap_content" android:layout_weight="0.5"

android:gravity="center" android:text="Score" android:textColor="#fff" android:textSize="20sp" android:textStyle="bold" />

<TextView

(71)

android:layout_height="wrap_content" android:layout_marginRight="20dp" android:layout_weight="0.5"

android:background="#fff" android:gravity="center"

android:layout_gravity="center_vertical" android:text="50"

android:textSize="20sp" android:textStyle="bold" /> </LinearLayout>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"

android:orientation="horizontal" android:padding="10dp" >

<Button

android:id="@+id/btnRetry" android:layout_width="82dp" android:layout_height="35dp"

android:background="@drawable/retry" android:onClick="onRetryClicked" />

<Button

(72)

android:layout_height="35dp"

android:background="@drawable/done" android:onClick="onDoneClicked" /> </LinearLayout>

</LinearLayout>

result_item.xml

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

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="wrap_content" android:orientation="horizontal" >

<TextView

android:id="@+id/tvNumber" android:layout_width="0dp"

android:layout_height="wrap_content" android:layout_weight="0.1"

android:gravity="center" android:text="1" />

<LinearLayout

(73)

android:orientation="vertical" android:layout_marginLeft="5dp">

<TextView

android:id="@+id/tvQuestion"

android:layout_width="match_parent" android:layout_height="wrap_content"

android:text="Lorem ipsum test duo languea lorem ipsmu test one peace (T)" />

<TextView

android:id="@+id/tvOption1"

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.9"

android:text="A. Lorem ipsum test duo languea lorem ipsmu test one peace (T)" />

<TextView

android:id="@+id/tvOption2"

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.9"

android:text="B. Lorem ipsum test duo languea lorem ipsmu test one peace (T)" />

Referensi

Dokumen terkait

Aplikasi pembelajaran kaidah bahasa jawa berbasis android mobile telah selesai dibangun dengan menggunakan eclipse bundle ADT yang bertujuan untuk menumbuhkan minat

Dari permasalahan yang telah dijelaskan maka dibutuhkan sebuah media yang bisa dijadikan acuan agar dapat mempermudah pengguna sebelum melakukan pelatihan tes TOEFL

Membuat aplikasi TOEFL yang dapat melakukan update aplikasi yang akan digunakan pada perangkat mobile phone Android6. Operating System yang digunakan yaitu Android

Aplikasi sms otomatis ini dibuat dengan menggunakan app inventor yang memang disediakan untuk membuat aplikasi berbasis android yang bersifat open source.. Aplikasi

Pada gambar 3.9 teradapat tampilan timer yang menampilkan sisa waktu dari tes yang sedang dijalankan dalam hitungan mundurdengan satuan detik, Question no/maks untuk

Ini adalah debut versi Android yang menggunakan nama kudapan manis. Tradisi tersebut dipertahankan hingga sekarang.Pada Cupcake, Google juga memperkenalkan SDK

Kehadiran Android KitKat merupakan peluncuran produk OS anyar yang diluncurkan pada 4 september 2013, sebelumnya banyak kabar beredar jikalau android

MIT App Inventor adalah sebuah aplikasi web-based yang memungkinkan pengguna untuk membuat sebuah aplikasi perangkat lunak untuk OS Android, MIT App Inventor