Anda di halaman 1dari 94

Android Client Server

Danandjaya Saputra, S.T, M.Kom


Tujuan
Mempelajari tentang aplikasi
android (client) yang
databasenya diakses di sebuah
server
Mengapa kita harus
menyimpan data di
server ?
Data

• Data tidak bisa di share


• Data tidak bisa di akses
• Data tidak sinkron/terintegrasi
• Data tidak update secara realtime
Contohnya : Sistem Inventori Stok Barang

*Data penjualan hanya tersimpan


di SQLite di device admin
penjualan

ADMIN
PEMBELIAN
Tidak
Sinkron
*Data pembelian hanya
tersimpan di SQLite di device
ADMIN
admin pembelian
PENJUALAN
Contohnya : Sistem Pemesanan Makanan di Restoran

*Data stok makanan ready hanya


tersimpan di SQLite device admin
restoran

KONSUMEN
RESTORAN
Tidak
Sinkron
*Data pemesanan hanya
tersimpan di SQLite device ADMIN
konsumen restoran DAPUR RESTORAN
SOLUSINYA….!!!
Aplikasi Client Server Database

CLIENT D

CLIENT A SERVER
DATABASE

CLIENT B CLIENT C

Aplikasi client server terdiri dari minimal 2 perangkat komputer yang


terhubung pada jaringan, dimana 1 sebagai server dan 1 sebagai
client
Contohnya : Sistem Inventori Stok Barang

SERVER DB
ADMIN
PEMBELIAN

Sinkron

ADMIN
PENJUALAN
Contohnya : Sistem Pemesanan Makanan di Restoran

SERVER DB
KONSUMEN
RESTORAN

Sinkron

ADMIN
DAPUR RESTORAN
GAMBARAN ARSITEKTUR CLIENT SERVER
CLIENT SERVER
2
1 KOMUNIKASI
HTTP

3 4
5
JSON

API DATABASE

NETWORK (LAN/MAN/WAN)
2 KOMUNIKASI HTTP
HTTP merupakan komunikasi yang menghubungkan
server dengan perangkat-perangkat lain (client) yang
ingin mengakses sumber daya (data) di dalam server
tersebut.

Library HTTP untuk android :


3 API (APPLICATION PROGRAMMING INTERFACE) / WEBSERVICE
API/Web Service yang dimaksud merupakan sebuah
program di sisi server yang menjembati permintaan
atau respon data dari client ke database.

Teknologi bahasa pemrograman untuk buat API :


4 DATABASE MANAGEMENT SYSTEM
Database management system merupakan
software untuk menyimpan database.

Database yang bisa digunakan :


5 JSON (JavaScript Object Notation)
JSON adalah format pertukaran data yang ringan,
serta mudah diterjemahkan dan dibuat
(generate) oleh komputer.

Contoh format JSON :


PRAKTIKUM
APLIKASI CLIENT SERVER DATABASE

STUDI KASUS : Aplikasi pencatatan penduduk


APLIKASI DATA PENDUDUK (APDAPEN)
Aplikasi pencatatan data penduduk ini dapat menginput/daftar data
penduduk, mengecek data penduduk berdasarkan no.KTP yang sudah di
daftarkan, menampilkan list berita dan set ip server database.

Wireless SERVER (LAPTOP ANDA)


Connection API : Apache dan PHP
Bisa pakai DATABASE : MySQL
APLIKASI DATA Tethering (cukup install XAMPP)
PENDUDUK hp/router
(ANDROID) lainnya
INTERFACE APLIKASI
PERSIAPAN SOFTWARE
1. XAMPP
2. MYSQL FRONT
3. POSTMAN
4. ECLIPSE
TAHAP 1
MEMBUAT DATABASE
DI MYSQL SERVER
Adapun langkah-langkahnya, yaitu:
1. Jalankan modules Apache dan MySQL pada XAMPP dengan
menekan tombol start sampai berubah menjadi stop
2. Buka tools MySQL Front
3. Buat Database baru dengan cara seperti dibawah ini :

Klik kanan
4. Isi nama databasenya dengan Name : dbsensus

jIka sudah..Klik OK
5. Selanjutnya di dbsensus, kita akan membuat 2 tabel, dengan
mengikuti struktur dibawah ini

NAMA TABEL FIELD / KOLOM TIPE DATA SIZE KEY

noktp VARCHAR 25 PRIMARY KEY


