Anda di halaman 1dari 23

BAB IV

HASIL DAN PEMBAHASAN

4.1. Gambaran Umum Perangkat Lunak

Aplikasi pengenalan satwa langka endemik Indonesia ini mempunyai menu

utama yang terdiri dari menu daftar satwa, menu cari satwa, menu sanksi hukum,

menu bantuan dan menu tentang. Pengguna dapat memilih salah satu dari menu

tersebut tersebut dan aplikasi akan menampilkan informasi dari menu yang

dipilih.

Menu daftar satwa merupakan menu yang berisi daftar satwa yang terbagi

kedalam beberapa kategori yaitu mamalia, burung, reptil, serangga, ikan, anthozoa

dan bivalvia. Dari setiap kategori tersebut jika dipilih maka aplikasi akan

menampilkan daftar satwa dan pengguna dapat memilih salah satu dari daftar

satwa tersebut yang kemudian aplikasi akan menampilkan informasi detail dari

satwa yang dipilih meliputi nama satwa, nama ilmiah, habitat, keterangan dan foto

dari satwa tersebut. Menu cari satwa digunakan untuk melakukan pencarian satwa

menggunakan kata kunci pencarian nama satwa. Menu sanksi hukum digunakan

untuk menampilkan pasal-pasal pelanggaran satwa langka terlindungi. Selain itu

terdapat menu bantuan dan juga menu tentang yang berisi informasi tentang

aplikasi.

Data satwa yang ada pada aplikasi diolah melalui sebuah aplikasi berbasis

web. Sehingga dapat lebih mudah dalam melakukan proses penambahan,

perubahan dan penghapusan data satwa.

IV - 1
IV - 2

4.2. Implementasi Perangkat Lunak

1. Tampilan Splash Screen

Gambar 4.1. Tampilan Splash Screen

Berikut ini potongan source code dari tampilan splash screen yang

digunakan sebagai halaman awal pada saat aplikasi dijalankan :

Listing 4.1. Potongan Source Code Tampilan Splash Screen

public class SplashActivity extends Activity {


Handler handler = new Handler();

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Init();
}

public void Init() {


new Thread(new Runnable() {
@Override
public void run() {
IV - 3

delay(1200);
handler.post(new Runnable() {
@Override
public void run() {
}
});
delay(800);
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Intent main_intent = new
Intent(SplashActivity.this, MainActivity.class);
SplashActivity.this.startActivity(main_intent);
SplashActivity.this.finish();
}
});
}
}

Potongan source code diatas digunakan untuk menampilkan tampilan splash

screen sebagai halaman awal pada saat aplikasi dijalankan. Pada tampilan splash

screen ditampilkan informasi dari nama aplikasi dan logo aplikasi. Splash screen

akan tampil dalam waktu kurang lebih 2 detik, setelah itu otomatis berganti

tampilan menjadi tampilan menu utama.


IV - 4

2. Tampilan Menu Utama

Gambar 4.2. Tampilan Menu Utama

Berikut ini potongan source code dari tampilan menu utama seperti pada

gambar diatas :

Listing 4.2. Potongan Source Code Tampilan Menu Utama

