ADMIN
PEMBELIAN
Tidak
Sinkron
*Data pembelian hanya
tersimpan di SQLite di device
ADMIN
admin pembelian
PENJUALAN
Contohnya : Sistem Pemesanan Makanan di 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
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.
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 <string>
provinsi (string>
1. URL untuk 2. URL untuk mengirim
akses API request API
3. Form Data
5. Status Response
4. Response API
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
42
Pilih blank
activity,
Yang artinya
tampilan awal
aplikasi adalah
standar
43
MainActivity
44
Menambah Library volley.jar
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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
52
Lanjutan coding MainActivity.java
TabHost tabHost = getTabHost();
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);
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);
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","");
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","");
};
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();
}
}){
};
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;
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);
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();
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