t_penduduk nama VARCHAR 100
provinsi VARCHAR 100

NAMA TABEL FIELD / KOLOM TIPE DATA SIZE KEY

Id INT 11 PRIMARY KEY


t_berita judul VARCHAR 100
konten VARCHAR 255
Hasil Pembuatan Tabel t_penduduk
Hasil Pembuatan Tabel t_berita
TAHAP 2
MEMBUAT API/WEBSERVICE APLIKASI
DATA PENDUDUK
MENGGUNAKAN PHP
1. Buat folder webservice di dalam folder C:\xampp\htdocs
2. Ketik coding dibawah ini, kemudian simpan didalam folder
webservice dengan nama dbconfig.php
3. Ketik coding dibawah ini, kemudian simpan didalam folder
webservice dengan nama cek.php
4. Ketik coding dibawah ini, kemudian simpan didalam folder
webservice dengan nama daftar.php
5. Ketik coding dibawah ini, kemudian simpan didalam folder
webservice dengan nama berita.php
6. Sehingga ke-4 File yang dibuat sebelumnya menjadi seperti
dibawah ini, yang berada di dalam folder webservice
7. Lakukan API Testing dengan menggunakan aplikasi Postman (dari
laptop) atau Rest API Client dari HP android anda (Download
Playstore) untuk menguji apakah API/Web Service yang kita buat
berfungsi dengan baik.
Berikut ini adalah daftar URL untuk mengakses API yang dibuat
sebelumnya

1. REQUEST UNTUK MENGAMBIL DATA BERITA


URL http://[IP SERVER API]/webservice/berita.php
METHOD GET
FORM-DATA TIDAK ADA

2. REQUEST UNTUK CEK KTP TERDAFTAR ATAU TIDAK


URL http://[IP SERVER API]//webservice/cek.php
METHOD GET
FORM-DATA noktp <string>
3. REQUEST UNTUK MENYIMPAN DATA PENDUDUK
URL http://[IP SERVER API]//webservice/daftar.php
METHOD GET
FORM-DATA noktp <string>

nama <string>

provinsi (string>
1. URL untuk 2. URL untuk mengirim
akses API request API

3. Form Data

5. Status Response
4. Response API

Cara Menggunakan POSTMAN


TAHAP 3
Membuat Aplikasi Android
BUATLAH PROJECT BARU

2 3

1. Klik File
2. Klik New
3. Klik Android Project
39
AplikasiDataPenduduk

40
CENTANG
SEMUA
OPSI SESUAI
TANDA PANAH

41
Klik Browse untuk memilih gambar

Pilih gambar icon


aplikasi anda,
Format bisa JPG dan
PNG, Resolusi
ukuran bebas

42
Pilih blank
activity,
Yang artinya
tampilan awal
aplikasi adalah
standar

43
MainActivity

44
Menambah Library volley.jar

Library Volley merupakan merupakan produk yang


diperkenalkan oleh Google untuk mempermudah pertukaran
data melalui komunikasi HTTP tanpa harus membuat deretan
kode yang sangat panjang.

Cara menambah library volley


• Copy file volley.jar
• Kemudian paste di dalam folder libs pada project di eclipse
Copy kemudian paste
Di folder libs
Tambahkan Permission pada
AndroidManifest.xml

Klik File
AndroidManifest.xml
Tambahkan coding dibawah ini :
<uses-permission android:name="android.permission.INTERNET" />
Modifikasi
MainActivity.java
Buka dan ketik coding activity_main.xml seperti di bawah ini
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>

50
Lanjutan coding activity_main.xml
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</LinearLayout>
</TabHost>

Finish, selanjutnya
51
Buka dan ketik coding MainActivity.java seperti di bawah ini
package com.example.aplikasidatapenduduk;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.app.TabActivity;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class MainActivity extends TabActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

52
Lanjutan coding MainActivity.java
TabHost tabHost = getTabHost();

TabSpec cekSpec = tabHost.newTabSpec("Cek");


cekSpec.setIndicator("Cek",null);
Intent cekIntent = new Intent(this, CekActivity.class);
cekSpec.setContent(cekIntent);
tabHost.addTab(cekSpec);

TabSpec daftarSpec = tabHost.newTabSpec("Daftar");


daftarSpec.setIndicator("Daftar",null);
Intent daftarIntent = new Intent(this, DaftarActivity.class);
daftarSpec.setContent(daftarIntent);
tabHost.addTab(daftarSpec);

53
Lanjutan coding MainActivity.java
TabSpec beritaSpec = tabHost.newTabSpec("Berita");
beritaSpec.setIndicator("Berita",null);
Intent beritaIntent = new Intent(this, BeritaActivity.class);
beritaSpec.setContent(beritaIntent);
tabHost.addTab(beritaSpec);

TabSpec configSpec = tabHost.newTabSpec("Config");


configSpec.setIndicator("Config",null);
Intent configIntent = new Intent(this, ConfigIpServerActivity.class);
configSpec.setContent(configIntent);
tabHost.addTab(configSpec);

tabHost.setCurrentTab(0);
}
} Jika ada yang error pada baris activity tertentu abaikan saja,
karena belum buat activitynya
Finish, selanjutnya,
54
Tambahkan
CekActivity.java
Tambahkan activity baru dengan nama CekActivity.java

