Anda di halaman 1dari 141

ANDROID FAST TRACK

Tentang Penulis
Agus Haryanto, MKOM
http:agusharyanto!net
"agus#ino$ator
agus!super%riter"g&ail!'o&
()*+,-,..-++
/uara . In0osat M. An0roi0 Appli'ation Contest
/uara , 11D23ID Challenge 1la'45erry Appli'ation
67e5%or4s8
/uara Harapan Ko&petisi An0roi0 T9Mar4et 6Telesin0o8
ANDROID FAST
ANDROID FAST
TRACK
TRACK
A:;S HAR<ANTO A:;S HAR<ANTO
CONTE NTS
Preface........................................................................................... vii

Pengenalan Android ........................................................................9
Kenalan dengan Android.............................................................9
Instalasi Android.......................................................................10
Project Android pertama...........................................................11

Pengenalan User Interface ............................................................19
Mengenal Layout...................................................................... 19
Mengenal ie!........................................................................."#

Android $ata%ase &'LI().............................................................*"
&'LI()...................................................................................... *"
Kamus (iga +a,asa -./U$0......................................................**

Android 1oogle Map...................................................................... 21
Menampil3an $ata 1P&............................................................21
Menampil3an Map pada Android...............................................29
Menampil3an $irection pada Map ..........................................10*

Android P4P My&'L..................................................................... 115
./U$ Android P4P Mys6l........................................................115

Penutup....................................................................................... 1*"
&emangat............................................................................... 1*"
&eminar 7or3s,op Android.....................................................1*"
/eferensi................................................................................ 1**
v 8 Android 9ast (rac3
PR E FA C E
Android %egitu fenomenal diusianya masi, muda suda,
mampu mendominasi pasar smartp,one dunia. +agi pengem:
%ang apli3asi itu adala, pasar yang %esar untu3 apli3asinya.
Untu3 mem%uat apli3asi android tida3la, sesulit yang di%ay:
ang3an. &yarat utamanya 3ita ,arus menguasai dasar java
dan 3onsep o%ject orientedya -;;P0. Pada %u3u Android Fast
Track ini a3an mem%a,as %agian:%agian penting dalam
pem%uatan apli3asi Android meliputi Pengenalan dasar pem:
%uatan apli3asi android< pengenalan cara mengguna3an data:
%ase s6lite android< pengenalan cara mengguna3an Map API #
untu3 mengem%ang3an apli3asi android yang mengguna3an
peta. Pengenalan cara mem%uat apli3asi android yang datan:
ya tersimpan di server
+u3u ini tentunya masi, jau, dari sempurna. Untu3 itu
apa%ila ada masu33an langsung saja email 3e
agus.superwriter@gmail.com. Untu3 meli,at tutorial android
lainnya dapat %er3unjung 3e situs http://agusharyanto.net
Untu3 3ampus atau se3ola, yang %erminat
mengada3an seminar atau !or3s,op android atau lainnya
%isa ,u%ungi saya di email agus.super!riter=gmail.com
<t!itter =agus>inovator atau di 02??:1000:***. K,usus un:
tu3 luar 3ota %iaya transportasi dan a3omodasi ditanggung
penyelenggara acara.
vii

PENGENALAN
ANDROID
KENALAN DENGAN ANDROI D
Sebelum melangkah lebih jauh, alangkah baiknya jika kita men-
genal apa itu android. Android adalah Sistem Operasi yang dikem-
bangkan dan dipopulerkan oleh Google. Andy Rubin dapat kita sebut
sebagai otak utama dibalik OS android ini. Pada awalnya perkemban-
gan OS Android ini kurang begitu bagus, Hal ini membuat Google
turun tangan dengan turut melahirkan ponsel Google Android per-
tama yang legendaris yang dikenal dengan nama Nexus One. i
!e"us One ini Google menunjukkan kemampuan android yang
sebenarnya dan hasilnya luar biasa, tanggapan pasar begitu bagus.
Hal inilah yang mendorong minat perusahaan-perusahaan
Smarthone bersemangat untuk membuat Smartphone dengan OS
Android. an hasilnya dapat dilihat saat ini android menguasai pasar
Smartphone unia dengan dipimpin oleh Samsung dengan seri
Gala"ynya.
#erikut saya tampilkan data analisis dari Gartner.
1
A@$/;I$ 9A&( (/A.K
Ada Sistem Operasi berarti ada aplikasi yang dapat kita buat di
dalamnya. Pada Android $ast %ra&k ini kami men&oba mengenalkan
&ara membuta aplikasi pada android, disini metode yang diterapkan
akan lebih banyak praktek.
INSTALASI ANDROI D
Sebelum memulai membuat aplikasi android tentunya kita harus
mempersiapkan so'twarenya terlebih dahulu.
Step (nstalaasi )
*. ownload +a,a *.- dari ora&le.&om
http)..www.ora&le.&om.te&hnetwork.ja,a.ja,ase.downloads.i
nde".html lalu install.
/. ownload 0&liplse #undle 10&lipse 2 A% 2 Android S3 Plat-
'orm4 dari de,eloper.andorid.&om
http)..de,eloper.android.&om.sdk.inde".html5win-bundle
6. 7n8ip 'ile yang didownload ke direktori yang kita inginkan mis-
alanya 9&):de,elopment;
<. (nstalasi Selesai. 7ntuk menjalankannnya, masuk ke direktori
e&lipse dari 'ile yang diun8ip lalu jalankan eclipse
=. 7ntuk mendownload Plat'orm android lainnya, jalankan SDK-
Manager
,( 8 Pengenalan Android
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
7ntuk Spesi'ikasi Hardwarenya agar terasa nyaman waktu de,elop
aplikasi sebaikanya gunakan komputer dengan pro&essor &ore i6
keatas dan memori <G#
PROJECT ANDROI D PERTAMA
alam hidup selalu ada yang pertama, demikian juga dengan be-
lajar. 3ali ini kita akan membuat proje&t Android Pertama kita.
*. Pada e&lipse dibagian toolbar klik !ew
/. Pada jendela yang tanpil, klik 'older Android, lalu pilih
Android Application Project lalu klik !e"t
6. (silah isian pada jendela !ew Android Appli&ation
Field Keterangan
Appli&ation !ame !ama Aplikasi. >ang akan terlihat pada (&on
?aun&her Aplikasi.
Proje&t !ame !ama Proje&t. !ama Proje&t ini boleh beda
,, 8 Pengenalan Android
A@$/;I$ 9A&( (/A.K
dengan nama Aplikasi.
Pa&kage !ame !ama pa&kage aplikasi kita, biasanya diawali
dengan domain@organisasi lalu nama aplikasi.
Aisalnya net.agusharyanto.myirstapp
Ainimum ReBuired S3 Ainimum S3 yang diperbolehkan untuk
menjalankan aplikasi.
%arget S3 %arget S3 yang akan menjalakan Aplikasi.
Compile Dith Aplikasi akan di &ompile dengan S3 ,ersi ini.
%heme %heme yang akan dipakai untuk de,elop
aplikasi.
3lik !e"t
<. Au&ul +endela untuk mengkon'igurasi proje&t, biarkan saja
dengan nilai de'ault. 3lik !e"t
=. Aun&ul +endela untuk mengatur (&on dari Aplikasi disini kita
harus menyiapkan (&on dengan ukuran 6/"6/, <E"<E, -/"-/,
*/E"*/E. +ika belum siap klik !e"t saja.
F. Pada jendela A&ti,ity pilih #lank A&ti,ity lalu klik !e"t
-. Pada jendela #lank A&ti,ity, kita bisa menentukan nama A&ti,-
ity dan layoutnya, untuk awal kita gunakan suja nilai yang su-
dah ada 1de'ault4 lalu klik $inish
Setelah selesai, maka kita sudah berhasil membuat proje&t android
dan bisa langsung merun aplikasinya.
%etapi sebelumnya kita harus memperhatikan beberap 'ile dan direk-
tori yang ada pada proje&t kita.
AndroidManiest.xml
Pada 'ile ini kon'igurasi proje&tkita ditentukan, meliputi
e'ault A&ti,ity yang akan dijalankan pada saat aplikasi di-
jalankan
a'tar A&ti,ity dan Ser,i&e yang akan digunakan dalam aplikasi.
at'tar Permission
Ainimal S3 yang dapat menjalankan Aplikasi.
(&on Aplikasi.
,. 8 Pengenalan Android
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
src!
irektori sr&. adalah direktori dimana 'ile-'ile &lass ja,a aplikasi kita
disimpan
res.
irektory res adalah direktori dimana 'ile-'ile resour&e yang berkait-
an dengan aplikasi disimpan ada beberapa direktori penting dibawah
res. ini
layout/ direktori layout adalah tempat untuk menyimpan "ml
'ile layout user inter'a&e aplikasi.
values/ direktori ,alues adalah tempat untuk meyimpan 'ile "ml
resour&e yang berkaitan dengan "ml layout seperti String e'ini-
tion dan Color e'inition
drawable-***/ adalah direktori untuk menyimpna 'ile-'ile gam-
bar, suara dan lainnya yang digunakan dalam aplikasi.
,= 8 Pengenalan Android
A@$/;I$ 9A&( (/A.K
Setelah kita mengerti, mari kita run proje&tnya, &aranya adalah pada
dari menu e&lipse pilih Run ----G Run As ----G Android Appli&ation
,> 8 Pengenalan Android
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
+ika belum ada 0mulator AHnya kita bisa menambahkan melalu
menu Dindow ---G AH Aanager
%erlihat kita sudah berhasil menjalankan proje&t kita.
ari mana tulisan 9Hello worldI;
>ang pertama kita lihat adalah 'ile AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
package="net.agusharyanto.myfirstapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
,? 8 Pengenalan Android
A@$/;I$ 9A&( (/A.K
android:targetSdkVersion="17" />
<application
android:allo!ackup="true"
android:icon="@drawable/iclauncher"
android:la"el="@string/appname"
android:t#eme="@style/!pp"heme" >
<activit$

android:name="net.agusharyanto.myfirstapp.#ain!cti$ity
"
android:la"el="@string/appname" >
<intent-filter>
<action
android:name="android.intent.action.#!%&" />
<categor$
android:name="android.intent.category.'!(&)*+," />
</intent-filter>
</activit$>
</application>
</manifest>
Perhatikan disini a&ti,ity yang dieksekusi pertama kali adalah Aain-
A&ti,ity
Aari kita buka 'ile main@a&ti,ity.ja,a
package net%agus#ar$anto%m$firstapp&
import android%os%!undle&
import android%app%'ctivit$&
import android%vie%(enu&
public class (ain'ctivit$ extends 'ctivit$ )
*+verride
protected void onCreate,!undle
saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%acti$itymain.&
0
*+verride
public boolean onCreate+ptions(enu,(enu menu. )
// -nflate t#e menu& t#is adds items to t#e
,+ 8 Pengenalan Android
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
action "ar if it is present%
get(enu-nflater,.%inflate,/%menu%main1
menu.&
return true&
0
0
Perhatikan a&ti,ity@main."ml
</elative2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
xmlns:tools="http://schemas.android.com/tools"
android:la$out3idt#="matchparent"
android:la$out3#eig#t="matchparent"

android:padding!ottom="@dimen/acti$ity$erticalmargin
"

android:padding2eft="@dimen/acti$ityhori-ontalmargin
"

android:padding/ig#t="@dimen/acti$ityhori-ontalmargi
n"

android:padding4op="@dimen/acti$ity$erticalmargin"
tools:context=".#ain!cti$ity" >
<4extVie
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text="@string/hello_world" />
<//elative2a$out>
isini menggunakan relati,e layout yang didalamnya ada %e"tHiew
dari sinilah
android:text="@string/helloworld"
HelloDorld mun&ul, buka 'ile string."ml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="appname">($5irst'pp</string>
<string name="actionsettings">Settings</string>
<string name="hello_world">Hello world!</string>
,- 8 Pengenalan Android
A@$/;I$ 9A&( (/A.K
</resources>
,) 8 Pengenalan Android

PENGENALAN
USER INTERFACE
Sebelumnya kita sudah belajar membuat aplikasi sederhana pada
Android. Sekarang kita melangkah ke aplikasi yang lebih menarik,
yaitu aplikasi yang sudah menggunakan beberapa obje&t ,iew groups
dan ,iew.
MENGENAL LAYOUT
Pada Android layout memegang peranan penting terutama pada user
inter'a&e. alam layout biasany didalamnya terdiri dari satu atau le-
bih objek ,iew sehingga dapatlah disebut ?ayout adalah Hiew Group.
Ada beberapa layout yang berlaku di android.
"inear "ayout
?inear ?ayout sesuai dengan namanya digunakan untuk menyusun
,iew sa&ara linear ,erti&al atau hori8ontal.
Agar ?ebih memahaminya mari kita buat satu proje&t yang menggun-
akan linear layout
2
A@$/;I$ 9A&( (/A.K
*. #uat proje&t baru, isi kan parameter-parameternya seperti
dibawah ini
.( 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
$ield (si
Appli&ation !ame #elajar?inear?ayout
Proje&t !ame #elajar?inear?ayout
Pa&kage !ame net.agusharyanto.belajarlayout
Ainimum ReBuired
S3
Api E) Android /./ 1$royo4
%arget S3 Api *-) Android <./ 1+elly
#ean4
Compile Dith
Holo ?ight Dith ark A&tion
#ar
A&ti,ity !ame #elajar?inear?ayoutA&ti,ity
?ayout !ame main
/. #uka $ile main."ml kemudian ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<2inear2a$out
xmlns:android="http://schemas.android.com/apk/res/and
roid"
android:orientation="$ertical"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent">
<2inear2a$out
android:orientation="hori-ontal"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
android:la$out3eig#t="1">
<4extVie
android:text="#erah"
android:gravit$="centerhori-ontal"
android:"ackground=".aa0000"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="fillparent"
android:la$out3eig#t="1"/>
<4extVie
android:text="*i/au"
android:gravit$="centerhori-ontal"
., 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
android:"ackground=".00aa00"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="fillparent"
android:la$out3eig#t="1"/>
<4extVie
android:text="0iru"
android:gravit$="centerhori-ontal"
android:"ackground=".0000aa"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="fillparent"
android:la$out3eig#t="1"/>
<4extVie
android:text="1uning"
android:gravit$="centerhori-ontal"
android:"ackground=".aaaa00"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="fillparent"
android:la$out3eig#t="1"/>
</2inear2a$out>

<2inear2a$out
android:orientation="$ertical"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
android:la$out3eig#t="1">
<4extVie
android:text="0aris 3atu"
android:textSi6e="14pt"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:la$out3eig#t="1"/>
<7dit4ext android:id="@5id/+dit"e6t1"
android:text="0aris 7ua"
android:textSi6e="14pt"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:la$out3eig#t="1"/>
<!utton android:id="@5id/0utton1"
android:text="0aris "iga"
android:textSi6e="14pt"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:la$out3eig#t="1"/>
<4extVie
android:text="0aris +mpat"
android:textSi6e="14pt"
.. 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:la$out3eig#t="1"/>
</2inear2a$out>
</2inear2a$out>
Coba perhatikan kita ada tiga tag ?inear?ayout.
*. ?inear?ayout yang paling luar
android:orientation diset
vertical
, yang berarti setiap ,iew atau layout yang berada did-
alamnya akan disusn se&ara ,erti&al.
/. ?inear?ayout yang kedua berada didalam ?inear?ayout yang di-
luar,
android:orientation diset #ori6ontal
, yang berarti
setiap ,iew atau layout yang berada didalamnya akan disusun se&ara
hori8ontal
6. ?inear ?ayout yang ketiga juga berada didalam ?inear?ayout
yang diluar,
android:orientation diset vertical
yang be-
rarti setiap ,iew atau layout yang berada didalamnya akan disusun
se&ara ,erti&al
?inear?ayout yang paling luar bisa disebut parent dari ?inear?ayout
yang kedua dan ketiga.
isini kita juga mulai dikenalkan dengan beberapa tag baru yang
masuk kedalam golongan ,iew
%ag $ungsi
%e"tHiew 7ntuk menampilkan %e"t dalam bentuk label
0dit%e"t 7ntuk Aenampilkan (nputan %e"t
#utton
igunakan untuk menampilkan button atau
tombol.
iatas juga terlihat properti-properti 13alau kita biasa dengan H%A?
ini bisa disebut Atribut dan CSSnya4 yang melekat pada masing-mas-
ing ,iew.
Property 1Atribut4 'ungsi
android)id Aenetapkan id dari suatu ,iew
.= 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
android)te"t
Aenetapkan isi te"t yang akan dit-
ampilkan
Property 1CSS4 'ungsi
android)te"tSi8e Aenetapkan besar ukuran huru'
android)layout@width Aenetapkan lebar dari suatu ,iew
android)layout@height Aenetapkan tinggi dari suatu ,iew
android)layout@weight Aenunjukkan berapa banyak ru-
ang ekstra dalam ?inear?ayout
akan dialokasikan ke tampilan
yang terkait dengan ?ayout-
Params.
android)gra,ity Aenentukan tempat obje&t.,iew
pada suatu layout
Agar lebih memahami 'ungsi dari property-property diatas &obalah
ba&a ja,ado& android pada situs de,eloper.andorid.&om dan &oba ru-
bah nilainya.
6. #uka $ile #elajar?inear?ayoutA&ti,ity.ja,a
package com%namaku%linearla$out&
import android%app%'ctivit$&
import android%os%!undle&
public class !ela8ar2inear2a$out'ctivit$ extends
'ctivit$ )
/99 Called #en t#e activit$ is first created% 9/
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%main.&
0
0
<. Sekarang Aari kita jalankan proje&tnya
.> 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
#a$le"ayout
>ang namanya table pasti ada baris dan kolom, demikian juga
dengan %able?ayout ini, ,iew yang ada dalam layout ini akan disusun
berdasarkan baris dan kolomnya.dimana ada %able?ayout maka did-
alamnya akan ada %ableRow
TableRow adala# c#ild dari 4a"le2a$out% Setiap Satu
4a"le/o merupakan : "aris dalam ta"le%
;using $ang dengan teori1 $a# suda# kita langsung
praktek sa8a%
Aasih dengan proje&t yang tadi buat pada dire&tory res.layout
buat layout baru dengan nama tablelayout."ml
.? 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
<?xml version="1.0" encoding="utf-8"?>
<4a"le2a$out
xmlns:android="http://schemas.android.com/apk/res/and
roid"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
android:stretc#Columns="1">
<4a"le/o>
<4extVie
android:text="&ama"
android:padding="8dip"
android:"ackground=".0000!!"/>
<4extVie
android:text="&ilai"
android:gravit$="right"
android:padding="8dip"
android:"ackground=".0000!!" />
</4a"le/o>
<4a"le/o>
<4extVie
android:text="!gus"
android:padding="8dip" />
<4extVie
android:text="90"
android:gravit$="right"
android:padding="8dip" />
</4a"le/o>
<4a"le/o>
<4extVie
android:text=":ainal"
android:padding="8dip" />
<4extVie
android:text="80"
android:gravit$="right"
android:padding="8dip" />
</4a"le/o>
</4a"le2a$out>
Pada 'ile main."ml diatas terdapat * #a$le"ayout yang didalamnya
6 #a$le%o&, disetipa %ableRow masing-masing mempunya / #ex-
t'ie&, dari struktur &ode diatas maka akan terlihat sebuah table
yang mempunyai 6 baris dan / kolom.
.+ 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
buka 'ile #elajarAndroid?ayoutA&ti,ity.ja,a
package com%namaku%ta"lela$out&
import android%app%'ctivit$&
import android%os%!undle&
public class !ela8ar4a"le2a$out'ctivit$ extends
'ctivit$ )
/99 Called #en t#e activit$ is first created% 9/
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%tablelayout.&
0
0
Sekarang mari kita run proje&tnya
.- 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
!ah #etulkan hasilnya dalam bentuk table dangan 6 baris dan / ko-
lom.
%elati(e"ayout
Relati,e?ayout sesuai dengan namanya, disini kita dapat menen-
tukan posisi dari suatu ,iew berdasarkan sudut pandang parent atau
siblingnya.
Agar lebih mudah dimengerti mari kita buat proje&tnya
*. Aasih dengan proje&t yang tadi buat pada dire&tory res.layout
buat layout baru dengan nama relativelayout.xml
<?xml version="1.0" encoding="utf-8"?>
</elative2a$out
xmlns:android="http://schemas.android.com/apk/res/and
roid"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:"ackground=".004400"
android:padding="10p6" >
<4extVie android:id="@5id/label"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="%si ;esan:" />
<7dit4ext android:id="@5id/entry"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"

android:"ackground="@android:drawable/editbo6backgro
und"
android:la$out3"elo="@id/label" />

<!utton android:id="@5id/kirim"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:la$out3"elo="@id/entry"
android:la$out3align;arent/ig#t="true"
android:la$out3margin2eft="10p6"
android:text="1irim" />
.) 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
<!utton android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:la$out3to2eft+f="@id/kirim"
android:la$out3align4op="@id/kirim"
android:text=")ancel" />
<//elative2a$out>
/. #uka 'ile #elajarAndroid?ayoutA&ti,ity.ja,a
package com%agus%relativela$out&
import android%app%'ctivit$&
import android%os%!undle&
public class !ela8ar'ndroid2a$out'ctivit$ extends
'ctivit$ )
/99 Called #en t#e activit$ is first created% 9/
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentiew!R"la#out"relativelayout$%
0
}
6. Sekarang mari kita run proje&tnya
.* 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
A$solute"ayout
Absolute ?ayout dapat digunakan untuk meletakkan ,iew sesuai
dengan posisi yang kita inginkan.
Aasih dengan proje&t yang tadi buat pada dire&tory res.layout buat
layout baru dengan nama absolutelayout."ml
<&xml version=<:%=< encoding=<utf-><&>
<'"solute2a$out
android:la$out3idt#=<fill3parent<
android:la$out3#eig#t=<fill3parent<

xmlns:android=<#ttp://sc#emas%android%com/apk
/res/android<
>
<'utton
android:la$out3idt#=<:>>px<
android:la$out3#eig#t=<rap3content<
android:text=<!utton<
android:la$out3x=<:?@px<
android:la$out3$=<A@:px<
/>
<'utton
android:la$out3idt#=<::Apx<
android:la$out3#eig#t=<rap3content<
android:text=<!utton<
android:la$out3x=<:?px<
android:la$out3$=<A@:px<
/>
</'"solute2a$out>
#uka 'ile #elajarAndroid?ayoutA&ti,ity.ja,a
package com%agus%relativela$out&
=( 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
import android%app%'ctivit$&
import android%os%!undle&
public class !ela8ar'ndroid2a$out'ctivit$ extends 'ctivit$ )
/99 Called #en t#e activit$ is first created% 9/
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%absolutelayout.&
0
J
Sekarang mari kita run proje&tnya
=, 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
MENGENAL VI EW
Sebelumnya kita telah belajar tentang layout pada android disitu me-
lihat ada %e"tHiew, #utton dan lain-lain. !ah %e"tHiew, #utton dan
kawan-kawannya itu kalau diandroid disebut sebagai Hiew, Hiew ini
adalah komponen-komponen yang membentuk user inter'a&e pada
aplikasi android.
3ita bisa mengelompokkan ,iew ini dalam beberapa group.
#asi& Hiews, biasanya ini yang umum atau sering digunakan seperti
%e"tHiew, 0dit%e"t dan #utton
Pi&ker Hiews, biasanya berupa pilihan untuk menginputkan ate
dan %ime seperti atePi&ker dan %imePi&ker.
?ist Hiews, biasanya menampilkan da'tar pilihan yang panjang sep-
erti ?istHiew dan Spinner Hiew
isplay Hiews K ,iew yang digunakan untuk menampilkan gambar
seperti Gallery dan (mageSwit&her ,iews.
Aenus K ,iews yang menampilkan tambahan menu ataupun &onte"t
menu
Additional Hiews seperti AnalogClo&k dan igitalClo&k
)asic 'ie&
Pada Seksi ini, kita akan membahas basi& ,iew pada android, untuk
meudahkan saya akan menjelaskanya dalam bentuk table
%e"tHiew
0dit%e"t
#utton
(mage#utton
Che&k#o"
%oggle#utton
Radio#utton
RadioGroup
=. 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
Didget $ungsi
%e"tHiew sama seperti label pada SD(!G, yaitu
untuk menampilkan tulisan dilayar.
0dit%e"t
sama seperti %e"t#o" pada SD(!G, yaitu
untuk user menginputkan data
#utton Sama seperti #utton pada SD(!G yaiu
sebagai %rigger untuk menjalankan
suatu $ungsi
(mage#utton Sama 'ungsinya seperti #utton, #edanya
#utton ini didalamnya ada gambarnya
Che&k#o"
igunakan apabila ada pertanyaan pili-
han yang jawabannya bisa lebih dari satu
Radio #utton #iasanya digunakan untuk pilihan yang
jawabannya *
Radio Group 3umpulan dari Radio #utton
Sekarang mari kita &oba gunakan ,iew-,iew diatas kedalam aplikasi.
*. #uat !ew Android Proje&tnya
== 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
/. edit 'ile main."ml
=> 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
<?xml version="1.0" encoding="utf-8"?>
<2inear2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:orientation="$ertical"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
>

<!utton android:id="@5id/btn3a$e"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="3a$e"
/>
<!utton android:id="@5id/btn<pen"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text="<pen"
/>
<-mage!utton android:id="@5id/btn%mg1"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:src="@drawable/iclauncher"
/>
<7dit4ext android:id="@5id/t6t&ame"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
/>
<C#eck!ox android:id="@5id/chk!utosa$e"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="!utosa$e"
/>
<C#eck!ox android:id="@5id/star"
st$le="=android:attr/star3tyle"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
/>

</adioBroup android:id="@5id/rdb>p1"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:orientation="$ertical"
>
</adio!utton android:id="@5id/rdb1"
=? 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="<ption 1"
/>
</adio!utton android:id="@5id/rdb?"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="<ption ?"
/>
<//adioBroup>

<4oggle!utton android:id="@5id/toggle1"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
/>

</2inear2a$out>
Perhatikan id attribute yang mewakili udentitas dari setiap ,iew. 7n-
tuk mendeklarasika id pada sebuah ,iew harus diawali dengan
9L2id.; diikuti dengan nama yang ingin kita berikan
6. Sekarang mari kita jalankan proje&tnya
Coba kita sentuh beberapa view, hasilnya ada yang seperti ini
=+ 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
%etapi tentunya kita tidak ingin hanya ditampilan saja yang berubah.
%entunya kita ingin program juga dapat menangkap apa yang terjadi
pada user (nter'a&e.
=- 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
7ntuk itu mari kita buka otak dari proje&t kita, yaitu 'ile #elajar-
#asi&Hiew.ja,a
package net%agus#ar$anto%"asicvie&
import android%app%'ctivit$&
import android%os%!undle&
import android%vie%Vie&
import android%idget%!utton&
import android%idget%C#eck!ox&
import android%idget%/adioBroup&
import
android%idget%/adioBroup%+nC#eckedC#ange2istener&
import android%idget%4oast&
import android%idget%4oggle!utton&
=) 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
public class !asicVie'ctivit$ extends 'ctivit$ )
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%main.&

//---!utton vie---
!utton "tn+pen = ,!utton.
findVie!$-d,/%id%btn<pen.&
"tn+pen%set+nClick2istener,new
Vie%+nClick2istener,. )
public void onClick,Vie v. )
4oast%make"e6t,get!aseContext,.1
<Cou #ave clicked t#e +pen
"utton<1
4oast%'+&>"*3*<,".%s#o,.&
0
0.&

!utton "tnSave = ,!utton.
findVie!$-d,/%id%btn3a$e.&
"tnSave%set+nClick2istener,new
Vie%+nClick2istener,.
)
public void onClick,Vie v. )
Displa$4oast,<Cou #ave clicked t#e Save
"utton<.&
0
0.&

//---C#eck!ox---
C#eck!ox c#eck!ox = ,C#eck!ox.
findVie!$-d,/%id%chk!utosa$e.&
c#eck!ox%set+nClick2istener,new
Vie%+nClick2istener,.
)
public void onClick,Vie v. )
i( ,,,C#eck!ox.v.%isC#ecked,..
Displa$4oast,<C#eck!ox is
c#ecked<.&
else
Displa$4oast,<C#eck!ox is
unc#ecked<.&
=* 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
0
0.&

//---/adio!utton---
/adioBroup radioBroup = ,/adioBroup.
findVie!$-d,/%id%rdb>p1.&
radioBroup%set+nC#eckedC#ange2istener,new
+nC#eckedC#ange2istener,.
)
public void onC#eckedC#anged,/adioBroup
group1 int c#ecked-d. )
//---displa$s t#e -D of t#e /adio!utton
t#at is c#ecked---

Displa$4oast,-nteger%to3tring,c#ecked-d..&
0
0.&

//---4oggle!utton---
4oggle!utton toggle!utton = ,4oggle!utton.
findVie!$-d,/%id%toggle1.&
toggle!utton%set+nClick2istener,new
Vie%+nClick2istener,.
)
public void onClick,Vie v. )
i( ,,,4oggle!utton.v.%isC#ecked,..
Displa$4oast,<4oggle "utton is
+n<.&
else
Displa$4oast,<4oggle "utton is
+ff<.&
0
0.&
0

private void Displa$4oast,String msg.
)
4oast%make"e6t,get!aseContext,.1 msg1
4oast%'+&>"*3*<,".%s#o,.&
0
0
>( 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
Oke mari kita perhatikan &ode by &odenya
!utton "tn+pen = ,!utton.
findVie!$-d,/%id%btn<pen.&
"tn+pen%set+nClick2istener,new
Vie%+nClick2istener,. )
public void onClick,Vie v. )
4oast%make"e6t,get!aseContext,.1
<Cou #ave clicked t#e +pen
"utton<1
4oast%'+&>"*3*<,".%s#o,.&
0
0.&
Agar sebuah ,iew bisa kita manipulasi 1merubah isi, atau men-
angkap e,ent4 perlu dida'tarkan di &ode a&ti,ity.
Contoh diatas kita menda'tarkan Hiew 1#utton4 dengan id $t-
nOpen kedalam sebuah ,ariable btnOpen. setelah itu kita bisa me-
nambahkan listener pada button tersebut, kalau pada &ode diatas
yang kita da'tarkan adalah setOn*lic+"istener. 0'ek yang terjadi
adalah apabila btnOpen diklik maka akan mengeksekusi perintah
yang ada pada method onCli&k. Pada kode diatas akan menampilkan
popup in'ormasi dalam bentuk #oast
7ntuk #utton lainnya dan ,iew lainnya silahkan di&oba sendiri.
an perhatikan pada method setOn&li&k dari masing-masing ,iew.
>, 8 Pengenalan User Interface
A@$/;I$ 9A&( (/A.K
>. 8 Pengenalan User Interface

ANDROID
DATABASE
SQLITE
Sebelumnya kita sudah belajar membuat aplikasi sederhana
pada Android, nah sekarang mari kita buat aplikasi yang lebih keren,
aplikasi yang menggunakan database SM?ite.
SQLITE
Seperti telah dijelaskan diatas database pada android menggun-
akan SM?ite. engan SM?ite untuk insert, update dan Buery data
dapat dilakukan dengan syntak SM?.
7ntuk itu sebelum melangkah pembuatan aplikasi Android yang
meman'atkan 'irtur SMlite databasenya, kita harus menguasai &ara
menggunakan SM?ite.
Sama seperti database lainnya syntak SM?nya terbagi / kategori
yaitu syntak untuk ata e'inition ?anguage 1?4 dan ata Aanip-
ulation ?anguage 1A?4. #agi yang pernah belajar database pasti
tidak asing dengan kedua istilah tersebut.
3
A@$/;I$ 9A&( (/A.K
Sekarang ada pertanyaan nih apa beda ? dan A? N
#iar mudah dipahami, kalau database itu kita ibaratkan sebuah
rumah, maka ? itu adalah synta" untuk membuat rumah, menam-
bah kamar, merubah bangunan rumah, makanya yang termasuk syn-
tak-syantak ? adalah &reate table, alter table, drop table.
sedangkan A? adalah synta" untuk mengetahui isi rumah,
siapa saja penghuninya, berapa jumlahnya, ada berapa yang pria dan
yang wanita, adakah anak-anak dirumah itu.
Aakanya yang termasuk syntak-syntak A? adalah insert, up-
date, delete, sele&t
7ntuk mengetahui lebih lanjut tentang sBlite bisa kunjungi SM?-
ite Home Page
KAMUS TI GA BAHASA (CRUD)
Sekarang mari kita buat proje&t yang menggunakan database
sBlite di android. ulu sebelum pakai android dihandphone yang
dulu pasati pernah install kamus inggris (ndonesia, yang kita gun-
akan untuk men&ari terjemahan suatu kata dalam bahasa indonesia
ke bahasa inggris dan jerman. Sebetulnya diandroid juga sudah ada
yang buat. %etapi tentunya akan lebih puas jika kita buat sendiri.
Goal dari Aplikasi ini adalah untuk memahami CR7 dbsBlite pada
Android.
#erikut langkah-langkahnya
>> 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
*. #uat proje&t baru android dengan nama 3amus
/. #uat Class baru dengan nama atabaseHelper.ja,a
package net%agus#ar$anto%kamus&
import android%content%ContentValues&
import android%content%Context&
import android%data"ase%sElite%SF2iteData"ase&
import android%data"ase%sElite%SF2ite+penGelper&
public class Data"aseGelper extends SF2ite+penGelper )
private static (inal String 7!"!0!3+&!#+ =
<d"kamus<&
public static (inal String %&>>,%3= <inggris<&
public static (inal String %&7<&+3%! =
<indonesia<&
public static (inal String @+,#!& = <H7/('N<&
//Constructor DataIamus untuk initiate data"ase
public Data"aseGelper,Context context. )
>? 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
super,context1 7!"!0!3+&!#+1 null1 :.&
0
//met#od create4a"le untuk mem"uat ta"le kamus
public void create4a"le,SF2iteData"ase d".)
d"%execSF2,<D/+; 4'!27 -5 7J-S4S kamus<.&
d"%execSF2,<C/7'47 4'!27 if not exists
kamus ,3id -N47B7/ ;/-('/C I7C 'K4+-NC/7(7N41 < L
<inggris 47J41 indonesia 47J41
8erman 47J4.&<.&
0
//met#od generateData untuk mengisikan data ke
kamus%
public void generateData,SF2iteData"ase d".)
ContentValues cv=new ContentValues,.&
cv%put,%&>>,%31 <run<.&
cv%put,%&7<&+3%!1 <lari<.&
cv%put,@+,#!&1 <laufen<.&
d"%insert,<kamus<1 %&>>,%31 cv.&
cv%put,%&>>,%31 <alk<.&
cv%put,%&7<&+3%!1 <8alan<.&
cv%put,@+,#!&1 <ge#en<.&
d"%insert,<kamus<1 %&7<&+3%!1 cv.&
cv%put,%&>>,%31 <read<.&
cv%put,%&7<&+3%!1 <mem"aca<.&
cv%put,@+,#!&1 <lesen<.&
d"%insert,<kamus<1 @+,#!&1 cv.&
0
*+verride
public void onKpgrade,SF2iteData"ase d"1 int
oldVersion1 int neVersion. )
// T)*) 'uto-generated met#od stu"
create4a"le,d".&
generateData,d".&
0
*+verride
public void onCreate,SF2iteData"ase d". )
// T)*) 'uto-generated met#od stu"
//4oast%make4ext,get!aseContext,.1
<+ncreate<1 4oast%27NB4G3SG+/4.%s#o,.&
create4a"le,d".&
generateData,d".&
>+ 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
0
0
Pada &lass inilah database dibuat dengan nama d$+amus, disini
table juga dibuat dengan nama +amus dan diisikan dengan beberapa
data.
6. 0dit 'ile a&ti,ity@main."ml pada direktori res.layout lalu ketikan
kode berikut
<?xml version="1.0" encoding="utf-8"?>
<2inear2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
android:orientation="$ertical" >
<4extVie
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="1amus %nggris %ndonesia @erman"
/>
<4extVie
android:id="@5id/"e6tAiew01"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text="%nggris :" >
</4extVie>
<7dit4ext
android:id="@5id/t6t%nggris"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="" >
<reEuest5ocus>
</reEuest5ocus>
</7dit4ext>
<!utton
android:id="@5id/btn"er/emah"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
>- 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
android:onClick="get"er/emahan"
android:text=""er/emahkan" >
</!utton>
<4extVie
android:id="@5id/"e6tAiew08"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text="%ndonesia :" >
</4extVie>
<7dit4ext
android:id="@5id/t6t%ndonesia"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:edita"le="false"
android:text="" >
</7dit4ext>
<4extVie
android:id="@5id/te6tAiew1"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text="@erman" >
</4extVie>
<7dit4ext
android:id="@5id/t6t@erman"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent" >
</7dit4ext>
</2inear2a$out>
isini untuk user inter'a&e menggunakan linear layout yang did-
alamnya ada tiga edit te"t dan satu button
<. 0dit 'ile AainA&ti,ity.ja,a yang ada apada direktori sr&. lalu
ketikan kode berikut
package net%agus#ar$anto%kamus&
import android%app%'ctivit$&
import android%data"ase%Cursor&
import android%data"ase%sElite%SF2iteData"ase&
import android%os%!undle&
>) 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
import android%vie%Vie&
import android%idget%7dit4ext&
import android%idget%4oast&
public class (ain'ctivit$ extends 'ctivit$ )

private SF2iteData"ase d" = null&
private Cursor kamusCursor = null&
private 7dit4ext txt-nggris&
private 7dit4ext txt-ndonesia&
private 7dit4ext txtHerman&
private Data"aseGelper datakamus = null&
public static (inal String %&>>,%3 = <inggris<&
public static (inal String %&7<&+3%! =
<indonesia<&
/99 Called #en t#e activit$ is first created%
9/
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
datakamus = new Data"aseGelper,t+is.&
d" = datakamus%getMrita"leData"ase,.&
setContentVie,/%la$out%acti$itymain.&
txt-nggris = ,7dit4ext.
findVie!$-d,/%id%t6t%nggris.&
txt-ndonesia = ,7dit4ext.
findVie!$-d,/%id%t6t%ndonesia.&
txtHerman = ,7dit4ext.
findVie!$-d,/%id%t6t@erman.&
0
public void get4er8ema#an,Vie vie. )
String "#sindonesia = <<&
String "#s8erman=<<&
String englis#ord =
txt-nggris%get4ext,.%toString,.&
kamusCursor = d"%raFuer$,<S727C4 3-D1
-NBB/-S1 -ND+N7S-'1 H7/('N <
L <5/+( kamus #ere -NBB/-S=N<
L englis#ord
L <N +/D7/ !C -NBB/-S<1 null.&
i( ,kamusCursor%move4o5irst,.. )
(or ,& OkamusCursor%is'fter2ast,.&
>* 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
kamusCursor%move4oNext,.. )
"#sindonesia =
kamusCursor%getString,?.&
"#s8erman =
kamusCursor%getString,A.&
0
0else)
4oast%make"e6t,get!aseContext,.1
<4er8ema#an 4idak ditemukan<1
4oast%'+&>"*3*<,".%s#o,.&
0
txt-ndonesia%set4ext,"#sindonesia.&
txtHerman%set4ext,"#s8erman.&
0
*+verride
public void onDestro$,. )
super%onDestro$,.&
tr# )
kamusCursor%close,.&
d"%close,.&
0catc+ ,7xception e.)
0
0
0
?( 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
=. Sekarang mari kita run proje&tnya
Pada isian (nggris ketikan run lalu klik button #erjemah+an.
Coba isi inggris diisi dengan sepatu lalu klik %erjemahkan
Coba inggris tidak diisi lalu klik %erjemahkan
F. Oke kita sudah berhasil membuat kamus, sekarang kita ingin
menampilkan kata-kata dalam database kedalam list.
-. #uat ?ayout baru dengan nama ro&.xml lalu ketikan kode
berikut
<?xml version="1.0" encoding="utf-8"?>
</elative2a$out
?, 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
android:orientation="hori-ontal"
android:padding!ottom="4sp"
android:padding4op="4sp" >
<4extVie
android:id="@5id/inggris"
android:la$out3idt#="100sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3align;arent2eft="true" />
<4extVie
android:id="@5id/indonesia"
android:la$out3idt#="100sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3to/ig#t+f="@5id/inggris" />
<4extVie
android:id="@5id//erman"
android:la$out3idt#="100sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3to/ig#t+f="@5id/indonesia" />
<//elative2a$out>
E. #uat ?ayout baru dengan nama datar+ata.xml lalu ketikan
kode berikut
<?xml version="1.0" encoding="utf-8"?>
</elative2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:la$out3idt#="matchparent"
android:la$out3#eig#t="matchparent" >
<4extVie
android:id="@5id/te6tAiew1"
android:la$out3idt#="100sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3align;arent2eft="true"
android:la$out3align;arent4op="true"
android:text ="%nggris"
?. 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
android:textSi6e="?0sp" />

<4extVie
android:id="@5id/te6tAiew?"
android:la$out3idt#="100sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3align;arent4op="true"
android:la$out3to/ig#t+f="@5id/te6tAiew1"
android:text ="%ndonesia"
android:textSi6e="?0sp" />
<4extVie
android:id="@5id/te6tAiew8"
android:la$out3idt#="100sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3align;arent4op="true"
android:la$out3to/ig#t+f="@5id/te6tAiew?"
android:text ="@erman"
android:textSi6e="?0sp" />
<2istVie android:id="@5id/list1"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:la$out3eig#t ="1"
android:la$out3align;arent2eft="true"
android:la$out3"elo="@5id/te6tAiew1"/>

<//elative2a$out>
O. #uat Class baru dengan nama Datar+ata.ja(a lalu ketikkan
kode berikut.
package net%agus#ar$anto%kamus&
import android%app%'ctivit$&
import android%content%Context&
import android%data"ase%Cursor&
import android%data"ase%sElite%SF2iteData"ase&
import android%os%!undle&
import android%util%2og&
import android%vie%2a$out-nflater&
import android%vie%Vie&
?= 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
import android%vie%VieBroup&
import android%idget%2istVie&
import android%idget%SimpleCursor'dapter&
import android%idget%4extVie&
public class DaftarIata extends 'ctivit$ )
private Data"aseGelper d"#elper&
private SF2iteData"ase d" = null&
private 2istVie listContent = null&
private Cursor kamusCursor = null&
CustomCursor'dapter adapter&
/99 Called #en t#e activit$ is first created% 9/
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
d"#elper = new Data"aseGelper,t+is.&
setContentVie,/%la$out%daftarkata.&
listContent = ,2istVie.
findVie!$-d,/%id%list1.&
isData2istVie,.&
0
private void isData2istVie,. )
tr# )
d" = d"#elper%getMrita"leData"ase,.&
kamusCursor = d"%Euer$,<kamus<1 new
StringPQ ) <3id<1 <inggris<1
<indonesia<1 <8erman< 01
<3id>=<1 null1 null1 null1 null.&
// start(anagingCursor, 8asaCursor.&
/9
9 Create an arra$ to specif$ t#e
fields e ant to displa$ in t#e
9 list ,onl$ t#e
Ninggris1indonesia18ermanN column in t#is case.
9/
StringPQ from = new StringPQ )
<inggris<1 <indonesia<1 <8erman< 0&
?> 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
/9
9 and an arra$ of t#e fields e ant
to "ind t#ose fieiplds to ,in
9 t#is case 8ust t#e textVie
Ninggris1indonesia18ermanN from our ne ro%xml
9 la$out a"ove.
9/
intPQ to = new intPQ ) /%id%inggris1
/%id%indonesia1 /%id%/erman 0&
/9 No create a simple cursor
adapter%% 9/
adapter = new
CustomCursor'dapter,t+is1 /%la$out%row1 kamusCursor1
from1 to.&
// listVie%set'dapter,adapter.&
listContent%set'dapter,adapter.&
0 catc+ ,7xception e. )
e%printStack4race,.&
0 (inall# )
i( ,d" O= null RR d"%is+pen,.. )
d"%close,.&
0
0
0
*+verride
public void onDestro$,. )
super%onDestro$,.&
tr# )
kamusCursor%close,.&
0 catc+ ,7xception e. )
0
0
protected class CustomCursor'dapter extends
SimpleCursor'dapter )
private int la$out&
private 2a$out-nflater inflater&
?? 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
private Context context&
public CustomCursor'dapter,Context context1
int la$out1 Cursor c1
StringPQ from1 intPQ to. )
super ,context1 la$out1 c1 from1 to.&
t+is%la$out = la$out&
t+is%context = context&
inflater =
2a$out-nflater%from,context.&
0
*+verride
public Vie neVie,Context context1 Cursor
cursor1 VieBroup parent. )
2og%d,<NeVie<1 <99999xxx<.&
Vie v =
inflater%inflate,/%la$out%row1 parent1 (alse.&
return v&
0
*+verride
public void "indVie,Vie v1 Context
context1 Cursor c. )
// : is t#e column #ere $ouNre
getting $our data from
String inggris = c%getString,:.&
String 8erman = c%getString,A.&
String indonesia = c%getString,?.&
/99
9 Next set t#e name of t#e entr$%
9/
4extVie name3text = ,4extVie.
v%findVie!$-d,/%id%inggris.&
4extVie des3text = ,4extVie.
v%findVie!$-d,/%id%/erman.&
4extVie id3text = ,4extVie.
v%findVie!$-d,/%id%indonesia.&
des3text%set4ext,8erman.&
id3text%set4ext,indonesia.&
?+ 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
i( ,name3text O= null. )
name3text%set4ext,inggris.&
0
0
0
0
*P. Rubah bagian yang bercetak tebal pada AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
package="net.agusharyanto.kamus"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allo!ackup="true"
android:icon="@drawable/iclauncher"
android:la"el="@string/appname"
android:t#eme="@style/!pp"heme" >
<activit$

android:name="net.agusharyanto.kamus.DaftarKata"
android:la"el="@string/appname" >
<intent-filter>
<action
android:name="android.intent.action.#!%&" />
<categor$
android:name="android.intent.category.'!(&)*+," />
</intent-filter>
</activit$>
</application>
</manifest>
**. Sekarang mari kita Run proje&tnya.
?- 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
*/. 3ita sudah sukses menampilkan da'tar kata, selanjutnya kita
akan menyedian 'orm untuk menambahkan kata.
*6. #uat layout baru dengan nama tambahkata.xml selanjutnya
ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<2inear2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
android:orientation="$ertical" >
<4extVie
android:la$out3idt#="fillparent"
?) 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
android:la$out3#eig#t="wrapcontent"
android:text ="1amus %nggris %ndonesia @erman"
/>
<4extVie
android:id="@5id/"e6tAiew01"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text ="%nggris :" >
</4extVie>
<7dit4ext
android:id="@5id/t6t%nggris"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="" >
</7dit4ext>
<4extVie
android:id="@5id/"e6tAiew08"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text ="%ndonesia :" >
</4extVie>
<7dit4ext
android:id="@5id/t6t%ndonesia"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="" >
</7dit4ext>
<4extVie
android:id="@5id/te6tAiew1"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text ="@erman" >
</4extVie>
<7dit4ext
android:id="@5id/t6t@erman"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent" >
</7dit4ext>
?* 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
<!utton
android:id="@5id/btn"er/emah"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:onClick="sa$e7ata"
android:text ="3a$e 7ata" >
</!utton>
</2inear2a$out>
*<. #uat &lass baru dengan nama TambahKata.java
package net%agus#ar$anto%kamus&
import android%app%'ctivit$&
import android%content%ContentValues&
import android%data"ase%sElite%SF2iteData"ase&
import android%os%!undle&
import android%vie%Vie&
import android%idget%7dit4ext&
import android%idget%4oast&
public class 4am"a#Iata extends 'ctivit$)
private SF2iteData"ase d" = null&
private 7dit4ext txt-nggris&
private 7dit4ext txt-ndonesia&
private 7dit4ext txtHerman&
private Data"aseGelper datakamus = null&
public static (inal String %&>>,%3= <inggris<&
public static (inal String %&7<&+3%! =
<indonesia<&
public static (inal String @+,#!& = <H7/('N<&
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
datakamus = new Data"aseGelper,t+is.&
d" = datakamus%getMrita"leData"ase,.&
setContentVie,/%la$out%tambahkata.&
txt-nggris = ,7dit4ext.
findVie!$-d,/%id%t6t%nggris.&
txt-ndonesia = ,7dit4ext.
findVie!$-d,/%id%t6t%ndonesia.&
txtHerman = ,7dit4ext.
+( 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
findVie!$-d,/%id%t6t@erman.&
0
public void saveData,Vie vie. )
String "#sindonesia =
txt-ndonesia%get4ext,.%toString,.&&
String "#s8erman=
txtHerman%get4ext,.%toString,.&
String englis#ord =
txt-nggris%get4ext,.%toString,.&
ContentValues cv=new ContentValues,.&
cv%put,%&>>,%31 englis#ord.&
cv%put,%&7<&+3%!1 "#sindonesia.&
cv%put,@+,#!&1 "#s8erman.&
i( ,d"%insert,<kamus<1 %&>>,%31 cv.>=.)
4oast%make"e6t,get!aseContext,.1
<Save Data Success<1 4oast%'+&>"*3*<,".%s#o,.&
0else)
4oast%make"e6t,get!aseContext,.1
<Save Data 5ail<1 4oast%'+&>"*3*<,".%s#o,.&
0
0
*+verride
public void onDestro$,. )
super%onDestro$,.&
d"%close,.&
0
0
*=. Rubah AndroidAani'est."ml yang ber&etak tebal
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
package="net.agusharyanto.kamus"
android:versionCode="1"
+, 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allo!ackup="true"
android:icon="@drawable/iclauncher"
android:la"el="@string/appname"
android:t#eme="@style/!pp"heme" >
<activit$

android:name="net.agusharyanto.kamus.TambahKata"
android:la"el="@string/appname" >
<intent-filter>
<action
android:name="android.intent.action.#!%&" />
<categor$
android:name="android.intent.category.'!(&)*+," />
</intent-filter>
</activit$>
</application>
</manifest>
+. 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
*F. Sekarang mari kita run proje&tnya.
*-. #agaimana melihat hasilnya N apa harus rubah AndroidMani-
fest.xml. Cara yang lebih baik adalah dengan membuat menu yang
dapat mengakses 'orm %erjemahan , a'tar 3ata dan %ambah 3ata
*E. #uat Class baru dengan nama MenuActivity.java lalu ketikkan
kode berikut
package net%agus#ar$anto%kamus&
import android%app%2ist'ctivit$&
import android%content%-ntent&
import android%os%!undle&
import android%vie%Vie&
+= 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
import android%idget%'rra$'dapter&
import android%idget%2istVie&
import android%idget%4oast&
public class (enu'ctivit$ extends 2ist'ctivit$ )
StringPQ menuutama = new StringPQ ) <4er8ema#
Iata<1 <4am"a# Iata<1
<Daftar Iata<1 <Ieluar 'plikasi< 0&
public void onCreate,!undle icicle. )
super%onCreate,icicle.&
// (enset nilai arra$ ke dalam list
adapater se#ingga data pada arra$
// akan dimunculkan dalam list
t+is%set2ist'dapter,new
'rra$'dapter<String>,t+is1
android%/%la$out%simplelistitem11 menuutama..&
0
*+verride
/99met#od ini akan mengoveride met#od
on2ist-temClick $ang ada pada class 2ist 'ctivit$
9 met#od ini akan d:ipanggil apa"ilai ada sala#
satu item dari list menu $ang dipili#
9/
protected void on2ist-temClick,2istVie l1 Vie
v1 int position1 long id. )
super%on2ist-temClick,l1 v1 position1 id.&
// (enangkap nilai text $ang dklik
+"8ect o =
t+is%get2ist'dapter,.%get-tem,position.&
String pili#an = o%toString,.&
// (enampilkan #asil pili#an menu dalam
"entuk 4oast
tampilkan;ili#an,pili#an.&
0
protected void tampilkan;ili#an,String pili#an. )
tr# )
//-ntent digunakan untuk se"agai
pengenal suatu activit$
-ntent i = null&
+> 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
i( ,pili#an%eEuals,<4er8ema# Iata<..
)
i = new
-ntent,t+is1(ain'ctivit$%class.&
0 else i( ,pili#an%eEuals,<4am"a#
Iata<.. )
i = new -ntent,t+is1
4am"a#Iata%class.&
0 else i( ,pili#an%eEuals,<Daftar
Iata<.. )
i = new -ntent,t+is1
DaftarIata%class.&
0 else i( ,pili#an%eEuals,<Ieluar
'plikasi<.. )
finis#,.&
0 else )
4oast%make"e6t,t+is1<'nda
(emili#: < L pili#an L < 1 'ctionn$a "elum di"uat<1
4oast%'+&>"*'<&>.%s#o,.&
0
start'ctivit$,i.&
0 catc+ ,7xception e. )
e%printStack4race,.&
0
0
0
*O. Pada AndroidAani'et."ml rubah dan tambahkan yang ber&etak
tebal
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
package="net.agusharyanto.kamus"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allo!ackup="true"
android:icon="@drawable/iclauncher"
+? 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
android:la"el="@string/appname"
android:t#eme="@style/!pp"heme" >
<activit$

android:name="net.agusharyanto.kamus.MenuActivity"
android:la"el="@string/appname" >
<intent-filter>
<action
android:name="android.intent.action.#!%&" />
<categor$
android:name="android.intent.category.'!(&)*+," />
</intent-filter>
</activit#>
<activit# android:name="MainActivity"
android:label="Teremah Kata">
</activit#>
<activit# android:name="DaftarKata"
android:label="Daftar Kata">
</activit#>
<activit# android:name="TambahKata"
android:label="Tambah Kata">
</activit#>
</application>
</manifest>
++ 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
/P. Sekarang mari kita run proje&tnya
3lik masing-masing menu.
/*. Sekarang kita melangkah kebagian Rubah data dan Hapus data.
Pasti kita memikirkan bagaiman &ara menempatkan 0dit dan Hapus
ini. Aha kita letakan saja di a'tar3ata. +adi ketika satu baris kata di
klik lama 1long &li&k4 akan memun&ulkan menu edit dan hapus.
//. #uka 'ile String."ml pada direktori ,alue ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="appname">Iamus</string>
+- 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
<string name="actionsettings">Settings</string>
<string name="helloworld">Gello orldO</string>
<string name="ok">+I</string>
<string name="sa$e">Simpan</string>
<string name="cancel">Cancel</string>
<string name="addtitle">7dit Iamus</string>
<string name="deletetitle">Gapus Iamus1 'nd
$akin ?</string>
</resources>
/6. %ambahkan layout untuk edit data beri nama edit.xml
<?xml version="1.0" encoding="utf-8"?>
<2inear2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
android:orientation="$ertical" >
<4extVie
android:id="@5id/"e6tAiew01"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text ="%nggris :" >
</4extVie>
<7dit4ext
android:id="@5id/inggris"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:text="" >
</7dit4ext>
<4extVie
android:id="@5id/"e6tAiew08"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text ="%ndonesia :" >
</4extVie>
<7dit4ext
android:id="@5id/indonesia"
android:la$out3idt#="fillparent"
+) 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
android:la$out3#eig#t="wrapcontent"
android:text="" >
</7dit4ext>
<4extVie
android:id="@5id/te6tAiew1"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:text ="@erman" >
</4extVie>
<7dit4ext
android:id="@5id//erman"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent" >
</7dit4ext>
</2inear2a$out>
/<. #uka kembali 'ile aftarKata.java lalu ketikan kode berikut
package net%agus#ar$anto%kamus&
import android%app%'ctivit$&
import android%app%'lertDialog&
import android%content%ContentValues&
import android%content%Context&
import android%content%Dialog-nterface&
import android%data"ase%Cursor&
import android%data"ase%sElite%SF2iteData"ase&
import android%os%!undle&
import android%vie%Context(enu&
import android%vie%2a$out-nflater&
import android%vie%(enu&
import android%vie%(enu-tem&
import android%vie%Vie&
import android%vie%VieBroup&
import android%idget%'dapterVie&
import android%idget%7dit4ext&
import android%idget%2istVie&
import android%idget%SimpleCursor'dapter&
import android%idget%4extVie&
public class DaftarIata extends 'ctivit$ )
private Data"aseGelper d"#elper&
+* 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
private SF2iteData"ase d" = null&
private 2istVie listContent = null&
private static (inal int +7%"%7 = (enu%B%,3" L
:&
private static (inal int 7+'+"+%7 = (enu%B%,3" L
?&
private Cursor kamusCursor = null&
CustomCursor'dapter adapter&
/99 Called #en t#e activit$ is first created% 9/
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
d"#elper = new Data"aseGelper,t+is.&
setContentVie,/%la$out%daftarkata.&
listContent = ,2istVie.
findVie!$-d,/%id%list1.&
isData2istVie,.&
register5orContext(enu,listContent.&
0
private void isData2istVie,. )
tr# )
d" = d"#elper%getMrita"leData"ase,.&
kamusCursor = d"%Euer$,<kamus<1 new
StringPQ ) <3id<1 <inggris<1
<indonesia<1 <8erman< 01
<3id>=<1 null1 null1 null1 null.&
/9
9 Create an arra$ to specif$ t#e
fields e ant to displa$ in t#e
9 list ,onl$ t#e
Ninggris1indonesia18ermanN column in t#is case.
9/
StringPQ from = new StringPQ )
<inggris<1 <indonesia<1 <8erman< 0&
/9
9 and an arra$ of t#e fields e ant
to "ind t#ose fieiplds to ,in
9 t#is case 8ust t#e textVie
Ninggris1indonesia18ermanN from our
-( 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
9 ne ro%xml la$out a"ove.
9/
intPQ to = new intPQ ) /%id%inggris1
/%id%indonesia1 /%id%/erman 0&
/9 No create a simple cursor
adapter%% 9/
adapter = new
CustomCursor'dapter,t+is1 /%la$out%row1 kamusCursor1
from1 to.&
// listVie%set'dapter,adapter.&
listContent%set'dapter,adapter.&
0 catc+ ,7xception e. )
e%printStack4race,.&
0 (inall# )
i( ,d" O= null RR d"%is+pen,.. )
// d"%close,.&
0
0
0
*+verride
public void onDestro$,. )
super%onDestro$,.&
tr# )
kamusCursor%close,.&
0 catc+ ,7xception e. )
0
0
*+verride
public void onCreateContext(enu,Context(enu menu1
Vie v1
Context(enu%Context(enu-nfo menu-nfo.
)
menu%add,(enu%&<&+1 7+'+"+%71 (enu%&<&+1
<SGapus<.
%set-con,/%draa"le%iclauncher
.%set'lp#a"eticS#ortcut,NeN.&
-, 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
menu%add,(enu%&<&+1 +7%"%71 (enu%&<&+1
<7dit<.
%set-con,/%draa"le%iclauncher
.%set'lp#a"eticS#ortcut,NdN.&
0
*+verride
public boolean onContext-temSelected,(enu-tem
item. )
switc+ ,item%get-tem-d,.. )
case 7+'+"+%7:
'dapterVie%'dapterContext(enu-nfo
info = ,'dapterVie%'dapterContext(enu-nfo. item
%get(enu-nfo,.&
delete,info%id.&
return ,true.&
case +7%"%7:
'dapterVie%'dapterContext(enu-nfo
infox = ,'dapterVie%'dapterContext(enu-nfo. item
%get(enu-nfo,.&
Cursor ckamusCursor = d"%raFuer$,
<S727C4 3-D1 inggris1
indonesia1 8erman <
L <5/+( kamus
#ere 3-D=< L infox%id1 null.&
ckamusCursor%move4o5irst,.&
edit,infox%id1
ckamusCursor%getString,:.1
ckamusCursor%getString,?.1
ckamusCursor%getString,A..&
return ,true.&
0
return ,super%on+ptions-temSelected,item..&
0
private void edit,long id1 String pinggris1
String pindonesia1
String p8erman. )
-. 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
2a$out-nflater inflater =
2a$out-nflater%from,t+is.&
Vie addVie =
inflater%inflate,/%la$out%edit1 null.&
7dit4ext edinggris = ,7dit4ext.
addVie%findVie!$-d,/%id%inggris.&
7dit4ext edindonesia = ,7dit4ext.
addVie%findVie!$-d,/%id%indonesia.&
7dit4ext ed8erman = ,7dit4ext.
addVie%findVie!$-d,/%id%/erman.&
edinggris%set4ext,pinggris.&
edindonesia%set4ext,pindonesia.&
ed8erman%set4ext,p8erman.&
(inal DialogMrapper rapper = new
DialogMrapper,addVie.&
(inal long xid = id&
/9
9 rapper%inggris5ield%set4ext,pinggris.&
9
rapper%indonesia5ield%set4ag,pindonesia.
9/
new 'lertDialog%!uilder,t+is.
%set4itle,/%string%addtitle.
%setVie,addVie.
%set;ositive!utton,/%string%sa$
e1
new
Dialog-nterface%+nClick2istener,. )
public void
onClick,Dialog-nterface dialog1
int #ic#!utton. )
process7dit,rapper1 xid.&
0
0.
%setNegative!utton,/%string%can
cel1
new
Dialog-nterface%+nClick2istener,. )
public void
onClick,Dialog-nterface dialog1
int #ic#!utton. )
//
-= 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
ignore1 8ust dismiss
0
0.%s#o,.&
0
private void delete,(inal long ro-d. )
i( ,ro-d > =. )
new 'lertDialog%!uilder,t+is.
%set4itle,/%string%delete
title.
%set;ositive!utton,/%stri
ng%ok1
new
Dialog-nterface%+nClick2istener,. )
public
void onClick,Dialog-nterface dialog1
int #ic#!utton. )
processDelete,ro-d.&
0
0.
%setNegative!utton,/%stri
ng%cancel1
new
Dialog-nterface%+nClick2istener,. )
public
void onClick,Dialog-nterface dialog1
int #ic#!utton. )
/
/ ignore1 8ust dismiss
0
0.%s#o,.&
0
0
private void process7dit,DialogMrapper rapper1
long id. )
ContentValues values = new
ContentValues,?.&
values%put,<inggris<1
rapper%getinggris,..&
values%put,<indonesia<1
-> 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
rapper%getindonesia,..&
values%put,<8erman<1 rapper%get8erman,..&
// d"%update,ta"le1 values1 #ereClause1
#ere'rgs.
d"%update,<kamus<1 values1 <3id=< L id1
null.&
kamusCursor%reEuer$ ,. &
0
private void processDelete,long ro-d. )
StringPQ args = ) String%$alue<f,ro-d. 0&
d"%delete,<kamus<1 <3-D=?<1 args.&
kamusCursor%reEuer$ ,. &
0
class DialogMrapper )
7dit4ext inggris5ield = null&
7dit4ext indonesia5ield = null&
7dit4ext 8erman5ield = null&
Vie "ase = null&
DialogMrapper,Vie "ase. )
t+is%"ase = "ase&
indonesia5ield = ,7dit4ext.
"ase%findVie!$-d,/%id%indonesia.&
0
String getinggris,. )
return
,getinggris5ield,.%get4ext,.%toString,..&
0
String getindonesia,. )
return
,getindonesia5ield,.%get4ext,.%toString,..&
0
String get8erman,. )
return
,get8erman5ield,.%get4ext,.%toString,..&
0
private 7dit4ext getinggris5ield,. )
-? 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
i( ,inggris5ield == null. )
inggris5ield = ,7dit4ext.
"ase%findVie!$-d,/%id%inggris.&
0
return ,inggris5ield.&
0
private 7dit4ext getindonesia5ield,. )
i( ,indonesia5ield == null. )
indonesia5ield = ,7dit4ext.
"ase%findVie!$-d,/%id%indonesia.&
0
return ,indonesia5ield.&
0
private 7dit4ext get8erman5ield,. )
i( ,8erman5ield == null. )
8erman5ield = ,7dit4ext.
"ase%findVie!$-d,/%id%/erman.&
0
return ,8erman5ield.&
0
0
protected class CustomCursor'dapter extends
SimpleCursor'dapter )
private int la$out&
private 2a$out-nflater inflater&
private Context context&
public CustomCursor'dapter,Context context1
int la$out1 Cursor c1
StringPQ from1 intPQ to. )
super ,context1 la$out1 c1 from1 to.&
t+is%la$out = la$out&
t+is%context = context&
inflater =
2a$out-nflater%from,context.&
0
*+verride
-+ 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
public Vie neVie,Context context1 Cursor
cursor1 VieBroup parent. )
Vie v =
inflater%inflate,/%la$out%row1 parent1 (alse.&
return v&
0
*+verride
public void "indVie,Vie v1 Context
context1 Cursor c. )
// : is t#e column #ere $ouNre
getting $our data from
String inggris = c%getString,:.&
String 8erman = c%getString,A.&
String indonesia = c%getString,?.&
/99
9 Next set t#e name of t#e entr$%
9/
4extVie name3text = ,4extVie.
v%findVie!$-d,/%id%inggris.&
4extVie des3text = ,4extVie.
v%findVie!$-d,/%id%/erman.&
4extVie id3text = ,4extVie.
v%findVie!$-d,/%id%indonesia.&
des3text%set4ext,8erman.&
id3text%set4ext,indonesia.&
i( ,name3text O= null. )
name3text%set4ext,inggris.&
0
0
0
0
-- 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K
/=. Sekarang mari kita run proje&tnya
?akukan skenario seperti ini.
Pilih salah satu data lalu tekan yang lama lalu 0dit, akan mun&ul
jendela edit.
Pilih salah satu data lalu tekan yang lama pada data tersebut akan
mun&ul &onte"t menu, pilihlah hapus
Hore, kita telah berhasil membuat aplikasi database sBlite pada an-
droid yang didalamanya sudah men&akup 'ungsi Create Read 7pdate
elete 1CR74.
-) 8 Android $ata%ase &'LI()
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
-* 8 Android $ata%ase &'LI()

ANDROID
GOOGLE MAP
%ak dapat dipungkiri smartphone saat ini tidak saja diman-
'aatkan untuk aplikasi data entry dan hiburan tetapi sekarang sudah
diman'aatkan oleh pengembang untuk mende,elop Aplikasi ?o&ation
#ase Ser,i&e dimana salah satunya adalah membantu pengguna me-
nemukan lokasi Point o' (nterest 1POS4 yang terdekat, misalnya
ditengah jalan bensinya mau habis, bisa meman'aatkan aplikasi un-
tuk men&ari terminal pengisian bahan bakar terdekat.
MENAMPI LKAN DATA GPS
Hampir Semua Handphone ber OS android dilengkapi GPS, seb-
etulnya apasih GPS itu.
GPS adalah singkatan dari Global Positionning System, dengan
GPS kita dapat mengetahui lokasi kita berada yaitu data koordinat
?atitude dan ?ongitudenya. #agia yang pernah membuat aplikasi
yang menggunakan AAP pasti sudah mengenal istilah ini.
GPS hanyalah hardware, untuk memaksimalkannya kita perlu
membuat aplikasi yang meman'aatkan GPS.
Ada pertanyaan nih, setelah mengetahui 'ungsi GPS, kira-kira
aplikasi apa yang akan kita bangun N
4
A@$/;I$ 9A&( (/A.K
(ngat Aplikasi So&ial networking FourS,uare, dimana pada
'oursBuare kita dapat mengetahui posisi teman-teman kita yang
sedang online, sehingga apabila ada yang jaraknya dekat dengan kita
maka kita bisa &opy darat.
Sekarang kita masuk kemateri utama, mulai lah belajar dengan
pertanyaan
#agaimanakah &ara mendapatkan ?okasi kita saat ini dengan
menggunakan GPS di android N
#agaimanakah &ara menampilkannya dalam bentuk AAP N
Aari kita buat proje&t untuk menangkap koordinat dari GPS.
*. #uat !ew Android Proje&t dengan nama ?okasi3u
/. 0dit layout a&ti,ity@main."ml lalu ketikan kode berikut
</elative2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
xmlns:tools="http://schemas.android.com/tools"
android:la$out3idt#="matchparent"
). 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
android:la$out3#eig#t="matchparent"

android:padding!ottom="@dimen/acti$ity$erticalmargin
"

android:padding2eft="@dimen/acti$ityhori-ontalmargin
"

android:padding/ig#t="@dimen/acti$ityhori-ontalmargi
n"

android:padding4op="@dimen/acti$ity$erticalmargin"
tools:context=".#ain!cti$ity" >
<4extVie
android:id="@5id/te6tAiew1"
android:la$out3idt#="80sp"
android:la$out3#eig#t="wrapcontent"
android:text ="'atitude : " />
<7dit4ext
android:id="@5id/ed'atitude"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:la$out3align4op="@5id/te6tAiew1"
android:la$out3to/ig#t+f="@5id/te6tAiew1"
android:edita"le ="false"
android:ems="10" >
</7dit4ext>
<4extVie
android:id="@5id/te6tAiew?"
android:la$out3idt#="80sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3align2eft="@5id/te6tAiew1"
android:la$out3"elo="@5id/ed'atitude"
android:text ="'ongitude : " />
<7dit4ext
android:id="@5id/ed'ongitude"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"
android:la$out3align2eft="@5id/ed'atitude"
android:la$out3align4op="@5id/te6tAiew?"
)= 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
android:edita"le ="false"
android:ems="10" />
<//elative2a$out>
6. 0dit &lass AainA&ti,ity.ja,a lalu ketikan kode berikut
package net%agus#ar$anto%lokasiku&
import android%app%'ctivit$&
import android%content%Context&
import android%location%Criteria&
import android%location%2ocation&
import android%location%2ocation2istener&
import android%location%2ocation(anager&
import android%os%!undle&
import android%idget%7dit4ext&
import android%idget%4oast&
public class (ain'ctivit$ extends 'ctivit$ implements
2ocation2istener )
private 7dit4ext latitute5ield&
private 7dit4ext longitude5ield&
private 2ocation(anager location(anager&
private String provider&

/99 Called #en t#e activit$ is first created% 9/
*+verride
public void onCreate,!undle saved-nstanceState.
)
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%acti$itymain.&
latitute5ield = ,7dit4ext.
findVie!$-d,/%id%ed'atitude.&
longitude5ield = ,7dit4ext.
findVie!$-d,/%id%ed'ongitude.&
// Bet t#e location manager
location(anager = ,2ocation(anager.
getS$stemService,Context%'<)!"%<&3+,A%)+.&
// Define t#e criteria #o to select t#e
locatioin provider -> use
// default
)> 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
Criteria criteria = new Criteria,.&
provider =
location(anager%get!est;rovider,criteria1 (alse.&
2ocation location =
location(anager%get2astInon2ocation,provider.&
// -nitiali6e t#e location fields
i( ,location O= null. )
S$stem%out%println,<;rovider < L provider L
< #as "een selected%<.&
on2ocationC#anged,location.&
0 else )
latitute5ield%set4ext,<2okasi tidak
tersedia<.&
longitude5ield%set4ext,<2okasi tidak
tersedia<.&
0
0
/9 /eEuest updates at startup 9/
*+verride
protected void on/esume,. )
super%on/esume,.&

location(anager%reEuest2ocationKpdates,provider1 T==1
:1 t+is.&
0
/9 /emove t#e locationlistener updates #en
'ctivit$ is paused 9/
*+verride
protected void on;ause,. )
super%on;ause,.&
location(anager%removeKpdates,t+is.&
0
*+verride
public void on2ocationC#anged,2ocation
location. )
double lat = ,double.
,location%get2atitude,..&
double lng = ,double.
,location%get2ongitude,..&
latitute5ield%set4ext,String%$alue<f,lat..&
longitude5ield%set4ext,String%$alue<f,lng..&
)? 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
0
*+verride
public void onStatusC#anged,String provider1
int status1 !undle extras. )
// T)*) 'uto-generated met#od stu"
0
*+verride
public void on;rovider7na"led,String provider.
)
4oast%make"e6t,t+is1 <7na"led ne provider <
L provider1
4oast%'+&>"*3*<,".%s#o,.&
0
*+verride
public void on;roviderDisa"led,String provider.
)
4oast%make"e6t,t+is1 <Disa"led provider < L
provider1
4oast%'+&>"*3*<,".%s#o,.&
0
0
<. 7ntuk menambahkan permission pada AndroidAani'ets."ml
%ambahkan yang ber&etak tebal
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
package="net.agusharyanto.lokasiku"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses,permission
android:name="android."ermission.#$T%&$%T" >
)+ 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
</uses,permission>
<uses,permission
android:name="android."ermission.A''%((_)#$%_*+'AT#+$"
/>
<uses,permission
android:name="android."ermission.A''%((_'+A&(%_*+'AT#+
$" >
</uses,permission>
<application
android:allo!ackup="true"
android:icon="@drawable/iclauncher"
android:la"el="@string/appname"
android:t#eme="@style/!pp"heme" >
<activit$

android:name="net.agusharyanto.lokasiku.#ain!cti$ity"
android:la"el="@string/appname" >
<intent-filter>
<action
android:name="android.intent.action.#!%&" />
<categor$
android:name="android.intent.category.'!(&)*+," />
</intent-filter>
</activit$>
</application>
</manifest>
=. Aari kita run proje&tnya
+ika belum ada koordinat maka ?atitude dan ?ongitude akan berisi
?okasi tidak tersedia.
7ntuk itu kita bisa menset koordinatnya melalui emulator kontrol.
7ntuk membuka emulator kontrol pada e&lipse menu klik -indo&
Sho& 'ie& Other lalu klik 'older Android lalu pilih 0mulator
Cotrol.
)- 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
(sikan ?atiude dan ?ongitude seperti diatas lalu klik Send, maka
sekarang nilai ?atitude dan ?ongitude pada emulator sudah terisi.
)) 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
Selain melalui emulator &ontrol, untuk menset GPS kita juga bisa lak-
ukan lewat telnet localhost .../ lalu ketikan &ommand geo ix
-0.12210 340.5.21/
MENAMPI LKAN MAP PADA ANDROI D
Apakah in'ormasi koordinat gps berupa nilai latitude dan longit-
ude itu &ukup bagi user untuk menunjukkan lokasinya. %entu banyak
user yang bingung, untuk itu kita ditantang bagaimana &ara mengin-
'ormasikan lokasi ke 7ser. #eruntung android sudah menyiapkan
?ibrary Peta GoogleAap sehingga kita bisa meman'aatkannya untuk
menampilkan ?okasi tersebut dipeta. %api kita tidak bisa langsung
koding, kita harus buat AH dengan Plat'iorm Android dengan ?ib-
rary GoggleAap dan AP( 30>nya.
Persiapan AH ?ibrary GoogleAap.
*. Pada 0&lipse klik menu Dindow lalu klik Android S3 Aanager
)* 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
Centang Google AP(s lalu klik (ntall Pa&kages, jika sudah terinstall
seperti diatas tidak perlu install lagi. 3hsusus untuk windows 7ntuk
menjalankan ini e&lipse harus dijalankan %un As Administrator
/. ?angkah selanjutnya adalah install Google Play Ser,i&es dari
jendela Android S3 Aanager klik 'older 0"tra lalu &entang Google
Play Ser,i&es
6. #uat AH baru dengan Plat'orm Google AP(s, dari e&lipse klik
menu Dindow lalu klik Android Hirtual e,i&e Aanager lalu klik
!ew lalu isikan sperti berikut
*( 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
Setelah diklik O3.
*, 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
AH sudah siap untuk digunakan.
Sekarang mari kita mulai kodingnya.
*. #uat !ew Android Proje&t beri nama Peta?okasi.
*. 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
Catat nama pa&kagenya 9net.agusharyanto.petalo+asi; karena
ini akan digunakan untuk membuat AP6 K78 9oogle Map '1.
/. ?angkah selanjutnya adalah menyediakan AP( 30> Googlemap.
3arena saat ini 3ey untuk GoogleAap AP( ,* sudah tidak bisa lagi di-
gunakan maka kita harus menggunakan 3ey GoogleAap AP( ,/.
6. Cari lokasi 'ile de$ug.+eystore biasanya terdapat pada direk-
tori 9c!"#sers"$user%".android"debu&.keystore; &ontoh
9c!"#sers"a&us".android"debu&.keystore;
<. Aasuk kedirektori bin pada ja,a jdk &ontoh 9'!"(ro&ram
)iles"*ava"jdk+.,.-.+-"bin;
=. +alankan &ommand untuk mendapatkan key sha3 dari
de$ug .+eystore
Syntak Commandnya adalah
keytool -list -, -alias androiddebugkey -keystore
Qpath@to@debug@keystoreGdebug.keystore -storepass android -key-
pass android
&ontoh eksekusinya
*= 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
keytool -list -, -alias androiddebugkey -keystore C):7sers:agus:.an-
droid:debug.keystore -storepass android -keypass android
Catat nilai
SHA*)
/<)O-)AF)0#)//)/<)#-)=C)AP)-E)$*)OF)*/)$0)O-)/-)=A)#)E)P
Registerkan 3ey diatasi melalui Google Api Console
1https)..&ode.google.&om.apis.&onsole.NpliR* 4 . 7ntuk masuk kesini
kita harus punya A&&ount GAA(?
*> 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
3lik *reate project... akan mun&ul jendela Google apis
Akti'kan 9oogle Maps Android AP6 '1
*? 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
Sekarang Saatnya membuat 3ey untuk aplikasinya. Pada Google Apis
klik AP( A&&ess
isikan dengan
/<)O-)AF)0#)//)/<)#-)=C)AP)-E)$*)OF)*/)$0)O-)/-)=A)#)E)PSn
et.agusharyanto.petalokasi
*+ 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
3lik Create
Catat AP( 3eynya, ini akan digunakan dalam aplikasi.
'i6aS$'kHCisDU-@G!>D:ggkkMIVVtgNC2g>5$k
/. Selanjutnya kita harus mengin&lude Google Play Ser,i&es seba-
gai library proje&tnya.
Hal yang harus dilakukan terlibuh dahulu adalah mengimport Proje&t
Google Play Ser,i&e ?ibrary ke workspa&e saat ini. 3lik (mport
Android Proje&t, set Root ire&tory ke direktori kita menginstall
Google Play Ser,i&e, misalnya saja 9C):Program $iles
1"EF4:Android:android-
sdk:e"tras:google:google@play@ser,i&es:libproje&t:google-play-ser-
,i&es@lib;
*- 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
*entang Copy proje&ts into workspa&e
Selanjutnya adalah menyertakan library ini dalam proje&t kita.
Caranya klik kanan pada proje&t Peta"o+asi lalu pilih properties
*) 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
6. 3ita harus menda'tarkan 3ey yang kita dapat pada Android-
Aani'est."ml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
package="net.agusharyanto.petalokasi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
** 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
<permission

