• Tidak ada hasil yang ditemukan

BAB IV IMPLEMENTASI DAN PENGUJIAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB IV IMPLEMENTASI DAN PENGUJIAN"

Copied!
15
0
0

Teks penuh

(1)

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

Setelah sistem dianalisis dan didesain secara rinci, tahap selanjutnya adalah implementasi. Implementasi sistem merupakan tahap meletakkan sistem sehingga siap untuk dioperasikan. Implementasi bertujuan untuk mengkonfirmasi modul- modul perancangan, sehingga pengguna dapat memberi masukan kepada pengembangan sistem.

4.1.1 Implementasi Basis Data

Database terdapat pada perangkat berbasis Android, sistem operasi Android mempunyai library database sendiri yang bernama SQLite.

Database yang bernama “DB” ini mempunyai 1 table, yaitu table “alarm”.

Berikut beberapa pernyataan SQL yang terdapat pada kelas Database.java.

4.1.2 Implementasi Penulisan Kode

Penulisan kode atau biasa disebut dalam bahasa inggris source code/coding merupakan bagian utama dalam pembuatan aplikasi ini.

Penulisan kode pada aplikasi ini menggunakan bahasa Java sebagai penggunaan bahasa utamanya dengan editor Android Studio dan di running dengan menggunakan smartphone android atau AVD Manager (Android

public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub

db.execSQL("CREATE TABLE IF NOT EXISTS " + ALARM_TABLE + " ( "

+ COLUMN_ALARM_ID + " INTEGER primary key autoincrement,

"

+ COLUMN_ALARM_ACTIVE + " INTEGER NOT NULL, "

+ COLUMN_ALARM_TIME + " TEXT NOT NULL, "

+ COLUMN_ALARM_DAYS + " BLOB NOT NULL, "

+ COLUMN_ALARM_DIFFICULTY + " INTEGER NOT NULL, "

+ COLUMN_ALARM_TONE + " TEXT NOT NULL, "

+ COLUMN_ALARM_VIBRATE + " INTEGER NOT NULL, "

+ COLUMN_ALARM_NAME + " TEXT NOT NULL)");

}

(2)

Virtual Device), sedangkan untuk database menggunakan SQLite acuannya adalah apakah aplikasi yang dibuat telah berjalan dengan baik yang sebagaimana mestinya. Bila belum maka kode atau source code akan diperbaiki sampai didapatkan aplikasi yang berjalan dan berfungsi dengan baik. Pada bagian ini akan dijabarkan penulisan kode dari aplikasi ini.

4.1.2.1 Penulisan Kode Pada Daftar Jadwal Alarm

Kode pada halaman daftar jadwal alarm merupakan tampilan awal setelah user membuka aplikasi. Pada halaman ini terdapat gambar logo, nama aplikasi, menu tambah, menu follow me dan daftar (list) jadwal alarm. Berikut kode untuk layout alarm_list_element.xml.

<CheckBox

android:id="@+id/checkBox_alarm_active"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:focusable="false"

android:padding="5dp" />

<View

android:id="@+id/view1"

android:layout_width="1dp"

android:layout_height="match_parent"

android:layout_marginRight="10dp"

android:background="#ff0099cc"

android:paddingRight="10dp" />

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:paddingBottom="5dp"

android:paddingTop="5dp" >

<TextView

android:id="@+id/textView_alarm_time"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView

android:id="@+id/textView_alarm_days"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceSmall"

/>

</LinearLayout>

(3)

Berikut kode untuk layout alarm_activity.xml.

Gambar 4.1 : Daftar Jadwal Alarm 4.1.2.2 Penulisan Kode Pada Tambah Jadwal Alarm

Kode pada halaman tambah jadwal alarm merupakan tampilan sebuah button add, setelah user menekan tanda add pada daftar jadwal alarm. Pada halaman ini terdapat gambar logo, nama

<ListView

android:id="@android:id/list"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:longClickable="true"

android:background="@drawable/main_background">

</ListView>

<TextView

android:id="@android:id/empty"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:padding="10dp"

android:text="No alarms have been set (Tidak ada alarm yang diatur)" />

(4)

aplikasi, button simpan, button hapus, dan menu follow me. Berikut beberapa kode untuk kelas AlarmPreferencesActivity.java.

ImageButton deleteButton;

TextView okButton;

TextView cancelButton;

--- case BOOLEAN:

CheckedTextView checkedTextView = (CheckedTextView) v;

boolean checked = !checkedTextView.isChecked();

((CheckedTextView) v).setChecked(checked);

switch (alarmPreference.getKey()) { case ALARM_ACTIVE:

alarm.setAlarmActive(checked);

break;

case ALARM_VIBRATE:

alarm.setVibrate(checked);

if (checked) {

Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

vibrator.vibrate(1000);

} break;

}

