L
A
M
P
I
R
A
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;
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);
}
});
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() {
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();
}
.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();
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();
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;
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() {
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); }
});
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
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
} }); }
@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();
}
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();
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);
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() {
+ 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);
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);
});
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.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(); }
}); } }
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();
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 =
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
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;
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.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 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];
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(); }
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);
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++;
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();
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);
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();
}
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 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.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();
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;
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;
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/";
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());
// // // }
// }
@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) {
}
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(); }
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 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){
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; }
}
<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
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
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
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>
<?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"
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>
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" >
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
<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
<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
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" >
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>
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">
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
<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" />
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
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
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"
<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" />
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"
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"
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"
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
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
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
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)" />