tutorial belajar aplikasi android

Upload: akhmad-faries-hajiansyah

Post on 02-Jun-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    1/65

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    2/65

    Android Programming - candra.web.id

    Gambar 1.5: Kalkulator Konversi# Android&ani'est.x(l(erisi kon/igurasi Activit" aplikasi dan peri7inan akses aplikasi teradaps"stem.

    1.2 )aout)ampilan aplikasi Android diatur menggunakan !a"out. ebua aplikasiAndroid, dapat menggunakan lebi dari satu la"out untuk dapat berinteraksidengan user. !a"out-la"out ini dapat dibuat dengan menggunakan 8$!.Anda tidak perlu kawatir jika Anda belum terlalu paam dengan 8$!,karena plugin A2) "ang terinstall pada 9clipse tela disertai dengan !a"out9ditor untuk memudakan kita dalam membuat !a"out ini.etiap kali Project baru dibuat, sebua la"out akan digenerate ole 2K.!a"out ini terletak dalam direktor" res*laout dengan nama (ain.x(l.Gambar 1. dibawa ini adala conto !a"out main.;ml "ang dibuka dengan!a"out 9ditor.

    5Android Programming - candra.web.id

    Gambar 1.: !a"out 9ditorAda dua mode "ang bisa digunakan untuk membuat la"out melalui !a"out9ditor ini "akni dengan menggunakan mode Gra/is atau mode 8$!. Padamode Gra/is tela disediakan Pallete "ang didalamn"a terdapat

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    3/65

    1 ?@;ml versionB1.CB encodingBut/-DB@& ?!inear!a"out0 ;mlns:androidBttp:EEscemas.android.comEapkEresEandroidB3 android:la"outFwidtB/illFparentB5 android:la"outFeigtB/illFparentB

    android:orientationBverticalB &> ?)e;tiewD android:idBHIidEte;tiew1BJ android:la"outFwidtBwrapFcontentB1C android:la"outFeigtBwrapFcontentB11 android:te;tB'ilaiB E&>Android Programming - candra.web.id

    1 ?9dit)e;t10 android:idBHIidEedit)e;t1B13 android:la"outFwidtBmatcFparentB15 android:la"outFeigtBwrapFcontentB1 android:emsB1CB1> android:input)"peBnumber2ecimalB &1D ?reuest%ocus E&1J ?E9dit)e;t&C

    1 ?LadioGroup android:idBHIidEradioGroup1B0 android:la"outFwidtBmatcFparentB3 android:la"outFeigtBwrapFcontentB &5 ?Ladio(utton android:idBHIidEradioCB

    > android:la"outFwidtBwrapFcontentBD android:la"outFeigtBwrapFcontentBJ android:ceckedBtrueB0C android:te;tB$eter ke %eetB E&01

    0 ?Ladio(utton00 android:idBHIidEradio1B03 android:la"outFwidtBwrapFcontentB05 android:la"outFeigtBwrapFcontentB0 android:te;tB%eet ke $eterB E&0>

    0D ?Ladio(utton

    0J android:idBHIidEradioB3C android:la"outFwidtBwrapFcontentB31 android:la"outFeigtBwrapFcontentB3 android:te;tBLadio(uttonB E&30 ?ELadioGroup&33

    35 ?(utton3 android:idBHIidEbutton1B3> android:la"outFwidtBwrapFcontentB

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    4/65

    3D android:la"outFeigtBwrapFcontentB3J android:te;tBProsesB E&5C

    51 ?E!inear!a"out&DAndroid Programming - candra.web.id

    0atatan Uba bagian "ang dicetak biru dan #apusbagian "angdicetak (era#.eingga jika la"out diliat pada mode Gra/ik akan terliat sepertigambar 1.D di bawa ini.Gambar 1.D: !a"out *adi

    1.3 ActivitUntuk menggunakan la"out dan menambakan logika program ke dalamn"akita perlu membuatkan Activit" untuk la"out tersebut. Pada program pertamaini, kita akan menggunakan Activit" "ang tela kita buat saat pembuatanproject "ang kita beri nama KalkulatorKonversiActivit. Activit"ini berada dalam /ile KalkulatorKonversiActivit.java "ang berada didalam direktor" src > lab.andro.android.kalkulatorkonversi.(uka /ile tersebut untuk menguban"a.JAndroid Programming - candra.web.id

    1package lab.andro.android.kalkulatorkonversiM

    0 import android.app.Activit"M3 import android.os.(undleM5

    public class KalkulatorKonversiActivit" e;tends Activit" N> EOO alled wen te activit" is /irst created. OED HverrideJpublic void onreate4(undle savednstancetate6 N1C super.onreate4savednstancetate6M11 setontentiew4L.la"out.main6M1 Q10 QAtur la"out agar menggunakan la"out main.;ml Rpada activit" utama "angdigenerate pada saat pembuatan Project, la"out akan langsung di set ke(ain.x(l.elanjutn"a kita perlu menambakan logika program ke dalamn"a. kenarioaplikasin"a "akni:# User memasukkan input berupa angka ke dalam )e;t %ield,

    # Kemudian user memili jenis konversi &eter ke "eet atau "eet ke&eter, pilian de/ault adala &eter ke "eet 41 (eter 3.2!3'eet6.# Ketika user menekan button +Proses+, program akan mengkalkulasiangka "ang dimasukkan pada te;t /ield sesuai dengan pilian moden"a.(erikut adala langka-langkan"a:a. )ambakan beberapa baris kode berikut pada Activit" KalkulatorKonversiActivitsebelum metode on0reate:

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    5/65

    3 ...5

    public class KalkulatorKonversiActivit" e;tends Activit" N> EOO alled wen te activit" is /irst created. OEDprivate 9dit)e;t etAngkaMJprivate Ladio(utton rb$eter%eetM1Cprivate (utton btnProsesM11

    1 Hverride1CAndroid Programming - candra.web.id

    10public void onreate4(undle savednstancetate6 N13 ...b. Kemudian tekan tombol 0trl45#i't4$ untuk melakukan import kelassecara otomatis.c. elanjutn"a, pada metode on0reate, link-kan semua bjek etAngka,rbMeterFeet dan btnProses dengan komponen

    1D etAngka 49dit)e;t6 /indiew("d4L.id.edit)e;t16M1J rb$eter%eet 4Ladio(utton6 /indiew("d4L.id.radioC6MC rb$eter%eet.setecked4true6M1btnProses 4(utton6 /indiew("d4L.id.button16M Q0 ...d. Atur event on0)ick)istenerpada (utton btnProses agar dapat mengandleevent ketika button ti klik:C ...1btnProses 4(utton6 /indiew("d4L.id.button16M

    0btnProses.setnlick!istener43 new iew.nlick!istener46 N5public void onlick4iew v6 N kalkulasi46M> Q

    D Q6MJ Q0C ...*angan lupa untuk menekan kombinasi tombol 0trl45#i't4$.e. )ambakan metode kalkulasi67 setela metode onCreate:11Android Programming - candra.web.id

    0C ...

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    6/65

    01public void kalkulasi46 N0 double meter 0.DCD0JJM00

    03 double angka CM05 tr" N0 angka 2ouble.parse2ouble40> etAngka.get)e;t46.totring466M0D Q catc 49;ception e6 N0J )oast.make)e;t4tis, B$asukkan AngkaB,3C )oast.!9'G)=F!'G6.sow46M31 Q3

    30 tring asilM33 i/4rb$eter%eet.isecked466 N35 asil angka I B $eter B I3 4angka O meter6 I B %eetBM3> Q else N3D

    asil angka I B %eet B I3J 4angka E meter6 I B $eterBM5C Q51

    5 Alert2ialog.(uilder ab new Alert2ialog.(uilder4tis6M50 ab.set)itle4B=asilB6M53 ab.set$essage4asil6M55 ab.setPositive(utton4BkB,5 new 2ialognter/ace.nlick!istener46 N5>public void onlick42ialognter/ace dialog,5D int wic6 N5J dialog.dismiss46MC Q1 Q6M

    0 Alert2ialog dialog ab.create46M3 dialog.sow46M5 Q QKeterangan )oast digunakan untuk menampilkan noti/ikasi pada la"ar.edangkan Alert2ialog.(uilder dan Alert2ialog digunakanuntuk membuat Alert dialog, dimana nati asil1Android Programming - candra.web.id

    kalkulasi akan ditampilkan ke dalam dialog ini.%ull ource:F1package lab.andro.android.kalkulatorkonversiM

    0 import android.app.Activit"M3 import android.app.Alert2ialogM5 import android.content.2ialognter/aceM import android.os.(undleM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    7/65

    > import android.view.iewMD import android.widget.(uttonMJ import android.widget.9dit)e;tM1C import android.widget.Ladio(uttonM11 import android.widget.)oastM1

    10public class KalkulatorKonversiActivit" e;tends Activit" N13 EOO alled wen te activit" is /irst created. OE15private 9dit)e;t etAngkaM1private Ladio(utton rb$eter%eetM1>private (utton btnProsesM1D

    1J HverrideCpublic void onreate4(undle savednstancetate6 N1 super.onreate4savednstancetate6M setontentiew4L.la"out.main6M0

    3 etAngka 49dit)e;t6 /indiew("d4L.id.edit)e;t16M5 rb$eter%eet 4Ladio(utton6 /indiew("d4L.id.radioC6M rb$eter%eet.setecked4true6M>btnProses 4(utton6 /indiew("d4L.id.button16M

    DJbtnProses.setnlick!istener4new iew.nlick!istener 46N0Cpublic void onlick4iew v6 N01 kalkulasi 46M0 Q00 Q6M03 Q05

    0public void kalkulasi 46 N0> double meter 0.DCD0JJM0D

    0J double angka CM3C tr" N31 angka 2ouble.parse2ouble43 etAngka.get)e;t 46.totring 466M30 Q catc 49;ception e6 N33 )oast.make)e;t4tis , B$asukkan AngkaB,

    10Android Programming - candra.web.id35 )oast.!9'G)=F!'G6.sow46M3 Q3>

    3D tring asilM3J i/4rb$eter%eet.isecked 466 N5C asil angka I B $eter B I51 4angka O meter6 I B %eetBM5 Q else N

    50 asil angka I B %eet B I53 4angka E meter6 I B $eterBM55 Q5

    5> Alert2ialog.(uilder ab new Alert2ialog.(uilder4tis6M5D ab.set)itle4B=asilB6M5J ab.set$essage4asil6MC ab.setPositive(utton4BkB,1 new 2ialognter/ace.nlick!istener 46 Npublic void onlick42ialognter/ace dialog ,

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    8/65

    0 int wic6 N3 dialog.dismiss 46M5 Q Q6M>

    D Alert2ialog dialog ab.create 46MJ dialog.sow46M>C Q>1 QF F

    KalkulatorKonversiActivit".javaetela semua ditambakan, simpan perubaan. Pastikan semua kelas "angperlu di-import tela diimport.

    1.8 -unningebelum dapat menjalankan program, pastikan terlebi daulu Anda telammembuat irtual 2evice android dengan versi .0.0 4Api 1C6 atau versi setelan"a4untuk pembuatan A2, liat Appendi;6. Atau jika Anda memilikiperangkat andset Android, Anda dapat menggunakann"a sebagai tempat

    uji coba program dengan mengubungkann"a melalui U(.Ada beberapa cara untuk menjalankan program, Pertama dengan menekankombinasi tombol 0trl4"11 atau melalui menu -un > -un atau denganmenekan (utton Lun pada toolbar. Gambar 1.J di bawa ini adala gambardialog run saat pertama kali menjalankan aplikasi.13Android Programming - candra.web.id

    Gambar 1.J: Lun As RPili Android Applicationonto asil Lunning aplikasi "ang tela jadi:Gambar 1.1C: =asil Lunning Aplikasi15

    $2U!2

    9(age +ie%erTargetGambar .1: mage iewer1Android Programming - candra.web.id

    2.1 ProjectPada modul ini kita akan mencoba membuat aplikasi untuk mengola gambar

    dengan resource gambar berasal dari 2 ard. elain menampilkanGambar, pada modul ini kita juga akan mencoba menggunakan dan memanggilAplikasi built-in Android dari dalam aplikasi kita.Untuk mencoban"a, kita perlu membuat sebua Project baru. (uat sebuaProject baru dengan kon/igurasi Project sebagai berikut:# Project name:9(age +ie%er# (uild target: Api 1!# Application name: 9(age +ie%er

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    9/65

    # Package name: lab.andro.android.i(agevie%er# reate Activit": 9(age+ie%erActivit# $inimum 2K: 1!

    2.2 )aoutetela Project dibuat, selanjutn"a kita perlu menguba la"out (ain.x(l

    "ang tela ada. )ambakan beberapa Android Programming - candra.web.id

    Kurang lebi la"out akan terliat seperti gambar . di bawa ini.Gambar .: !a"out2engan isi /ile main.;ml menjadi:F1 ?@;ml versionB1.CB encodingBut/ -DB@& ?!inear!a"out ;mlns:androidBttp: EE scemas.android.comEapkEresEandroidB0 android:la"outFwidtB/illFparentB3 android:la"outFeigtB/illFparentB

    5 android:orientationBverticalB &> ?(uttonD android:idBHIidEbutton1BJ android:la"outFwidtBmatcFparentB1C android:la"outFeigtBwrapFcontentB11 android:te;tB(uka GambarB E&1

    1DAndroid Programming - candra.web.id10 ?mageiew13 android:idBHIidEimageiew1B15 android:la"outFwidtBmatcFparentB1 android:la"outFeigtBmatcFparentB

    1> android:srcBHdrawableEicFlauncerB E&1D1J ?E!inear!a"out &F F

    main.;mlKemudian simpan perubaan pada la"out.

    2.3 Activitetela la"out selesai dibuat, selanjutn"a kita perlu mengimplementasikanlogika program ke dalam Activit"n"a. kenarion"a "akni:

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    10/65

    # Ketika user menekan button +(uka Gambar+ user akan masuk ke galeriGambar "ang ada pada =andset Android.# Gambar "ang dipili ole user pada galeri, akan ditampilkan dibawabutton +(uka Gambar+.(erdasarkan skenario tersebut, kita akan membutukan Activit" lain "akni

    Activit" Galer". Activit" galer" "ang akan kita gunakan adala acitivit"galer" built-in dari Android. eingga kita tidak perlu repot-repot untukmembuat Activit" baru "ang serupa.Untuk mengimplementasikan skenario tersebut, berikut adala langkalangkan"a:a. (uka Activit" 9(age+ie%erActivit, kemudian tambakan beberapapropert" berikut:> ...Dpublic class mageiewerActivit" e;tends Activit" NJpublic static /inal int FP!=FGA$(AL 1M1Cprivate (utton btn(ukaM11private mageiew ivGambarM1

    ...*angn lupa untuk menekan tombol 0trl45#i't4$ untuk mengimportkelas secara otomatis.1JAndroid Programming - candra.web.id

    b. elanjutn"a pada metode on0reate, linkan btnBuka dan ivGabar denganwidget-widget "ang ada pada la"out:1 ...10 Hverride13public void onreate4(undle savednstancetate6 N15 super.onreate4savednstancetate6M1 setontentiew4L.la"out.main6M1>btn(uka 4(utton6 /indiew("d4L.id.button16M1D ivGambar 4mageiew6 /indiew("d4L.id.imageiew16M1J ...c. (uat andler untuk mengandle event Klik pada (utton btnBuka di dalammetode on0reate:1J ...Cbtn(uka.setnlick!istener4new iew.nlick!istener46 N1

    public void onlick4iew v6 N0bukaGambar46M3 Q

    5 Q6M ...d. )ambakan metode bukaa(bar ke dalam activit":0C ...01private void bukaGambar46 N0 ntent i new ntent4ntent.A)'FPK,00 android.provider.$ediatore.mages03 .$edia.98)9L'A!F')9')FUL6M

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    11/65

    05 startActivit"%orLesult4i, FP!=FGA$(AL6M0 Q0> ...e. 2an "ang terakir, tambakan verride metode onActivit-esult untukmengandle ketika user memili gambar dari galeri:

    0> ...0D Hverride0Jprotected void onActivit"Lesult4int reuestode,CAndroid Programming - candra.web.id

    3C int resultode, ntent data6 N31 super.onActivit"Lesult4reuestode, resultode, data6M3

    30 switc 4reuestode6 N33 case FP!=FGA$(AL:35 i/4resultode L9U!)FK6N3 Uri gambar)erpili data.get2ata46M

    3> nputtream gbrtream nullM3D tr" N3J gbrtream getontentLesolver465C .opennputtream4gambar)erpili6M51 Q catc 4%ile'ot%ound9;ception e6 N5 e.printtack)race46M50 returnM53 Q55 (itmap bitGambar (itmap%actor"5 .decodetream4gbrtream6M5> ivGambar.setmage(itmap4bitGambar6M

    5D Q5JCbreakM1

    de/ault:0breakM3 Q5 Q .../. eingga, source untuk activit" ini menjadi:F1package lab.andro.android.imageviewerM

    0 import java.io.%ile'ot%ound9;ceptionM3 import java.io.nputtreamM5

    import android.app.Activit"M> import android.content.ntentMD import android.grapics.(itmapMJ import android.grapics.(itmap%actor"M1C import android.net.UriM11 import android.os.(undleM1 import android.view.iewM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    12/65

    10 import android.widget.(uttonM

    1Android Programming - candra.web.id13 import android.widget.mageiewM15

    1public class mageiewerActivit" e;tends Activit" N1>public static /inal int FP!=FGA$(AL 1M1Dprivate (utton btn(ukaM1Jprivate mageiew ivGambarMC

    1 Hverridepublic void onreate4(undle savednstancetate6 N0 super.onreate4savednstancetate6M3 setontentiew4L.la"out.main6M5btn(uka 4(utton6 /indiew("d4L.id.button16M ivGambar 4mageiew6 /indiew("d4L.id.imageiew16M>

    Dbtn(uka.setnlick!istener4new iew.nlick!istener 46 NJ

    0Cpublic void onlick4iew v6 N01bukaGambar 46M

    0 Q00 Q6M03 Q05

    0private void bukaGambar 46 N0> ntent i new ntent4ntent.A)'FPK ,0D android.provider.$ediatore.mages0J .$edia.98)9L'A!F')9')FUL6M3C startActivit"%orLesult4i, FP!=FGA$(AL6M31 Q3

    30 Hverride33protected void onActivit"Lesult4int reuestode , intresultode , ntent data6 N

    35 super.onActivit"Lesult4reuestode , resultode , data6M33> switc 4reuestode6 N3D case FP!=FGA$(AL:3J i/4resultode L9U!)FK6N5C Uri gambar)erpili data.get2ata 46M51 nputtream gbrtream nullM5 tr" N50 gbrtream getontentLesolver 46.opennputtream4gambar)erpili6M53 Q catc 4%ile'ot%ound9;ception e6 N55 e.printtack)race 46M5 returnM5> Q

    5D (itmap bitGambar (itmap%actor".decodetream4gbrtream6M5J ivGambar.setmage(itmap4bitGambar6M

    Android Programming - candra.web.idC Q1

    breakM0

    3 de/ault:

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    13/65

    5breakM Q> QD QF F

    mageiewerActivit".java

    g. impan semua perubaan.2.8 -unningebelum mencoba menjalankan aplikasi 9(age +ie%er ini, kita perlumenambakan /ile gambar ke dalam 2-ard emulator terlebi daulu. Untukmenambakan /ile gambar ini caran"a "akni:# *alankan emulator "ang akan digunakan untuk menguji aplikasi.# etela emulator berasil dijalankan dan s"stem Android n"a berjalansempurna, buka perspective ::&5pada 9clipse, melalui menu ;indo%> $pen Perspective > ::&5.# Pada 22$, buka tab "ile ,xplorer.# Untuk men"impan ke dalam 2-ard, masuk ke direktor" (nt >

    sdcard. Pili direktor" sdcard kemudian klik button berlogo =P "angada persis di pojok kanan-atas list direktor" pada tab tersebut. ebagaiconto liat Gambar .0.# Kemudian pili /ile gambar "ang akan di-upload ke dalam emulator.# etela /ile berasil di-upload, pada beberapa kasus kadang kita arusmerestart emulator untuk dapat meliat asiln"a.0Android Programming - candra.web.id

    Gambar .0: %ile 9;ploreretela /ile gambar berasil di-upload ke emulator, selanjutn"a tinggal mengujicoba Aplikasi mage viewer kita ini. onto asil Lun program:

    Gambar .3: =asil Lun aplikasi mage iewer3$2U!

    3

    Audio PlaerTargetGambar 0.1: )arget: $usic Pla"er5Android Programming - candra.web.id

    3.1 ProjectPada modul ini kita akan mencoba membuat aplikasi $usic Pla"er. Padaaplikasi ini, kita akan mencoba kontrol-kontrol sederana media pla"er untukdapat menjalankan music seperti pla", pause dan resume. Untuk mencoban"a,kita perlu membuat sebua project baru, dengan kon/igurasi sebagaiberikut:# Project name:&usic Plaer# (uild target: Api 1!

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    14/65

    # Application name: &usic Plaer# Package name: lab.andro.android.(usicplaer# reate Activit": &usicPlaerActivit# $inimum 2K: 1!

    3.2 )aout(uat la"out sederana, untuk media pla"er ini. Pada la"out ini kita akanmengggunakan -elative)aout untuk membuat tampilan "ang menarikdan lebi /le;ible. 4Tips: Untuk membuat la"out ini sebaikn"a menggunakanmode 8$!, karena akan terasa lebi muda dibandingkan denganmode gra/is6(uat la"out sebagai berikut:F1 ?@;ml versionB1.CB encodingBut/ -DB@& ?Lelative!a"out ;mlns:androidBttp: EE scemas.android.comEapkEresEandroidB0 android:la"outFwidtB/illFparentB3 android:la"outFeigtB/illFparentB &5

    ?mage(utton> android:idBHIidEimage(uttonAddBD android:la"outFwidtBwrapFcontentBJ android:la"outFeigtBwrapFcontentB1C android:la"outFalignParent(ottomBtrueB11 android:la"outFalign)opBHIidEimage(uttonPla"B1 android:srcBHandroid:drawableEicFinputFaddB E&10

    13 ?mage(utton

    Android Programming - candra.web.id15 android:idBHIidEimage(uttonPla"B1 android:la"outFwidtBwrapFcontentB

    1> android:la"outFeigtBwrapFcontentB1D android:la"outFalignParent(ottomBtrueB1J android:la"outFtoLigt/BHIidEimage(uttonAddBC android:srcBHandroid:drawableEicFmediaFpla"B E&1

    ?eek(ar0 android:idBHIidEseek(ar1B3 android:la"outFwidtBmatcFparentB5 android:la"outFeigtBwrapFcontentB android:la"outFalign)opBHIidEimage(uttonPla"B> android:la"outFtoLigt/BHIidEimage(uttonPla"B E&D

    J ?)e;tiew0C android:idBHIidEte;tiew1B

    01 android:la"outFwidtBwrapFcontentB0 android:la"outFeigtBwrapFcontentB00 android:la"outFaboveBHIidEimage(uttonAddB03 android:la"outFalignParent!e/tBtrueB05 android:la"outFalignParentLigtBtrueB0 android:te;tB)e;tiewB E&0>

    0D ?mageiew0J android:idBHIidEimageiew1B3C android:la"outFwidtBwrapFcontentB

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    15/65

    31 android:la"outFeigtBwrapFcontentB3 android:la"outFaboveBHIidEte;tiew1B30 android:la"outFalignParent!e/tBtrueB33 android:la"outFalignParentLigtBtrueB35 android:la"outFalignParent)opBtrueB3 android:srcBHandroid:drawableEdividerFori7ontalFdarkBE&3>

    3D ?ELelative!a"out &F F

    !a"out main.;mlatatan: emua gambar atau icon "ang digunakan pada widget mage(utton,menggunakan icon "ang ada dalam 2K. Anda bisa menggantin"a denganicon atau gambar sendiri "ang di taru di dalam direktor" res > dra%able.*ika la"out ditampilkan dari mode gra/is, maka akan terliat seperti Gambar0. di bawa ini.>Android Programming - candra.web.id

    Gambar 0.: !a"out main.;ml dengan menggunakan Lelative!a"out

    3.3 Activitelanjutn"a kita perlu menguba Activit" &usicPlaerActivit. kenarioaplikasi $usic Pla"er ini "akni:# User memili /ile dari dalam galeri $usic dengan mengklik buttonbergambar +plus+.# etela /ile dipili, User baru bisa menjalankan /ilen"a dengan menekan(utton +Pla"+.# Ketika music sedang berjalan, seek bar akan ter-update secara otomatis,(utton pla" beruba menjadi button +Pause+, jika /ile musicn"amemiliki Cover Art maka Cover Art-n"a akan ditampilkan dalam mage

    iew dan n/ormasi /ile $usic akan ditampilkan di )e;tiew "angterletak dibawa mageiew.# User dapat men-seek music ke posisi tertentu dengan mengklik padaseekbar.DAndroid Programming - candra.web.id

    Untuk mengimplementasikan skenario program diatas, mari kita tambakanbeberapa perubaan pada Activit"MusicPlayerActivity.a. )ambakan beberapa Propert" berikut:...private static /inal int F(UKAFGA!9LT 1M

    private $ediaPla"er mPla"erMprivate mage(utton ibPla"Mprivate mageiew ivGambarMprivate eek(ar sbProgressMprivate )e;tiew tv%ilen/oMprivate mage(utton btnMprivate Uri uri%ileMprivate Uri lastUriM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    16/65

    private $edia$etadataLetriever mLetrieverMprivate boolean pla"edMprivate /inal =andler andler new =andler46M...b. Pada metode onCreate, linkkan semua widget "ang tela dibuat di atas

    dengan widget "ang ada dalam la"out. erta implementasikan semuaobjek 4selain

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    17/65

    QQ6M...d. mplementasikan metodeseekC#ange%&ie' v(:...

    protected void seekange4iew v6 Ni/ 4mPla"er.isPla"ing466 Neek(ar sb 4eek(ar6 vMmPla"er.seek)o4sb.getProgress466MQ0CAndroid Programming - candra.web.id

    Q...e. mplementasikan metode bukaFile%(:...private void buka%ile46 Nntent i new ntent4ntent.A)'FPK,android.provider.$ediatore.Audio.$edia.98)9L'A!F')9')FUL6MstartActivit"%orLesult4i, F(UKAFGA!9LT6MQ.../. )ambakan veride $etode onActivity)esult untuk mengambil uri dari/ile "ang dipili pada Galeri....Hverrideprotected void onActivit"Lesult4int reuestode,int resultode, ntent data6 Nsuper.onActivit"Lesult4reuestode, resultode, data6Mswitc 4reuestode6 Ncase F(UKAFGA!9LT:i/ 4resultode L9U!)FK6 NUri /ile data.get2ata46Mset%ile4/ile6MQbreakMde/ault:breakM

    QQ...g. )ambakan metodesetFile%*ri +ile(:...private void set%ile4Uri /ile6 N01Android Programming - candra.web.id

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    18/65

    uri%ile /ileMibPla".set9nabled4true6MQ.... (uat metode untuk menjalankan tread "ang bertugas untuk mengupdate

    eek(ar....public void startPla"ProgressUpdater46 NsbProgress.setProgress4mPla"er.geturrentPosition466Mi/ 4mPla"er.isPla"ing466 NLunnable noti/ikasi new Lunnable46 Npublic void run46 NstartPla"ProgressUpdater46MQQMandler.post2ela"ed4noti/ikasi, 1CCC6M

    Q else NmPla"er.pause46MibPla".setmageLesource4android.L.drawable.icFmediaFpla"6MQQ...i. (uat metode pla"Pause46:...private void pla"Pause46 N...Q...j. Pada metode$layPause, tambakan kode untuk mengecek status $ediaPla"erPlayer dan uri dari /ile "ang akan dimainkan:...i/ 4pla"ed SS lastUri uri%ile6 NmPla"er.pause46MibPla".setmageLesource40Android Programming - candra.web.id

    android.L.drawable.icFmediaFpla"6Mpla"ed /alseM

    returnMQ else i/ 4pla"ed SS lastUri uri%ile6 NmPla"er.start46MibPla".setmageLesource4android.L.drawable.icFmediaFpause6Mpla"ed trueMstartPla"ProgressUpdater46MreturnM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    19/65

    Qi/ 4lastUri uri%ile6 Ni/ 4pla"ed6 NmPla"er.stop46MQ

    mPla"er.reset46Mpla"ed /alseMibPla".setmageLesource4android.L.drawable.icFmediaFpla"6MQ...Pengecekan dilakukan agar tidak terjadi kesalaan logika saat menjalankanmedia pla"er.k. mplementasikan kode untuk mengontrol objek $ediaPla"er pada metodeini, serta beberapa kode untuk mendapatkan in/ormasi mengenai /ileAudio "ang dijalankan 4)itle, Artist, over Art dan lainn"a6:

    ...tr" NmPla"er.set2ataource4tis, uri%ile6MmPla"er.prepare46MmPla"er.start46Mpla"ed trueMlastUri uri%ileMmLetriever.set2ataource4tis, uri%ile6Mtring judul mLetriever00Android Programming - candra.web.id

    .e;tract$etadata4$edia$etadataLetriever.$9)A2A)AFK9TF))!96Mtring artist mLetriever.e;tract$etadata4$edia$etadataLetriever.$9)A2A)AFK9TFAL))6Mtv%ilen/o.set)e;t4artist I B - B I judul6Mb"teVW albumArt mLetriever.get9mbeddedPicture46Mi/ 4albumArt null6 N(itmap artwork (itmap%actor".decode("teArra"4albumArt, C,

    albumArt.lengt6MivGambar.setmage(itmap4artwork6MQ else NivGambar.setmageLesource4L.drawable.icFlauncer6MQibPla".setmageLesource4android.L.drawable.icFmediaFpause6M

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    20/65

    sbProgress.set$a;4mPla"er.get2uration466MsbProgress.setProgress4C6MstartPla"ProgressUpdater46MQ catc 4llegalArgument9;ception e6 Ne.printtack)race46M

    Q catc 4ecurit"9;ception e6 Ne.printtack)race46MQ catc 4llegaltate9;ception e6 Ne.printtack)race46MQ catc 49;ception e6 Ne.printtack)race46M)oast.make)e;t4tis,BGagal membuka /ileB, )oast.!9'G)=F!'G6.sow46MQ...

    03Android Programming - candra.web.idKeterangan kode program:1 mLetriever.set2ataource4tis, uri%ile6M tring judul mLetriever0 .e;tract$etadata43 $edia$etadataLetriever5 .$9)A2A)AFK9TF))!96M tring artist mLetriever> .e;tract$etadata4D $edia$etadataLetrieverJ .$9)A2A)AFK9TFAL))6M1C

    11 tv%ilen/o.set)e;t4artist I B - B I judul6M1

    10b"teVW albumArt mLetriever.get9mbeddedPicture46M13 i/ 4albumArt null6 N15 (itmap artwork (itmap%actor".decode("teArra"41 albumArt, C,1> albumArt.lengt6M1D ivGambar.setmage(itmap4artwork6M1J Q else NC ivGambar.setmageLesource41 L.drawable.icFlauncer6M Q0

    3 ibPla".setmageLesource45 android.L.drawable.icFmediaFpause6M2igunakan untuk mendapatkan in/ormasi dari /ile Audio. 2enganmenggunakan objek dariMediaMetadata)etriever, kita dapatmengambil metadata /ile mengenai )itle 4MediaMetadata)etrieverM-"A.A"A/K-0/"1"-6, Artist dan lainn"a. edangkan

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    21/65

    untuk mengambil over Art dengan meman/aatkan metodeget-beddedPicture dari objekMediaMetadata)etriever. 'amunembedded picture ini masi bert"pe b"te, seingga perlu dikonversimenjadi bitmap terlebi daulu.l. eingga keseluruan kode program akan menjadi: F1package lab.andro.android.musicpla"erM

    0 import java.io.9;ceptionM3 import android.app.Activit"M5 import android.content.ntentM

    05Android Programming - candra.web.id import android.grapics.(itmapM> import android.grapics.(itmap%actor"MD import android.media.$edia$etadataLetrieverMJ import android.media.$ediaPla"erM1C import android.net.UriM11 import android.os.(undleM1 import android.os.=andlerM

    10 import android.view.$otion9ventM13 import android.view.iewM15 import android.widget.mage(uttonM1 import android.widget.mageiewM1> import android.widget.eek(arM1D import android.widget.)e;tiewM1J import android.widget.)oastMC

    1public class $usicPla"erActivit" e;tends Activit" Nprivate static /inal int F(UKAFGA!9LT 1M0private $ediaPla"er mPla"erM3private mage(utton ibPla"M5private mageiew ivGambarMprivate eek(ar sbProgressM>private )e;tiew tv%ilen/oMDprivate mage(utton btnMJprivate Uri uri%ileM0Cprivate Uri lastUriM01private $edia$etadataLetriever mLetrieverM0private boolean pla"edM00private /inal =andler andler new =andler 46M03

    05 EOO alled wen te activit" is /irst created. OE0 Hverride0>public void onreate4(undle savednstancetate6 N0D super.onreate4savednstancetate6M0J setontentiew4L.la"out.main6M3C

    31 ibPla" 4mage(utton6 /indiew("d4L.id.image(uttonPla"6M3 ibPla".set9nabled4/alse6M30 ivGambar 4mageiew6 /indiew("d4L.id.imageiew16M33 sbProgress 4eek(ar6 /indiew("d4L.id.seek(ar16M35 tv%ilen/o 4)e;tiew6 /indiew("d4L.id.te;tiew16M3btn 4mage(utton6 /indiew("d4L.id.image(uttonAdd6M3> mLetriever new $edia$etadataLetriever 46M3D

    3J mPla"er new $ediaPla"er 46M5Cpla"ed /alseM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    22/65

    51

    5btn.setnlick!istener4new iew.nlick!istener 46 N50public void onlick4iew v6 N53buka%ile 46M

    0Android Programming - candra.web.id55 Q5 Q6M5>

    5D ibPla".setnlick!istener4new iew.nlick!istener 46 N5Jpublic void onlick4iew v6 NCpla"Pause 46M1 Q Q6M0

    3 mPla"er.setnompletion!istener4new $ediaPla"er.nompletion!istener 46 N5public void onompletion4$ediaPla"er mp6 Npla"ed /alseM> ibPla".setmageLesource4android.L.drawable.icFmediaFpla"6MD QJ Q6M>C

    >1 sbProgress.setn)ouc!istener4new iew.n)ouc!istener 46 N>

    >0public boolean on)ouc4iew v, $otion9vent event6 N>3 seekange4v6M>5 return /alseM> Q>> Q6M>D

    >J QDC

    D1protected void seekange4iew v6 ND i/ 4mPla"er.isPla"ing 466 ND0 eek(ar sb 4eek(ar6 vMD3 mPla"er.seek)o4sb.getProgress 466MD5 QD QD>

    DDprivate void pla"Pause 46 NDJ

    JC i/ 4pla"ed SS lastUri uri%ile6 NJ1 mPla"er.pause 46MJ ibPla".setmageLesource4J0 android.L.drawable.icFmediaFpla"6MJ3pla"ed /alseMJ5 returnMJ Q else i/ 4 pla"ed SS lastUri uri%ile6 NJ> mPla"er.start 46MJD ibPla".setmageLesource4JJ android.L.drawable.icFmediaFpause6M1CCpla"ed trueM1C1 startPla"ProgressUpdater 46M

    0>Android Programming - candra.web.id1C returnM1C0 Q

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    23/65

    1C3

    1C5 i/ 4lastUri uri%ile6 N1C i/ 4pla"ed6 N1C> mPla"er.stop46M1CD Q1CJ mPla"er.reset 46M11Cpla"ed /alseM111 ibPla".setmageLesource411 android.L.drawable.icFmediaFpla"6M110 Q113

    115 tr" N11

    11> mPla"er.set2ataource4tis , uri%ile6M11D mPla"er.prepare 46M11J mPla"er.start 46M1Cpla"ed trueM11 lastUri uri%ileM1

    10 mLetriever.set2ataource4tis , uri%ile6M13 tring judul mLetriever

    15 .e;tract$etadata41 $edia$etadataLetriever1> .$9)A2A)AFK9TF))!96M1D tring artist mLetriever1J .e;tract$etadata410C $edia$etadataLetriever101 .$9)A2A)AFK9TFAL))6M10

    100 tv%ilen/o.set)e;t4artist I B - B I judul6M103

    105b"teVW albumArt mLetriever.get9mbeddedPicture 46M10 i/ 4albumArt null6 N10> (itmap artwork (itmap%actor".decode("teArra"410D albumArt , C,10J albumArt.lengt6M13C ivGambar.setmage(itmap4artwork6M131 Q else N13 ivGambar.setmageLesource4130 L.drawable.icFlauncer6M133 Q135

    13 ibPla".setmageLesource413> android.L.drawable.icFmediaFpause6M13D

    13J sbProgress.set$a;4mPla"er.get2uration 466M15C sbProgress.setProgress 4C6M

    0DAndroid Programming - candra.web.id

    151 startPla"ProgressUpdater 46M15150 Q catc 4llegalArgument9;ception e6 N153 e.printtack)race 46M155 Q catc 4ecurit"9;ception e6 N15 e.printtack)race 46M15> Q catc 4llegaltate9;ception e6 N15D e.printtack)race 46M15J Q catc 49;ception e6 N1C e.printtack)race 46M

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    24/65

    11 )oast.make)e;t4tis ,1 BGagal membuka /ileB, )oast.!9'G)=F!'G610 .sow46M13 Q15

    1 Q1>

    1Dprivate void buka%ile 46 N1J ntent i new ntent4ntent.A)'FPK ,1>C android.provider.$ediatore1>1 .Audio.$edia.98)9L'A!F')9')FUL6M1> startActivit"%orLesult4i, F(UKAFGA!9LT6M1>0 Q1>3

    1>5 Hverride1>protected void onActivit"Lesult4int reuestode ,1>> int resultode , ntent data6 N1>D super.onActivit"Lesult4reuestode , resultode , data6M1>J

    1DC switc 4reuestode6 N1D1 case F(UKAFGA!9LT:

    1D i/ 4resultode L9U!)FK6 N1D0 Uri /ile data.get2ata 46M1D3 set%ile4/ile6M1D5 Q1DbreakM1D>

    1DD de/ault:1DJbreakM1JC Q1J1 Q1J

    1J0private void set%ile4Uri /ile6 N1J3 uri%ile /ileM1J5 ibPla".set9nabled4true6M1J Q1J>

    1JDpublic void startPla"ProgressUpdater 46 N1JJ sbProgress.setProgress4mPla"er.geturrentPosition 466M

    0JAndroid Programming - candra.web.idCC i/ 4mPla"er.isPla"ing 466 NC1 Lunnable noti/ikasi new Lunnable 46 NCpublic void run46 NC0 startPla"ProgressUpdater 46MC3 QC5 QMC andler.post2ela"ed4noti/ikasi , 1CCC6MC> Q else N

    CD mPla"er.pause 46MCJ ibPla".setmageLesource41C android.L.drawable.icFmediaFpla"6M11 Q1 Q10 QF F

    Activit" $usicPla"erActivit"

    3.8 -unning

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    25/65

    etela semua metode diimplementasikan, sekarang kita perlu mencoba Aplikasiini. 'amun sebelumn"a kita perlu mengupload beberapa /ile $usic kedalam emulator. aran"a dapat Anda baca kembali pada modul sebelumn"a.(erikut adala conto running aplikasi $usicPla"er "ang tela kita buat diatas:

    3CAndroid Programming - candra.web.idGambar 0.0: =asil akir aplikasi31$2U!

    8

    ;eb /ro%serTargetGambar 3.1: )arget Aplikasi:

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    26/65

    # )ambakan widget

    1D ?reuest%ocus E&1J ?E9dit)e;t &C

    1 ?(utton android:idBHIidEbutton1B0 android:la"outFwidtBDCdipB3 android:la"outFeigtBwrapFcontentB5 android:te;tBGoB E& ?E!inear!a"out &>

    D ?

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    27/65

    .... Pada metode onCreate, link-kan semua objek widget di atas denganwidgetn"a "ang ada di la"out:...etAddress 49dit)e;t6 /indiew("d4L.id.edit)e;t16M

    btnGo)oAddr 4(utton6 /indiew("d4L.id.button16M35Android Programming - candra.web.id

    webiew 4

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    28/65

    3 webiew.set

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    29/65

    1 ?Eactivit" & ?Eapplication &0

    3 ?Emani/est &F F

    Activit":

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    30/65

    Tour ke"store contains 1 entr"51Android Programming - candra.web.id

    Alias name: androiddebugke"reation date: Apr 13, C19ntr" t"pe: PrivateKe"9ntr"erti/icate cain lengt: 1erti/icateV1W:wner: 'Android 2ebug, Android, Ussuer: 'Android 2ebug, Android, Uerial number: 1aJ5b33Calid /rom: at Apr 13 1>:CJ:1 ...erti/icate /ingerprints:$25: JJ:D2:(>:J2:13:A:99:3D:00:C:>(:A%:31::2:1C=A1: 9J:2:%:5:A9:%C:2J:0:2:>0:J0:3:9J:(9:5(:91:...=A5: >:3>:AA:C9:2:>:CD:(C:3:%5:(:J::%1:D1:>:...ignature algoritm name: =A5witLAersion: 0...c. Ambil $25 dari /ingerprint ke"store tersebut 4dicetak biru pada contodi atas6.d. (uka browser, kemudian masuk ke alamat:#ttps**developers.google.co(*android*(aps=api=signup

    e. $asukkan $25 /ingerprint tadi, kemudian klik +enerate AP9 Ke+.Untuk sementara simpan AP ke" "ang Anda dapatkan untuk digunakannanti pada program.

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    31/65

    android:clickableBtrueBandroid:apiKe"BAPFK9TBE&Kemudian ganti AP9?K,@ dengan AP Ke" "ang tela didapatkan padabagian 5.1 di atas. $isaln"a:

    android:apiKe"BC79cmw%gGjgue*dD( android:nameB.PetakuActivit"B1D android:labelBHstringEappFnameB &1J ?intent -/ilter &C ?action android:nameBandroid.intent.action.$A'

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    32/65

    B E&1

    ?categor" android:nameBandroid.intent.categor".!AU'=9LB E&0 ?Eintent -/ilter &3 ?Eactivit" &5

    ?uses -librar" android:nameBcom.google.android.mapsB E&> ?Eapplication &D

    J ?Emani/est &F F

    Android$ani/est.;ml

    return /alseM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    33/65

    1D Q1J QF F

    Activit": PetakuActivit"55Android Programming - candra.web.id

    e. elanjutn"a coba run program untuk mencoba apaka $ap berasil diload dengan baik atau tidak. onto asil Lun programn"a "akni:Gambar 5.: Petaku

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    34/65

    /alse6M!ocation location location$anager.get!astKnown!ocation4provider6M5>Android Programming - candra.web.id

    i/4location null6 N)oast.make)e;t4tis,B!okasi tidak diperoleB,)oast.!9'G)=F!'G6.sow46MQ...e. etela itu tambakan baris berikut setela inisialisasi !okasi, untuk mengontrol$ap dan menambakan overla":...petaiew 4$apiew6 /indiew("d4L.id.mapview6Mpetaiew.displa"\oomontrols4true6Mpetaiew.set(uiltn\oomontrols4true6Mpetaiew.getontroller46.set\oom41C6Mm"!ocationverla" new $"!ocationverla"4tis,petaiew6Mm"!ocationverla".enableompass46Mpetaiew.getverla"s46.add4m"!ocationverla"6Mm"!ocationverla".runn%irst%i;4new Lunnable46 Npublic void run46 Npetaiew.getontroller46.animate)o4m"!ocationverla".get$"!ocation466MQQ6M.../. Pada metode on!ocationanged, tambakan baris berikut agar setiapkali lokasi beruba, maka peta akan secara otomatis mengara ke lokasitersebut:petaiew.getontroller46.animate)o4m"!ocationverla".get$"!ocation466Mg. $ptional veride metode onLesume dan onPause:...Hverrideprotected void onLesume46 Nsuper.onLesume46M

    location$anager.reuest!ocationUpdates4provider,5DAndroid Programming - candra.web.id

    3CC, 1, tis6Mm"!ocationverla".enableompass46Mm"!ocationverla".enable$"!ocation46MQHverride

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    35/65

    protected void onPause46 Nlocation$anager.removeUpdates4tis6Mm"!ocationverla".disableompass46Mm"!ocationverla".disable$"!ocation46Msuper.onPause46M

    Q.... ource lengkap untuk Activit" PetakuActivit":F1package lab.andro.android.petakuM

    0 import android.content.onte;tM3 import android.location.riteriaM5 import android.location.!ocationM import android.location.!ocation!istenerM> import android.location.!ocation$anagerMD import android.os.(undleMJ import android.widget.)oastM1C

    11 import com.google.android.maps.$apActivit"M1 import com.google.android.maps.$apiewM10 import com.google.android.maps.$"!ocationverla"M13

    15public class PetakuActivit" e;tends $apActivit" implements!ocation!istener N1private !ocation$anager location$anagerM1>private $apiew petaiewM1Dprivate $"!ocationverla" m"!ocationverla"M1Jprivate tring providerMC

    1 Hverridepublic void onreate4(undle savednstancetate6 N0 super.onreate4savednstancetate6M

    3 setontentiew4L.la"out.main6M5

    location$anager 4!ocation$anager6> get"stemervice4onte;t.!A)'F9L96MD

    J riteria criteria new riteria 46M

    5JAndroid Programming - candra.web.id0Cprovider location$anager.get(estProvider4criteria , /alse6M01 !ocation location location$anager.get!astKnown!ocation4provider6M0

    00 i/4location null6 N

    03 )oast.make)e;t4tis ,05 B!okasi tidak diperoleB,0 )oast.!9'G)=F!'G6.sow46M0> Q0D

    0Jpetaiew 4$apiew6 /indiew("d4L.id.mapview6M3Cpetaiew.displa"\oomontrols4true6M31petaiew.set(uiltn\oomontrols4true6M3

    30petaiew.getontroller 46.set\oom 41C6M33

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    36/65

    35 m"!ocationverla" new $"!ocationverla"4tis ,petaiew6M3 m"!ocationverla".enableompass 46M3>petaiew.getverla"s 46.add4m"!ocationverla"6M3D m"!ocationverla".runn%irst%i;4new Lunnable 46 N3Jpublic void run46 N5Cpetaiew.getontroller 46.animate)o451 m"!ocationverla".get$"!ocation 466M5 Q50 Q6M53 Q55

    5 Hverride5>protected boolean isLoute2ispla"ed 46 N5D return /alseM5J QC

    1public void on!ocationanged4!ocation argC6 Npetaiew.getontroller 46.animate)o40 m"!ocationverla".get$"!ocation 466M3

    5 Q

    >public void onProvider2isabled4tring provider6 ND

    J Q>C

    >1public void onProvider9nabled4tring provider6 N>

    >0 Q>3

    >5public void ontatusanged4tring provider , int status ,

    CAndroid Programming - candra.web.id(undle e;tras6 N>

    >> Q>D

    >J HverrideDCprotected void onLesume 46 ND1 super.onLesume 46MD location$anager.reuest!ocationUpdates4provider , 3CC, 1,tis6MD0 m"!ocationverla".enableompass 46MD3 m"!ocationverla".enable$"!ocation 46MD5 QD

    D> HverrideDDprotected void onPause 46 NDJ location$anager.removeUpdates4tis6MJC m"!ocationverla".disableompass 46MJ1 m"!ocationverla".disable$"!ocation 46MJ super.onPause 46MJ0 QJ3 QF F

    Activit": PetakuActivit"i. impan perubaan dan coba run Program. (erikut adala conto asilrunning aplikasi Petaku ini:

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    37/65

    Gambar 5.0: =asil Akir1

    9nter'acing ;eb 5ervices

    $2U!B

    Kontak $nlineTargetGambar .1: )arget0Android Programming - candra.web.id

    B.1 $vervie%Pada modul terakir ini kita akan mencoba mambuat Aplikasi sederana

    "ang melakukan akses ke database server. den"a mirip seperti Aplikasi'otepad "ang ada pada Android, akan tetapi pada conto ini data akandisimpan ke dalam server.(eberapa al "ang perlu kita siapkan sebelum mebuat aplikasi Androidn"a"akni:# 2atabase erver 4$"[!, Postgre[! atau lainn"a6,#

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    38/65

    Q> @&F F

    koneksi.pp# get-kontak.ppF1 ?@ include4]koneksi.pp]6M0 Xuer"B9!9) O %L$ kontakkuBM3

    5 Xresult pgFuer"4Xuer"6 or die4][uer" /ailed: ] .pgFlastFerror 466M

    > Xdata arra" 46MD wile4Xr pgF/etcFarra"4Xresult , null , PG[!FA66 NJ Xdata VW XrM1C Q11 eco jsonFencode4Xdata6M1 @&

    F F

    get-kontak.pp# insert-kontak.ppF1 ?@ include4]koneksi.pp]6M0 Xnama XFP)V]nama]WM3 Xalamat XFP)V]alamat ]WM5 X/lag XFP)V]/lag]WM

    > Xuer"B'9L) ') kontakku 4nama ,alamat ,/lag6A!U9D 4]Xnama ], ]Xalamat ], ]X/lag ]6BMJ

    1C Xresult pgFuer"4Xuer"6 or die4][uer" /ailed: ] .pgFlastFerror 466M11 i/4Xresult6 N1 eco 1M10 Q else N13 eco CM

    5Android Programming - candra.web.id

    15 Q1 @&F F

    insert-kontak.pp

    0atatan Untuk keperluan service 2elete dan Update, Anda dapat mengembangkann"asendiri nanti setela anda dapat membuat sebua inter/ace untukmasing-masing service "ang ada di atas.

    B.3 Aplikasi 0lient AndroidB.3.1 Project(uat project Android dengan kon/igurasi sebagai berikut:# Project name: Kontak $nline

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    39/65

    # (uild target: Api 1! 4atau lainn"a6# Application name: Kontak $nline# Package name: lab.andro.android.kontakonline# reate Activit": Kontak$nlineActivit# $inimum 2K: 1! 4sesuaikan dengan build target6.

    B.3.2 )aout dan &enuPada aplikasi ini, kita akan membuat beberapa !a"out. Takni la"out utama"ang berisikan !istiew, la"out item untuk mengganti item dalam list viewdan la"out untuk membuat Kontak. $ari kita siapkan satu persatu semuala"out ini.# !a"out Utama 4main.;ml6F

    1 ?@;ml versionB1.CB encodingBut/ -DB@& ?!inear!a"out ;mlns:androidBttp: EE scemas.android.comEapkEresEandroidB0 android:la"outFwidtB/illFparentB3 android:la"outFeigtB/illFparentB5 android:orientationBverticalB&Android Programming - candra.web.id

    ?!istiew> android:idBHandroid:idElistBD android:la"outFwidtBmatcFparentBJ android:la"outFeigtBwrapFcontentB &1C ?E!istiew &11 ?E!inear!a"out &F F

    main.;ml0atatan Propert" android:id pada widget !istiew arus berisi

    BHandroid:idElistB.# !a"out untuk item dalam !ist iew pada main.;ml4itemFkontak.;ml6F1 ?@;ml versionB1.CB encodingBut/ -DB@& ?!inear!a"out ;mlns:androidBttp: EE scemas.android.comEapkEresEandroidB0 android:la"outFwidtBmatcFparentB3 android:la"outFeigtBmatcFparentB5 android:orientationBverticalB & ?Lelative!a"out> android:la"outFwidtBmatcFparentBD android:la"outFeigtBwrapFcontentB &J ?)e;tiew1C android:idBHIidEte;t'amaB11 android:la"outFwidtBwrapFcontentB1 android:la"outFeigtBwrapFcontentB10 android:la"outFalignParent!e/tBtrueB13 android:la"outFalignParent)opBtrueB15 android:te;tB!arge )e;tB1 android:te;tAppearanceB@android:attrE

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    40/65

    te;tAppearance!argeB E&1> ?mageiew1D android:idBHIidEimage%lagB1J android:la"outFalignParentLigtBtrueBC android:la"outFwidtBwrapFcontentB1 android:la"outFeigtBwrapFcontentB android:la"outFalignParent)opBtrueB0 android:srcBHandroid:drawableEstarFbigFonB E&3 ?ELelative!a"out &5 ?E!inear!a"out &F F

    itemFkontak.;ml>Android Programming - candra.web.id

    # !a"out untuk membuat Kontak 4kontakFbaru.;ml6F

    1 ?@;ml versionB1.CB encodingBut/ -DB@& ?Lelative!a"out ;mlns:androidBttp: EE scemas.android.comEapkEresEandroidB0 android:la"outFwidtBmatcFparentB3 android:la"outFeigtBmatcFparentB5 android:orientationBverticalB & ?)e;tiew> android:idBHIidEte;tiew1BD android:la"outFwidtBwrapFcontentBJ android:la"outFeigtBwrapFcontentB1C android:la"outFalignParent)opBtrueB11 android:la"outFalignParentLigtBtrueB1 android:la"outFalignParent!e/tBtrueB

    10 android:te;tB'ama:B13 android:te;tAppearanceB@android:attrEte;tAppearance$ediumB E&15 ?9dit)e;t1 android:idBHIidEedit)e;t'amaB1> android:la"outFwidtBmatcFparentB1D android:la"outFeigtBwrapFcontentB1J android:single!ineBtrueBC android:la"outFalignParentLigtBtrueB1 android:la"outFalignParent!e/tBtrueB android:la"outFbelowBHIidEte;tiew1B0 android:emsB1CB &

    3 ?reuest%ocus E&5 ?E9dit)e;t & ?)e;tiew> android:idBHIidEte;tiewBD android:la"outFwidtBwrapFcontentBJ android:la"outFeigtBwrapFcontentB0C android:te;tBAlamat:B01 android:la"outFalignParentLigtBtrueB0 android:la"outFalignParent!e/tBtrueB

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    41/65

    00 android:la"outFbelowBHIidEedit)e;t'amaB03 android:te;tAppearanceB@android:attrEte;tAppearance$ediumB E&05 ?9dit)e;t0 android:idBHIidEedit)e;tAlamatB0> android:la"outFwidtBmatcFparentB0D android:la"outFeigtBwrapFcontentB0J android:la"outFaboveBHIidEceck(o;PentingB

    DAndroid Programming - candra.web.id

    3C android:la"outFalignParent!e/tBtrueB31 android:la"outFalignParentLigtBtrueB3 android:la"outFbelowBHIidEte;tiewB30 android:gravit"BtopB33 android:auto)e;tB/alseB35 android:emsB1CB E&3 ?eck(o;3> android:idBHIidEceck(o;PentingB3D android:la"outFwidtBwrapFcontentB3J android:la"outFeigtBwrapFcontentB5C android:la"outFalignParentLigtBtrueB51 android:la"outFalignParent!e/tBtrueB5 android:la"outFalignParent(ottomBtrueB50 android:te;tBPentingB E&53 ?ELelative!a"out &F F

    kontakFbaru.;ml2an kita juga membutukan dua bua /ile 8$! lagi untuk membuat menu.ara pembuatan menu ini sama seperti pembuatan !a"out baru, akan tetapipili -esource Tpe-n"a menjadi &enu. (erikut beberapa menu "ang

    perlu dibuat:# $enu utama 4menuFutama.;ml6 untuk menu pada Activit" utama: F1 ?@;ml versionB1.CB encodingBut/ -DB@& ?menu ;mlns:androidBttp: EE scemas.android.comEapkEresEandroidB &0 ?item3 android:idBHIidEmenuKontak(aruB5 android:iconBHandroid:drawableEicFmenuFaddB android:titleB)amba KontakB&> ?Eitem&D ?itemJ android:idBHIidEmenuAboutB1C android:iconBHandroid:drawableEicFmenuFelpB11 android:titleBAboutB&1 ?Eitem&10 ?item13 android:idBHIidEmenuLe/resB15 android:iconBHandroid:drawableEicFmenuFrotateB1 android:titleBLe/resB&

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    42/65

    1> ?Eitem&

    JAndroid Programming - candra.web.id

    1D ?Emenu&F F

    menuFutama.;ml

    # $enu simpan 4menuFsimpan.;ml6 untuk menu pada Activit"(uatKontak(aru:F

    1 ?@;ml versionB1.CB encodingBut/ -DB@& ?menu ;mlns:androidBttp: EE scemas.android.comEapkEresEandroidB &0 ?item3 android:idBHIidEmenuimpanB5 android:iconBHandroid:drawableEicFmenuFsaveB android:titleBimpanB&> ?Eitem&D ?Emenu&

    F FmenuFsimpan.;ml

    B.3.3 Progra(etela la"out selesai dibuat, selanjutn"a kita perlu menambakan kode kedalam program. Ada beberapa al "ang perlu kita tambakan ke dalamprogram selain Activit" utama "ang tela di buat pada saat pembuatanProject "akni: kelas ustom=))Plient untuk memudakan akses =))P43ocket PrograingR)opik Advance6, kelas Kontak dan dua bua Activit"lain "akni Kontak(aruActivit" dan (acaKontakActivit". $ari kitatambakan satu-persatu.CTTP 0lient 6ustom=))Plient.java7

    (uat sebua kelas baru pada package lab.andro.android.kontakonlinedengan nama ustom=))Plient kemudian isi dengan koe-kode beikut:F

    1package lab.andro.android.kontakonlineM

    0 import java.io.(u//eredLeaderM3 import java.io.9;ceptionM5 import java.io.nputtreamLeaderM import java.net.ULM> import java.util.Arra"!istMD

    J import org.apace.ttp.=ttpLesponseM

    >CAndroid Programming - candra.web.id

    1C import org.apace.ttp.client.=ttplientM11 import org.apace.ttp.client.entit".Url9ncoded%orm9ntit"M1 import org.apace.ttp.client.metods.=ttpGetM10 import org.apace.ttp.client.metods.=ttpPostM13 import org.apace.ttp.conn.params.onn$anagerParamsM15 import org.apace.ttp.impl.client.2e/ault=ttplientM1 import org.apace.ttp.params.=ttponnectionParamsM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    43/65

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    44/65

    e.printtack)race 46M0 Q3 Q5 Q Q>

    Dpublic static tring e;ecute=ttpGet4tring url6 trows9;ception NJ (u//eredLeader in nullM>C tr" N>1 =ttplient client get=ttplient 46M> =ttpGet reuest new =ttpGet 46M>0 reuest.setUL4new UL4url66M>3 =ttpLesponse response client.e;ecute4reuest6M>5 in new (u//eredLeader4new nputtreamLeader4response.get9ntit" 46.getontent 4666M>

    >> tring(u//er sb new tring(u//er4BB6M>D tring line BBM>J tring '! "stem.getPropert"4Bline.separatorB6MDC wile 44line in.read!ine 466 null6 ND1 sb.append4line I '!6MD QD0 in.close 46MD3

    D5 tring result sb.totring 46MD return resultMD> Q /inall" N

    >Android Programming - candra.web.id

    DD i/ 4in null6 N

    DJ tr" NJC in.close 46MJ1 Q catc 49;ception e6 NJ e.printtack)race 46MJ0 QJ3 QJ5 QJ QJ> QF F

    Kelas ustom=))PlientKelas Kontak

    (uat kelas baru dengan nama Kontak dengan mengimplementasikan inter/aceandroid.os.Parcelable.F1package lab.andro.android.kontakonlineM

    0 import android.os.ParcelM3 import android.os.ParcelableM5

    public class Kontak implements ParcelableN>private tring idMDprivate tring namaM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    45/65

    Jprivate tring alamatM1Cprivate tring /lagM11public Kontak4tring id , tring nama , tring alamat ,tring /lag6 N1 super 46M10 tis.id idM13 tis.nama namaM15 tis.alamat alamatM1 tis./lag /lagM1> Q1Dpublic Kontak 46 N1J super 46MC tis.id BBM1 tis.nama BBM tis.alamat BBM0 tis./lag BnormalBM3 Q5public Kontak4Parcel s6 N

    >0Android Programming - candra.web.id

    tis.id s.readtring 46M> tis.nama s.readtring 46MD tis.alamat s.readtring 46MJ tis./lag s.readtring 46M0C Q01public tring getd 46 N0 return idM00 Q03public void setd4tring id6 N05 tis.id idM

    0 Q0>public tring get'ama 46 N0D return namaM0J Q3Cpublic void set'ama4tring nama6 N31 tis.nama namaM3 Q30public tring getAlamat 46 N33 return alamatM35 Q3public void setAlamat4tring isi6 N3> tis.alamat isiM

    3D Q3Jpublic int describeontents 46 N5C return CM51 Q5public tring get%lag 46 N50 return /lagM53 Q55public void set%lag4tring /lag6 N5 tis./lag /lagM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    46/65

    5> Q5Dpublic void write)oParcel4Parcel dest , int /lags6 N5J dest.writetring4id6MC dest.writetring4nama6M1 dest.writetring4alamat6M dest.writetring4/lag6M0 Q3public static Parcelable.reator ?Kontak & L9A)L5 new Parcelable.reator ?Kontak &46 Npublic Kontak create%romParcel4Parcel source6 N> return new Kontak4source6MD Q

    >3Android Programming - candra.web.id

    Jpublic Kontak VW newArra"4int si7e6 N>C return new KontakVsi7eWM>1 Q> QM>0 QF F

    Kelas KontakActivit dan D5$N Parser

    ebelum membuat semua Activit" "ang lainn"a, buatla sebua nter/acebaru dengan nama Kontaknline sebagai berikut: F1package lab.andro.android.kontakonlineM

    0public inter/ace Kontaknline N3 tring 9L9LFA22L Bttp :EE1C.C..E kontak -onlineEBM

    5 tring G9)FK')AK 9L9LFA22L I Bget -kontak.ppBM tring '9L)FK')AK 9L9LFA22L I Binsert -kontak.ppBM

    > QF F

    nter/ace Kontaknline0atatan Alamat #ttp**1!.!.2.2 adala alamat untuk server lokal 4Pdevelopment6. Untuk server "ang tela diostingkan, ganti tring9L9LFA22L dengan alamat "ang menuju tempat /ile get-kontak.pptersimpan.elanjutn"a Kita perlu menguba Activit" KontaknlineActivit"dan menambakan dua Activit" baru lainn"a "akni Activit"Kontak(aruActivit" dan (acaKontakActivit". $ari kita baas satupersatu:

    a. Activit" KontaknlineActivit"# Uba Activit" ini menjadi !istActivit" dengan menggantisu$erclass-n"a "ang tadin"a dari kelas Activit" menjadi !istActivit"agar dapat lebi muda memproses !istiew. Kemudian implementasikaninter/ace Kontaknline pada kelas ini....public class KontaknlineActivit" e;tends !istActivit" implementsKontaknline N

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    47/65

    ..>5Android Programming - candra.web.id

    # )ambakan beberapa Propert" sebagai berikut:...private !ist?Kontak& kontak new Arra"!ist?Kontak&46Mprivate /inal static int A)FK')AKF(ALU CMprivate Progress2ialog pdMprivate KontakAdapter adapterM...# (uat tiga bua internal kelas bari di dalam kelasEActivit" ini.$asing-masing sebagai berikut:Kelas iew=older...static class iew=older N)e;tiew te;t'amaMmageiew image%lagMQ...Kelas KontakAdapter...private static class KontakAdapter e;tends (aseAdapter Nprivate !a"outn/later ln/laterMHuppress

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    48/65

    older new iew=older46Molder.te;t'ama 4)e;tiew6convertiew./indiew("d4L.id.te;t'ama6Molder.image%lag 4mageiew6convertiew./indiew("d4L.id.image%lag6M

    convertiew.set)ag4older6MQ else Nolder 4iew=older6 convertiew.get)ag46MQolder.te;t'ama.set)e;t4kontak.get4position6.get'ama466Mi/4kontak.get4position6.get%lag46.contains4BpentingB66 Nolder.image%lag.setmageLesource4android.L.drawable.starFbigFon6MQ else Nolder.image%lag.setmageLesource4android.L.drawable.starFbigFo//6M

    Qreturn convertiewMQQ...Kelas 2ata=andler...class 2ata=andler e;tends =andler Npublic void andle$essage4$essage msg6 Nboolean aman msg.get2ata46.get(oolean4BstatB6Mpd.dismiss46Mi/ 4aman6 NArra"!ist?Kontak& lst msg.get2ata46.getParcelableArra"!ist4BdataB6M>>Android Programming - candra.web.id

    i/4lst.is9mpt"466 Nkontak lstM/ill2ata46MQ else N)oast.make)e;t4KontaknlineActivit".tis,B2ata KosongB, )oast.!9'G)=F!'G6.sow46M

    QQ else N)oast.make)e;t4KontaknlineActivit".tis,B2ata tidak dapat ditampilkanB,)oast.!9'G)=F!'G6.sow46MQQQ

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    49/65

    ...dan Kelas Get2ata)read...class Get2ata)read e;tends )read N=andler m=andlerM

    public Get2ata)read4=andler m=andler6 Nsuper46Mtis.m=andler m=andlerMQHverridepublic void run46 Ntring res nullMArra"!ist?Kontak& listkontak new Arra"!ist?Kontak&46Mtr" Nres ustom=))Plient.e;ecute=ttpGet4G9)FK')AK6M

    !og.d4BL9U!)B, res6Mi/ 4res null6 NreturnMQEE Parsing *' ke bjek*'Arra" jsa new *'Arra"4res6Mint i CM>DAndroid Programming - candra.web.id

    wile 4jsa.is'ull4i66 NKontak c new Kontak46Mc.setd4jsa.get*'bject4i6.gettring4BidB6.trim466Mc.set'ama4jsa.get*'bject4i6.gettring4BnamaB6.trim466Mc.setAlamat4jsa.get*'bject4i6.gettring4BalamatB66Mc.set%lag4jsa.get*'bject4i6.gettring4B/lagB6.trim466Mlistkontak.add4c6MiIIMQQ catc 49;ception e6 N

    !og.d4B!GB, e.get$essage466M$essage msg m=andler.obtain$essage46M(undle b new (undle46Mb.put(oolean4BstatB, /alse6Mmsg.set2ata4b6Mm=andler.send$essage4msg6MreturnMQ

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    50/65

    $essage msg m=andler.obtain$essage46M(undle b new (undle46Mi/4listkontak.is9mpt"466 Nb.put(oolean4BstatB, /alse6MQ else N

    b.put(oolean4BstatB, true6Mb.putParcelableArra"!ist4BdataB, listkontak6MQmsg.set2ata4b6Mm=andler.send$essage4msg6MQQ...# (uat metode /ill2ata46 "ang dipanggil dalam kelas 2ata=andler"ang tela dibuat di atas:...

    >JAndroid Programming - candra.web.idprivate void /ill2ata46 Nadapter new KontakAdapter4tis,kontak6Mset!istAdapter4adapter6MQ...# mplementasikan menu serta andlern"a:...Hverridepublic boolean onreateptions$enu4$enu menu6 N$enun/later in/later get$enun/later46Min/later.in/late4L.menu.menuFutama, menu6Mreturn super.onreateptions$enu4menu6MQHverridepublic boolean onptionstemelected4$enutem item6 Nswitc 4item.gettemd466 Ncase L.id.menuKontak(aru:kontak(aru46MbreakMcase L.id.menuAbout:sowAbout46M

    breakMcase L.id.menuLe/res:get2ata46MbreakMde/ault:breakMQreturn super.onptionstemelected4item6M

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    51/65

    Qprivate void sowAbout46 NAlert2ialog.(uilder ab new Alert2ialog.(uilder4tis6Mab.set)itle4BAboutB6Mab.set$essage4Bonto aplikasi untuk nter/acing

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    52/65

    Android Programming - candra.web.id

    # mplementasikan $etode untuk mengandle event Klik padaitem "ang ada dalam !istiew dengan meng-4verride metodeon!isttemlick:...Hverrideprotected void on!isttemlick4!istiew l, iew v, int position,long id6 Nsuper.on!isttemlick4l, v, position, id6Mntent i new ntent4tis, (acaKontakActivit".class6Mi.put9;tra4BkontakB, kontak.get4position66MstartActivit"4i6MQ...# dan "ang terakir, panggil metode get2ata46 melalui metodeonreate...Hverridepublic void onreate4(undle savednstancetate6 Nsuper.onreate4savednstancetate6Msetontentiew4L.la"out.main6Mtis.get2ata46MQ...# eingga kelas ini akan menjadi seperti berikut:F1package lab.andro.android.kontakonlineM

    0 import java.util.Arra"!istM

    3 import java.util.!istM5 import lab.andro.android.kontakonline.LM import org.json.*'Arra"M> import android.app.Alert2ialogMD import android.app.Alert2ialog.(uilderMJ import android.app.!istActivit"M1C import android.app.Progress2ialogM11 import android.content.onte;tM1 import android.content.2ialognter/aceM10 import android.content.ntentM13 import android.grapics.drawable.2rawableM15 import android.os.(undleM1

    import android.os.=andlerMDAndroid Programming - candra.web.id

    1> import android.os.$essageM1D import android.util.!ogM1J import android.view.!a"outn/laterMC import android.view.$enuM1 import android.view.$enun/laterM import android.view.$enutemM

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    53/65

    0 import android.view.iewM3 import android.view.iewGroupM5 import android.widget.(aseAdapterM import android.widget.mageiewM> import android.widget.!istiewMD import android.widget.)e;tiewMJ import android.widget.)oastM0C

    01public class KontaknlineActivit" e;tends!istActivit" implements0 Kontaknline N00private !ist ?Kontak & kontak new Arra"!ist ?Kontak&46M03private /inal static int A)FK')AKF(ALU CM05private Progress2ialog pdM0private kontakAdapter adapterM0>

    0D Hverride0Jpublic void onreate4(undle savednstancetate6 N3C super.onreate4savednstancetate6M31 setontentiew4L.la"out.main6M3 tis.get2ata 46M30 Q33

    35private void get2ata 46 N3pd Progress2ialog.sow4tis , Bedang di ProsesB,3> B$engambil data dari server ...B, true , /alse6M3D 2ata=andler andler new 2ata=andler 46M3J Get2ata)read td new Get2ata)read4andler6M

    5C td.start 46M51 Q5

    50private void /ill2ata 46 N53 adapter new kontakAdapter4tis ,kontak6M55 set!istAdapter4adapter6M

    D0Android Programming - candra.web.id

    5 Q5>

    5D Hverride5Jprotected void on!isttemlick4!istiew l, iew v,int position , long id6 N

    C super.on!isttemlick4l, v, position , id6M1 ntent i new ntent4tis , (acaKontakActivit".class6M i.put9;tra4BkontakB, kontak.get4position66M0 startActivit"4i6M3 Q5

    Hverride

    >public boolean onreateptions$enu4$enu menu6 N

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    54/65

    D $enun/later in/later get$enun/later 46MJ in/later.in/late4L.menu.menuFutama , menu6M>C return super.onreateptions$enu4menu6M>1 Q>

    >0 Hverride

    >3public boolean onptionstemelected4$enutem item6N>5 switc 4item.gettemd 466 N> case L.id.menuKontak(aru:>> kontak(aru 46M>DbreakM>J case L.id.menuAbout:DC sowAbout 46MD1breakMD case L.id.menuLe/res:D0 get2ata 46MD3breakMD5

    D de/ault:D>breakMDD QDJ return super.onptionstemelected4item6MJC QJ1

    Jprivate void sowAbout 46 NJ0 Alert2ialog.(uilder ab new Alert2ialog.(uilder4tis6MJ3 ab.set)itle4BAboutB6M

    D3Android Programming - candra.web.id

    J5 ab.set$essage4Bonto aplikasi untuk nter/acing

    JDpublic void onlick42ialognter/ace dialog , intwic6 NJJ dialog.dismiss 46M1CC Q1C1 Q6M1C ab.setcon4android.L.drawable.icFdialogFin/o6M1C0

    1C3 Alert2ialog a ab.create 46M

    1C5 a.sow46M1C1C> Q1CD

    1CJprivate void kontak(aru 46 N11C ntent i new ntent4tis , Kontak(aruActivit".class6M111 startActivit"%orLesult4i, A)FK')AKF(ALU6M11 Q110

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    55/65

    113 Hverride115protected void onActivit"Lesult4int reuestode ,int resultode , ntent data6 N11 switc 4reuestode6 N11> case A)FK')AKF(ALU:11D i/ 4resultode L9U!)FK6 N11J get2ata 46M1C Q11breakM1 de/ault:10breakM13 Q15 super.onActivit"Lesult4reuestode , resultode ,data6M1 Q1>

    1D class 2ata=andler e;tends =andler N1Jpublic void andle$essage4$essage msg6 N10C

    boolean aman msg.get2ata 46.get(oolean4BstatB6M

    D5Android Programming - candra.web.id

    101pd.dismiss 46M10 i/ 4aman6 N100 Arra"!ist ?Kontak & lst msg.get2ata 46.getParcelableArra"!ist4BdataB6M103 i/4lst.is9mpt" 466 N105 kontak lstM10 /ill2ata 46M10> Q else N10D )oast.make)e;t4KontaknlineActivit".tis ,10J B2ata KosongB, )oast.!9'G)=F!'G613C .sow46M131 Q13 Q else N130 )oast.make)e;t4KontaknlineActivit".tis ,133 B2ata tidak dapat ditampilkanB, )oast.!9'G)=F!'G6135 .sow46M

    13 Q13> Q13D Q13J

    15C class Get2ata)read e;tends )read N151 =andler m=andlerM15

    150public Get2ata)read4=andler m=andler6 N153 super 46M155 tis.m=andler m=andlerM15 Q15>

    15D Hverride15Jpublic void run46 N

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    56/65

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    57/65

    C3private static class kontakAdapter e;tends(aseAdapter NC5private !a"outn/later ln/laterMC Huppressprivate onte;t conte;tM

    D>Android Programming - candra.web.idCDprivate !ist ?Kontak & kontakMCJ

    1Cpublic kontakAdapter4onte;t ct; , !ist ?Kontak &ctt6 N11 ln/later !a"outn/later./rom4ct;6M1 tis.conte;t ct;M10 tis.kontak cttM13 Q15

    1public int getount 46 N1> return kontak.si7e46M1D Q1J

    Cpublic bject gettem4int position6 N1 return kontak.get4position6M Q0

    3public long gettemd4int position6 N5 return positionM

    Q>

    Dpublic iew getiew4int position , iewconvertiew ,J iewGroup parent6 N0C /inal iew=older olderM

    01 i/4convertiew null6 N0 convertiew ln/later.in/late4L.la"out.itemFkontak , null6M00 older new iew=older 46M03 older.te;t'ama 4)e;tiew605 convertiew./indiew("d4L.id.te;t'ama6M0 older.image%lag 4mageiew60> convertiew./indiew("d4L.id.image%lag6M0D convertiew.set)ag4older6M0J Q else N3C older 4iew=older6 convertiew.get)ag 46M31 Q3

    30 older.te;t'ama.set)e;t4kontak.get4position6.get'ama 466M33 i/4kontak.get4position6.get%lag 46.contains4BpentingB66 N35 older.image%lag.setmageLesource4android.L.

    DDAndroid Programming - candra.web.id

    drawable.starFbigFon6M

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    58/65

    3 Q else N3> older.image%lag.setmageLesource4android.L.drawable.starFbigFo//6M3D Q3J return convertiewM5C Q51

    5 Q50

    53 static class iew=older N55 )e;tiew te;t'amaM5 mageiew image%lagM5> Q5D QF F

    Kelas KontaknlineActivit"b. Activit" Kontak(aruActivit"# (uat kelas baru dengan nama Kontak(aruActivit" dengan superclassActivit" dan inter/ace Kontaknline:...public class Kontak(aruActivit" e;tends Activit"implements KontaknlineN...# )ambakan beberapa propert"Eobjek widget berikut untuk menanganiwidget pada !a"out:...private 9dit)e;t edit'amaMprivate 9dit)e;t editAlamatMprivate eck(o; ceckPentingM...# verride metode onreate kemudian set !a"out agar menggunakanla"out kontakFbaru.;ml dan link-kan semua objek widget"ang dibuat di atas:...Hverridepublic void onreate4(undle savednstancetate6 Nsuper.onreate4savednstancetate6MDJAndroid Programming - candra.web.id

    setontentiew4L.la"out.kontakFbaru6Medit'ama 49dit)e;t6 /indiew("d4L.id.edit)e;t'ama6M

    editAlamat 49dit)e;t6 /indiew("d4L.id.edit)e;tAlamat6MceckPenting 4eck(o;6 /indiew("d4L.id.ceck(o;Penting6MQ...# (uat menu pada Activit" sekaligus andlingn"a:...Hverridepublic boolean onreateptions$enu4$enu menu6 N

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    59/65

    $enun/later in/later get$enun/later46Min/later.in/late4L.menu.menuFsimpan, menu6Mreturn super.onreateptions$enu4menu6MQHverride

    public boolean onptionstemelected4$enutem item6 Nswitc 4item.gettemd466 Ncase L.id.menuimpan:simpan46MbreakMde/ault:breakMQreturn super.onptionstemelected4item6MQ...

    # dan buat metode simpan46 untuk mengirim data ke server:...private void simpan46 Ntring nama nullMtring alamat nullMtring /lag BnormalBMi/4edit'ama.get)e;t46.totring46.is9mpt"466 N)oast.make)e;t4tis, B'ama tidak bole KosongB, )oast.!9'G)=F!'G6.returnMQJCAndroid Programming - candra.web.id

    i/4editAlamat.get)e;t46.totring46.is9mpt"466 N)oast.make)e;t4tis, BAlamat tidak bole KosongB, )oast.!9'G)=FreturnMQnama edit'ama.get)e;t46.totring46Malamat editAlamat.get)e;t46.totring46Mi/4ceckPenting.isecked466 N/lag BpentingBMQtring res nullMArra"!ist?'amealuePair& postParameters new Arra"!ist?'amealuePair&46MpostParameters.add4new (asic'amealuePair4BnamaB, nama66MpostParameters.add4new (asic'amealuePair4BalamatB, alamat66M

    postParameters.add4new (asic'amealuePair4B/lagB, /lag66Mtr" Nres ustom=))Plient.e;ecute=ttpPost4'9L)FK')AK, postParameters6Mi/4res.trim46.euals4B1B66 N)oast.make)e;t4tis, B)ersimpanB, )oast.!9'G)=F!'G6.sow46M/inis46MQQ catc 49;ception e6 N

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    60/65

    )oast.make)e;t4tis, BGagal $en"impanB, )oast.!9'G)=F!'G6.sow46MreturnMQQ...

    # eingga kelasEActivit" ini akan menjadi: F1package lab.andro.android.kontakonlineM

    0 import java.util.Arra"!istM3 import org.apace.ttp.'amealuePairM5 import org.apace.ttp.message.(asic'amealuePairM import lab.andro.android.kontakonline.LM> import android.app.Activit"MD import android.os.(undleMJ import android.view.$enuM1C import android.view.$enun/laterM11 import android.view.$enutemM

    J1Android Programming - candra.web.id1 import android.widget.eck(o;M10 import android.widget.9dit)e;tM13 import android.widget.)oastM15

    1public class Kontak(aruActivit" e;tends Activit"implements KontaknlineN1>private 9dit)e;t edit'amaM1Dprivate 9dit)e;t editAlamatM1Jprivate eck(o; ceckPentingMC

    1 Hverridepublic void onreate4(undle savednstancetate6 N0 super.onreate4savednstancetate6M3 setontentiew4L.la"out.kontakFbaru6M5

    edit'ama 49dit)e;t6 /indiew("d4L.id.edit)e;t'ama6M> editAlamat 49dit)e;t6 /indiew("d4L.id.edit)e;tAlamat6MD ceckPenting 4eck(o;6 /indiew("d4L.id.ceck(o;Penting6MJ

    0C Q01

    0 Hverride

    00public boolean onreateptions$enu4$enu menu6 N03 $enun/later in/later get$enun/later 46M05 in/later.in/late4L.menu.menuFsimpan , menu6M0 return super.onreateptions$enu4menu6M0> Q0D

    0J Hverride3Cpublic boolean onptionstemelected4$enutemitem6 N31

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    61/65

    3 switc 4item.gettemd 466 N30 case L.id.menuimpan:33 simpan 46M35breakM3

    3> de/ault:

    3DbreakM3J Q

    JAndroid Programming - candra.web.id

    5C return super.onptionstemelected4item6M51 Q5

    50private void simpan 46 N53 tring nama nullM55 tring alamat nullM5 tring /lag BnormalBM5> i/4edit'ama.get)e;t 46.totring 46.is9mpt" 466 N5D )oast.make)e;t4tis , B'ama tidak bole KosongB,

    )oast.!9'G)=F!'G6.sow46M5J returnMC Q1

    i/4editAlamat.get)e;t 46.totring 46.is9mpt" 466 N0 )oast.make)e;t4tis , BAlamat tidak bole KosongB, )oast.!9'G)=F!'G6.sow46M3 returnM5 Q nama edit'ama.get)e;t 46.totring 46M> alamat editAlamat.get)e;t 46.totring 46MD

    J i/4ceckPenting.isecked 466 N>C /lag BpentingBM>1 Q>

    >0 tring res nullM>3 Arra"!ist ?'amealuePair & postParameters newArra"!ist ?'amealuePair &46M>5postParameters.add4new (asic'amealuePair4BnamaB,nama66M>postParameters.add4new (asic'amealuePair4BalamatB, alamat66M>>postParameters.add4new (asic'amealuePair4B/lagB,/lag66M

    >D tr" N>J res ustom=))Plient.e;ecute=ttpPost4'9L)FK')AK , postParameters6MDC i/4res.trim46.euals4B1B66 ND1 )oast.make)e;t4tis , B)ersimpanB, )oast.!9'G)=F!'G6.sow46MD /inis 46MD0 QD3 Q catc 49;ception e6 N

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    62/65

    J0Android Programming - candra.web.id

    D5 EE )2: andle e;ceptionD )oast.make)e;t4tis , BGagal $en"impanB, )oast.!9'G)=F!'G6.sow46MD> returnMDD QDJ QJC QF F

    Kelas Kontak(aruActivit"c. Activit" (acaKontakActivit"# (uat kelas baru dengan nama (acaKontakActivit" dengan superclassActivit" dan inter/ace Kontaknline 4inter/ace optional6:...public class (acaKontakActivit" e;tends Activit"implements Kontaknline N

    ...# )ambakan beberapa propert"Eobjek widget berikut untuk menanganiwidget pada !a"out:...private 9dit)e;t edit'amaMprivate 9dit)e;t editAlamatMprivate eck(o; ceckPentingM...# verride metode onreate kemudian set !a"out agar menggunakanla"out kontakFbaru.;ml, ambill data "ang dikirim dari activit"KontaknlineActivit" dan link-kan semua objek widget "ang

    dibuat di atas serta inisialisasi didalam metode ini:...Hverridepublic void onreate4(undle savednstancetate6 Nsuper.onreate4savednstancetate6Msetontentiew4L.la"out.kontakFbaru6MKontak k tis.getntent46.getParcelable9;tra4BkontakB6Mi/4knull6 N/inis46MQedit'ama 49dit)e;t6 /indiew("d4L.id.edit)e;t'ama6M

    J3Android Programming - candra.web.ideditAlamat 49dit)e;t6 /indiew("d4L.id.edit)e;tAlamat6MceckPenting 4eck(o;6 /indiew("d4L.id.ceck(o;Penting6Medit'ama.set)e;t4k.get'ama466MeditAlamat.set)e;t4k.getAlamat466Mi/4k.get%lag46.trim46.euals4BpentingB66 NceckPenting.setecked4true6MQ

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    63/65

    edit'ama.set%ocusable4/alse6MeditAlamat.set%ocusable4/alse6MceckPenting.set9nabled4/alse6MQ...

    # eingga kelasEActivit" ini akan menjadi: F1package lab.andro.android.kontakonlineM

    0 import lab.andro.android.kontakonline.LM3 import android.app.Activit"M5 import android.os.(undleM import android.widget.eck(o;M> import android.widget.9dit)e;tMD

    Jpublic class (acaKontakActivit" e;tends Activit"implements Kontaknline N1Cprivate 9dit)e;t edit'amaM11private 9dit)e;t editAlamatM

    1private eck(o; ceckPentingM1013 Hverride15public void onreate4(undle savednstancetate6 N1 super.onreate4savednstancetate6M1> setontentiew4L.la"out.kontakFbaru6M1D Kontak k tis.getntent 46.getParcelable9;tra4BkontakB6M1J i/4knull6 NC /inis 46M1 Q

    0 edit'ama 49dit)e;t6 /indiew("d4L.id.

    edit)e;t'ama6M3 editAlamat 49dit)e;t6 /indiew("d4L.id.edit)e;tAlamat6M

    J5Android Programming - candra.web.id

    5 ceckPenting 4eck(o;6 /indiew("d4L.id.ceck(o;Penting6M

    > edit'ama.set)e;t4k.get'ama 466MD editAlamat.set)e;t4k.getAlamat 466MJ i/4k.get%lag 46.trim46.euals4BpentingB66 N0C ceckPenting.setecked4true6M01 Q0 edit'ama.set%ocusable4/alse6M00 editAlamat.set%ocusable4/alse6M03 ceckPenting.set9nabled4/alse6M05 Q0 QF F

    Kelas (acaKontakActivit"ebelum mengakiri bagian ini, ada baikn"a Anda mengecek kembali apaka

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    64/65

    semua kelasEActivit" tela dibuat. (erikut kelasEActivit" "ang arus dibuat:# (acaKontakActivit"# ustom=))Plient# Kontak# Kontak(aruActivit"

    # Kontaknline dan# KontaknlineActivit" "ang didalamn"a terdapat kelas internal:2ata=andler, Get2ata)read, KontakAdapter dan iew=older.

    B.3.8 Per(issionetela semua bagian program dibuat, program dapat di-run langsung. 'amuntentun"a akan muncul beberapa masala diantaran"a:# 2ata idak dapat ditampilkan 4*ika data dalam database tela ada6.# 2an, aplikasi akan di +Force Close+ ketika mencoba memili menuTa(ba# Kontak.JAndroid Programming - candra.web.id

    Gambar .: 9rror 4kiri data gagal di load dan kanan %orce lose62engan pesan error di 22$ untuk /orce close:F1 C5-C C :5D:3> .5D: 9EAndroidLuntime 40DD6: android.content.Activit"'ot%ound9;ception: Unable to /ind e;plicitactivit" class Nlab.andro.android.kontakonlineElab.andro.android.kontakonline.Kontak(aruActivit" QM ave "oudeclared tis activit" in "our Android$ani/est.;ml@F F

    !og error pada 22$$asala pertama bisa terjadi karena dua al, pertama server belum siap atautidak dapat diakses. Kedua dikarenakan permission untuk menggunakan')9L'9) tidak diberikan pada Android $ani/est. $aka untuk men"elesaikann"a,tambakan baris berikut pada /ile Android&ani'est.x(l diluartag application:?uses-permission android:nameBandroid.permission.')9L'9)B E&edangkan untuk masala "ang kedua, ini dikarenakan Activit"Kontak(aruActivit" masi belum dikenal di dalam mani/est. einggaperlu ditambakan di dalam mani/est:J>Android Programming - candra.web.id

    ?activit"android:nameB.Kontak(aruActivit"Bandroid:labelB(uat Kontak (aruB

    android:temeBHandroid:st"leE)eme.!igtB &?Eactivit"&?activit"android:nameB.(acaKontakActivit"Bandroid:labelB(aca KontakBandroid:temeBHandroid:st"leE)eme.!igtB &?Eactivit"&Kedua tag activit" tersebut arus dimasukkan di dalam /ile Android&ani'est.

  • 8/10/2019 Tutorial Belajar Aplikasi Android

    65/65

    x(l di dalam tag application.F1 ?@;ml versionB1.CB encodingBut/ -DB@& ?mani/est ;mlns:androidBttp: EE scemas.android.comEapkEresEandroidB0packageBlab.andro.android.kontakonlineB

    3 android:versionodeB1B5 android:version'ameB1.CB & ?uses -sdk android:mindkersionB1CB E&> ?uses -permission android:nameBandroid.permission.')9L'9)BE&D

    J ?application1C android:iconBHdrawableEicFlauncerB11 android:labelBHstringEappFnameB1 android:temeBHandroid:st"leE)eme.!igtB &10 ?activit"13 android:nameB.KontaknlineActivit"B15 android:labelBHstringEappFnameB &1 ?intent -/ilter &

    1> ?action android:nameBandroid.intent.action.$A'B E&1D

    1J ?categor" android:nameBandroid.intent.categor".!AU'=9LB E&C ?Eintent -/ilter &1 ?Eactivit" & ?activit"0 android:nameB.Kontak(aruActivit"B3 android:labelB(uat Kontak (aruB5 android:temeBHandroid:st"leE)eme.!igtB & ?Eactivit" &> ?activit"D android:nameB.(acaKontakActivit"BJ android:labelB(aca KontakB

    JDAndroid Programming - candra.web.id0C android:temeBHandroid:st"leE)eme.!igtB &01 ?Eactivit" &0 ?Eapplication &00 ?Emani/est &F F

    si Android$ani/est.;ml

    B.8 -unning!angka terakir adala mencoba running program. *alankan web server

    dan $"[! erver terlebi daulu. Kemudian coba run program Android"ang tela dibuat di atas.Gambar 0: onto asil akir: )ampilan Utama