alarmPreference.setValue(checked);

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

switch (alarmPreference.getKey()) { case ALARM_DIFFICULTY:

Alarm.Difficulty d = Alarm.Difficulty.values()[which];

alarm.setDifficulty(d);

break;

case ALARM_TONE:

alarm.setAlarmTonePath(alarmPreferenceListAdapter.getAlarmTonePath s()[which]);

if (alarm.getAlarmTonePath() != null) { if (mediaPlayer == null) {

mediaPlayer = new MediaPlayer();

} else {

if (mediaPlayer.isPlaying()) mediaPlayer.stop();

mediaPlayer.reset();}

--- public void onClick(final DialogInterface dialog, int which, boolean isChecked) {

Alarm.Day thisDay = Alarm.Day.values()[which];

if (isChecked) {

alarm.addDay(thisDay);

} else {

if (alarm.getDays().length > 1) { alarm.removeDay(thisDay);

} else {

((AlertDialog)

dialog).getListView().setItemChecked(which, true);}

}}

--- public void onTimeSet(TimePicker timePicker, int hours, int

minutes) {

Calendar newAlarmTime = Calendar.getInstance();

newAlarmTime.set(Calendar.HOUR_OF_DAY, hours);

newAlarmTime.set(Calendar.MINUTE, minutes);

newAlarmTime.set(Calendar.SECOND, 0);

(5)

Berikut kode untuk layout alarm_preferences.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:orientation="vertical" >

<ListView

android:id="@android:id/list"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:drawSelectorOnTop="false"

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

</LinearLayout>

alarm.setAlarmTime(newAlarmTime);

alarmPreferenceListAdapter.setMathAlarm(getMathAlarm());

alarmPreferenceListAdapter.notifyDataSetChanged();

}

--- public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) { case R.id.menu_item_save:

Database.init(getApplicationContext());

if (getMathAlarm().getId() < 1) { Database.create(getMathAlarm());

} else {

Database.update(getMathAlarm());}

--- break;

case R.id.menu_item_delete:

AlertDialog.Builder dialog = new

AlertDialog.Builder(AlarmPreferencesActivity.this);

dialog.setTitle("Delete");

dialog.setMessage("Delete this alarm?");

dialog.setPositiveButton("Ok", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { Database.init(getApplicationContext());

if (getMathAlarm().getId() < 1) { } else {

Database.deleteEntry(alarm);

callMathAlarmScheduleService();}

finish();}

});

dialog.setNegativeButton("Cancel", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss();}

});

dialog.show();

(6)

Gambar 4.2 : Tambah Jadwal Alarm 4.1.2.3 Penulisan Kode Pada Jawab Pertanyaan

Kode pada halaman jawab pertanyaan merupakan tampilan sebuah pertanyaan matematika yang diiringi bunyi alarm, setelah user menetapkan waktu dan hari yang telah ditentukan sebelumnya. Pada halaman ini terdapat textview1 untuk pertanyaan matematika, dan textview2 untuk menjawab pertanyaan tersebut, terdapat button angka 0 sampai angka 9, button tanda koma (,), button tanda minus (-), dan button untuk menghapus karakter dari jawaban pertanyaan. Berikut kode untuk layout alarm_alert.xml.

(7)

<TableRow

android:id="@+id/tableRow0"

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

<TextView

android:id="@+id/textView1"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textAppearance="?android:attr/textAppearanceLarge"

android:textSize="24dp"

android:textColor="#000ec8" />

</TableRow>

<TableRow

android:id="@+id/tableRow1"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="1" >

<TextView

android:id="@+id/textView2"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textAppearance="?android:attr/textAppearanceLarge"

android:textColor="@android:color/black"

android:textSize="24dp" />

</TableRow>

<TableRow

android:id="@+id/tableRow2"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="1" >

<Button

android:id="@+id/Button1"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="1"

android:text="@string/_1"

android:focusableInTouchMode="false"

android:textSize="24dp" />

<Button

android:id="@+id/Button2"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="2"

android:text="@string/_2"

android:focusableInTouchMode="false"

android:textSize="24dp" />

<Button

android:id="@+id/Button3"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="3"

android:text="@string/_3"

android:focusableInTouchMode="false"

android:textSize="24dp" />

</TableRow>

(8)

<TableRow

android:id="@+id/TableRow3"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="1" >

<Button

android:id="@+id/Button4"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="4"

android:text="@string/_4"

android:focusableInTouchMode="false"

android:textSize="24dp" />

<Button

android:id="@+id/Button5"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="5"

android:text="@string/_5"