public class MainActivity extends Activity {

GridView gv;
Context context;
ArrayList prgmName;
public static String [] prgmNameList={"Daftar Satwa","Cari
Satwa","Sanksi Hukum","Bantuan","Tentang"};
public static int []
prgmImages={R.drawable.icon_satwa,R.drawable.icon_search,R.drawabl
e.icon_hukum,R.drawable.icon_help,R.drawable.icon_about};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gv=(GridView) findViewById(R.id.gridView1);
IV - 5

gv.setAdapter(new CustomAdapter(this,
prgmNameList,prgmImages));
}

public boolean onKeyDown(int keyCode, KeyEvent event) {


if (keyCode == KeyEvent.KEYCODE_BACK) {
exitByBackKey();
return true;
}
return super.onKeyDown(keyCode, event);
}

protected void exitByBackKey() {

new AlertDialog.Builder(this)
.setTitle("Keluar")
.setIcon(android.R.drawable.ic_dialog_alert)
.setMessage("Anda yakin mau keluar dari aplikasi ?")
.setPositiveButton("Ya", new
DialogInterface.OnClickListener() {

public void onClick(DialogInterface arg0, int arg1) {

finish();
}
})
.setNegativeButton("Tidak", new
DialogInterface.OnClickListener() {

public void onClick(DialogInterface arg0, int arg1) {


}
})
.show();
}

Potongan source code diatas digunakan untuk menampilkan menu utama

dari aplikasi pengenalan satwa langka endemik Indonesia. Aplikasi menampilkan

menu daftar satwa, menu cari satwa, menu sanksi hukum, menu bantuan dan

menu tentang disertai dengan icon untuk setiap menu tersebut.


IV - 6

3. Tampilan Pilihan Kategori Satwa

Gambar 4.3. Tampilan Pilihan Kategori Satwa

Berikut ini potongan source code dari tampilan pilihan kategori satwa

seperti pada gambar diatas:

Listing 4.3. Potongan Source Code Tampilan Pilihan Kategori Satwa

public class DaftarSatwaActivity extends ListActivity {

// Progress Dialog
private ProgressDialog pDialog;

// Creating JSON Parser object


JSONParser jParser = new JSONParser();

ArrayList<HashMap<String, String>> categoriesList;

// url to get all categories list


private static String url_all_categories =
"http://appsatwa.kodemi.com/get_all_categories.php";

// JSON Node names


private static final String TAG_SUCCESS = "success";
IV - 7

private static final String TAG_CATEGORIES = "categories";


private static final String TAG_PID = "id_kategori";
private static final String TAG_NAME = "nama_kategori";

// categories JSONArray
JSONArray categories = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daftarsatwa);

// Hashmap for ListView


categoriesList = new ArrayList<HashMap<String,
String>>();

if (isNetworkAvailable()){
// Loading categories in Background Thread
new LoadAllcategories().execute();
}
else {
Toast.makeText(getApplicationContext(), "Tidak ada
koneksi internet", Toast.LENGTH_LONG).show();
}

// Get listview
ListView lv = getListView();

lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent,
View view,
int position, long id) {
// getting values from selected ListItem
String pid = ((TextView)
view.findViewById(R.id.pid)).getText()
.toString();

// Starting new intent


Intent in = new
Intent(getApplicationContext(),

DaftarSatwaShowActivity.class);
// sending pid to next activity
in.putExtra("PID_KATEGORI", pid);

// starting new activity and expecting


some response back
startActivityForResult(in, 100);
}
});

}
IV - 8

4. Tampilan Informasi Daftar Satwa

Gambar 4.4. Tampilan Informasi Daftar Satwa

Berikut ini potongan source code dari tampilan informasi daftar satwa

seperti pada gambar diatas:

Listing 4.4. Potongan Source Code Tampilan Informasi Daftar Satwa

public class DaftarSatwaShowActivity extends ListActivity {

String pid_kategori;
private ProgressDialog pDialog;
JSONParser jParser = new JSONParser();
ArrayList<HashMap<String, String>> satwaList;

private static String url_all_satwa =


"http://appsatwa.kodemi.com/get_daftar_satwa.php";

private static final String TAG_SUCCESS = "success";


private static final String TAG_satwa = "satwa";
private static final String TAG_PID = "id_satwa";
private static final String TAG_NAME = "nama_satwa";

JSONArray arrsatwa = null;


IV - 9

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daftarsatwa);

// Hashmap for ListView


satwaList = new ArrayList<HashMap<String, String>>();

Intent i = getIntent();

pid_kategori = i.getStringExtra("PID_KATEGORI");

new LoadAllsatwa().execute();

// Get listview
ListView lv = getListView();

lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent,
View view,
int position, long id) {
// getting values from selected ListItem
String pid = ((TextView)
view.findViewById(R.id.pid)).getText()
.toString();

// Starting new intent


Intent in = new
Intent(getApplicationContext(),
DetailSatwaActivity.class);
// sending pid to next activity
in.putExtra("ID", pid);

// starting new activity and expecting


some response back
startActivityForResult(in, 100);
}
});

}
IV - 10