56
Ketik coding activity_cek.xml seperti di bawah ini
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="18dp"
android:paddingLeft="18dp"
android:paddingRight="18dp">
<TextView
android:id="@+id/TextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Masukan No KTP anda :"
android:textSize="18dp" />
<EditText
android:id="@+id/EditTextNoKTP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"
android:layout_below="@+id/TextView1"/>

57
Lanjutan coding activity_cek.xml
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/EditTextNoKTP">
<Button
android:id="@+id/buttonSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Search" />
</LinearLayout>

</RelativeLayout>

Finish, selanjutnya
58
Ketik coding CekActivity.java seperti di bawah ini
package com.example.aplikasidatapenduduk;

import java.util.HashMap;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

59
Lanjutan coding CekActivity.java
public class CekActivity extends Activity {

SharedPreferences sp;
EditText EditTextNoKTP;
Button buttonSearch;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cek);

sp = getSharedPreferences("apdapen", MODE_PRIVATE);

EditTextNoKTP = (EditText) findViewById(R.id.EditTextNoKTP);


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

60
Lanjutan coding CekActivity.java
buttonSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
cekNoKTP();
}catch(RuntimeException e){
Toast.makeText(CekActivity.this, e.getMessage(),Toast.LENGTH_LONG).show();
}
}
});
}

61
Lanjutan coding CekActivity.java
private void cekNoKTP(){
final String noktp = EditTextNoKTP.getText().toString();
final String ip_address_server = sp.getString("ip_address_server","");

StringRequest stringRequest = new StringRequest(Request.Method.POST,


"http://"+ip_address_server+"/webservice/cek.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.equals("ada")){
Toast.makeText(CekActivity.this, "No. KTP Sudah
Terdaftar",Toast.LENGTH_LONG).show();
}else if(response.equals("tidak")){
Toast.makeText(CekActivity.this, "No. KTP Belum
Terdaftar",Toast.LENGTH_LONG).show();
}
}
},
62
Lanjutan coding CekActivity.java
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(CekActivity.this,error.toString(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put("noktp", noktp);
return params;
}
};

RequestQueue requestQueue = Volley.newRequestQueue(this);


requestQueue.add(stringRequest);
} Finish, selanjutnya
}
63
Tambahkan
DaftarActivity.java
Tambahkan activity baru dengan nama DaftarActivity.java

65
Ketik coding activity_daftar.xml seperti di bawah ini
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="18dp"
android:paddingLeft="18dp"
android:paddingRight="18dp">
<TextView
android:id="@+id/TextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="No KTP :"
android:textSize="18dp" />
<EditText
android:id="@+id/EditTextNoKTP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"
android:layout_below="@+id/TextView1"/>

66
Lanjutan coding activity_daftar.xml
<TextView
android:id="@+id/TextView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Nama Lengkap :"
android:textSize="18dp"
android:layout_below="@+id/EditTextNoKTP" />
<EditText
android:id="@+id/EditTextNama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"
android:layout_below="@+id/TextView2"/>
<TextView
android:id="@+id/TextView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Asal Provinsi :"
android:textSize="18dp"
android:layout_below="@+id/EditTextNama"/>
67
Lanjutan coding activity_daftar.xml
<Spinner
android:id="@+id/spinnerProvinsi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"
android:drawSelectorOnTop="true"
android:layout_below="@+id/TextView3" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/spinnerProvinsi">
<Button
android:id="@+id/buttonSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Save" />

