LAPORAN PRAKTIKUM PEMROGRAMAN MOBILE PERTEMUAN 14 Tentang Aplikasi dengan Database (MySQL)
Monday, 30 July 2018
Add Comment
LAPORAN PRAKTIKUM
PEMROGRAMAN MOBILE
PERTEMUAN 14
Di susunOleh :
Nama : Firman Agus Saputro
NIM : 163310023
Jurusan : TEKNIK KOMPUTER
SEKOLAH TINGGI MANAJEMEN INFORMATIKA
DAN KOMPUTER
STMIK AKAKOM
YOGYAKARTA
2018
PERTEMUAN
KE – 14
Aplikasi dengan Database (MySQL)
I.
TUJUAN
Mahasiswa diharapkan dapat memahami dan mengetahui tentang komponen widget,
yaitu Webservice, mysql dan json yang
digunakan pada aplikasi mobile.
II.
PEMBAHASAN
Pada
praktikum kali ini kita akan membuat sebuah aplikasi yang digunakan untuk
mengakses sebuah database menggunakan MySQL. Untuk itu sebelum memulai
praktikum kita harus membuat sebuah database terlebih dahulu . karena MySQL
hanya bersifat lokal sehingga untuk mengakses MySQL kita harus satu jaringan
dengan pc MySQL tersebut. Berikut adalah penjelasan program aplikasi yang telah
saya buat :
- Membuat interface
activity_main.xml
<?xml version="1.0"
encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" 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="com.firman.myapplication.MainActivity"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:layout_below="@+id/editnama" android:layout_alignParentStart="true" android:layout_marginTop="18dp" android:id="@+id/editpenerbit" android:hint="menampilkan penerbit" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:layout_below="@+id/editpenerbit" android:layout_alignParentStart="true" android:layout_marginTop="22dp" android:id="@+id/edittahun" android:hint="menampilkan tahun" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/edit_id" android:hint="masukkan id" android:layout_alignParentTop="true" android:layout_alignParentStart="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/editnama" android:hint="menampilkan nama" android:layout_below="@+id/btn_tampil" android:layout_alignParentStart="true" android:layout_marginTop="12dp" /> <Button android:text="TAMPILKAN" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_tampil" android:onClick="tampilkan" android:layout_below="@+id/edit_id" android:layout_alignParentStart="true" android:layout_marginTop="22dp" /> </RelativeLayout>
Penjelasan :
Pada interface ini saya
menggunakan 1 komponen widget edit
text yang akan digunakan untuk menginputkan id dari fild yang akan
ditampilkan datanya , selain itu saya mnambahkan satu buah komponen button
sebagai tombol untuk menampilkan data pada database yang ingin ditampilkan
dan untuk menampilkan data pada masing-masing fild saya akan menampilkanya
pada 3 buah komponen edit text.
|
- 2 Menambahkan
script java pada Main_activity.java
package com.firman.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;//untuk menghandle atau deklarasi untuk elemen yang akan digunakan pada fungsi java yang akan dibuat, import activity digunakan agar mengetahui dimana activity elemen yang sudah di deklarasikan akan dipanggil. public class MainActivity extends AppCompatActivity { Button tampil; private String url1 = "http://172.18.106.151/api/api_perpustakaan.php/data/";//merupakan deklarasi url yang berisi alamat api yang akan digunakan dimana alamat api diatas merupakan database yang telah kita buat tadi dan alamat ip 172.18.106.151 merupakan alamat ip dari pc MySQL server. EditText ID,NAMA,PENERBIT,TAHUN; private HandleJSON obj; //merupakan deklarasi variabel dari komponen-komponen widget protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tampil =(Button)findViewById(R.id.btn_tampil); ID = (EditText) findViewById(R.id.edit_id); NAMA = (EditText) findViewById(R.id.editnama); PENERBIT = (EditText) findViewById(R.id.editpenerbit); TAHUN = (EditText) findViewById(R.id.edittahun );}//merupakan objek-objek yang akan digunakan untuk mengakses nilai dari komponen-komponen widget yang digunakan berdasarkan id nya masing-masing public void tampilkan(View view) { //method dengan nama tampil yang akan digunakan untuk menampilkan data pada database if (ID.getText().toString().isEmpty()) { Toast.makeText(getApplicationContext(), "ID Tidak boleh kosong", Toast.LENGTH_SHORT).show(); //untuk mengecek apakah ID yang dimasukkan kosong jika kosong maka akan terdapat notifikasi ID Tidak boleh kosong }else{ //jika ID nya tidak kosong maka statement dibawah ini akan dikerjakan String url = ID.getText().toString().trim(); String finalUrl = url1 + url ; //variabel finalUrl berisi variabel url1 yang digabung dengan variabel url obj = new HandleJSON(finalUrl); //objek untuk memanggil kelas HandleJSON dengan parameter berisi variabel finalUrl obj.fetchJSON(); //untuk memanggil method fetchJSON() kedalam objek dimana Data yang diperoleh biasanya berbentuk JSON dan kita dapat memanfaatkan library dari FastJSON ini untuk melakukan konversi JSON tersebut. while (obj.parsingComplete) ; ID.setText(obj.getID()); NAMA.setText(String.valueOf(obj.getNAMA())); PENERBIT.setText(obj.getPENERBIT() ); TAHUN.setText(obj.getTAHUN());//sebuah perulangan yang digunakan untuk menampilkan nilai dari variabel-variabel yang didapat dari proses yang dilakukan oleh objek dengan nama obj diatas. } }} |
3.
Menambahkan
sebuah kelas baru dengan nama Kelas handelJSON
Kelas HandleJSON ini nantinya akan dipanggil kedalam kelas Main_activity.java
import org.json.JSONArray;import org.json.JSONObject;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;//untuk menghandle atau deklarasi untuk elemen yang akan digunakan pada fungsi java yang akan dibuat, import activity digunakan agar mengetahui dimana activity elemen yang sudah di deklarasikan akan dipanggil. public class HandleJSON {private String id = "id";private String nama = "nama";private String penerbit = "penerbit";private String tahun = "tahun";private String urlString = "null";public volatile boolean parsingComplete = true; //merupakan deklarasi variabel public HandleJSON(String url){this.urlString = url;}public String getID(){return id;}public String getNAMA(){return nama;}public String getPENERBIT(){return penerbit;}public String getTAHUN(){return tahun;} //method-method diatas berfungsi untuk mengembalikan nilai dari masing-masing variabel public void readAndParseJSON(String in){ try{ JSONObject reader = new JSONObject(in); JSONArray data = reader.getJSONArray("data"); JSONObject DataBuku = data.getJSONObject(0);//pembuatan objek untuk mengakses JSONObject pada yang didapat dari url http://172.18.106.151/api/api_perpustakaan.php/data/ dimana JSONObjek adalah sepasang nama/nilai yang tidak terurutkan. JSONObjek dimulai dengan { (kurung kurawal buka)dan diakhiri dengan } (kurung kurawal tutup). Setiap nama diikuti dengan : (titik dua) dan setiap pasangan nama/nilai dipisahkan oleh , (koma). id= DataBuku.getString("id");nama = DataBuku.getString("nama");penerbit= DataBuku.getString("penerbit");tahun = DataBuku.getString("tahun");parsingComplete = false; //merupakan pemberian nilai pada variabel berdasarkan letak nilai tersebut pada objek dimana nilai Nilai (value) dapat berupa sebuah string dalam tanda kutip ganda, atau angka, atau true atau false atau null, atau sebuah objek atau sebuah larik. }catch (Exception e){ e.printStackTrace(); }} public void fetchJSON(){ Thread thread = new Thread(new Runnable(){ public void run(){ try{ URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(10000/*miliseconds*/); conn.setConnectTimeout(15000/*miliseconds*/); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.connect(); InputStream stream = conn.getInputStream(); String data = convertStreamToString(stream); readAndParseJSON(data); stream.close(); }catch(Exception e){ e.printStackTrace(); } } }); thread.start(); } private String convertStreamToString(java.io.InputStream is) { // TODO Auto-generated method stub java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A"); return s.hasNext() ? s.next() : ""; } } |
4.
Menambahkan
sebuah permission pada Kelas manifest.xml
<uses-permission android:name="android.permission.INTERNET" /> //permission tersebut akan berguna untuk memberikan akses kepada aplikasi yang telah kita buat ke internet |
Berikut adalah Hasilnya :
III.
PEMBAHASAN LATIHAN :
Pada latihan kali ini saya akan
menambahkan sebuah tombol button yang akan digunakan untuk menampilkan seluruh
isi dari database yang telah saya buat. Berikut adalah benjelasan dari scribt
yang saya buat :
1.
Menambahkan tombol button pada
interface activity_main.xml
<Button
android:text="TAMPILKAN SEMUA" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edittahun" android:layout_alignEnd="@+id/btn_tampil" android:layout_marginTop="20dp" android:id="@+id/btnsemua" />
Penjelasan :
Pada praktikum kali ini saya
menambahkan sebuah komponen widget button yang akan berfungsi sebagai tombol
untuk menampilkan semua data yang
disimpan pada database .
|
2.
Menambahkan
scribt java pada main_activity.java
Pada kelas ini saya menambahkan sebuah intent dimana intent merupakan suatu pesan yang
digunakan untuk mengaktifkan tiga komponen dasar pada aplikasi Android yaitu Activity, Service, dan Broadcast Receiver. Aktifasi pada
komponen-komponen tersebut bisa terjadi pada aplikasi yang sama atau berbeda,
seperti menjalankan Activity, inisiasi Service, atau pengiriman pesan kepada Broadcast Receiver. Pada saat
terjadi komunikasi antar komponen, Intent menyimpan paket informasi yang
digunakan pada proses tersebut.berikut adalah scribtnya :
import android.content.Intent;
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { Button tampil,tmplsemua; private String url1 = "http://172.18.106.151/api/api_perpustakaan.php/data/"; EditText ID,NAMA,PENERBIT,TAHUN; private HandleJSON obj; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tampil =(Button)findViewById(R.id.btn_tampil); ID = (EditText) findViewById(R.id.edit_id); NAMA = (EditText) findViewById(R.id.editnama); PENERBIT = (EditText) findViewById(R.id.editpenerbit); TAHUN = (EditText) findViewById(R.id.edittahun ); tmplsemua =(Button)findViewById(R.id.btnsemua); //saya menambahkan sebuah objek dengan nama tmplsemua yang digunakan untuk mengakses nilai dari komponen widget button yang telah saya tambahkan
tmplsemua.setOnClickListener(new View.OnClickListener()
{
//saya
juga menambahkan sebuah event untuk tombol button yang saya tambahkan ketika
diklik
public void onClick(View arg0) { Intent keli = new Intent(MainActivity.this,Main2Activity.class);
//saya
juga menambahkan sebuah objek untuk memanggil kelas Intent yang akan
digunakan untuk berpindah kehalam Main2Activity
startActivity(keli);
//untuk
memulai intent
} }); } public void tampilkan(View view) { if (ID.getText().toString().isEmpty()) { Toast.makeText(getApplicationContext(), "ID Tidak boleh kosong", Toast.LENGTH_SHORT).show(); }else{ String url = ID.getText().toString().trim(); String finalUrl = url1 + url ; obj = new HandleJSON(finalUrl); obj.fetchJSON(); while (obj.parsingComplete) ; ID.setText(obj.getID()); NAMA.setText(String.valueOf(obj.getNAMA())); PENERBIT.setText(obj.getPENERBIT() ); TAHUN.setText(obj.getTAHUN()); } } } |
3.
Menambahkan interface baru yang akan dipanggil oleh intent
<?xml version="1.0"
encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main2" android:layout_width="match_parent" android:layout_height="match_parent" 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="com.firman.myapplication.Main2Activity"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:id="@+id/list_semua" /> </RelativeLayout>
Penjelasan:
Pada
interface Main2Activity.xml ini berisi komponen widget list view yang akan
digunakan untuk menampilkan seluruh isi dari database yang telah kita buat
kedalam bentuk list
|
4.
Menambahkan scribt java pada
intervace baru
import android.content.Intent;
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import static android.os.Build.ID; public class Main2Activity extends AppCompatActivity { private String url1 = "http://172.18.106.151/api/api_perpustakaan.php/data/"; private HandleJSON obj; ArrayList<HashMap<String,String>> data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); obj = new HandleJSON(url1); data = new ArrayList<>(); obj.fetchJSON(); while(obj.parsingComplete); String[] id; String[] nama; String[] penerbit; String[] tahun;
//merupakan deklarasi variabel array
int i=0; while (i<2) { //Perulangan untuk menampilkan data dari variabel array dengan persyarataan yaitu nilai dari variabel i lebih kecil dari 2 HashMap<String, String> isi = new HashMap<>(); isi.put("id", id[i]); isi.put("cuaca", cuaca[i]); isi.put("tekanan", tekanan[i]); isi.put("suhu", suhu[i].toString()); data.add(isi); i++; } ListAdapter adapt = new SimpleAdapter(Main2Activity.this, data, R.layout.activity_list__view, new String[]{"id","cuaca","tekanan","suhu"}, new int[]{R.id.tanggal, R.id.cuaca, R.id.tekanan, R.id.suhu}); ListView listView = (ListView) findViewById(R.id.ListCuaca); listView.setAdapter(adapt); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent detail = new Intent(Main2Activity.this, Main3Activity.class); detail.putExtra("tgl", ((TextView) view.findViewById(R.id.tanggal)).getText().toString()); detail.putExtra("cuaca", ((TextView) view.findViewById(R.id.cuaca)).getText().toString()); detail.putExtra("tekanan", ((TextView) view.findViewById(R.id.tekanan)).getText().toString()); detail.putExtra("suhu", ((TextView) view.findViewById(R.id.suhu)).getText().toString()); startActivity(detail);} }); }} |
IV.
KESIMPULAN :
Dari praktikum tersebut dapat disimpulkan bahwa :
·
untuk membuat
sebuah project aplikasi android yang menggunakan komunikasi dari REST
API webservice ke Android client (aplikasi) via koneksi internet.
Data yang diperoleh berbentuk JSON dan untuk menampilkan hasil data yang didapat dari REST API webservice ke dalam aplikasi kita harus
mengetahui struktur dari JSON wab service itu sendiri.
·
Untuk menambahkan sebuah halaman baru yang akan digunakan untuk menampilkan
informasi mengenai seluruh isi dari
database yang telah kita buat kita harus menggunakan sebuah intent dimana
intent tersebut akan mengarahkan kita ke halaman tertentu.
0 Response to "LAPORAN PRAKTIKUM PEMROGRAMAN MOBILE PERTEMUAN 14 Tentang Aplikasi dengan Database (MySQL)"
Post a Comment