5. Tampilan Informasi Detail Satwa

Gambar 4.5. Tampilan Informasi Detail Satwa

Berikut ini potongan source code dari tampilan informasi detail satwa

seperti pada gambar diatas:

Listing 4.5. Potongan Source Code Tampilan Informasi Detail Satwa

public class DetailSatwaActivity extends Activity {

TextView txtNama,txtIlmiah,txtHabitat,txtKeterangan;
String pid;
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
private static final String url_detail =
"http://appsatwa.kodemi.com/get_satwa_details.php";

private static final String TAG_SUCCESS = "success";


private static final String TAG_SATWA = "satwa";
private static final String TAG_NM_SATWA = "nama_satwa";
private static final String TAG_NM_ILMIAH = "nama_ilmiah";
private static final String TAG_HABITAT = "habitat";
IV - 11

private static final String TAG_KETERANGAN = "keterangan";


private static final String TAG_FOTO = "foto";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);

if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}

Intent i = getIntent();

pid = i.getStringExtra("ID");

new GetSatwaDetails().execute();

private class DownloadImageTask extends AsyncTask<String,


Void, Bitmap> {
ImageView bmImage;

public DownloadImageTask(ImageView bmImage) {


this.bmImage = bmImage;
}

protected Bitmap doInBackground(String... urls) {


String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new
java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}

protected void onPostExecute(Bitmap result) {


bmImage.setImageBitmap(result);
}
}
IV - 12

6. Tampilan Menu Cari Satwa

Gambar 4.6. Tampilan Menu Cari Satwa

Berikut ini potongan source code dari tampilan menu cari satwa seperti pada

gambar diatas:

Listing 4.6. Potongan Source Code Tampilan Menu Cari Satwa

public class CariSatwaActivity extends Activity {

Button btnCari;
EditText textInput;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cari);
IV - 13

btnCari = (Button) findViewById(R.id.btnCari);


textInput = (EditText) findViewById(R.id.inputCari);

btnCari.setOnClickListener(new View.OnClickListener()
{

@Override
public void onClick(View v) {
String strKeyword =
textInput.getText().toString();
if (strKeyword.equals("")){

Toast.makeText(getApplicationContext(), "Isi dulu kata kunci


pencarian!",
Toast.LENGTH_LONG).show();
}else{
Intent myIntent = new
Intent(v.getContext(), HasilCariActivity.class);
myIntent.putExtra("KEYWORD",
strKeyword);
startActivity(myIntent);
}
}
});
}
}

7. Tampilan Informasi Hasil Pencarian


IV - 14

Gambar 4.7. Tampilan Informasi Hasil Pencarian

Berikut ini potongan source code dari tampilan informasi hasil pencarian

seperti pada gambar diatas:

Listing 4.7. Potongan Source Code Tampilan Informasi Hasil Pencarian

public class HasilCariActivity extends ListActivity {

String pid;
private ProgressDialog pDialog;
JSONParser jParser = new JSONParser();
ArrayList<HashMap<String, String>> satwaList;

private static String url_all_satwa =


"http://appsatwa.kodemi.com/get_searching.php";

private static final String TAG_SUCCESS = "success";


private static final String TAG_SATWA = "satwa";
private static final String TAG_PID = "id_satwa";
private static final String TAG_NAME = "nama_satwa";

JSONArray satwa = null;

@Override
public void onCreate(Bundle savedInstanceState) {
IV - 15

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daftarsatwa);

satwaList = new ArrayList<HashMap<String, String>>();

Intent i = getIntent();

pid = i.getStringExtra("KEYWORD");

if (isNetworkAvailable()){
new LoadAllsatwa().execute();
}
else {
Toast.makeText(getApplicationContext(), "Tidak ada
koneksi internet", Toast.LENGTH_LONG).show();
}

ListView lv = getListView();

lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent,
View view,
int position, long id) {
// getting values from selected ListItem
String pid = ((TextView)
view.findViewById(R.id.pid)).getText()
.toString();
Intent in = new
Intent(getApplicationContext(),
DetailSatwaActivity.class);
in.putExtra("ID", pid);

startActivityForResult(in, 100);
}
});