68
Lanjutan coding activity_daftar.xml
<Button
android:id="@+id/buttonClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Clear" />
</LinearLayout>
</RelativeLayout>

Finish, selanjutnya

69
Ketik coding DaftarActivity.java seperti di bawah ini
package com.example.aplikasidatapenduduk;

import java.util.HashMap;
import java.util.Map;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
70
Lanjutan coding DaftarActivity.java
public class DaftarActivity extends Activity {

SharedPreferences sp;
EditText EditTextNoKTP, EditTextNama;
Spinner spinnerProvinsi;
Button buttonSave, buttonClear;
String[] provinsi = { "KEPULAUAN RIAU", "DKI JAKARTA", "JAWA BARAT", "SUMATERA BARAT" };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daftar);

sp = getSharedPreferences("apdapen", MODE_PRIVATE);

71
Lanjutan coding DaftarActivity.java
EditTextNoKTP = (EditText) findViewById(R.id.EditTextNoKTP);
EditTextNama = (EditText) findViewById(R.id.EditTextNama);
spinnerProvinsi = (Spinner) findViewById(R.id.spinnerProvinsi);
buttonSave = (Button) findViewById(R.id.buttonSave);
buttonClear = (Button) findViewById(R.id.buttonClear);
ArrayAdapter<String> spinnerAdapter = new
ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, provinsi);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerProvinsi.setAdapter(spinnerAdapter);

buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
simpanPendafataran();
}catch(RuntimeException e){
Toast.makeText(DaftarActivity.this, e.getMessage(),Toast.LENGTH_LONG).show();
}
}
});
72
Lanjutan coding DaftarActivity.java
buttonClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditTextNoKTP.setText("");
EditTextNama.setText("");
spinnerProvinsi.setSelection(0);
}
});
}

73
Lanjutan coding DaftarActivity.java
private void simpanPendafataran(){
final String noktp = EditTextNoKTP.getText().toString();
final String nama = EditTextNama.getText().toString();
final String provinsi = spinnerProvinsi.getSelectedItem().toString();
final String ip_address_server = sp.getString("ip_address_server","");

StringRequest stringRequest = new StringRequest(Request.Method.POST,


"http://"+ip_address_server+"/webservice/daftar.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.equals("berhasil")){
Toast.makeText(DaftarActivity.this, "Data Penduduk Berhasil Di
Daftar",Toast.LENGTH_LONG).show();
}else if(response.equals("gagal")){
Toast.makeText(DaftarActivity.this, "Data Penduduk Gagal Di
Daftar",Toast.LENGTH_LONG).show();
}
}
},
74
Lanjutan coding DaftarActivity.java
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(DaftarActivity.this,error.toString(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put("noktp", noktp);
params.put("nama", nama);
params.put("provinsi", provinsi);
return params;
}

};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);

}
} Finish, selanjutnya
75
Tambahkan
BeritaActivity.java
Selanjutnya tambahkan activity baru dengan nama BeritaActivity.java

77
Ketik coding activity_berita.xml seperti di bawah ini
<RelativeLayout 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:paddingTop="18dp"
android:paddingLeft="18dp"
android:paddingRight="18dp"
tools:context=".BeritaActivity" >

<ListView
android:id="@+id/listview_berita"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20px"/>
</RelativeLayout>

Finish, selanjutnya
78
Ketik coding BeritaActivity.java seperti di bawah ini
package com.example.aplikasidatapenduduk;

import java.util.HashMap;
import java.util.Map;

import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.SharedPreferences;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

79
Lanjutan coding BeritaActivity.java
import com.android.volley.Request.Method;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

80
Lanjutan coding BeritaActivity.java
public class BeritaActivity extends Activity {

SharedPreferences sp;
ListView ListViewBerita;
String[] id;
String[] judul;
String[] konten;
String[] data_berita;
ProgressDialog progressDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_berita);

sp = getSharedPreferences("apdapen", MODE_PRIVATE);
ListViewBerita = (ListView) findViewById(R.id.listview_berita);

81
Lanjutan coding BeritaActivity.java
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Please wait...");
progressDialog.setCancelable(false);

loadDataBerita();
}