android:focusableInTouchMode="false"

android:textSize="24dp" />

<Button

android:id="@+id/Button6"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="6"

android:text="@string/_6"

android:focusableInTouchMode="false"

android:textSize="24dp" />

</TableRow>

<TableRow

android:id="@+id/TableRow4"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="1" >

<Button

android:id="@+id/Button7"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="7"

android:text="@string/_7"

android:focusableInTouchMode="false"

android:textSize="24dp" />

<Button

android:id="@+id/Button8"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="8"

android:text="@string/_8"

android:focusableInTouchMode="false"

android:textSize="24dp" />

(9)

<Button

android:id="@+id/Button9"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="9"

android:text="@string/_9"

android:focusableInTouchMode="false"

android:textSize="24dp" />

</TableRow>

<TableRow

android:id="@+id/tableRow5"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="1" >

<Button

android:id="@+id/Button_decimal"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="."

android:text="@string/decimal_button_text"

android:focusableInTouchMode="false"

android:textSize="32dp" />

<Button

android:id="@+id/Button0"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="0"

android:text="@string/_0"

android:focusableInTouchMode="false"

android:textSize="24dp" />

<Button

android:id="@+id/Button_minus"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1"

android:tag="-"

android:text="@string/minus_button_text"

android:focusableInTouchMode="false"

android:textSize="32dp" />

</TableRow>

<TableRow

android:id="@+id/tableRow6"

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

<Button

android:id="@+id/Button_clear"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:tag="clear"

android:text="@string/clear_button_text"

android:focusableInTouchMode="false"

android:textSize="24dp" />

</TableRow>

(10)

Gambar 4.3 : Jawab Pertanyaan 4.1.2.4 Penulisan Kode Pada Follow Me

Kode pada menu Follow Me merupakan tampilan info pembuat aplikasi yang menuju ke alamat profil twitter, setelah user menekan menu follow me. Berikut beberapa kode untuk menu.xml.

<item

android:id="@+id/menu_item_website"

android:icon="@drawable/glyphicons_340_globe"

android:title="Follow Me">

</item>

(11)

Berikut beberapa kode untuk kelas BaseActivity.java.

Gambar 4.4 : Follow Me

@Override

public boolean onOptionsItemSelected(MenuItem item) { String url = null;

Intent intent = null;

switch (item.getItemId()) { case R.id.menu_item_new:

Intent newAlarmIntent = new Intent(this, AlarmPreferencesActivity.class);

startActivity(newAlarmIntent);

break;

case R.id.menu_item_website:

url = "https://twitter.com/ihyabanyumanis";

intent = new Intent(Intent.ACTION_VIEW);

intent.setData(Uri.parse(url));

try {

startActivity(intent);

} catch (ActivityNotFoundException e) {

Toast.makeText(this, "Couldn't launch the website", Toast.LENGTH_LONG).show();

} break;

}

return super.onOptionsItemSelected(item);

}

(12)

4.2 Pengujian Fungsionalitas

Proses pengujian ini dilakukan dengan cara install aplikasi pada device.

Dalam hal ini penulis akan menggunakan metode pengujian aplikasi black box.

Untuk melihat apakah fungsi-fungsi pada aplikasi berjalan dengan baik atau tidak dan juga mengetahui dibagian mana saja terdapat kesalahan pada aplikasi ini untuk segera dapat diperbaiki oleh penulis.

4.2.1 Skenario Pengujian

Pengujian aplikasi ini dilakukan menggunakan smartphone Xiaomi Redmi 2. Item yang diuji antara lain :

Tabel 4.1 : Skenario Pengujian Aplikasi

No. Nama Tes Sifat

Kegiatan Hasil yang diharapkan

1.

Masuk halaman daftar jadwal alarm

Normal Menampilkan halaman daftar jadwal alarm

2. Memilih tambah

jadwal alarm Normal Menampilkan halaman tambah jadwal alarm

3.

Memilih hapus daftar jadwal alarm

Normal Menghapus daftar jadwal alarm

4.

Memilih edit daftar jadwal alarm

Normal

Menampilkan halaman tambah jadwal alarm dan meng-update daftar jadwal alarm

5. Alarm berbunyi Normal

Menampilkan halaman pertanyaan matematika yang sudah diacak (random)

6.

Menekan button angka 0 sampai 9, koma dan minus

Normal

Mencetak angka 0 sampai 9, koma dan minus di halaman jawab pertanyaan

(13)

7. Menekan button

clear Normal

Membersihkan karakter pada jawaban di halaman jawab pertanyaan

8.

Menjawab pertanyaan dengan jawaban yang salah

Normal

Menampilkan halaman pertanyaan matematika yang sudah diacak (random) disertai tanda merah pada baris jawaban