8. Tampilan Menu Sanksi Hukum


IV - 16

Gambar 4.8. Tampilan Menu Sanksi Hukum

Berikut ini potongan source code dari tampilan menu sanksi hukum seperti

pada gambar diatas:

Listing 4.8. Potongan Source Code Tampilan Menu Sanksi Hukum

public class SanksiHukumActivity extends Activity {


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sanksi_hukum);
TextView textSanksi = (TextView)
findViewById(R.id.textSanksi);
textSanksi.setText("1. Barangsiapa dengan Sengaja
menangkap, melukai, membunuh, menyimpan, memiliki, memelihara,
mengangkut, dan memperniagakan satwa yang dilindungi dalam keadaan
hidup; (Pasal 21 ayat (2) huruf a), diancam dengan pidana penjara
paling lama 5 (lima) tahun dan denda paling banyak Rp.
100.000.000,00 (seratus juta rupiah). (Pasal 40 ayat (2));" +
"\n\n2. Barang Siapa Dengan Sengaja menyimpan,
memiliki, memelihara, mengangkut, dan memperniagakan satwa yang
dilindungi dalam keadaan mati (Pasal 21 ayat (2) huruf b), diancam
dengan pidana penjara paling lama 5 (lima) tahun dan denda paling
banyak Rp. 100.000.000,00 (seratus juta rupiah). (Pasal 40 ayat
(2));" +
IV - 17

"\n\n3. Dengan Sengaja memperniagakan, menyimpan


atau memiliki kulit, tubuh, atau bagian-bagian lain satwa yang
dilindungi atau barang-barang yang dibuat dari bagian-bagian
tersebut atau mengeluarkannya dari suatu tempat di Indonesia ke
tempat lain di dalam atau di luar Indonesia; (Pasal 21 ayat (2)
huruf d), diancam dengan pidana penjara paling lama 5 (lima) tahun
dan denda paling banyak Rp. 100.000.000,00 (seratus juta rupiah).
(Pasal 40 ayat (2)); (Pasal 40 ayat (2)); (Undang-undang Nomor 5
Tahun 1990 tentang KSDAH dan Ekosistemnya)");
}
}

9. Tampilan Menu Bantuan

Gambar 4.9. Tampilan Menu Bantuan

Berikut ini potongan source code dari tampilan menu bantuan seperti pada

gambar diatas:

Listing 4.9. Potongan Source Code Tampilan Menu Bantuan

package com.adeandi.satwalangka;

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

public class BantuanActivity extends Activity {


IV - 18

/** Called when the activity is first created. */


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bantuan);
// TODO Auto-generated method stub
}

10. Tampilan Menu Tentang

Gambar 4.10. Tampilan Menu Tentang

Berikut ini potongan source code dari tampilan menu tentang seperti pada

gambar diatas:

Listing 4.10. Potongan Source Code Tampilan Menu Tentang


IV - 19

package com.adeandi.satwalangka;

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

public class TentangActivity extends Activity {

/** Called when the activity is first created. */


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tentang);
// TODO Auto-generated method stub
}

4.3. Pengujian Perangkat Lunak

Metode yang digunakan pada tahap pengujan dalam penelitian ini adalah

black-box, dimana metode ini berfokus pada seluruh aspek dari perangkat lunak

yang berkaitan langsung dengan pengguna yaitu mulai dari antarmuka, masukan

dan keluaran.

Pengujian black-box dilakukan untuk setiap tampilan pada program.

Pengujian dilakukan dengan diberikan event-event atau masukan yang tidak

seharusnya dan event-event yang seharusnya. Berikut ini hasil setelah dilakukan

pengujian black-box :

1. Tampilan Splash Screen

Tabel 4.1. Pengujian Pada Tampilan Splash Screen

Hasil Yang Respon


No Langkah Pengujian Hasil Pengujian
Diharapkan Program
1 Aplikasi dijalankan Aplikasi Tampil menu [√] Diterima
sebagaimana menampilkan utama [ ] Ditolak
mestinya menu utama