82
Lanjutan coding BeritaActivity.java
private void loadDataBerita(){
final String ip_address_server = sp.getString("ip_address_server","");
progressDialog.show();
StringRequest stringRequest = new StringRequest("http://"+ip_address_server+"/webservice/berita.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
showBerita(response);
progressDialog.dismiss();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
Toast.makeText(BeritaActivity.this, "Error1: " + error.toString(),Toast.LENGTH_LONG).show();
}
}){
};

RequestQueue requestQueue = Volley.newRequestQueue(this);


requestQueue.add(stringRequest);
}
83
Lanjutan coding BeritaActivity.java
private void showBerita(String json){
JSONArray jsonberita = null;
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(json);
jsonberita = jsonObject.getJSONArray("data");

id = new String[jsonberita.length()];
judul = new String[jsonberita.length()];
konten = new String[jsonberita.length()];
data_berita = new String[jsonberita.length()];

for(int i=0;i<jsonberita.length();i++){
JSONObject jo = jsonberita.getJSONObject(i);
id[i] = jo.getString("id");
judul[i] = jo.getString("judul");
konten[i] = jo.getString("konten");
data_berita[i] = id[i] + "\n" + judul[i]+"\n" + konten[i];
}
ListViewBerita.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, data_berita));

84
Lanjutan coding BeritaActivity.java
} catch (JSONException e) {
progressDialog.dismiss();
Toast.makeText(BeritaActivity.this, "Error2: " + e.toString(),Toast.LENGTH_LONG).show();
}

@Override
public void onResume(){
super.onResume();
try{
loadDataBerita();
}catch(RuntimeException e){
e.printStackTrace();
}
}
} Finish, selanjutnya
85
Tambahkan
ConfigIpServerActivity.java
Tambahkan activity baru dengan nama ConfigIpServerActivity.java

87
Ketik coding activity_config_ip_server.xml seperti di bawah ini
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="18dp"
android:paddingLeft="18dp"
android:paddingRight="18dp">
<TextView
android:id="@+id/TextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Masukan Alamat IP Server :"
android:textSize="18dp" />
<EditText
android:id="@+id/EditTextIpServer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"
android:layout_below="@+id/TextView1"/>

88
Lanjutan coding activity_config_ip_server.xml
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/EditTextIpServer">
<Button
android:id="@+id/buttonSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Save" />
</LinearLayout>

</RelativeLayout>

Finish, selanjutnya
89
Ketik coding ConfigIpServerActivity.java seperti di bawah ini
package com.example.aplikasidatapenduduk;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ConfigIpServerActivity extends Activity {

SharedPreferences sp;
EditText EditTextIpServer;
Button buttonSave;

90
Lanjutan coding ConfigIpServerActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_config_ip_server);

sp = getSharedPreferences("apdapen", MODE_PRIVATE);

EditTextIpServer = (EditText) findViewById(R.id.EditTextIpServer);


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

TampilIpServer();

91
Lanjutan coding ConfigIpServerActivity.java
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
String ip_address_server = EditTextIpServer.getText().toString();

SharedPreferences.Editor editor = sp.edit();


editor.putString("ip_address_server", ip_address_server );
editor.commit();
Toast.makeText(getApplicationContext(), "IP ADDRESS SERVER SEKARANG " +
ip_address_server, Toast.LENGTH_LONG).show();
}catch(RuntimeException e){
Toast.makeText(ConfigIpServerActivity.this,
e.getMessage(),Toast.LENGTH_LONG).show();
}
}
});
}
92
Lanjutan coding ConfigIpServerActivity.java
public void TampilIpServer(){
try{
String ip_address_server = sp.getString("ip_address_server","");
EditTextIpServer.setText(ip_address_server);
}catch(NullPointerException e){
e.printStackTrace();
}catch(RuntimeException e){
e.printStackTrace();
}
}
}

Finish, selanjutnya
93
TESTING APLIKASI
1. AKTIFKAN HOTSPOT/ ROUTER HANDPHONE
2. KONEKSIKAN LAPTOP YANG AKAN DI JADIKAN
SERVER KE HOTSPOT/ ROUTER HANDPHONE
3. LIHAT IP ADDRESS LAPTOP
4. BUKA APLIKASI ANDROIDNYA, MASUKAN IP
ADDRESS LAPTOP PADA MENU CONFIG TERLEBIH
DAHULU
5. SELESAI, SILAHKAN INPUT DAFTAR PENDUDUK DAN
CEK

Anda mungkin juga menyukai