9.

Menjawab pertanyaan dengan jawaban yang benar

Normal Keluar aplikasi dan alarm berhenti berbunyi

10. Memilih follow

me Normal Menampilkan info

pembuat aplikasi ke halaman profil twitter

11. Kembali ke halaman

sebelumnya Normal Menampilkan halaman sebelumnya

12. Memilih keluar

aplikasi Normal Keluar aplikasi

4.2.2 Hasil Pengujian

Tabel 4.2 : Hasil Pengujian Aplikasi

No. Nama Tes Sifat

Kegiatan

Hasil yang diharapkan

Hasil Pengujian

1. Masuk halaman

daftar jadwal alarm Normal

Menampilkan halaman daftar jadwal alarm

Sesuai

2. Memilih tambah

jadwal alarm Normal

Menampilkan halaman tambah jadwal alarm

Sesuai

3. Memilih hapus

daftar jadwal alarm Normal Menghapus daftar

jadwal alarm Sesuai

(14)

4. Memilih edit daftar

jadwal alarm Normal

Menampilkan halaman tambah jadwal alarm dan meng-update daftar jadwal alarm

Sesuai

5. Alarm berbunyi Normal

Menampilkan halaman pertanyaan matematika yang sudah diacak (random)

Sesuai

6.

Menekan button angka 0 sampai 9, koma dan minus

Normal

Mencetak angka 0 sampai 9, koma dan minus di halaman jawab pertanyaan

Sesuai

7. Menekan button

clear Normal

Membersihkan karakter pada jawaban di halaman jawab pertanyaan

Sesuai

8. Menjawab

pertanyaan dengan

jawaban yang salah Normal

Menampilkan halaman pertanyaan matematika yang sudah diacak (random) disertai tanda merah pada baris jawaban

Sesuai

9. Menjawab

pertanyaan dengan

jawaban yang benar Normal Keluar aplikasi dan alarm berhenti

berbunyi Sesuai

(15)

10. Memilih follow me Normal

Menampilkan info pembuat aplikasi ke halaman profil twitter

Sesuai

11. Kembali ke halaman

sebelumnya Normal Menampilkan halaman

sebelumnya Sesuai 12. Memilih keluar

aplikasi Normal Keluar aplikasi Sesuai

4.3 Analisis Hasil Pengujian

Setelah tahap pengujian black box diatas terhadap semua fungsi pada Aplikasi alarm weker dengan pertanyaan menggunakan algoritma Fisher Yates Shuffle berbasis android yang sudah dijalankan, maka dapat disimpulkan :

1. Pada saat pembuatan aplikasi penulis menggunakan smartphone android dan AVD Manager (Android Virtual Device) untuk mengetahui Error dan yang lainnya, sehingga aplikasi dapat berjalan dengan baik pada android.

2. Fungsi-fungsi pada aplikasi berjalan dengan baik seperti, pengacakan angka dan operator pada pertanyaan matematika, menampilkan pertanyaan matematika dengan tingkat kesulitan yang dipilih oleh pengguna, menampilkan pertanyaan matematika yang diiringi dengan bunyi alarm, dan menampilkan pertanyaan matematika yang diiringi dengan bunyi alarm secara terus-menerus apabila pengguna salah menjawab pertanyaan matematika.

3. Aplikasi membutuhkan koneksi internet untuk membuka info pembuat aplikasi.

Referensi

Dokumen terkait

Berdasarkan hasil data kebutuhan guru dengan melakukan wawancara kepada guru IPS kelas 7 yaitu guru merasa sangat penting menggunakan media pembelajaran , guru merasa

Penggunaan Dummy Load untuk praktikum pembebanan pada PLTD atau PLTS sangat diperlukan karena selain sudah ditetapkan pada kurikulum dan silabus pembelajaran,

KUBERDIRI (JANJI PENEBUS) Key - D Words and Music by Yoshua Perwirana, Maya Setiawan &amp; Dita Soedarsono. Verses from “Standing on the Promises”

Semakin cepat pergerakan ion-ion akan menimbulkan gesekkan antara ion yang semakin besar sehingga temperatur larutan semakin tinggi dan semakin lama suatu larutan

Kerusakan yang terjadi akibat penangkapan kerang mata tujuh (Abalon) yang dilakukan oleh nelayan dengan tingginya nilai komponen abiotik (Gambar 2) dan kematian

Perkembangan Jumlah Lembaga dan Profesi Penunjang Pasar Modal

Kondisi guru-guru SMP yang diteliti, mereka memiliki profesionalisme yang baik dilihat dari rasa pengabdian yang melekat dengan dirinya, tanggungjawab sosial yang