2. Tampilan Menu Utama


IV - 20

Tabel 4.2. Pengujian Pada Tampilan Menu Utama

Langkah Hasil Yang Respon


No Hasil Pengujian
Pengujian Diharapkan Program
1 Aplikasi dijalankan Aplikasi Menu daftar [√] Diterima
sebagaimana menampilkan satwa, cari satwa, [ ] Ditolak
mestinya menu daftar sanksi hukum,
satwa, cari bantuan dan
satwa, sanksi tentang
hukum, bantuan ditampilkan
dan tentang

3. Tampilan Menu Daftar Satwa

Tabel 4.3. Pengujian Pada Tampilan Menu Daftar Satwa

Langkah Hasil Yang Respon


No Hasil Pengujian
Pengujian Diharapkan Program
1 Dipilih menu Aplikasi Daftar kategori [√] Diterima
daftar satwa menampilkan satwa ditampilkan [ ] Ditolak
daftar kategori
satwa
2 Dipilih salah satu Aplikasi Daftar satwa per [√] Diterima
kategori satwa menampilkan kategori [ ] Ditolak
daftar satwa per ditampilkan
kategori
2 Dipilih salah satu Aplikasi Informasi detail [√] Diterima
daftar satwa menampilkan satwa ditampilkan [ ] Ditolak
informasi detail
satwa

4. Tampilan Menu Cari Satwa


IV - 21

Tabel 4.4. Pengujian Pada Tampilan Menu Cari

Langkah Hasil Yang Respon


No Hasil Pengujian
Pengujian Diharapkan Program
1 Dipilih menu cari Aplikasi Menu cari [√] Diterima
menampilkan ditampilkan [ ] Ditolak
menu cari
2 Dimasukkan kata Aplikasi Informasi hasil [√] Diterima
kunci pencarian menampilkan pencarian [ ] Ditolak
hasil pencarian ditampilkan
3 Isian pencarian Tampil Informasi [√] Diterima
dikosongkan informasi kesalahan [ ] Ditolak
kesalahan ditampilkan

5. Tampilan Menu Sanksi Hukum

Tabel 4.5. Pengujian Pada Tampilan Menu Sanksi Hukum

Langkah Hasil Yang Respon


No Hasil Pengujian
Pengujian Diharapkan Program
1 Dipilih menu Aplikasi Informasi sanksi [√] Diterima
sanksi hukum menampilkan hukum [ ] Ditolak
informasi sanksi ditampilkan
hukum

6. Tampilan Menu Bantuan

Tabel 4.6. Pengujian Pada Tampilan Menu Bantuan


IV - 22

Langkah Hasil Yang Respon


No Hasil Pengujian
Pengujian Diharapkan Program
1 Dipilih menu Aplikasi Informasi bantuan [√] Diterima
bantuan menampilkan dari penggunaan [ ] Ditolak
informasi aplikasi
bantuan ditampilkan

7. Tampilan Menu Tentang

Tabel 4.7. Pengujian Pada Tampilan Menu Tentang

Langkah Hasil Yang Respon


No Hasil Pengujian
Pengujian Diharapkan Program
1 Dipilih menu Aplikasi Informasi tentang [√] Diterima
tentang menampilkan dari aplikasi [ ] Ditolak
informasi ditampilkan
tentang dari
aplikasi

4.4. Kelebihan Dan Kekurangan

Berikut ini adalah kelebihan dari aplikasi pengenalan satwa langka endemik

Indonesia yang sudah dibangun :

1. Pengguna dapat mengetahui nama dan informasi lengkap dari satwa langka

endemik Indonesia melalui aplikasi berbasis Android.

2. Data daftar satwa bersifat dinamis karena menggunakan basis data di server

yang dapat diolah melalui aplikasi berbasis web.

Adapun kekurangan dari aplikasi pengenalan satwa langka endemik

Indonesia yang sudah dibangun yaitu :


IV - 23

1. Aplikasi harus menggunakan koneksi internet agar dapat berjalan dengan

baik. Jadi jika tidak ada koneksi internet maka aplikasi tidak akan berjalan.

Anda mungkin juga menyukai