android:name="net.agusharyanto.petalokasi.permission.#
!;3,+)+%A+"
android:protection2evel="signature" />
<uses-feature
android:gl7sVersion="06000?0000"
android:reEuired="true" />
<uses-permission
android:name="net.agusharyanto.petalokasi.permission.#
!;3,+)+%A+" />
<uses-permission
android:name="android.permission.%&"+,&+"" />
<uses-permission
android:name="android.permission.C,%"++D"+,&!'3"<,!>
+" />
<uses-permission
android:name="com.google.android.pro$iders.gsf.permiss
ion.,+!7>3+,A%)+3" />
<uses-permission
android:name="android.permission.!))+33)<!,3+'<)!"%<
&" />
<uses-permission
android:name="android.permission.!))+33B%&+'<)!"%<&"
/>
<application
android:allo!ackup="true"
android:icon="@drawable/iclauncher"
android:la"el="@string/appname"
android:t#eme="@style/!pp"heme" >
<activit$

android:name="net.agusharyanto.petalokasi.#ain!cti$ity
"
android:la"el="@string/appname" >
<intent-filter>
<action
android:name="android.intent.action.#!%&" />
<categor$
android:name="android.intent.category.'!(&)*+," />
</intent-filter>
,(( 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
</activit$>
<meta-data

android:name="com.google.android.maps.$?.!;%1+E"
android:value="!%-a3y!k@Eis79-
F*0871ggkkC1:Atg&)'g8Byk" />
</application>
</manifest>
<. 0dit 'ile a&ti,ity@main."ml lalu ketikkan kode berikut
</elative2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
xmlns:tools="http://schemas.android.com/tools"
android:la$out3idt#="matchparent"
android:la$out3#eig#t="matchparent"
tools:context=".#ain!cti$ity" >
<fragment
android:id="@5id/map"
android:la$out3idt#="matchparent"
android:la$out3#eig#t="matchparent"

class="com.google.android.gms.maps.#apBragment" />
<//elative2a$out>
=. 0dit &las AainA&ti,ity.ja,a lalu ketikan kode berikut
package net%agus#ar$anto%petalokasi&
import android%app%'ctivit$&
import android%os%!undle&
import android%vie%(enu&
import com%google%android%gms%maps%CameraKpdate5actor$&
import com%google%android%gms%maps%Boogle(ap&
import com%google%android%gms%maps%(ap5ragment&
import
com%google%android%gms%maps%model%!itmapDescriptor5acto
r$&
,(, 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
import com%google%android%gms%maps%model%2at2ng&
import com%google%android%gms%maps%model%(arker&
import com%google%android%gms%maps%model%(arker+ptions&
public class (ain'ctivit$ extends 'ctivit$ )
static (inal 2at2ng ,!>(&!& = new 2at2ng,-
@%A=AU1 :=@%>?@W.&
static (inal 2at2ng "!#!&#%&% = new 2at2ng,-
@%?UTA@1 :=@%>>XU.&
private Boogle(ap map&
*+verride
protected void onCreate,!undle
saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%acti$itymain.&
map = ,,(ap5ragment.
get5ragment(anager,.%find5ragment!$-d,/%id%map..
%get(ap,.&
(arker ragunan = map%add(arker,new
(arker+ptions,.%position,,!>(&!&.
%title,</agunan<..&
(arker tamanmini = map%add(arker,new
(arker+ptions,.
%position,"!#!&#%&%.
%title,<4aman (ini<.
%snippet,<4aman (ini itu -nda#<.
%icon,!itmapDescriptor5actor$

%from,esource,/%draa"le%iclauncher...&
// (ove t#e camera instantl$ to #am"urg it#
a 6oom of :X%

map%moveCamera,CameraKpdate5actor$%new'at'ng:oom,,!>(&
!&1 :X..&
// Voom in1 animating t#e camera%

map%animateCamera,CameraKpdate5actor$%-oom"o,:=.1 ?===1
null.&
0
*+verride
public boolean onCreate+ptions(enu,(enu menu. )
,(. 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
get(enu-nflater,.%inflate,/%menu%main1 menu.&
return true&
0
0
F. Agar kita dapat menjalankan proje&t Gooogle Aap AP( / ini di
emulator kita perlu install / apk yaitu ,enton.apk dam gms.apk
melalui adb &ommand. Sebelum pastikan emulator 1#ukan Google
AP(4 sudah dijalankan.
-. Aari kita jalankan proje&tnya.
,(= 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
Pertama akan mun&ul / marker, lalu tap lah masing-masing marker
akan memun&ulkan in'o window.
MENAMPI LKAN DI RECTION PADA MAP
%entunya akan lebih menarik apabila kita dapat menampilkan jalur
yang harus ditempuh dari sebuah lokasi ke lokasi lainnya. 3ita ingin
apabila in'owindow diklik maka akan mun&ul petunjuk jalur 1dri,ing
dire&tion4 diantara kedua titik tersebut. #erikut langkah-langkahnya
E. Aasih dalam proje&t yang sama buat &lass baru dengan nama
9map'1Direction.ja(a lalu ketikan kode berikut
package net%agus#ar$anto%petalokasi&
,(> 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
import 8ava%io%-nputStream&
import 8ava%util%'rra$2ist&
import 8avax%xml%parsers%Document!uilder&
import 8avax%xml%parsers%Document!uilder5actor$&
import org%apac#e%#ttp%Gttp/esponse&
import org%apac#e%#ttp%client%GttpClient&
import org%apac#e%#ttp%client%met#ods%Gttp;ost&
import org%apac#e%#ttp%impl%client%DefaultGttpClient&
import org%apac#e%#ttp%protocol%!asicGttpContext&
import org%apac#e%#ttp%protocol%GttpContext&
import org%Ac%dom%Document&
import org%Ac%dom%Node&
import org%Ac%dom%Node2ist&
import android%util%2og&
import com%google%android%gms%maps%model%2at2ng&
public class B(apV?Direction )
public (inal static String #<7+7,%A%&> =
<driving<&
public (inal static String #<7+C!'1%&> =
<alking<&
public B(apV?Direction,. ) 0
public Document getDocument,2at2ng start1 2at2ng
end1 String mode. )
String url =
<#ttp://maps%googleapis%com/maps/api/directions/xml?<
L <origin=< L start%latitude L <1< L
start%longitude
L <Rdestination=< L end%latitude L
<1< L end%longitude
L
<Rsensor=falseRunits=metricRmode=driving<&
tr# )
GttpClient #ttpClient = new
DefaultGttpClient,.&
GttpContext localContext = new
!asicGttpContext,.&
Gttp;ost #ttp;ost = new Gttp;ost,url.&
,(? 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
Gttp/esponse response =
#ttpClient%execute,#ttp;ost1 localContext.&
-nputStream in =
response%get7ntit$,.%getContent,.&
Document!uilder "uilder =
Document!uilder5actor$%new%nstance,.%neDocument!uilder
,.&
Document doc = "uilder%parse,in.&
return doc&
0 catc+ ,7xception e. )
e%printStack4race,.&
0
return null&
0
public String getDuration4ext ,Document doc. )
Node2ist nl: =
doc%get7lements!$4agName,<duration<.&
Node node: = nl:%item,=.&
Node2ist nl? = node:%getC#ildNodes,.&
Node node? = nl?%item,getNode-ndex,nl?1
<text<..&
2og%i,<Duration4ext<1 node?%get4extContent,..&
return node?%get4extContent,.&
0
public int getDurationValue ,Document doc. )
Node2ist nl: =
doc%get7lements!$4agName,<duration<.&
Node node: = nl:%item,=.&
Node2ist nl? = node:%getC#ildNodes,.&
Node node? = nl?%item,getNode-ndex,nl?1
<value<..&
2og%i,<DurationValue<1 node?%get4extContent,..&
return
-nteger%parse%nt,node?%get4extContent,..&
0
public String getDistance4ext ,Document doc. )
Node2ist nl: =
doc%get7lements!$4agName,<distance<.&
Node node: = nl:%item,=.&
Node2ist nl? = node:%getC#ildNodes,.&
Node node? = nl?%item,getNode-ndex,nl?1
<text<..&
,(+ 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
2og%i,<Distance4ext<1 node?%get4extContent,..&
return node?%get4extContent,.&
0
public int getDistanceValue ,Document doc. )
Node2ist nl: =
doc%get7lements!$4agName,<distance<.&
Node node: = nl:%item,=.&
Node2ist nl? = node:%getC#ildNodes,.&
Node node? = nl?%item,getNode-ndex,nl?1
<value<..&
2og%i,<DistanceValue<1 node?%get4extContent,..&
return
-nteger%parse%nt,node?%get4extContent,..&
0
public String getStart'ddress ,Document doc. )
Node2ist nl: =
doc%get7lements!$4agName,<start3address<.&
Node node: = nl:%item,=.&
2og%i,<Start'ddress<1 node:%get4extContent,..&
return node:%get4extContent,.&
0
public String get7nd'ddress ,Document doc. )
Node2ist nl: =
doc%get7lements!$4agName,<end3address<.&
Node node: = nl:%item,=.&
2og%i,<Start'ddress<1 node:%get4extContent,..&
return node:%get4extContent,.&
0
public String getCop$/ig#ts ,Document doc. )
Node2ist nl: =
doc%get7lements!$4agName,<cop$rig#ts<.&
Node node: = nl:%item,=.&
2og%i,<Cop$/ig#ts<1 node:%get4extContent,..&
return node:%get4extContent,.&
0
public 'rra$2ist<2at2ng> getDirection ,Document
doc. )
Node2ist nl:1 nl?1 nlA&
'rra$2ist<2at2ng> listBeopoints = new
'rra$2ist<2at2ng>,.&
,(- 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
nl: = doc%get7lements!$4agName,<step<.&
i( ,nl:%get2engt#,. > =. )
(or ,int i = =& i < nl:%get2engt#,.& iLL. )
Node node: = nl:%item,i.&
nl? = node:%getC#ildNodes,.&
Node locationNode =
nl?%item,getNode-ndex,nl?1 <start3location<..&
nlA = locationNode%getC#ildNodes,.&
Node latNode =
nlA%item,getNode-ndex,nlA1 <lat<..&
double lat =
Dou"le%parse7ouble,latNode%get4extContent,..&
Node lngNode =
nlA%item,getNode-ndex,nlA1 <lng<..&
double lng =
Dou"le%parse7ouble,lngNode%get4extContent,..&
listBeopoints%add,new 2at2ng,lat1
lng..&
locationNode =
nl?%item,getNode-ndex,nl?1 <pol$line<..&
nlA = locationNode%getC#ildNodes,.&
latNode = nlA%item,getNode-ndex,nlA1
<points<..&
'rra$2ist<2at2ng> arr =
decode;ol$,latNode%get4extContent,..&
(or,int 8 = = & 8 < arr%si6e,. & 8LL. )
listBeopoints%add,new
2at2ng,arr%get,8.%latitude1 arr%get,8.%longitude..&
0
locationNode =
nl?%item,getNode-ndex,nl?1 <end3location<..&
nlA = locationNode%getC#ildNodes,.&
latNode = nlA%item,getNode-ndex,nlA1
<lat<..&
lat =
Dou"le%parse7ouble,latNode%get4extContent,..&
lngNode = nlA%item,getNode-ndex,nlA1
<lng<..&
lng =
Dou"le%parse7ouble,lngNode%get4extContent,..&
listBeopoints%add,new 2at2ng,lat1
lng..&
,() 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
0
0

return listBeopoints&
0
private int getNode-ndex,Node2ist nl1 String
nodename. )
(or,int i = = & i < nl%get2engt#,. & iLL. )
i(,nl%item,i.%getNodeName,.%eEuals,nodename..
return i&
0
return -:&
0
private 'rra$2ist<2at2ng> decode;ol$,String
encoded. )
'rra$2ist<2at2ng> pol$ = new
'rra$2ist<2at2ng>,.&
int index = =1 len = encoded%lengt#,.&
int lat = =1 lng = =&
w+ile ,index < len. )
int "1 s#ift = =1 result = =&
do )
" = encoded%c#ar't,indexLL. -
@A&
result Y= ," R =x:f. << s#ift&
s#ift L= X&
0 w+ile ," >= =x?=.&
int dlat = ,,result R :. O= = ?
Z,result >> :. : ,result >> :..&
lat L= dlat&
s#ift = =&
result = =&
do )
" = encoded%c#ar't,indexLL. -
@A&
result Y= ," R =x:f. << s#ift&
s#ift L= X&
0 w+ile ," >= =x?=.&
int dlng = ,,result R :. O= = ?
Z,result >> :. : ,result >> :..&
lng L= dlng&
,(* 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
2at2ng position = new 2at2ng,,double.
lat / :7X1 ,double. lng / :7X.&
pol$%add,position.&
0
return pol$&
0
0
O. 0dit 'ile MainActi(ity.ja(a lalu ketikkan kode berikut
package net%agus#ar$anto%petalokasi&
import 8ava%util%'rra$2ist&
import org%Ac%dom%Document&
import android%app%'ctivit$&
import android%content%Context&
import android%grap#ics%Color&
import android%location%2ocation&
import android%location%2ocation2istener&
import android%location%2ocation(anager&
import android%os%'s$nc4ask&
import android%os%!undle&
import android%vie%(enu&
import com%google%android%gms%maps%CameraKpdate5actor$&
import com%google%android%gms%maps%Boogle(ap&
import
com%google%android%gms%maps%Boogle(ap%+n-nfoMindoClick
2istener&
import com%google%android%gms%maps%(ap5ragment&
import
com%google%android%gms%maps%model%!itmapDescriptor5acto
r$&
import com%google%android%gms%maps%model%2at2ng&
import com%google%android%gms%maps%model%(arker&
import com%google%android%gms%maps%model%(arker+ptions&
import
com%google%android%gms%maps%model%;ol$line+ptions&
public class (ain'ctivit$ extends 'ctivit$ )
static (inal 2at2ng "!#!&#%&% = new 2at2ng,-
,,( 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
@%?UTA@1 :=@%>>XU.&
private Boogle(ap map&
private B(apV?Direction md&
private 2ocation(anager loc(anager&
private 2ocation2istener loc2istener&
(arker ragunan = null&
2at2ng from;osition = new 2at2ng,-@%A=AU1
:=@%>?@W.&
2at2ng to;osition = "!#!&#%&%&
*+verride
protected void onCreate,!undle
saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%acti$itymain.&
md = new B(apV?Direction,.&
map = ,,(ap5ragment.
get5ragment(anager,.%find5ragment!$-d,/%id%map..
%get(ap,.&
(arker tamanmini = map%add(arker,new
(arker+ptions,.
%position,"!#!&#%&%.%title,<4am
an (ini<.
%snippet,<4aman (ini -ndonesia
-nda#<..&
// (ove t#e camera instantl$ to #am"urg
it# a 6oom of :X%
map%moveCamera,CameraKpdate5actor$%new'at'ng:oom,"!#!&
#%&%1 :X..&
// Voom in1 animating t#e camera%
map%animateCamera,CameraKpdate5actor$%-oom"o,::.1
?===1 null.&
map%set+n-nfoMindoClick2istener,new
+n-nfoMindoClick2istener,. )
public void on-nfoMindoClick,(arker
marker. )
String stitle =
marker%get4itle,.&
,,, 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
i( ,Ostitle%eEuals,<Current
2ocation<.. )
callDirection4ask,.&
0
0
0.&
init2ocation(anager,.&
0
private void callDirection4ask,. )
String argPQ = ) <dumm$< 0&
new 2ong+peration,.%execute,arg.&
0
private class 2ong+peration extends
's$nc4ask<String1 Void1 Document> )
*+verride
protected Document do-n!ackground,String%%%
params. )
Document doc =
md%getDocument,from;osition1 to;osition1
B(apV?Direction%#<7+7,%A%&>.&
return doc&
0
*+verride
protected void on;ost7xecute,Document
result. )
// t#is%dialog%cancel,.&
set/esult,result.&
0
*+verride
protected void on;re7xecute,. )
0
*+verride
protected void on;rogressKpdate,Void%%%
,,. 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
values. )
0
0
public void set/esult,Document doc. )
'rra$2ist<2at2ng> direction;oint =
md%getDirection,doc.&
;ol$line+ptions rect2ine = new
;ol$line+ptions,.%idt#,A.%color,
Color%,+7.&
(or ,int i = =& i < direction;oint%si6e,.&
iLL. )
rect2ine%add,direction;oint%get,i..&
0
map%add;ol$line,rect2ine.&
0
*+verride
public boolean onCreate+ptions(enu,(enu menu. )
get(enu-nflater,.%inflate,/%menu%main1
menu.&
return true&
0
/99
9 -nitiali6e t#e location manager%
9/
private void init2ocation(anager,. )
loc(anager = ,2ocation(anager.
getS$stemService,Context%'<)!"%<&3+,A%)+.&
loc2istener = new 2ocation2istener,. )
// met#od ini akan di8alankan apa"ila
koordinat B;S "eru"a#
public void
on2ocationC#anged,2ocation ne2ocation. )
tampilkan;osisike(ap,ne2ocation.&
0
public void on;roviderDisa"led,String
arg=. )
,,= 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
0
public void on;rovider7na"led,String
arg=. )
0
public void onStatusC#anged,String
arg=1 int arg:1 !undle arg?. )
0
0&
loc(anager%reEuest2ocationKpdates,2ocation(anager%>;3
;,<A%7+,1 =1 =1
loc2istener.&
2ocation location = loc(anager
%get2astInon2ocation,2ocation(
anager%>;3;,<A%7+,.&
tampilkan;osisike(ap,location.&
0
/99
9 4#is met#od ill "e called #en current
position c#anged is su"mitted via
9 t#e B;S%
9
9 -param ne2ocation
9/
protected void tampilkan;osisike(ap,2ocation
ne2ocation. )
2at2ng currlok = new
2at2ng,ne2ocation%get2atitude,.1
ne2ocation%get2ongitude,..&
from;osition = currlok&
i( ,ragunan O= null.ragunan%remove,.&
ragunan = map%add(arker,new
(arker+ptions,.%position,currlok.%title,
<Current
2ocation<.%icon,!itmapDescriptor5actor$
%from,esource,/%dra
a"le%iclauncher...&
map%moveCamera,CameraKpdate5actor$%new'at'ng:oom,currlo
k1 :X..&
,,> 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
// first remove old overla$
0
0
*P. Sekarang mari kita jalankan proje&tnya.
%erlihat Posisi %erakhir dipeta, ke&ilkan peta agar marker taman
mini terlihat, klik marker taman mini lalu klik in'owindownya akan
mun&ul dire&tion dari posisi kita ke taman mini
,,? 8 Android 1oogle Map
A@$/;I$ 9A&( (/A.K
,,+ 8 Android 1oogle Map

ANDROID PHP
MYSQL
3ali ini kita akan membahas #agaimana Android dapat men-
girim data ke ser,er dan memba&anya. Ada beberapa pendekatan un-
tuk komunikasi dengan ser,er ini tetapi yang sering dipakai adalah
melalui http. engan demikian untuk mempraktekannya kita harus
menginstall apa&he web ser,er lengakap dengan PHP dan
AySM?nya.
CRUD ANDROI D PHP MYSQL
Aplikasi yang menggunakan database pada umumnya memiliki
'ungsi untuk
Aenampilkan data
Aenambah data
Aenghapus data
Aerubah data
atabase SM?ite pada android mempunyai keterbatasan pada salah
satunya pada kapasitas penyimpanan data. Akan bermasalah apabila
kita memaksakan menyimpan data yang besar 1lebih dari *PPPP
data4 pada SM?ite. Selain itu jika kita ingin perubahan data aplikasi
dirasakan oleh semua user tanpa harus install ulang aplikasi, maka
data harus disimpan di Ser,er. Cara yang paling sering digunakan
adalah dengan perantara Debser,er, PHP dan AySM?. imana an-
5
A@$/;I$ 9A&( (/A.K
droid untuk melakukan perubahan data atau mendapatkan data dari
database ser,er &ukup dengan memanggil url php yang telah diten-
tukan.
Agar lebih dimengerti mari kita buat aplikasi tentang maintenan&e
data harga handphone yang database ser,ernya menggunakan
AySM? dengan Deb Ser,er Apa&he dan Ser,er Side S&riptnya meng-
gunakan PHP untuk itu hal yang penting untuk dilakukan sebelum
memulai pembuatan aplikasinya adalah menyiaplkan en,ironment
ser,ernya dengan menginstall TAAPP 1Dindows4 atau ?AAP
1?inu"4. Setelah selesai (nstalasi lalu kita lakukan langkah berikut.
*. Pekerjaan di AySBl, buat database dan tablenya.
CR0A%0 A%A#AS0 db@phoneS
CR0A%0 %A#?0 tbl@phone 1
id (!%1<4 !O% !7?? A7%O@(!CR0A0!%,
phone@name HARCHAR16/4 !O% !7??,
pri&e (!%1*P4 !O% !7??,
PR(AAR> 30> 1id4
4
0!G(!0RAy(SAAS
insert into tbl@phone ,alues1null,UGala"y S6U,FPPPPPP4S
insert into tbl@phone ,alues1null,UGala"y A&e /U,6PPPPPP4S
insert into tbl@phone ,alues1 null,UH%C OneU,FPPPPPP4S
/. Siapkan S&ript PHP untuk memasukkan data baru ke
tbl@phone, simpan dengan nama add@phone.php simpan didire&tory
do&ument@root.phone &ontoh htdo&.phone jadi urlnya adalah
9http)..yourdomain.phone.add@phone.php;
QNphp
Vphone@name R V@POS%WUphone@nameUXS
Vpri&e R V@POS%WUpri&eUXS
Vlink R mysBl@&onne&t1Ulo&alhostU, UuserU, UpasswordU4 or die1UCannot
&onne&t to the #U4S
mysBl@sele&t@db1Udb@phoneU, Vlink4 or die1UCannot sele&t the #U4S
.Y grab the posts 'rom the db Y.
,,) 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
VBuery R Zinsert into tbl@phone 1phone@name,pri&e4 ,alues1UZ.
Vphone@name.ZU,Z.Vpri&e.Z4ZS
Vresult R mysBl@Buery1VBuery, Vlink4 or die1U0rror Buery) U.VBuery4S
i' 1Vresult RR *4[e&ho ZSa,e ata Su&&essZSJelse[ e&ho ZSa,e ata $ailZSJ
NG
6. Siapkan S&ript untuk menampilkan data yang sudah disim-
pan, simpan dengan nama list@phone.php
QNphp
Vlink R mysBl@&onne&t1Ulo&alhostU, UuserU, UpasswordU4 or die1UCannot
&onne&t to the #U4S
mysBl@sele&t@db1Udb@phoneU, Vlink4 or die1UCannot sele&t the #U4S
.Y grab the posts 'rom the db Y.
VBuery R ZS0?0C% id, phone@name, pri&e $ROA tbl@phoneZS
Vresult R mysBl@Buery1VBuery, Vlink4 or die1U0rrorBuery) U.VBuery4S
Vrows R array14S
while 1Vr R mysBl@'et&h@asso&1Vresult44 [
VrowsWX R VrS
J
Vdata R Z[phone)Z.json@en&ode1Vrows4.ZJZS
e&ho VdataS
NG
<. Siapkan S&ript untuk Aelakkukan perubahan data phone
diser,er, simpan dengan nama edit@phone.php
QNphp
Vid R V@POS%WUidUXS
Vphone@name R V@POS%WUphone@nameUXS
Vpri&e R V@POS%WUpri&eUXS
Vlink R mysBl@&onne&t1Ulo&alhostU, UuserU, UpasswordU4 or die1UCannot
&onne&t to the #U4S
mysBl@sele&t@db1Udb@phoneU, Vlink4 or die1UCannot sele&t the #U4S
.Y grab the posts 'rom the db Y.
VBuery R Zupdate tbl@phone set
phone@nameRUVphone@nameU,pri&eRVpri&e where idRVidZS
Vresult R mysBl@Buery1VBuery, Vlink4 or die1U0rror Buery) U.VBuery4S
i' 1Vresult RR *4[e&ho ZSa,e ata Su&&essZSJelse[ e&ho ZSa,e ata $ailZSJ
,,* 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
NG
=. Siakan S&ritpt untuk menghapus data phone di ser,er, sim-
pan dengan nama delete@phone.php
QNphp
Vid R V@POS%WUidUXS
Vlink R mysBl@&onne&t1Ulo&alhostU, UuserU, UpasswordU4 or die1UCannot
&onne&t to the #U4S
mysBl@sele&t@db1Udb@phoneU, Vlink4 or die1UCannot sele&t the #U4S
.Y grab the posts 'rom the db Y.
VBuery R Zdelete 'rom tbl@phone where idRVidZS
Vresult R mysBl@Buery1VBuery, Vlink4 or die1U0rror Buery) U.VBuery4S
i' 1Vresult RR *4[e&ho ZSa,e ata Su&&essZSJelse[ e&ho ZSa,e ata $ailZSJ
NG
F. Sekarang mari kita siapkan bagian androidnya, buat new
android proje&t AySM?Phone
,.( 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
-. #uat Class HttpHelper lalu ketikkan kode berikut
package net%agus#ar$anto%m$sElp#one&
import 8ava%io%!uffered/eader&
import 8ava%io%-nputStream&
import 8ava%io%-nputStream/eader&
import org%apac#e%#ttp%Gttp/esponse&
import org%apac#e%#ttp%client%GttpClient&
import org%apac#e%#ttp%client%met#ods%GttpBet&
import org%apac#e%#ttp%impl%client%DefaultGttpClient&
import android%util%2og&
public class GttpGelper )

/99
9 (et#od untuk (engirimkan data kes erver event
"$ "utton login diklik
,., 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
9
9 -param vie
9/
public static String get/eEuest,String Krl. )
String sret=<<&
GttpClient client = new
DefaultGttpClient,.&
GttpBet reEuest = new GttpBet,Krl.&
tr# )
Gttp/esponse response =
client%execute,reEuest.&
sret= reGuest,response.&
0 catc+ ,7xception ex. )
0
return sret&
0
/99
9 (et#od untuk (enenrima data dari server
9
9 -param response
9 -return
9/
public static String reEuest,Gttp/esponse
response. )
String result = <<&
tr# )
-nputStream in =
response%get7ntit$,.%getContent,.&
!uffered/eader reader = new
!uffered/eader,
new
-nputStream/eader,in..&
String!uilder str = new
String!uilder,.&
String line = null&
w+ile ,,line = reader%read2ine,.. O=
null. )
str%append,line L <[n<.&
0
in%close,.&
result = str%toString,.&
,.. 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
0 catc+ ,7xception ex. )
result = <7rror<&
0
return result&
0
0
Class HttpHelper ini digunakan untuk mengirim data keser,er dan
menangkap nilai yang dikembalikan ser,er.
E. #uat &lass +SO!$un&tion lalu ketikkan kode berikut
package net%agus#ar$anto%m$sElp#one&
import 8ava%io%!uffered/eader&
import 8ava%io%-nputStream&
import 8ava%io%-nputStream/eader&
import org%apac#e%#ttp%Gttp7ntit$&
import org%apac#e%#ttp%Gttp/esponse&
import org%apac#e%#ttp%client%GttpClient&
import org%apac#e%#ttp%client%met#ods%Gttp;ost&
import org%apac#e%#ttp%impl%client%DefaultGttpClient&
import org%apac#e%#ttp%params%!asicGttp;arams&
import org%apac#e%#ttp%params%GttpConnection;arams&
import org%apac#e%#ttp%params%Gttp;arams&
import org%8son%HS+N7xception&
import org%8son%HS+N+"8ect&
import android%util%2og&
public class HS+Nfunctions )
public static HS+N+"8ect getHS+NfromK/2,String
url. )
-nputStream is = null&
String result = <=<&
HS+N+"8ect 8'rra$ = null&
tr# )
Gttp;arams #ttp;arameters = new
!asicGttp;arams,.&
int timeoutConnection = @====&
,.= 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
GttpConnection;arams%set)onnection"imeout,#ttp;arameter
s1
timeoutConnection.&
int timeoutSocket = @====&
GttpConnection;arams%set3o"imeout,#ttp;arameters1
timeoutSocket.&
GttpClient #ttpclient = new
DefaultGttpClient,#ttp;arameters.&
Gttp;ost #ttppost = new
Gttp;ost,url.&
Gttp/esponse response =
#ttpclient%execute,#ttppost.&
Gttp7ntit$ entit$ =
response%get7ntit$,.&
is = entit$%getContent,.&
0 catc+ ,7xception e. )
2og%e,<log3tag<1 <7rror intimeout
#ttp connection < L e%toString,..&
0
// convert response to string
tr# )
!uffered/eader reader = new
!uffered/eader,new -nputStream/eader,
is1 <iso->>XU-:<.1 >.&
String!uilder s" = new
String!uilder,.&
String line = null&
w+ile ,,line = reader%read2ine,.. O=
null. )
s"%append,line L <[n<.&
0
is%close,.&
result = s"%toString,.&
0 catc+ ,7xception e. )
2og%e,<log3tag<1 <7rror converting
result < L e%toString,..&
result = <)[<errorcode[<:[<=[<0<&
0
,.> 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
tr# )
8'rra$ = new HS+N+"8ect,result.&
0 catc+ ,HS+N7xception e. )
2og%e,<log3tag<1 <7rror parsing data
< L e%toString,..&
result = <)[<errorcode[<:[<=[<0<&
tr# )
8'rra$ = new
HS+N+"8ect,result.&
0 catc+ ,HS+N7xception e:. )
// T)*) 'uto-generated catc#
"lock
e:%printStack4race,.&
0
0
return 8'rra$&
0
public static String getStringHS+NfromK/2,String
url. )
-nputStream is = null&
String result = <=<&
// #ttp post
tr# )
Gttp;arams #ttp;arameters = new
!asicGttp;arams,.&
int timeoutConnection = @====&
GttpConnection;arams%set)onnection"imeout,#ttp;arameter
s1
timeoutConnection.&
int timeoutSocket = @====&
GttpConnection;arams%set3o"imeout,#ttp;arameters1
timeoutSocket.&
GttpClient #ttpclient = new
DefaultGttpClient,#ttp;arameters.&
Gttp;ost #ttppost = new
,.? 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
Gttp;ost,url.&
Gttp/esponse response =
#ttpclient%execute,#ttppost.&
Gttp7ntit$ entit$ =
response%get7ntit$,.&
is = entit$%getContent,.&
0 catc+ ,7xception e. )
2og%e,<log3tag<1 <7rror intimeout
#ttp connection < L e%toString,..&
0
// convert response to string
tr# )
!uffered/eader reader = new
!uffered/eader,new -nputStream/eader,
is1 <iso->>XU-:<.1 >.&
String!uilder s" = new
String!uilder,.&
String line = null&
w+ile ,,line = reader%read2ine,.. O=
null. )
s"%append,line L <[n<.&
0
is%close,.&
result = s"%toString,.&
0 catc+ ,7xception e. )
2og%e,<log3tag<1 <7rror converting
result < L e%toString,..&
result = <)[<errorcode[<:[<=[<0<&
0
return result&
0
0
Class +SO!$un&tion ini digunakan untuk menangkap nilai kembali-
an dari ser,er yang datanya berupa +SO!
O. #uat ?ayoutbaru dengan nama add."ml lalu ketikan kode
berikut
<?xml version="1.0" encoding="utf-8"?>
<2inear2a$out
,.+ 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:orientation="$ertical"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent">
<4extVie android:text ="3mart ;hone &ame :"
android:id="@5id/"e6tAiew01"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"></4extVie>
<7dit4ext android:text =""
android:id ="@5id/edt&ame"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"></7dit4ext>
<4extVie android:text =";rice :"
android:id="@5id/"e6tAiew0?"
android:la$out3idt#="wrapcontent"
android:la$out3#eig#t="wrapcontent"></4extVie>
<7dit4ext android:text =""
android:id ="@5id/edt;rice"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"></7dit4ext>
<!utton android:text ="3impan"
android:id="@5id/btn3a$e"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"></!utton>
</2inear2a$out>
*P. #uat ?ayout dengan nama listphone."ml
<?xml version="1.0" encoding="utf-8"?>
</elative2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:la$out3idt#="matchparent"
android:la$out3#eig#t="matchparent" >
<4extVie
android:id="@5id/te6tAiew1"
android:la$out3idt#="140sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3align;arent2eft="true"
android:la$out3align;arent4op="true"
android:text =";hone &ame"
android:"ackground="@drawable/border"
,.- 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
android:textSi6e="?0sp" android:padding="4sp"
/>

<4extVie
android:id="@5id/te6tAiew?"
android:la$out3idt#="matchparent"
android:la$out3#eig#t="wrapcontent"
android:la$out3align;arent4op="true"
android:"ackground="@drawable/border"
android:la$out3to/ig#t+f="@5id/te6tAiew1"
android:text =";rice"
android:textSi6e="?0sp" android:padding="4sp"
/>

<2istVie android:id="@5id/list1"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="wrapcontent"
android:la$out3eig#t ="1"
android:la$out3align;arent2eft="true"
android:la$out3"elo="@5id/te6tAiew1"/>

<//elative2a$out>
**. #uat layout dengan nama row."ml
<?xml version="1.0" encoding="utf-8"?>
</elative2a$out
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
android:la$out3idt#="fillparent"
android:la$out3#eig#t="fillparent"
android:orientation="hori-ontal"
android:padding!ottom="4sp"
android:padding4op="4sp" >
<4extVie
android:id="@5id/phonename"
android:la$out3idt#="140sp"
android:la$out3#eig#t="wrapcontent"
,.) 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
android:la$out3align;arent2eft="true"
android:padding="4sp" />
<4extVie
android:id="@5id/price"
android:la$out3idt#="matchparent"
android:la$out3#eig#t="wrapcontent"
android:gravit$="right"
android:la$out3to/ig#t+f="@5id/phonename"
android:padding="4sp" />
<4extVie
android:id="@5id/idphone"
android:la$out3idt#="0sp"
android:la$out3#eig#t="wrapcontent"
android:la$out3to/ig#t+f ="@5id/indonesia"
android:visi"ilit$="gone"/>
<//elative2a$out>
*/. Semua ?ayout sudah siap, saatnya membuat bagian ja,anya.
Pada awal yang ditampilkan adalah list smartphone dan harganya,
buat &lass baru dengan nama ?istataPhoneA&ti,ity.ja,a
package net%agus#ar$anto%m$sElp#one&
import 8ava%util%'rra$2ist&
import 8ava%util%Gas#(ap&
import org%8son%HS+N'rra$&
import org%8son%HS+N7xception&
import org%8son%HS+N+"8ect&
import android%app%'ctivit$&
import android%app%;rogressDialog&
import android%content%Context&
import android%content%-ntent&
import android%os%'s$nc4ask&
import android%os%!undle&
import android%util%2og&
import android%vie%Context(enu&
import android%vie%(enu&
import android%vie%(enu-tem&
import android%vie%Vie&
,.* 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
import android%idget%'dapterVie&
import android%idget%2ist'dapter&
import android%idget%2istVie&
import android%idget%Simple'dapter&
import android%idget%4oast&
public class 2istData;#one'ctivit$ extends 'ctivit$ )
/99 Called #en t#e activit$ is first created% 9/
private 2istVie listVie:&
private static (inal int ,+H(+3")<7+ = :&
private 'rra$2ist<Gas#(ap<String1 String>> m$list
= new 'rra$2ist<Gas#(ap<String1 String>>,.&
private static (inal int !77%7 = (enu%B%,3" L :&
private static (inal int +7%"%7 = (enu%B%,3" L
?&
private static (inal int 7+'+"+%7 = (enu%B%,3" L
A&
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%listphone.&
tr# )
getData;#one,.&
0 catc+ ,7xception e. )
2og%e,<log3tag<1 <7rror parsing data
< L e%toString,..&
0
0
/99
9 Class CallMe";age4ask untuk implementasi class
'sc$nc4ask
9/
private class reEuest4ask extends
's$nc4ask<String1 Void1 String> )
private ;rogressDialog dialog&
protected Context applicationContext&
private String actionflag&
,=( 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
*+verride
protected void on;re7xecute,. )
t+is%dialog =
;rogressDialog%show,applicationContext1
<2oad Data 5rom Server
;rocess<1 <;lease Mait%%%<1 true.&
0
*+verride
protected String do-n!ackground,String%%%
urls. )
String response = <<&
response = getDataServer,urlsP=Q.&
return response&
0
*+verride
protected void on;ost7xecute,String result.
)
t+is%dialog%cancel,.&
i( ,actionflag%eEuals,<list<.. )
i( ,result%eEuals,<:<..
set2istData,.&
0 else i(
,actionflag%eEuals,<delete<.. )
getData;#one,.&
0
0
0
public void getData;#one,. )
m$list%clear,.&
reEuest4ask task = new reEuest4ask,.&
task%applicationContext =
2istData;#one'ctivit$%t+is&
task%actionflag = <list<&
String url =
<#ttp://:U?%:@>%?AX%:/p#one/list3p#one%p#p<&
task%execute,new StringPQ ) url 0.&
0
public String getDataServer,String url. )
String sret = <:<&
,=, 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
HS+N+"8ect 8son =
HS+Nfunctions%get@3<&from(,',url.&
tr# )
i(
,8son%getString,<errorcode<.%eEuals,<=<.. )
4oast%make"e6t,get!aseContext,.1
8son%getString,<errormsg<.1
4oast%'+&>"*3*<,".%s#o,.&
sret = <=<&
0
HS+N'rra$ makanan =
8son%getHS+N'rra$,<data<.&
(or ,int i = =& i < makanan%lengt#,.&
iLL. )
Gas#(ap<String1 String> map =
new Gas#(ap<String1 String>,.&
HS+N+"8ect 8sono"8 =
makanan%getHS+N+"8ect,i.&
map%put,<id<1
8sono"8%getString,<id<..&
&
map%put,<p#one3name<1
8sono"8%getString,<p#one3name<..&
map%put,<price<1
8sono"8%getString,<price<..&
m$list%add,map.&
0
0 catc+ ,HS+N7xception e. )
2og%e,<log3tag<1 <7rror parsing data
< L e%toString,..&
0
return sret&
0
private void s#o4oast,String msg1 int flag. )
,=. 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
4oast%make"e6t,get!aseContext,.1 </esult <
L msg1 4oast%'+&>"*'<&>.
%s#o,.&
0
private void set2istData,. )
listVie: = ,2istVie.
findVie!$-d,/%id%list1.&
2ist'dapter adapter = new
Simple'dapter,t+is1 m$list1 /%la$out%row1
new StringPQ ) <p#one3name<1
<price< 01 new intPQ )
/%id%phonename1
/%id%price 0.&
listVie:%set'dapter,adapter.&
register5orContext(enu,listVie:.&
0
*+verride
public void onCreateContext(enu,Context(enu menu1
Vie v1
Context(enu%Context(enu-nfo menu-nfo.
)
menu%add,(enu%&<&+1 !77%71 (enu%&<&+1
<'dd<.
%set-con,/%draa"le%iclauncher
.%set'lp#a"eticS#ortcut,NaN.&
menu%add,(enu%&<&+1 +7%"%71 (enu%&<&+1
<7dit<.
%set-con,/%draa"le%iclauncher
.%set'lp#a"eticS#ortcut,NdN.&
menu%add,(enu%&<&+1 7+'+"+%71 (enu%&<&+1
<Delete<.
%set-con,/%draa"le%iclauncher
.%set'lp#a"eticS#ortcut,NeN.&
0
*+verride
public boolean onContext-temSelected,(enu-tem
item. )
'dapterVie%'dapterContext(enu-nfo info =
,'dapterVie%'dapterContext(enu-nfo. item
,== 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
%get(enu-nfo,.&
int idp#one = ,int. info%id&
Gas#(ap<String1 String> o =
,Gas#(ap<String1 String>. listVie:
%get-tem't;osition,idp#one. &
switc+ ,item%get-tem-d,.. )
case !77%7:
addData,o1 <add<.&
return ,true.&
case 7+'+"+%7:
deleteData,o.&
return ,true.&
case +7%"%7:
editData,o1 <edit<.&
return ,true.&
0
return ,super%on+ptions-temSelected,item..&
0
private void editData,Gas#(ap<String1 String> o1
String action. )
2og%d,<9999editData99999<1 <\d:< L
o%get,<id<..&
call-ntent,o1 action.&
0
private void deleteData,Gas#(ap<String1 String>
o. )
reEuest4ask task = new reEuest4ask,.&
task%applicationContext =
2istData;#one'ctivit$%t+is&
task%actionflag = <delete<&
String url =
<#ttp://:U?%:@>%?AX%:/p#one/delete3p#one%p#p?id=<
L o%get,<id<.&
task%execute,new StringPQ ) url 0.&
,=> 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
0
private void addData,Gas#(ap<String1 String> o1
String action. )
call-ntent,o1 action.&
0
private void call-ntent,Gas#(ap<String1 String>
o1 String action. )
-ntent i = new -ntent,t+is1
'dd;#one'ctivit$%class.&
i%put7xtra,<action<1 action.&
i%put7xtra,<datap#one<1 o.&
start'ctivit$5or/esult,i1 ,+H(+3")<7+.&
0
*+verride
protected void on'ctivit$/esult,int reEuestCode1
int resultCode1 -ntent data. )
i( ,resultCode == ,+3('"<1 RR reEuestCode
== ,+H(+3")<7+. )
i( ,data%#as7xtra,<refres#flag<.. )
i(
,data%get7xtras,.%getString,<refres#flag<.%eEuals,<:<..
getData;#one,.&
0
0
0
0
*6. %entunya Aplikasikita tidak hanya menampilkan data saja
tetapi dapat juga menambahkan data dan mengedit data, buat &lass
baru dengan nama AddPhoneA&ti,ity.ja,a
package net%agus#ar$anto%m$sElp#one&
import 8ava%io%Knsupported7ncoding7xception&
import 8ava%net%K/27ncoder&
import 8ava%util%Gas#(ap&
import android%app%'ctivit$&
,=? 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
import android%content%-ntent&
import android%os%'s$nc4ask&
import android%os%!undle&
import android%util%2og&
import android%vie%Vie&
import android%idget%!utton&
import android%idget%7dit4ext&
import android%idget%4oast&
public class 'dd;#one'ctivit$ extends 'ctivit$ )
private 7dit4ext edtName&
private 7dit4ext edt;rice&
private !utton "tnSave&
// Seusuaikan url dengan nama domain $ang anda
gunakan
private String url = <<&
String action=<<&
String p#oneid=<<&
/99
9 (et#od $ang dipanggil pada saat aplikaasi
di8alankan
9 9/
*+verride
public void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%add.&
edtName = ,7dit4ext.
findVie!$-d,/%id%edt&ame.&
edt;rice = ,7dit4ext.
findVie!$-d,/%id%edt;rice.&
"tnSave = ,!utton.
findVie!$-d,/%id%btn3a$e.&
!undle extras = get-ntent,.%get7xtras,.&
i( ,extras == null. )
return&
0
action = extras%getString,<action<.&
Gas#(ap <String1String> datap#one=
,Gas#(ap<String1 String>. extras%get, <datap#one< .&
i( ,action%eEuals,<edit<..)
,=+ 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
edtName%set4ext,datap#one%get,<p#one3name<..&
edt;rice%set4ext,datap#one%get,<price<..&
p#oneid=datap#one%get,<id<.&
0
// daftarkan even onClick pada "tnSave
"tnSave%set+nClick2istener,new
!utton%+nClick2istener,. )
*+verride
public void onClick,Vie v. )
tr# )
i( ,action%eEuals,<add<..
)
url=<#ttp://:U?%:@>%?AX%:/p#one/add3p#one%p#p<&
0else)
url=<#ttp://:U?%:@>%?AX%:/p#one/edit3p#one%p#p<&
0
String p#one3name =
K/27ncoder%encode,edtName%get4ext,.
%toString,.1
<utf-><.&
String price =
K/27ncoder%encode,edt;rice%get4ext,.
%toString,.1
<utf-><.&
url L= <?p#one3name=< L
p#one3name L <Rprice=< L price&
i(
,action%eEuals,<edit<..)
urlL=<Rid=<Lp#oneid&
0
2og%d,<url99<1<url:<Lurl.&
new
/eEuest4ask,.%execute,url.&
0 catc+
,Knsupported7ncoding7xception e. )
// T)*) 'uto-generated
catc# "lock
e%printStack4race,.&
0
,=- 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
0
0.&
0
*+verride
public void finis#,. )
-ntent data = new -ntent,.&
data%put7xtra,<refres#flag<1 <:<.&
set/esult,,+3('"<11 data.&
super%finis#,.&
0
private void set/esult,String result.)
4oast%make"e6t,get!aseContext,.1 result1
4oast%'+&>"*'<&>.%s#o,.&
finis#,.&
0
class /eEuest4ask extends 's$nc4ask<String1
String1 String>)
*+verride
protected String do-n!ackground,String%%%
uri. )

String responseString = null&

responseString=
GttpGelper%get,eGuest,uriP=Q.&

return responseString&
0
*+verride
protected void on;ost7xecute,String result. )
super%on;ost7xecute,result.&
set/esult,result.&
//Do an$t#ing it# response%%
0

0
,=) 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
0
*<. 0dit AndroidAani'est."ml lalu ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/andr
oid"
package="net.agusharyanto.mysGlphone"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission
android:name="android.permission.%&"+,&+"" />
<application
android:allo!ackup="true"
android:icon="@drawable/iclauncher"
android:la"el="@string/appname"
android:t#eme="@style/!pp"heme" >
<activit$

android:name="net.agusharyanto.mysGlphone.'ist7ata;hon
e!cti$ity"
android:la"el="@string/appname" >
<intent-filter>
<action
android:name="android.intent.action.#!%&" />
<categor$
android:name="android.intent.category.'!(&)*+," />
</intent-filter>
</activit$>
<activit$ android:name="!dd;hone!cti$ity"
android:la"el="!dd +dit"/>
</application>
</manifest>
*=. Sekarang mari kita jalankan programnya.
,=* 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
%ekan yang lama pada salah satu baris
,>( 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K A1U& 4A/AA@(;
Akan mun&ul konteks menu, jika ingin menambah data sentuh A,
untuk merubah data sentuh 0dit, untuk menghapus data sentih e-
lete.
,>, 8 Android P4P My&'L
A@$/;I$ 9A&( (/A.K
,>. 8 Android P4P My&'L

PENUTUP
SEMANGAT
Setelah memnyelesaikan materi yang ada dibuku ini, berarti kita
sudah punya modal dasar untuk membuat aplikasi android sendiri.
isini kita sudah mempelajari tentang
asar pembuatan proje&t android
asar ?ayout dan ,iewnya
Aplikasi Android CR7 SM?ite 13amus4
Aplikasi Peta dengan Android Googlemaps AP( H/ 1Peta?-
okasi4
Aplikasi CR7 PHP AySM? 1Smartphone Pri&e4
(lmu itu harus sering dilatih agar semakin mantap penguasaanya dan
kita semkin produkti'. %anpa sering latihan janganlah kita bermimpi
jadi programmer hebat dan produkti'. +adi harus semangat.
SEMI NAR WORKSHOP ANDROID
7ntuk kampus atau sekolah yang berminat mengadakan seminar
atau workshop android atau lainnya bisa hubungi saya di email
agus.superwriterLgmail.&om ,twitter Lagus@ino,ator atau di
45:03;311;00. 3husus untuk luar kota biaya transportasi dan ako-
modasi ditanggung penyelenggara a&ara.
5
A@$/;I$ 9A&( (/A.K
REFERENSI
7ntuk buku Android $ast %ra&k ini, saya menggunakan re'erensi dari
http)..de,eloperandroid.&om
http)..sta&ko,er'low.&om
http)..,ogella.&om
http)..mobile.tutplus.&om
#eginning Android < Appli&ation e,elopment K Dei Aeng ?ee
,>> 8 Penutup

Anda mungkin juga menyukai