AND ROI D FAST T RACK

Ukuran: px
Mulai penontonan dengan halaman:

Download "AND ROI D FAST T RACK"

Transkripsi

1 AND ROI D FAST T RACK

2 Tentang Penulis Agus Haryanto, MKOM / Juara 2 Indosat M2 Android Application Contest Juara Harapan Kompetisi Android T-Market (Telesindo) Juara 1 BBDEVID Challenge Blackberry Application (Webworks) Juara 1 AngelHack Blackberry Indonesia

3 ANDROID FAST TRACK A G U S H A R YA N T O

4

5 CONTENTS Preface...vii Pengenalan Android...9 Kenalan dengan Android...9 Instalasi Android...10 Project Android pertama...11 Pengenalan User Interface...19 Mengenal Layout...19 Mengenal View...36 Android Database SQLITE...49 SQLITE...49 Kamus Tiga Bahasa (CRUD)...50 Android Google Map...87 Menampilkan Data GPS...87 Menampilkan Map pada Android...95 Menampilkan Direction pada Map Android PHP MySQL CRUD Android PHP Mysql Penutup Semangat Seminar Workshop Android Referensi v Android Fast Track

6 PREFACE Android begitu fenomenal diusianya masih muda sudah mampu mendominasi pasar smartphone dunia. Bagi pengembang aplikasi itu adalah pasar yang besar untuk aplikasinya. Untuk membuat aplikasi android tidaklah sesulit yang dibayangkan. Syarat utamanya kita harus menguasai dasar java dan konsep object orientedya (OOP). Pada buku Android Fast Track ini akan membahas bagian-bagian penting dalam pembuatan aplikasi Android meliputi Pengenalan dasar pembuatan aplikasi android, pengenalan cara menggunakan database sqlite android, pengenalan cara menggunakan Map API 2 untuk mengembangkan aplikasi android yang menggunakan peta. Pengenalan cara membuat aplikasi android yang datanya tersimpan di server Buku ini tentunya masih jauh dari sempurna. apabila ada masukkan langsung saja Untuk itu ke agus.superwriter@gmail.com. Untuk melihat tutorial android lainnya dapat berkunjung ke situs Untuk kampus atau sekolah yang berminat mengadakan seminar atau workshop android atau lainnya bisa hubungi saya di agus.superwriter@gmail.com atau di Khusus untuk luar kota biaya trans- portasi dan akomodasi ditanggung penyelenggara acara. vii

7 1 PENGENALAN ANDROID KENALAN DENGAN ANDROID Sebelum melangkah lebih jauh, alangkah baiknya jika kita mengenal apa itu android. Android adalah Sistem Operasi yang dikembangkan dan dipopulerkan oleh Google. Andy Rubin dapat kita sebut sebagai otak utama dibalik OS android ini. Pada awalnya perkembangan OS Android ini kurang begitu bagus, Hal ini membuat Google turun tangan dengan turut melahirkan ponsel Google Android pertama yang legendaris yang dikenal dengan nama Nexus One. Di Nexus 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. Dan hasilnya dapat dilihat saat ini android menguasai pasar Smartphone Dunia dengan dipimpin oleh Samsung dengan seri Galaxynya. Berikut saya tampilkan data analisis dari Gartner.

8 Ada Sistem Operasi berarti ada aplikasi yang dapat kita buat di dalamnya. Pada Android Fast Track ini kami mencoba mengenalkan cara membuta aplikasi pada android, disini metode yang diterapkan akan lebih banyak praktek. I N S TA L A S I A N D R O I D Sebelum memulai membuat aplikasi android tentunya kita harus mempersiapkan softwarenya terlebih dahulu. Step Instalaasi : 1. Download Java 1.7 dari oracle.com dk7-downloads html lalu install. 2. Download Ecliplse Bundle (Eclipse + ADT + Android SDK Platform) dari developer.andorid.com 3. Unzip file yang didownload ke direktori yang kita inginkan misalanya c:\development 4. Instalasi Selesai. Untuk menjalankannnya, masuk ke direktori eclipse dari file yang diunzip lalu jalankan eclipse 5. Untuk mendownload Platform android lainnya, jalankan SDKManager Untuk Spesifikasi Hardwarenya agar terasa nyaman waktu develop aplikasi sebaikanya gunakan komputer dengan processor core i3 keatas dan memori 4GB 10

9 AGUS HARYANTO PROJECT ANDROID P E R TA M A Dalam hidup selalu ada yang pertama, demikian juga dengan belajar. Kali ini kita akan membuat project Android Pertama kita. 1. Pada eclipse dibagian toolbar klik New 2. Pada jendela yang tanpil, klik folder Android, lalu pilih Android Application Project lalu klik Next 3. Isilah isian pada jendela New Android Application Field Keterangan Application Name Nama Aplikasi. Yang akan terlihat pada Icon Launcher Aplikasi. Project Name Nama Project. Nama Project ini boleh beda dengan nama Aplikasi. Package Name Nama package aplikasi kita, biasanya diawali dengan domain_organisasi lalu nama aplikasi. 11 Pengenalan Android

10 Misalnya net.agusharyanto.myfirstapp Minimum Required SDK Minimum SDK yang diperbolehkan untuk menjalankan aplikasi. Target SDK Target SDK yang akan menjalakan Aplikasi. Compile With Aplikasi akan di compile dengan SDK versi ini. Theme Theme yang akan dipakai untuk develop aplikasi. Klik Next 4. Mucul Jendela untuk mengkonfigurasi project, biarkan saja dengan nilai default. Klik Next 5. Muncul Jendela untuk mengatur Icon dari Aplikasi disini kita harus menyiapkan Icon dengan ukuran 32x32, 48x48, 72x72, 128x128. Jika belum siap klik Next saja. 6. Pada jendela Activity pilih Empty Activity lalu klik Next. Jika ingin pakai Fragment pilih Blank Activity. Karena baru belajar kita pilih yang tanpa Fragment yaitu Empty Activity 7. Pada jendela Empty Activity, kita bisa menentukan nama Activity dan layoutnya, untuk awal kita gunakan suja nilai yang sudah ada (default) lalu klik Finish Setelah selesai, maka kita sudah berhasil membuat project android dan bisa langsung merun aplikasinya. Tetapi sebelumnya kita harus memperhatikan beberapa file dan direktori yang ada pada project kita. 12

11 AGUS HARYANTO AndroidManifest.xml Pada file ini konfigurasi projectkita ditentukan, meliputi Default Activity yang akan dijalankan pada saat aplikasi dijalankan 13 Pengenalan Android

12 Daftar Activity dan Service yang akan digunakan dalam aplikasi. Datftar Permission Minimal SDK yang dapat menjalankan Aplikasi. Icon Aplikasi. src/ Direktori src/ adalah direktori dimana file-file class java aplikasi kita disimpan res/ Direktory res adalah direktori dimana file-file resource yang berkaitan dengan aplikasi disimpan ada beberapa direktori penting dibawah res/ ini layout/ direktori layout adalah tempat untuk menyimpan xml file layout user interface aplikasi. values/ direktori values adalah tempat untuk meyimpan file xml resource yang berkaitan dengan xml layout seperti String Definition dan Color Definition drawable-***/ adalah direktori untuk menyimpna file-file gambar, suara dan lainnya yang digunakan dalam aplikasi. Setelah kita mengerti, mari kita run projectnya, caranya adalah pada dari menu eclipse pilih Run ----> Run As ----> Android Application Jika belum ada Emulator AVDnya kita bisa menambahkan melalui menu Window ---> AVD Manager Terlihat kita sudah berhasil menjalankan project kita. 14

13 AGUS HARYANTO Dari mana tulisan Hello world! Yang pertama kita lihat adalah file AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" oid" package="net.agusharyanto.myfirstapp" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> 15 Pengenalan Android

14 <application android:allowbackup="true" > <activity android:name="net.agusharyanto.myfirstapp.mainactivity " > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> Perhatikan disini activity yang dieksekusi pertama kali adalah MainActivity Mari kita buka file MainActivity.java package net.agusharyanto.myfirstapp; android.os.bundle; android.app.activity; android.view.menu; public class MainActivity extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); public boolean oncreateoptionsmenu(menu menu) { 16

15 AGUS HARYANTO // Inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.main, menu); return true; Perhatikan activity_main.xml <RelativeLayout xmlns:android=" oid" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" " " n" tools:context=".mainactivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> Disini menggunakan relative layout yang didalamnya ada TextView dari sinilah HelloWorld muncul, buka file string.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">myfirstapp</string> <string name="action_settings">settings</string> 17 Pengenalan Android

16 <string name="hello_world">hello world!</string> </resources> Tugas Jawablah Pertanyaan-pertanyaan dibwah ini. 1. Apa itu Android? 2. Apayang membuat anda tertarik belajar membuat aplikasi android? 3. Apa keuntungan yang didapat jika kita mempunyai kemampuan untuk membuat aplikasi android? 4. Anda lebih suka bahasa java atau HTML 5? 5. Anda suka dengan programming? 18

17 2 PENGENALAN USER I N T E R FA C E Sebelumnya kita sudah belajar membuat aplikasi sederhana pada Android. Sekarang kita melangkah ke aplikasi yang lebih menarik, yaitu aplikasi yang sudah menggunakan beberapa object view groups dan view. M E N G E N A L L AY O U T Pada Android layout memegang peranan penting terutama pada user interface. Dalam layout biasany didalamnya terdiri dari satu atau lebih objek view sehingga dapatlah disebut Layout adalah View Group. Ada beberapa layout yang berlaku di android. Linear Layout Linear Layout sesuai dengan namanya digunakan untuk menyusun view sacara linear vertical atau horizontal. Agar Lebih memahaminya mari kita buat satu project yang menggunakan linear layout

18 1. Buat project baru, isi kan parameter-parameternya seperti dibawah ini 20

19 AGUS HARYANTO Field Isi Application Name BelajarLinearLayout Project Name BelajarLinearLayout Package Name net.agusharyanto.belajarlayout Minimum SDK Api 8: Android 2.2 (Froyo) Required Target SDK Api 19: Android 4.4 (KitKat) Compile With Holo Light With Dark Action Bar Activity Name BelajarLinearLayoutActivity Layout Name main 2. Buka File activity_main.xml kemudian ketikan kode berikut <LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="${packagename.${activityclass"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="merah" android:gravity="center_horizontal" android:background="#aa0000" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="hijau" android:gravity="center_horizontal" android:background="#00aa00" android:layout_width="wrap_content" 21 Pengenalan User Interface

20 android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="biru" android:gravity="center_horizontal" android:background="#0000aa" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="kuning" android:gravity="center_horizontal" android:background="#aaaa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="baris Satu" android:textsize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <EditText android:text="baris Dua" android:textsize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <Button android:text="baris Tiga" android:textsize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="baris Empat" android:textsize="15pt" 22

21 AGUS HARYANTO android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> </LinearLayout> Coba perhatikan kita ada tiga tag LinearLayout. 1. LinearLayout yang paling luar android:orientation diset vertical, yang berarti setiap view atau layout yang berada didalamnya akan disusn secara vertical. 2. LinearLayout yang kedua berada didalam LinearLayout yang diluar, android:orientation diset horizontal, yang berarti setiap view atau layout yang berada didalamnya akan disusun secara horizontal 3. Linear Layout yang ketiga juga berada didalam LinearLayout yang diluar, android:orientation diset vertical yang berarti setiap view atau layout yang berada didalamnya akan disusun secara vertical LinearLayout yang paling luar bisa disebut parent dari LinearLayout yang kedua dan ketiga. Disini kita juga mulai dikenalkan dengan beberapa tag baru yang masuk kedalam golongan view Tag Fungsi TextView Untuk menampilkan Text dalam bentuk label EditText Untuk Menampilkan Inputan Text Button Digunakan untuk menampilkan button atau tombol. Diatas juga terlihat properti-properti (Kalau kita biasa dengan HTML ini bisa disebut Atribut dan CSSnya) yang melekat pada masing-masing view. Property (Atribut) 23 Pengenalan User Interface fungsi

22 android:id Menetapkan id dari suatu view android:text Menetapkan isi text yang akan ditampilkan Property (CSS) fungsi android:textsize Menetapkan besar ukuran huruf android:layout_width Menetapkan lebar dari suatu view android:layout_height Menetapkan tinggi dari suatu view android:layout_weight Menunjukkan berapa banyak ruang ekstra dalam LinearLayout akan dialokasikan ke tampilan yang terkait dengan LayoutParams. android:gravity Menentukan tempat object/view pada suatu layout Agar lebih memahami fungsi dari property-property diatas cobalah baca javadoc android pada situs developer.andorid.com dan coba rubah nilainya. 3. Buka File MainActivity.java package net.agusharyanto.belajarandroidlayout; android.app.activity; android.os.bundle; public class MainActivity extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); 24

23 4. AGUS HARYANTO Sekarang Mari kita jalankan projectnya TableLayout Yang namanya table pasti ada baris dan kolom, demikian juga dengan TableLayout ini, view yang ada dalam layout ini akan disusun berdasarkan baris dan kolomnya.dimana ada TableLayout maka didalamnya akan ada TableRow TableRow adalah child dari TableLayout. Setiap Satu TableRow merupakan 1 baris dalam table. Pusing yang dengan teori, yah sudah kita langsung praktek saja. 25 Pengenalan User Interface

24 Masih dengan project yang tadi buat pada directory res/layout buat layout baru dengan nama tablelayout.xml 26

25 27 Pengenalan User Interface AGUS HARYANTO

26 Sacara ototmatis akan membuat file tablelayout.xml difolder layout, Edit file tersebut lalu ketikkan kode berikut <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" roid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchcolumns="1"> 28

27 AGUS HARYANTO <TableRow> <TextView android:text="nama" android:padding="3dip" android:background="#0000aa"/> <TextView android:text="nilai" android:gravity="right" android:padding="3dip" android:background="#0000aa" /> </TableRow> <TableRow> <TextView android:text="agus" android:padding="3dip" /> <TextView android:text="90" android:gravity="right" android:padding="3dip" /> </TableRow> <TableRow> <TextView android:text="zainal" android:padding="3dip" /> <TextView android:text="80" android:gravity="right" android:padding="3dip" /> </TableRow> </TableLayout> Pada file tablelayout.xml diatas terdapat 1 TableLayout yang didalamnya 3 TableRow, disetiap TableRow masing-masing mempunya 2 TextView, dari struktur code diatas maka akan terlihat sebuah table yang mempunyai 3 baris dan 2 kolom. buka file MainActivity.java rubah layout yang digunakan un tuk activity ini menjadi yang semula activity_main menjadi tablelayout package net.agusharyanto.belajarandroidlayout; android.app.activity; android.os.bundle; 29 Pengenalan User Interface

28 public class MainActivity extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.tablelayout); Sekarang mari kita run projectnya Nah Betulkan hasilnya dalam bentuk table dangan 3 baris dan 2 kolom. RelativeLayout 30

29 AGUS HARYANTO RelativeLayout sesuai dengan namanya, disini kita dapat menentukan posisi dari suatu view berdasarkan sudut pandang parent atau siblingnya. Agar lebih mudah dimengerti mari kita mulai lagi codingnya 1. Masih dengan project yang tadi buat pada directory res/layout buat layout baru dengan nama relativelayout.xml caranya sama seperti buat tablelayout diatas hanya pada jendela New Android XML File pada root elementnya pilih RelativeLayout Pada file relativelayout.xml ketikan kode berikut <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=" roid" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#005500" android:padding="10px" > 31 Pengenalan User Interface

30 <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="isi Pesan:" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" und" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_marginleft="10px" android:text="kirim" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="cancel" /> </RelativeLayout> 2. Buka file MainActivity.java package net.agusharyanto.belajarandroidlayout; android.app.activity; android.os.bundle; public class MainActivity extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.relativelayout); 32

31 3. AGUS HARYANTO Sekarang mari kita run projectnya AbsoluteLayout Absolute Layout dapat digunakan untuk meletakkan view sesuai dengan posisi yang kita inginkan. Masih dengan project yang tadi buat pada directory res/layout buat layout baru dengan nama absolutelayout.xml <?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android=" > <Button android:layout_width="188px" android:layout_height="wrap_content" android:text="button" android:layout_x="126px" android:layout_y="361px" /> 33 Pengenalan User Interface

32 <Button android:layout_width="113px" android:layout_height="wrap_content" android:text="button" android:layout_x="12px" android:layout_y="361px" /> </AbsoluteLayout> Buka file MainActivity.java package net.agusharyanto.belajarandroidlayout; android.app.activity; android.os.bundle; public class MainActivity extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.absolutelayout); Sekarang mari kita run projectnya 34

33 AGUS HARYANTO MENGENAL VIEW Sebelumnya kita telah belajar tentang layout pada android disitu melihat ada TextView, Button dan lain-lain. Nah TextView, Button dan kawan-kawannya itu kalau diandroid disebut sebagai View, View ini adalah komponen-komponen yang membentuk user interface pada aplikasi android. Kita bisa mengelompokkan view ini dalam beberapa group. Basic Views, biasanya ini yang umum atau sering digunakan seperti TextView, EditText dan Button Picker Views, biasanya berupa pilihan untuk menginputkan Date dan Time seperti DatePicker dan TimePicker. List Views, biasanya menampilkan daftar pilihan yang panjang seperti ListView dan Spinner View Display Views view yang digunakan untuk menampilkan gambar seperti Gallery dan ImageSwitcher views. 35 Pengenalan User Interface

34 Menus views yang menampilkan tambahan menu ataupun context menu Additional Views seperti AnalogClock dan DigitalClock Basic View Pada Seksi ini, kita akan membahas basic view pada android, untuk meudahkan saya akan menjelaskanya dalam bentuk table TextView EditText Button ImageButton CheckBox ToggleButton RadioButton RadioGroup Widget Fungsi TextView sama seperti label pada SWING, yaitu untuk menampilkan tulisan dilayar. EditText sama seperti TextBox pada SWING, yaitu untuk user menginputkan data Button Sama seperti Button pada SWING yaiu sebagai Trigger untuk menjalankan suatu Fungsi ImageButton Sama fungsinya seperti Button, Bedanya Button ini didalamnya ada gambarnya CheckBox Digunakan apabila ada pertanyaan pilihan yang jawabannya bisa lebih dari satu Radio Button Biasanya digunakan untuk pilihan yang jawabannya 1 Radio Group Kumpulan dari Radio Button 36

35 AGUS HARYANTO Sekarang mari kita coba gunakan view-view diatas kedalam aplikasi. 1. Buat New Android Projectnya 37 Pengenalan User Interface

36 2. edit file activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" oid" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="save" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="open" /> <ImageButton android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" /> <CheckBox android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="autosave" /> <CheckBox style="?android:attr/starstyle" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioGroup android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" 38

37 AGUS HARYANTO > <RadioButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="option 1" /> <RadioButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="option 2" /> </RadioGroup> <ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 39 Pengenalan User Interface

38 Perhatikan atribut id yang mewakili identitas dari setiap view. Untuk mendeklarasikan id pada sebuah view harus diawali diikuti dengan nama yang ingin kita berikan 3. Sekarang mari kita jalankan projectnya Coba kita sentuh beberapa view, hasilnya ada yang seperti ini 40

39 AGUS HARYANTO Tetapi tentunya kita tidak ingin hanya ditampilan saja yang berubah. Tentunya kita ingin program juga dapat menangkap apa yang terjadi pada user Interface. Untuk itu mari kita buka otak dari project kita, yaitu file MainActivity.java package net.agusharyanto.basicview; android.app.activity; android.os.bundle; android.view.view; 41 Pengenalan User Interface

40 android.widget.button; android.widget.checkbox; android.widget.radiogroup; android.widget.radiogroup.oncheckedchangelistener; android.widget.toast; android.widget.togglebutton; public class MainActivity extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); //---Button view--button btnopen = (Button) findviewbyid(r.id.btnopen); btnopen.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Toast.makeText(getBaseContext(), "You have clicked the Open button", Toast.LENGTH_SHORT).show(); ); Button btnsave = (Button) findviewbyid(r.id.btnsave); btnsave.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { DisplayToast("You have clicked the Save button"); ); //---CheckBox--CheckBox checkbox = (CheckBox) findviewbyid(r.id.chkautosave); checkbox.setonclicklistener(new View.OnClickListener() { 42

41 AGUS HARYANTO checked"); public void onclick(view v) { if (((CheckBox)v).isChecked()) DisplayToast("CheckBox is else DisplayToast("CheckBox is unchecked"); ); //---RadioButton--RadioGroup radiogroup = (RadioGroup) findviewbyid(r.id.rdbgp1); radiogroup.setoncheckedchangelistener(new OnCheckedChangeListener() { public void oncheckedchanged(radiogroup group, int checkedid) { //---displays the ID of the RadioButton that is checked--displaytoast(integer.tostring(checkedid)); ); //---ToggleButton--ToggleButton togglebutton = (ToggleButton) findviewbyid(r.id.toggle1); togglebutton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { if (((ToggleButton)v).isChecked()) DisplayToast("Toggle button is On"); else DisplayToast("Toggle button is Off"); ); private void DisplayToast(String msg) { Toast.makeText(getBaseContext(), msg, 43 Pengenalan User Interface

42 Toast.LENGTH_SHORT).show(); Oke mari kita perhatikan code by codenya Button btnopen = (Button) findviewbyid(r.id.btnopen); btnopen.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { Toast.makeText(getBaseContext(), "You have clicked the Open button", Toast.LENGTH_SHORT).show(); ); Agar sebuah view bisa kita manipulasi (merubah isi, atau menangkap event) perlu didaftarkan di code activity. Contoh diatas kita mendaftarkan View (Button) dengan id btnopen kedalam sebuah variable btnopen. setelah itu kita bisa menambahkan listener pada button tersebut, kalau pada code diatas yang kita daftarkan adalah setonclicklistener. Efek yang terjadi adalah apabila btnopen diklik maka akan mengeksekusi perintah yang ada pada method onclick. Pada kode diatas akan menampilkan popup informasi dalam bentuk Toast Untuk Button lainnya dan view lainnya silahkan dicoba sendiri. Dan perhatikan pada method setonclick dari masing-masing view. 44

43 AGUS HARYANTO Tugas Kerjakan tugas-tugas dibawah ini 1. Buatlah aplikasi kalkulator sederhana yang fungsinya menghitung dua bilangan seperti dibawah ini 45 Pengenalan User Interface

44 46

45 47 Pengenalan User Interface AGUS HARYANTO

46 3 A N D R O I D D ATA B A S E SQLITE Sebelumnya kita sudah belajar membuat aplikasi sederhana pada Android, nah sekarang mari kita buat aplikasi yang lebih keren, aplikasi yang menggunakan database SQLite. S QL I T E Seperti telah dijelaskan diatas database pada android menggunakan SQLite. Dengan SQLite untuk insert, update dan query data dapat dilakukan dengan syntak SQL. Untuk itu sebelum melangkah pembuatan aplikasi Android yang memanfatkan firtur SQlite databasenya, kita harus menguasai cara menggunakan SQLite. Sama seperti database lainnya syntak SQLnya terbagi 2 kategori yaitu syntak untuk Data Definition Language (DDL) dan Data Manipulation Language (DML). Bagi yang pernah belajar database pasti tidak asing dengan kedua istilah tersebut. Sekarang ada pertanyaan nih apa beda DDL dan DML?

47 Biar mudah dipahami, kalau database itu kita ibaratkan sebuah rumah, maka DDL itu adalah syntax untuk membuat rumah, menambah kamar, merubah bangunan rumah, makanya yang termasuk syntak-syantak DDL adalah create table, alter table, drop table. sedangkan DML adalah syntax untuk mengetahui isi rumah, siapa saja penghuninya, berapa jumlahnya, ada berapa yang pria dan yang wanita, adakah anak-anak dirumah itu. Makanya yang termasuk syntak-syntak DML adalah insert, update, delete, select Untuk mengetahui lebih lanjut tentang sqlite bisa kunjungi SQLite Home Page KAMUS TIGA BAHASA (CRUD) Sekarang mari kita buat project yang menggunakan database sqlite di android. Dulu sebelum pakai android dihandphone yang dulu pasati pernah install kamus inggris Indonesia, yang kita gunakan untuk mencari terjemahan suatu kata dalam bahasa indonesia ke bahasa inggris dan jerman. Sebetulnya diandroid juga sudah ada yang buat. Tetapi tentunya akan lebih puas jika kita buat sendiri. Goal dari Aplikasi ini adalah untuk memahami CRUD dbsqlite pada Android. Berikut langkah-langkahnya 1. Buat project baru android dengan nama Kamus 50

48 AGUS HARYANTO 2. Buat Class baru dengan nama DatabaseHelper.java package net.agusharyanto.kamus; android.content.contentvalues; android.content.context; android.database.sqlite.sqlitedatabase; android.database.sqlite.sqliteopenhelper; public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "dbkamus"; public static final String INGGRIS= "inggris"; public static final String INDONESIA = "indonesia"; public static final String JERMAN = "JERMAN"; //Constructor DataKamus untuk initiate database 51 Android Database SQLITE

49 public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, 1); //method createtable untuk membuat table kamus public void createtable(sqlitedatabase db){ db.execsql("drop TABLE IF EXISTS kamus"); db.execsql("create TABLE if not exists kamus (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "inggris TEXT, indonesia TEXT, jerman TEXT);"); //method generatedata untuk mengisikan data ke kamus. public void generatedata(sqlitedatabase db){ ContentValues cv=new ContentValues(); cv.put(inggris, "run"); cv.put(indonesia, "lari"); cv.put(jerman, "laufen"); db.insert("kamus", INGGRIS, cv); cv.put(inggris, "walk"); cv.put(indonesia, "jalan"); cv.put(jerman, "gehen"); db.insert("kamus", INDONESIA, cv); cv.put(inggris, "read"); cv.put(indonesia, "membaca"); cv.put(jerman, "lesen"); db.insert("kamus", JERMAN, public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { // TODO Auto-generated method stub createtable(db); public void oncreate(sqlitedatabase db) { // TODO Auto-generated method stub //Toast.makeText(getBaseContext(), "Oncreate", Toast.LENGTH_SHORT).show(); createtable(db); 52

50 AGUS HARYANTO generatedata(db); Pada class inilah database dibuat dengan nama dbkamus, disini table juga dibuat dengan nama kamus dan diisikan dengan beberapa data. 3. Edit file activity_main.xml pada direktori res/layout lalu ketikan kode berikut <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" oid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="kamus Inggris Indonesia Jerman" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="inggris :" > </TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" > <requestfocus> </requestfocus> </EditText> <Button android:layout_width="fill_parent" 53 Android Database SQLITE

51 android:layout_height="wrap_content" android:onclick="getterjemahan" android:text="terjemahkan" > </Button> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="indonesia :" > </TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:editable="false" android:text="" > </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="jerman" > </TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" > </EditText> </LinearLayout> Disini untuk user interface menggunakan linear layout yang didalamnya ada tiga edit text dan satu button 4. Edit file MainActivity.java yang ada apada direktori src/ lalu ketikan kode berikut package net.agusharyanto.kamus; android.app.activity; android.database.cursor; android.database.sqlite.sqlitedatabase; 54

52 AGUS HARYANTO android.os.bundle; android.view.view; android.widget.edittext; android.widget.toast; public class MainActivity extends Activity { private SQLiteDatabase db = null; private Cursor kamuscursor = null; private EditText txtinggris; private EditText txtindonesia; private EditText txtjerman; private DatabaseHelper datakamus = null; public static final String INGGRIS = "inggris"; public static final String INDONESIA = "indonesia"; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); datakamus = new DatabaseHelper(this); db = datakamus.getwritabledatabase(); setcontentview(r.layout.activity_main); txtinggris = (EditText) findviewbyid(r.id.txtinggris); txtindonesia = (EditText) findviewbyid(r.id.txtindonesia); txtjerman = (EditText) findviewbyid(r.id.txtjerman); public void getterjemahan(view view) { String bhsindonesia = ""; String bhsjerman=""; String englishword = txtinggris.gettext().tostring(); kamuscursor = db.rawquery("select _ID, INGGRIS, INDONESIA, JERMAN " + "FROM kamus where INGGRIS='" + englishword + "' ORDER BY INGGRIS", null); if (kamuscursor.movetofirst()) { 55 Android Database SQLITE

53 for (;!kamuscursor.isafterlast(); kamuscursor.movetonext()) { bhsindonesia = kamuscursor.getstring(2); bhsjerman = kamuscursor.getstring(3); else{ Toast.makeText(getBaseContext(), "Terjemahan Tidak ditemukan", Toast.LENGTH_SHORT).show(); txtindonesia.settext(bhsindonesia); public void ondestroy() { super.ondestroy(); try { kamuscursor.close(); db.close(); catch (Exception e){ 5. Sekarang mari kita run projectnya 56

54 AGUS HARYANTO Pada isian Inggris ketikan run lalu klik button Terjemahkan. Coba isi inggris diisi dengan sepatu lalu klik Terjemahkan Coba inggris tidak diisi lalu klik Terjemahkan 6. Oke kita sudah berhasil membuat kamus, sekarang kita ingin menampilkan kata-kata dalam database kedalam list. 7. Buat Layout baru dengan nama row.xml lalu ketikan kode berikut <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=" oid" android:layout_width="fill_parent" 57 Android Database SQLITE

55 android:layout_height="fill_parent" android:orientation="horizontal" android:paddingbottom="5sp" android:paddingtop="5sp" > <TextView android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignparentleft="true" /> <TextView android:layout_width="100sp" android:layout_height="wrap_content" /> <TextView android:layout_width="100sp" android:layout_height="wrap_content" /> </RelativeLayout> 8. Buat Layout baru dengan nama daftarkata.xml lalu ketikan kode berikut <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=" oid" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:text="inggris" android:textsize="20sp" /> <TextView 58

56 AGUS HARYANTO android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:text="indonesia" android:textsize="20sp" /> <TextView android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:text="jerman" android:textsize="20sp" /> <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_alignparentleft="true" </RelativeLayout> 9. Buat Class baru dengan nama Daftarkata.java lalu ketikkan kode berikut. package net.agusharyanto.kamus; android.app.activity; android.content.context; android.database.cursor; android.database.sqlite.sqlitedatabase; android.os.bundle; android.util.log; android.view.layoutinflater; android.view.view; android.view.viewgroup; android.widget.listview; android.widget.simplecursoradapter; 59 Android Database SQLITE

57 android.widget.textview; public class DaftarKata extends Activity { private DatabaseHelper dbhelper; private SQLiteDatabase db = null; private ListView listcontent = null; private Cursor kamuscursor = null; CustomCursorAdapter adapter; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); dbhelper = new DatabaseHelper(this); setcontentview(r.layout.daftarkata); listcontent = (ListView) findviewbyid(r.id.list1); isdatalistview(); private void isdatalistview() { try { db = dbhelper.getwritabledatabase(); kamuscursor = db.query("kamus", new String[] { "_id", "inggris", "indonesia", "jerman", "_id>0", null, null, null, null); // startmanagingcursor( jasacursor); /* * Create an array to specify the fields we want to display in the * list (only the 'inggris,indonesia,jerman' column in this case) */ String[] from = new String[] { "inggris", "indonesia", "jerman" ; /* * and an array of the fields we want to bind those fieiplds to (in 60

58 AGUS HARYANTO * this case just the textview 'inggris,indonesia,jerman' from our new row.xml * layout above) */ int[] to = new int[] { R.id.inggris, R.id.indonesia, R.id.jerman ; /* Now create a simple cursor adapter.. */ adapter = new CustomCursorAdapter(this, R.layout.row, kamuscursor, from, to); // listview.setadapter(adapter); listcontent.setadapter(adapter); catch (Exception e) { e.printstacktrace(); finally { if (db!= null && db.isopen()) { public void ondestroy() { super.ondestroy(); try { kamuscursor.close(); catch (Exception e) { protected class CustomCursorAdapter extends SimpleCursorAdapter { private int layout; private LayoutInflater inflater; private Context context; public CustomCursorAdapter(Context context, 61 Android Database SQLITE

59 int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); this.layout = layout; this.context = context; inflater = public View newview(context context, Cursor cursor, ViewGroup parent) { Log.d("NewView", "*****xxx"); View v = inflater.inflate(r.layout.row, parent, false); return public void bindview(view v, Context context, Cursor c) { // 1 is the column where you're getting your data from String inggris = c.getstring(1); String jerman = c.getstring(3); String indonesia = c.getstring(2); /** * Next set the name of the entry. */ TextView name_text = (TextView) v.findviewbyid(r.id.inggris); TextView des_text = (TextView) v.findviewbyid(r.id.jerman); TextView id_text = (TextView) v.findviewbyid(r.id.indonesia); des_text.settext(jerman); id_text.settext(indonesia); if (name_text!= null) { name_text.settext(inggris); 62

60 AGUS HARYANTO 10. Rubah bagian yang bercetak tebal pada AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" oid" package="net.agusharyanto.kamus" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> <application android:allowbackup="true" > <activity android:name="net.agusharyanto.kamus.daftarkata" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> 11. Sekarang mari kita Run projectnya. 63 Android Database SQLITE

61 12. Kita sudah sukses menampilkan daftar kata, selanjutnya kita akan menyedian form untuk menambahkan kata. 13. Buat layout baru dengan nama tambahkata.xml selanjutnya ketikan kode berikut <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" oid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > 64

62 /> AGUS HARYANTO <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="kamus Inggris Indonesia Jerman" <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="inggris :" > </TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" > </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="indonesia :" > </TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" > </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="jerman" > </TextView> <EditText android:layout_width="fill_parent" 65 Android Database SQLITE

63 android:layout_height="wrap_content" > </EditText> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:onclick="savedata" android:text="save Data" > </Button> </LinearLayout> 14. Buat class baru dengan nama TambahKata.java package net.agusharyanto.kamus; android.app.activity; android.content.contentvalues; android.database.sqlite.sqlitedatabase; android.os.bundle; android.view.view; android.widget.edittext; android.widget.toast; public class TambahKata extends Activity{ private SQLiteDatabase db = null; private EditText txtinggris; private EditText txtindonesia; private EditText txtjerman; private DatabaseHelper datakamus = null; public static final String INGGRIS= "inggris"; public static final String INDONESIA = "indonesia"; public static final String JERMAN = "JERMAN"; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); datakamus = new DatabaseHelper(this); db = datakamus.getwritabledatabase(); setcontentview(r.layout.tambahkata); txtinggris = (EditText) findviewbyid(r.id.txtinggris); 66

64 AGUS HARYANTO txtindonesia = (EditText) findviewbyid(r.id.txtindonesia); txtjerman = (EditText) findviewbyid(r.id.txtjerman); public void savedata(view view) { String bhsindonesia = txtindonesia.gettext().tostring();; String bhsjerman= txtjerman.gettext().tostring(); String englishword = txtinggris.gettext().tostring(); ContentValues cv=new ContentValues(); cv.put(inggris, englishword); cv.put(indonesia, bhsindonesia); cv.put(jerman, bhsjerman); if (db.insert("kamus", INGGRIS, cv)>0){ Toast.makeText(getBaseContext(), "Save Data Success", Toast.LENGTH_SHORT).show(); else{ Toast.makeText(getBaseContext(), "Save Data Fail", public void ondestroy() { super.ondestroy(); db.close(); 15. Rubah AndroidManifest.xml yang bercetak tebal <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" 67 Android Database SQLITE

65 oid" package="net.agusharyanto.kamus" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> <application android:allowbackup="true" > <activity android:name="net.agusharyanto.kamus.tambahkata" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> 16. Sekarang mari kita run projectnya. 68

66 AGUS HARYANTO 17. Bagaimana melihat hasilnya? apa harus rubah AndroidManifest.xml. Cara yang lebih baik adalah dengan membuat menu yang dapat mengakses form Terjemahan, Daftar Kata dan Tambah Kata 18. Buat Class baru dengan nama MenuActivity.java lalu ketikkan kode berikut package net.agusharyanto.kamus; android.app.listactivity; android.content.intent; android.os.bundle; android.view.view; 69 Android Database SQLITE

67 android.widget.arrayadapter; android.widget.listview; android.widget.toast; public class MenuActivity extends ListActivity { String[] menuutama = new String[] { "Terjemah Kata", "Tambah Kata", "Daftar Kata", "Keluar Aplikasi" ; public void oncreate(bundle icicle) { super.oncreate(icicle); // Menset nilai array ke dalam list adapater sehingga data pada array // akan dimunculkan dalam list this.setlistadapter(new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, /**method ini akan mengoveride method onlistitemclick yang ada pada class List Activity * method ini akan d1ipanggil apabilai ada salah satu item dari list menu yang dipilih */ protected void onlistitemclick(listview l, View v, int position, long id) { super.onlistitemclick(l, v, position, id); // Menangkap nilai text yang dklik Object o = this.getlistadapter().getitem(position); String pilihan = o.tostring(); // Menampilkan hasil pilihan menu dalam bentuk Toast tampilkanpilihan(pilihan); protected void tampilkanpilihan(string pilihan) { try { //Intent digunakan untuk sebagai pengenal suatu activity Intent i = null; 70

68 AGUS HARYANTO if (pilihan.equals("terjemah Kata")) { i = new Intent(this,MainActivity.class); else if (pilihan.equals("tambah Kata")) { i = new Intent(this, TambahKata.class); else if (pilihan.equals("daftar Kata")) { i = new Intent(this, DaftarKata.class); else if (pilihan.equals("keluar Aplikasi")) { finish(); else { Toast.makeText(this,"Anda Memilih: " + pilihan + ", Actionnya belum dibuat", Toast.LENGTH_LONG).show(); startactivity(i); catch (Exception e) { e.printstacktrace(); 19. Pada AndroidManifest.xml rubah dan tambahkan yang bercetak tebal <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" oid" package="net.agusharyanto.kamus" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" 71 Android Database SQLITE

69 > <activity android:name="net.agusharyanto.kamus.menuactivity" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name="mainactivity" android:label="terjemah Kata"> </activity> <activity android:name="daftarkata" android:label="daftar Kata"> </activity> <activity android:name="tambahkata" android:label="tambah Kata"> </activity> </application> </manifest> 20. Sekarang mari kita run projectnya 72

70 AGUS HARYANTO Klik masing-masing menu. 21. Sekarang kita melangkah kebagian Rubah data dan Hapus data. Pasti kita memikirkan bagaiman cara menempatkan Edit dan Hapus ini. Aha kita letakan saja di DaftarKata. Jadi ketika satu baris kata di klik lama (long click) akan memunculkan menu edit dan hapus. 22. Buka file String.xml pada direktori value ketikan kode berikut <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">kamus</string> <string name="action_settings">settings</string> <string name="hello_world">hello world!</string> 73 Android Database SQLITE

71 <string name="ok">ok</string> <string name="save">simpan</string> <string name="cancel">cancel</string> <string name="add_title">edit Kamus</string> <string name="delete_title">hapus Kamus, And yakin?</string> </resources> 23. Tambahkan layout untuk edit data beri nama edit.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" oid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="inggris :" > </TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" > </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="indonesia :" > </TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" > 74

72 AGUS HARYANTO </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="jerman" > </TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" > </EditText> </LinearLayout> 24. Buka kembali file DaftarKata.java lalu ketikan kode berikut package net.agusharyanto.kamus; android.app.activity; android.app.alertdialog; android.content.contentvalues; android.content.context; android.content.dialoginterface; android.database.cursor; android.database.sqlite.sqlitedatabase; android.os.bundle; android.view.contextmenu; android.view.layoutinflater; android.view.menu; android.view.menuitem; android.view.view; android.view.viewgroup; android.widget.adapterview; android.widget.edittext; android.widget.listview; android.widget.simplecursoradapter; android.widget.textview; public class DaftarKata extends Activity { private DatabaseHelper dbhelper; private SQLiteDatabase db = null; private ListView listcontent = null; 75 Android Database SQLITE

73 1; 2; private static final int EDIT_ID = Menu.FIRST + private static final int DELETE_ID = Menu.FIRST + private Cursor kamuscursor = null; CustomCursorAdapter adapter; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); dbhelper = new DatabaseHelper(this); setcontentview(r.layout.daftarkata); listcontent = (ListView) findviewbyid(r.id.list1); isdatalistview(); registerforcontextmenu(listcontent); private void isdatalistview() { try { db = dbhelper.getwritabledatabase(); kamuscursor = db.query("kamus", new String[] { "_id", "inggris", "indonesia", "jerman", "_id>0", null, null, null, null); /* * Create an array to specify the fields we want to display in the * list (only the 'inggris,indonesia,jerman' column in this case) */ String[] from = new String[] { "inggris", "indonesia", "jerman" ; /* * and an array of the fields we want to bind those fieiplds to (in * this case just the textview 'inggris,indonesia,jerman' from our * new row.xml layout above) */ 76

74 AGUS HARYANTO int[] to = new int[] { R.id.inggris, R.id.indonesia, R.id.jerman ; /* Now create a simple cursor adapter.. */ adapter = new CustomCursorAdapter(this, R.layout.row, kamuscursor, from, to); // listview.setadapter(adapter); listcontent.setadapter(adapter); catch (Exception e) { e.printstacktrace(); finally { if (db!= null && db.isopen()) { // public void ondestroy() { super.ondestroy(); try { kamuscursor.close(); catch (Exception e) public void oncreatecontextmenu(contextmenu menu, View v, ContextMenu.ContextMenuInfo menuinfo) { menu.add(menu.none, DELETE_ID, Menu.NONE, "`Hapus").setIcon(R.drawable.ic_launche r).setalphabeticshortcut('e'); menu.add(menu.none, EDIT_ID, Menu.NONE, "Edit") 77 Android Database SQLITE

75 .seticon(r.drawable.ic_launche public boolean oncontextitemselected(menuitem item) { switch (item.getitemid()) { case DELETE_ID: AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getmenuinfo(); delete(info.id); return (true); case EDIT_ID: AdapterView.AdapterContextMenuInfo infox = (AdapterView.AdapterContextMenuInfo) item.getmenuinfo(); Cursor ckamuscursor = db.rawquery( "SELECT _ID, inggris, indonesia, jerman " + "FROM kamus where _ID=" + infox.id, null); ckamuscursor.movetofirst(); edit(infox.id, ckamuscursor.getstring(1), ckamuscursor.getstring(2), ckamuscursor.getstring(3)); return (true); return (super.onoptionsitemselected(item)); private void edit(long id, String pinggris, String pindonesia, String pjerman) { LayoutInflater inflater = LayoutInflater.from(this); 78

76 AGUS HARYANTO View addview = inflater.inflate(r.layout.edit, null); EditText edinggris = (EditText) addview.findviewbyid(r.id.inggris); EditText edindonesia = (EditText) addview.findviewbyid(r.id.indonesia); EditText edjerman = (EditText) addview.findviewbyid(r.id.jerman); edinggris.settext(pinggris); edindonesia.settext(pindonesia); edjerman.settext(pjerman); final DialogWrapper wrapper = new DialogWrapper(addView); final long xid = id; /* * wrapper.inggrisfield.settext(pinggris); * wrapper.indonesiafield.settag(pindonesia) */ new AlertDialog.Builder(this).setTitle(R.string.add_title).setView(addView).setPositiveButton(R.string.sa ve, new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int whichbutton) { processedit(wrapper, xid); ).setnegativebutton(r.string.ca ncel, DialogInterface.OnClickListener() { onclick(dialoginterface dialog, new public void int whichbutton) { // ignore, just dismiss 79 Android Database SQLITE

77 ).show(); private void delete(final long rowid) { if (rowid > 0) { new AlertDialog.Builder(this).setTitle(R.string.delet e_title).setpositivebutton(r.stri ng.ok, new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int whichbutton) { processdelete(rowid); ).setnegativebutton(r.stri ng.cancel, DialogInterface.OnClickListener() { void onclick(dialoginterface dialog, new public int whichbutton) { / / ignore, just dismiss ).show(); private void processedit(dialogwrapper wrapper, long id) { ContentValues values = new ContentValues(2); values.put("inggris", wrapper.getinggris()); values.put("indonesia", wrapper.getindonesia()); values.put("jerman", wrapper.getjerman()); 80

78 AGUS HARYANTO // db.update(table, values, whereclause, whereargs) null); db.update("kamus", values, "_id=" + id, kamuscursor.requery(); private void processdelete(long rowid) { String[] args = { String.valueOf(rowId) ; db.delete("kamus", "_ID=?", args); kamuscursor.requery(); class DialogWrapper { EditText inggrisfield = null; EditText indonesiafield = null; EditText jermanfield = null; View base = null; DialogWrapper(View base) { this.base = base; indonesiafield = (EditText) base.findviewbyid(r.id.indonesia); String getinggris() { return (getinggrisfield().gettext().tostring()); String getindonesia() { return (getindonesiafield().gettext().tostring()); String getjerman() { return (getjermanfield().gettext().tostring()); private EditText getinggrisfield() { if (inggrisfield == null) { inggrisfield = (EditText) 81 Android Database SQLITE

79 base.findviewbyid(r.id.inggris); return (inggrisfield); private EditText getindonesiafield() { if (indonesiafield == null) { indonesiafield = (EditText) base.findviewbyid(r.id.indonesia); return (indonesiafield); private EditText getjermanfield() { if (jermanfield == null) { jermanfield = (EditText) base.findviewbyid(r.id.jerman); return (jermanfield); protected class CustomCursorAdapter extends SimpleCursorAdapter { private int layout; private LayoutInflater inflater; private Context context; public CustomCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); this.layout = layout; this.context = context; inflater = public View newview(context context, Cursor cursor, ViewGroup parent) { 82

80 AGUS HARYANTO View v = inflater.inflate(r.layout.row, parent, false); return public void bindview(view v, Context context, Cursor c) { // 1 is the column where you're getting your data from String inggris = c.getstring(1); String jerman = c.getstring(3); String indonesia = c.getstring(2); /** * Next set the name of the entry. */ TextView name_text = (TextView) v.findviewbyid(r.id.inggris); TextView des_text = (TextView) v.findviewbyid(r.id.jerman); TextView id_text = (TextView) v.findviewbyid(r.id.indonesia); des_text.settext(jerman); id_text.settext(indonesia); if (name_text!= null) { name_text.settext(inggris); 25. Sekarang mari kita run projectnya 83 Android Database SQLITE

81 Lakukan skenario seperti ini. Pilih salah satu data lalu tekan yang lama lalu Edit, akan muncul jendela edit. Pilih salah satu data lalu tekan yang lama pada data tersebut akan muncul context menu, pilihlah hapus Hore, kita telah berhasil membuat aplikasi database sqlite pada android yang didalamanya sudah mencakup fungsi Create Read Update Delete (CRUD). Tugas 84

82 AGUS HARYANTO Buatlah Aplikasi yang ada fungsi CRUD SQLitenya contohnya Aplikasi Menu Makanan. Mempunyai Fitur List Menu makanan yang terdiri dari Nama Makanan dan Harganya, User juga dapat menambah menu baru, update menu dan hapus menu. 85 Android Database SQLITE

83 4 ANDROID GOOGLE MAP Tak dapat dipungkiri smartphone saat ini tidak saja dimanfaatkan untuk aplikasi data entry dan hiburan tetapi sekarang sudah dimanfaatkan oleh pengembang untuk mendevelop Aplikasi Location Base Service dimana salah satunya adalah membantu pengguna menemukan lokasi Point of Interest (POS) yang terdekat, misalnya ditengah jalan bensinya mau habis, bisa memanfaatkan aplikasi untuk mencari terminal pengisian bahan bakar terdekat. M E N A M P I L K A N D A T A GP S Hampir Semua Handphone ber OS android dilengkapi GPS, sebetulnya apasih GPS itu. GPS adalah singkatan dari Global Positionning System, dengan GPS kita dapat mengetahui lokasi kita berada yaitu data koordinat Latitude dan Longitudenya. Bagia yang pernah membuat aplikasi yang menggunakan MAP pasti sudah mengenal istilah ini. GPS hanyalah hardware, untuk memaksimalkannya kita perlu membuat aplikasi yang memanfaatkan GPS. Ada pertanyaan nih, setelah mengetahui fungsi GPS, kira-kira aplikasi apa yang akan kita bangun?

84 Ingat Aplikasi Social networking FourSquare, dimana pada foursquare kita dapat mengetahui posisi teman-teman kita yang sedang online, sehingga apabila ada yang jaraknya dekat dengan kita maka kita bisa copy darat. Sekarang kita masuk kemateri utama, mulai lah belajar dengan pertanyaan Bagaimanakah cara mendapatkan Lokasi kita saat ini dengan menggunakan GPS di android? Bagaimanakah cara menampilkannya dalam bentuk MAP? Mari kita buat project untuk menangkap koordinat dari GPS. 1. Buat New Android Project dengan nama LokasiKu 88

85 2. AGUS HARYANTO Edit layout activity_main.xml lalu ketikan kode berikut <RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainactivity" > <TextView android:layout_width="80sp" android:layout_height="wrap_content" android:text="latitude : " /> <EditText android:id="@+id/edlatitude" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_aligntop="@+id/textview1" 89 Android Google Map

86 android:editable="false" android:ems="10" > </EditText> <TextView android:layout_width="80sp" android:layout_height="wrap_content" android:text="longitude : " /> <EditText android:id="@+id/edlongitude" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/edlatitude" android:layout_aligntop="@+id/textview2" android:editable="false" android:ems="10" /> </RelativeLayout> 3. Edit class MainActivity.java lalu ketikan kode berikut package net.agusharyanto.lokasiku; android.app.activity; android.content.context; android.location.criteria; android.location.location; android.location.locationlistener; android.location.locationmanager; android.os.bundle; android.widget.edittext; android.widget.toast; public class MainActivity extends Activity implements LocationListener { private EditText latitutefield; private EditText longitudefield; 90

87 AGUS HARYANTO private LocationManager locationmanager; private String provider; */ /** Called when the activity is first public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); latitutefield = (EditText) findviewbyid(r.id.edlatitude); longitudefield = (EditText) findviewbyid(r.id.edlongitude); // Get the location manager locationmanager = (LocationManager) getsystemservice(context.location_service); // Define the criteria how to select the locatioin provider -> use // default Criteria criteria = new Criteria(); provider = locationmanager.getbestprovider(criteria, false); Location location = locationmanager.getlastknownlocation(provider); // Initialize the location fields if (location!= null) { System.out.println("Provider " + provider + " has been selected."); onlocationchanged(location); else { latitutefield.settext("lokasi tidak tersedia"); longitudefield.settext("lokasi tidak tersedia"); /* Request updates at startup protected void onresume() { 91 Android Google Map

88 super.onresume(); locationmanager.requestlocationupdates(provider, 400, 1, this); /* Remove the locationlistener updates when Activity is paused protected void onpause() { super.onpause(); public void onlocationchanged(location location) { double lat = (double) (location.getlatitude()); double lng = (double) (location.getlongitude()); latitutefield.settext(string.valueof(lat)); public void onstatuschanged(string provider, int status, Bundle extras) { // TODO Auto-generated method public void onproviderenabled(string provider) { Toast.makeText(this, "Enabled new provider " + provider, public void onproviderdisabled(string provider) { Toast.makeText(this, "Disabled provider " + 92

89 provider, AGUS HARYANTO Toast.LENGTH_SHORT).show(); 4. Untuk menambahkan permission pada AndroidManifets.xml Tambahkan yang bercetak tebal <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" oid" package="net.agusharyanto.lokasiku" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="19" /> <uses-permission android:name="android.permission.internet" > </uses-permission> <uses-permission android:name="android.permission.access_fine_location" /> <uses-permission android:name="android.permission.access_coarse_locatio N" > </uses-permission> <application android:allowbackup="true" > <activity android:name="net.agusharyanto.lokasiku.mainactivity" > <intent-filter> <action android:name="android.intent.action.main" /> 93 Android Google Map

90 <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> 5. Mari kita run projectnya Jika belum ada koordinat maka Latitude dan Longitude akan berisi Lokasi tidak tersedia. Untuk itu kita bisa menset koordinatnya melalui emulator kontrol. Untuk membuka emulator kontrol pada eclipse menu klik Window Show View Other lalu klik folder Android lalu pilih Emulator Cotrol. Isikan Latiude dan Longitude seperti diatas lalu klik Send, maka sekarang nilai Latitude dan Longitude pada emulator sudah terisi. 94

91 AGUS HARYANTO Selain melalui emulator control, untuk menset GPS kita juga bisa lakukan lewat telnet localhost 5554 lalu ketikan command geo fix MENAMPILKAN MAP PA D A ANDROID Apakah informasi koordinat gps berupa nilai latitude dan longitude itu cukup bagi user untuk menunjukkan lokasinya. Tentu banyak user yang bingung, untuk itu kita ditantang bagaimana cara menginformasikan lokasi ke User. Beruntung android sudah menyiapkan Library Peta GoogleMap sehingga kita bisa memanfaatkannya untuk menampilkan Lokasi tersebut dipeta. 95 Android Google Map

92 Pertama kita harus menginstall Google Play Service. Pada Eclipse klik menu Window lalu klik Android SDK Manager Centang Google Play Services dari jendela Android SDK Manager klik folder Extra lalu centang Google Play Services Khusus untuk Map AVD yang dipakai harus yang Ada Goggle APIs, untuk itu dari jendela Android SDK Manager centang juga Google APIs (ARM System Image). Setelah instalasi selesai. Buatlah AVD yang menggunakan Google APIs 96

93 97 Android Google Map AGUS HARYANTO

94 Sekarang mari kita mulai kodingnya. 1. Buat New Android Project beri nama PetaLokasi. Catat nama packagenya net.agusharyanto.petalokasi karena ini akan digunakan untuk membuat API KEY Google Map V2. 98

95 AGUS HARYANTO 2. Langkah selanjutnya adalah menyediakan API KEY Googlemap. Karena saat ini Key untuk GoogleMap API v1 sudah tidak bisa lagi digunakan maka kita harus menggunakan Key GoogleMap API v2. 3. Cari lokasi file debug.keystore biasanya terdapat pada direktori c:\users\<user>\.android\debug.keystore contoh c:\users\agus\.android\debug.keystore 4. Masuk kedirektori bin pada java jdk contoh C:\Program Files\Java\jdk1.7.0_10\bin 5. Jalankan command untuk mendapatkan key debug.keystore sha1 dari Syntak Commandnya adalah keytool -list -v -alias androiddebugkey -keystore <path_to_debug_keystore>debug.keystore -storepass android -keypass android contoh eksekusinya keytool -list -v -alias androiddebugkey -keystore C:\Users\HP\.android\debug.keystore -storepass android -keypass android Catat nilai SHA1: 22:C8:72:0A:9A:88:9E:63:72:A9:23:0E:FE:70:36:3B:CE:3E:11:42 99 Android Google Map

96 Registerkan Key diatasi melalui Google Api Console ( ). Untuk masuk kesini kita harus punya Account GMAIL Klik Create project... akan muncul jendela New Project, Isi Project Name dengan Android Map Project 100

97 AGUS HARYANTO Setelah tombol create diklik tungg sebentar maka akan muncul project dashboard 101 Android Google Map

98 Klik Enable an API lalu Aktifkan Google Maps Android API V2 Sekarang Saatnya membuat Key untuk aplikasinya. Klik Google Maps Android V2 lalau klik Quota 102

99 103 Android Google Map AGUS HARYANTO

100 isikan dengan 22:C8:72:0A:9A:88:9E:63:72:A9:23:0E:FE:70:36:3B:CE:3E:11:42;ne t.agusharyanto.petalokasi Klik Create Catat API Keynya, ini akan digunakan dalam aplikasi. AIzaSyBeF0umtjOV4xQe8MJe1oZsEYfm3p3GzPc 104

101 AGUS HARYANTO 2. Selanjutnya kita harus menginclude Google Play Services sebagai library projectnya. Hal yang harus dilakukan terlibuh dahulu adalah meng Project Google Play Service Library ke workspace saat ini. Klik Import Android Project, set Root Directory ke direktori kita menginstall Google Play Service, misalnya saja C:\adt-bundle-windows-x \sdk\extras\google\google_play_services\libproject\googl e-play-services_lib Centang Copy projects into workspace 105 Android Google Map

102 Selanjutnya adalah menyertakan library ini dalam project kita. Caranya klik kanan pada project PetaLokasi lalu pilih properties 3. Kita harus mendaftarkan Key yang kita dapat pada AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="net.agusharyanto.petalokasi" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="14" 106

103 AGUS HARYANTO android:targetsdkversion="19" /> <permission android:name="net.agusharyanto.petalokasi.permission.maps_r ECEIVE" android:protectionlevel="signature" /> <uses-feature android:glesversion="0x " android:required="true" /> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-permission android:name="android.permission.write_external_storage" /> <!-The following two permissions are not required to use Google Maps Android API v2, but are recommended. --> <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" /> <application android:allowbackup="true" > <activity android:name="net.agusharyanto.petalokasi.mainactivity" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> 107 Android Google Map

104 <meta-data android:name="com.google.android.maps.v2.api_key" android:value="aizasybef0umtjov4xqe8mje1ozseyfm3p3gzpc" /> <meta-data android:name="com.google.android.gms.version" /> </application> </manifest> 4. Edit file activity_main.xml lalu ketikkan kode berikut <RelativeLayout xmlns:android=" oid" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainactivity" > <fragment android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.mapfragment" /> </RelativeLayout> 5. Edit clas MainActivity.java lalu ketikan kode berikut package net.agusharyanto.petalokasi; android.app.activity; android.os.bundle; com.google.android.gms.maps.cameraupdatefactory; com.google.android.gms.maps.googlemap; 108

105 AGUS HARYANTO com.google.android.gms.maps.mapfragment; com.google.android.gms.maps.model.bitmapdescriptorfactory; com.google.android.gms.maps.model.latlng; com.google.android.gms.maps.model.marker; com.google.android.gms.maps.model.markeroptions; public class MainActivity extends Activity { static final LatLng RAGUNAN = new LatLng( , ); static final LatLng TAMANMINI = new LatLng( , ); private GoogleMap protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); map = ((MapFragment) getfragmentmanager().findfragmentbyid(r.id.map)).getmap(); Marker ragunan = map.addmarker(new MarkerOptions().position(RAGUNAN).title("Ragunan")); Marker tamanmini = map.addmarker(new MarkerOptions().position(TAMANMINI).title("Taman Mini").snippet("Taman Mini itu Indah").icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))); // Move the camera instantly to hamburg with a zoom of 15. map.movecamera(cameraupdatefactory.newlatlngzoom(ragunan, 15)); // Zoom in, animating the camera. map.animatecamera(cameraupdatefactory.zoomto(10), 2000, null); 109 Android Google Map

106 6. Agar kita dapat menjalankan project Gooogle Map API 2 ini di emulator kita perlu install 2 apk yaitu venton.apk dam gms.apk melalui adb command. Sebelum pastikan emulator (Bukan Google API) sudah dijalankan. 7. Mari kita jalankan projectnya. 110

107 AGUS HARYANTO Pertama akan muncul 2 marker, lalu tap lah masing-masing marker akan memunculkan info window. MENAMPILKAN DIRECTION PA D A MAP Tentunya akan lebih menarik apabila kita dapat menampilkan jalur yang harus ditempuh dari sebuah lokasi ke lokasi lainnya. Kita ingin apabila infowindow diklik maka akan muncul petunjuk jalur (driving direction) diantara kedua titik tersebut. Berikut langkah-langkahnya 8. Masih dalam project yang sama buat class baru dengan nama GmapV2Direction.java lalu ketikan kode berikut package net.agusharyanto.petalokasi; 111 Android Google Map

108 java.io.inputstream; java.util.arraylist; javax.xml.parsers.documentbuilder; javax.xml.parsers.documentbuilderfactory; org.apache.http.httpresponse; org.apache.http.client.httpclient; org.apache.http.client.methods.httppost; org.apache.http.impl.client.defaulthttpclient; org.apache.http.protocol.basichttpcontext; org.apache.http.protocol.httpcontext; org.w3c.dom.document; org.w3c.dom.node; org.w3c.dom.nodelist; android.util.log; com.google.android.gms.maps.model.latlng; public class GMapV2Direction { public final static String MODE_DRIVING = "driving"; public final static String MODE_WALKING = "walking"; public GMapV2Direction() { public Document getdocument(latlng start, LatLng end, String mode) { String url = " + "origin=" + start.latitude + "," + start.longitude + "&destination=" + end.latitude + "," + end.longitude + "&sensor=false&units=metric&mode=driving"; try { HttpClient httpclient = new DefaultHttpClient(); HttpContext localcontext = new BasicHttpContext(); HttpPost httppost = new HttpPost(url); 112

109 AGUS HARYANTO HttpResponse response = httpclient.execute(httppost, localcontext); InputStream in = response.getentity().getcontent(); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder (); Document doc = builder.parse(in); return doc; catch (Exception e) { e.printstacktrace(); return null; public String getdurationtext (Document doc) { NodeList nl1 = doc.getelementsbytagname("duration"); Node node1 = nl1.item(0); NodeList nl2 = node1.getchildnodes(); Node node2 = nl2.item(getnodeindex(nl2, "text")); Log.i("DurationText", node2.gettextcontent()); return node2.gettextcontent(); public int getdurationvalue (Document doc) { NodeList nl1 = doc.getelementsbytagname("duration"); Node node1 = nl1.item(0); NodeList nl2 = node1.getchildnodes(); Node node2 = nl2.item(getnodeindex(nl2, "value")); Log.i("DurationValue", node2.gettextcontent()); return Integer.parseInt(node2.getTextContent()); public String getdistancetext (Document doc) { NodeList nl1 = doc.getelementsbytagname("distance"); Node node1 = nl1.item(0); NodeList nl2 = node1.getchildnodes(); Node node2 = nl2.item(getnodeindex(nl2, "text")); 113 Android Google Map

110 Log.i("DistanceText", node2.gettextcontent()); return node2.gettextcontent(); public int getdistancevalue (Document doc) { NodeList nl1 = doc.getelementsbytagname("distance"); Node node1 = nl1.item(0); NodeList nl2 = node1.getchildnodes(); Node node2 = nl2.item(getnodeindex(nl2, "value")); Log.i("DistanceValue", node2.gettextcontent()); return Integer.parseInt(node2.getTextContent()); public String getstartaddress (Document doc) { NodeList nl1 = doc.getelementsbytagname("start_address"); Node node1 = nl1.item(0); Log.i("StartAddress", node1.gettextcontent()); return node1.gettextcontent(); public String getendaddress (Document doc) { NodeList nl1 = doc.getelementsbytagname("end_address"); Node node1 = nl1.item(0); Log.i("StartAddress", node1.gettextcontent()); return node1.gettextcontent(); public String getcopyrights (Document doc) { NodeList nl1 = doc.getelementsbytagname("copyrights"); Node node1 = nl1.item(0); Log.i("CopyRights", node1.gettextcontent()); return node1.gettextcontent(); public ArrayList<LatLng> getdirection (Document doc) { NodeList nl1, nl2, nl3; ArrayList<LatLng> listgeopoints = new ArrayList<LatLng>(); 114

111 AGUS HARYANTO nl1 = doc.getelementsbytagname("step"); if (nl1.getlength() > 0) { for (int i = 0; i < nl1.getlength(); i++) { Node node1 = nl1.item(i); nl2 = node1.getchildnodes(); Node locationnode = nl2.item(getnodeindex(nl2, "start_location")); nl3 = locationnode.getchildnodes(); Node latnode = nl3.item(getnodeindex(nl3, "lat")); double lat = Double.parseDouble(latNode.getTextContent()); Node lngnode = nl3.item(getnodeindex(nl3, "lng")); double lng = Double.parseDouble(lngNode.getTextContent()); listgeopoints.add(new LatLng(lat, lng)); locationnode = nl2.item(getnodeindex(nl2, "polyline")); nl3 = locationnode.getchildnodes(); latnode = nl3.item(getnodeindex(nl3, "points")); ArrayList<LatLng> arr = decodepoly(latnode.gettextcontent()); for(int j = 0 ; j < arr.size() ; j++) { listgeopoints.add(new LatLng(arr.get(j).latitude, arr.get(j).longitude)); locationnode = nl2.item(getnodeindex(nl2, "end_location")); nl3 = locationnode.getchildnodes(); latnode = nl3.item(getnodeindex(nl3, "lat")); lat = Double.parseDouble(latNode.getTextContent()); lngnode = nl3.item(getnodeindex(nl3, "lng")); lng = Double.parseDouble(lngNode.getTextContent()); listgeopoints.add(new LatLng(lat, lng)); 115 Android Google Map

112 return listgeopoints; private int getnodeindex(nodelist nl, String nodename) { for(int i = 0 ; i < nl.getlength() ; i++) { if(nl.item(i).getnodename().equals(nodename)) return i; return -1; private ArrayList<LatLng> decodepoly(string encoded) { ArrayList<LatLng> poly = new ArrayList<LatLng>(); int index = 0, len = encoded.length(); int lat = 0, lng = 0; while (index < len) { int b, shift = 0, result = 0; do { b = encoded.charat(index++) 63; result = (b & 0x1f) << shift; shift += 5; while (b >= 0x20); int dlat = ((result & 1)!= 0? ~(result >> 1) : (result >> 1)); lat += dlat; shift = 0; result = 0; do { b = encoded.charat(index++) 63; result = (b & 0x1f) << shift; shift += 5; while (b >= 0x20); int dlng = ((result & 1)!= 0? ~(result >> 1) : (result >> 1)); lng += dlng; 116

113 AGUS HARYANTO LatLng position = new LatLng((double) lat / 1E5, (double) lng / 1E5); poly.add(position); return poly; 9. Buat Class baru dengan nama DirectionActivity.java ketikkan kode berikut package net.agusharyanto.petalokasi; lalu java.util.arraylist; org.w3c.dom.document; android.app.activity; android.content.context; android.graphics.color; android.location.location; android.location.locationlistener; android.location.locationmanager; android.os.asynctask; android.os.bundle; com.google.android.gms.maps.cameraupdatefactory; com.google.android.gms.maps.googlemap; com.google.android.gms.maps.googlemap.oninfowindowclickliste ner; com.google.android.gms.maps.mapfragment; com.google.android.gms.maps.model.bitmapdescriptorfactory; com.google.android.gms.maps.model.latlng; com.google.android.gms.maps.model.marker; com.google.android.gms.maps.model.markeroptions; com.google.android.gms.maps.model.polylineoptions; public class DirectionActivity extends Activity { static final LatLng TAMANMINI = new LatLng( , ); 117 Android Google Map

114 private GoogleMap map; private GMapV2Direction md; private LocationManager locmanager; private LocationListener loclistener; Marker ragunan = null; LatLng fromposition = new LatLng( , ); LatLng toposition = protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); md = new GMapV2Direction(); map = ((MapFragment) getfragmentmanager().findfragmentbyid(r.id.map)).getmap(); Marker tamanmini = map.addmarker(new MarkerOptions().position(TAMANMINI).title("Taman Mini").snippet("Taman Mini Indonesia Indah")); // Move the camera instantly to hamburg with a zoom of 15. map.movecamera(cameraupdatefactory.newlatlngzoom(tamanmini, 15)); // Zoom in, animating the camera. map.animatecamera(cameraupdatefactory.zoomto(11), 2000, null); map.setoninfowindowclicklistener(new OnInfoWindowClickListener() { public void oninfowindowclick(marker marker) { String stitle = marker.gettitle(); if (!stitle.equals("current Location")) { 118

115 AGUS HARYANTO calldirectiontask(); ); initlocationmanager(); private void calldirectiontask() { String arg[] = { "dummy" ; new LongOperation().execute(arg); private class LongOperation extends AsyncTask<String, Void, Document> protected Document doinbackground(string... params) { Document doc = md.getdocument(fromposition, toposition, GMapV2Direction.MODE_DRIVING); return protected void onpostexecute(document result) { // this.dialog.cancel(); protected void onpreexecute() protected void onprogressupdate(void... values) { 119 Android Google Map

116 public void setresult(document doc) { ArrayList<LatLng> directionpoint = md.getdirection(doc); PolylineOptions rectline = new PolylineOptions().width(3).color( Color.RED); for (int i = 0; i < directionpoint.size(); i++) { rectline.add(directionpoint.get(i)); map.addpolyline(rectline); /** * Initialize the location manager. */ private void initlocationmanager() { locmanager = (LocationManager) getsystemservice(context.location_service); loclistener = new LocationListener() { // method ini akan dijalankan apabila koordinat GPS berubah public void onlocationchanged(location newlocation) { tampilkanposisikemap(newlocation); public void onproviderdisabled(string arg0) { public void onproviderenabled(string arg0) { 120

117 AGUS HARYANTO public void onstatuschanged(string arg0, int arg1, Bundle arg2) { ; locmanager.requestlocationupdates(locationmanager.gps_provi DER, 5, 100, loclistener); Location location = locmanager.getlastknownlocation(locationman ager.gps_provider); tampilkanposisikemap(location); /** * This method will be called when current position changed is submitted via * the GPS. * newlocation */ protected void tampilkanposisikemap(location newlocation) { LatLng currlok = new LatLng(newLocation.getLatitude(), newlocation.getlongitude()); fromposition = currlok; if (ragunan!= null)ragunan.remove(); ragunan = map.addmarker(new MarkerOptions().position(currlok).title( "Current Location").icon(BitmapDescriptorFactory.fromResource(R.draw able.ic_launcher))); map.movecamera(cameraupdatefactory.newlatlngzoom(currlok, 11)); // first remove old overlay 121 Android Google Map

118 10. Sebelum kita jalankan projectnya. Terlbih dahulu kita harus merubah AndroidMainfest.xml agar yang diryun adalah DirectionActivity maka ganti tulisan MainActivity dengan DirectionActivity. <activity android:name="net.agusharyanto.petalokasi.directionactivity " > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> 11. Sekarang mari kita jalankan projectnya. Terlihat Posisi Terakhir dipeta, kecilkan peta agar marker taman mini terlihat, klik marker taman mini lalu klik infowindownya akan muncul direction dari posisi kita ke taman mini 122

119 AGUS HARYANTO Tugas Buatlah Aplikasi yang menampilkan lokasi-lokasi disekitar kita yang datanya diambil dari Database SQLite 123 Android Google Map

120 5 A N D R O I D PH P M Y SQL Kali ini kita akan membahas Bagaimana Android dapat mengirim data ke server dan membacanya. Ada beberapa pendekatan untuk komunikasi dengan server ini tetapi yang sering dipakai adalah melalui http. Dengan demikian untuk mempraktekannya kita harus menginstall apache web server lengakap dengan PHP dan MySQLnya. CRUD ANDROID PHP MYSQL Aplikasi yang menggunakan database pada umumnya memiliki fungsi untuk Menampilkan data Menambah data Menghapus data Merubah data Database SQLite pada android mempunyai keterbatasan pada salah satunya pada kapasitas penyimpanan data. Akan bermasalah apabila kita memaksakan menyimpan data yang besar (lebih dari data) pada SQLite. Selain itu jika kita ingin perubahan data aplikasi dirasakan oleh semua user tanpa harus install ulang aplikasi, maka data harus disimpan di Server. Cara yang paling sering digunakan adalah dengan perantara Webserver, PHP dan MySQL. Dimana an-

121 droid untuk melakukan perubahan data atau mendapatkan data dari database server cukup dengan memanggil url php yang telah ditentukan. Agar lebih dimengerti mari kita buat aplikasi tentang maintenance data harga handphone yang database servernya menggunakan MySQL dengan Web Server Apache dan Server Side Scriptnya menggunakan PHP untuk itu hal yang penting untuk dilakukan sebelum memulai pembuatan aplikasinya adalah menyiaplkan environment servernya dengan menginstall XAMPP (Windows) atau LAMP (Linux). Setelah selesai Instalasi lalu kita lakukan langkah berikut. 1. Pekerjaan di MySql, buat database dan tablenya. CREATE DATABASE db_phone; CREATE TABLE tbl_phone ( id INT(4) NOT NULL AUTO_INCREMENT, phone_name VARCHAR(32) NOT NULL, price INT(10) NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM; insert into tbl_phone values(null,'galaxy S3', ); insert into tbl_phone values(null,'galaxy Ace 2', ); insert into tbl_phone values( null,'htc One', ); 2. Siapkan Script PHP untuk memasukkan data baru ke tbl_phone, simpan dengan nama add_phone.php simpan didirectory document_root/phone contoh htdoc/phone jadi urlnya adalah <?php $phone_name = $_POST['phone_name']; $price = $_POST['price']; $link = mysql_connect('localhost', 'user', 'password') or die('cannot connect to the DB'); mysql_select_db('db_phone', $link) or die('cannot select the DB'); /* grab the posts from the db */ 126

122 AGUS HARYANTO $query = "insert into tbl_phone (phone_name,price) values('". $phone_name."',".$price.")"; $result = mysql_query($query, $link) or die('error query: '.$query); if ($result == 1){echo "Save Data Success";else{ echo "Save Data Fail";?> 3. Siapkan Script untuk menampilkan data yang sudah disimpan, simpan dengan nama list_phone.php <?php $link = mysql_connect('localhost', 'user', 'password') or die('cannot connect to the DB'); mysql_select_db('db_phone', $link) or die('cannot select the DB'); $result["errorcode"]="0"; /* grab the posts from the db */ $query = "SELECT id, phone_name, price FROM tbl_phone"; $rs= mysql_query($query, $link) or die('errorquery: '.$query); $countrow= mysql_affected_rows(); $items = array(); while($row = mysql_fetch_object($rs)){ array_push($items, $row); if($countrow >0){ $result["errorcode"] = "1"; $result["data"] = $items; else{ $result["errormsg"] = "Tidak ada data"; echo json_encode($result);?> 4. Siapkan Script untuk Melakkukan perubahan data phone diserver, simpan dengan nama edit_phone.php <?php $id = $_POST['id']; $phone_name = $_POST['phone_name']; $price = $_POST['price']; $link = mysql_connect('localhost', 'user', 'password') or die('cannot connect to the DB'); 127 Android PHP MySQL

123 mysql_select_db('db_phone', $link) or die('cannot select the DB'); /* grab the posts from the db */ $query = "update tbl_phone set phone_name='$phone_name',price=$price where id=$id"; $result = mysql_query($query, $link) or die('error query: '.$query); if ($result == 1){echo "Save Data Success";else{ echo "Save Data Fail";?> 5. Siakan Scritpt untuk menghapus data phone di server, simpan dengan nama delete_phone.php <?php $id = $_POST['id']; $link = mysql_connect('localhost', 'user', 'password') or die('cannot connect to the DB'); mysql_select_db('db_phone', $link) or die('cannot select the DB'); /* grab the posts from the db */ $query = "delete from tbl_phone where id=$id"; $result = mysql_query($query, $link) or die('error query: '.$query); if ($result == 1){echo "Save Data Success";else{ echo "Save Data Fail";?> 6. Sekarang mari kita siapkan bagian androidnya, buat new android project MySQLPhone 128

124 AGUS HARYANTO 7. Buat Class HttpHelper lalu ketikkan kode berikut package net.agusharyanto.mysqlphone; java.io.bufferedreader; java.io.inputstream; java.io.inputstreamreader; 129 Android PHP MySQL

125 org.apache.http.httpresponse; org.apache.http.client.httpclient; org.apache.http.client.methods.httpget; org.apache.http.impl.client.defaulthttpclient; android.util.log; public class HttpHelper { /** * Method untuk Mengirimkan data kes erver event by button login diklik * view */ public static String getrequest(string Url) { String sret=""; HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(Url); try { HttpResponse response = client.execute(request); sret= request(response); catch (Exception ex) { return sret; /** * Method untuk Menenrima data dari server * response */ public static String request(httpresponse response) { String result = ""; try { InputStream in = response.getentity().getcontent(); 130

126 BufferedReader( AGUS HARYANTO BufferedReader reader = new new InputStreamReader(in)); StringBuilder str = new StringBuilder(); String line = null; while ((line = reader.readline())!= null) { str.append(line + "\n"); in.close(); result = str.tostring(); catch (Exception ex) { result = "Error"; return result; Class HttpHelper ini digunakan untuk mengirim data keserver dan menangkap nilai yang dikembalikan server. 8. Buat class JSONFunction lalu ketikkan kode berikut package net.agusharyanto.mysqlphone; java.io.bufferedreader; java.io.inputstream; java.io.inputstreamreader; org.apache.http.httpentity; org.apache.http.httpresponse; org.apache.http.client.httpclient; org.apache.http.client.methods.httppost; org.apache.http.impl.client.defaulthttpclient; org.apache.http.params.basichttpparams; org.apache.http.params.httpconnectionparams; org.apache.http.params.httpparams; org.json.jsonexception; org.json.jsonobject; android.util.log; 131 Android PHP MySQL

127 public class JSONfunctions { public static JSONObject getjsonfromurl(string url) { InputStream is = null; String result = "0"; JSONObject jarray = null; try { HttpParams httpparameters = new BasicHttpParams(); int timeoutconnection = 60000; HttpConnectionParams.setConnectionTimeout(httpParameter s, timeoutconnection); int timeoutsocket = 60000; HttpConnectionParams.setSoTimeout(httpParameters, timeoutsocket); HttpClient httpclient = new DefaultHttpClient(httpParameters); HttpPost httppost = new HttpPost(url); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getentity(); is = entity.getcontent(); catch (Exception e) { Log.e("log_tag", "Error intimeout http connection " + e.tostring()); // convert response to string try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso "), 8); StringBuilder sb = new 132

128 StringBuilder(); AGUS HARYANTO null) { String line = null; while ((line = reader.readline())!= sb.append(line + "\n"); is.close(); result = sb.tostring(); catch (Exception e) { Log.e("log_tag", "Error converting result " + e.tostring()); result = "{\"errorcode\":\"0\""; try { jarray = new JSONObject(result); catch (JSONException e) { Log.e("log_tag", "Error parsing data " + e.tostring()); result = "{\"errorcode\":\"0\""; try { jarray = new JSONObject(result); catch (JSONException e1) { // TODO Auto-generated catch block e1.printstacktrace(); return jarray; public static String getstringjsonfromurl(string url) { InputStream is = null; String result = "0"; // http post try { HttpParams httpparameters = new BasicHttpParams(); int timeoutconnection = 60000; 133 Android PHP MySQL

129 HttpConnectionParams.setConnectionTimeout(httpParameter s, timeoutconnection); int timeoutsocket = 60000; HttpConnectionParams.setSoTimeout(httpParameters, timeoutsocket); HttpClient httpclient = new DefaultHttpClient(httpParameters); HttpPost(url); HttpPost httppost = new HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getentity(); is = entity.getcontent(); catch (Exception e) { Log.e("log_tag", "Error intimeout http connection " + e.tostring()); // convert response to string try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso "), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readline())!= null) { sb.append(line + "\n"); is.close(); result = sb.tostring(); catch (Exception e) { Log.e("log_tag", "Error converting result " + e.tostring()); result = "{\"errorcode\":\"0\""; 134

130 AGUS HARYANTO return result; Class JSONFunction ini digunakan untuk menangkap nilai kembalian dari server yang datanya berupa JSON 9. Buat Layoutbaru dengan nama add.xml lalu ketikan kode berikut <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" oid" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="smart Phone Name :" android:layout_width="wrap_content" android:layout_height="wrap_content"></textview> <EditText android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content"></edittext> <TextView android:text="price :" android:layout_width="wrap_content" android:layout_height="wrap_content"></textview> <EditText android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content"></edittext> <Button android:text="simpan" android:layout_width="fill_parent" android:layout_height="wrap_content"></button> </LinearLayout> 10. Buat Layout dengan nama listphone.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 135 Android PHP MySQL

131 xmlns:android=" oid" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="150sp" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:text="phone Name" android:textsize="20sp" android:padding="5sp" /> /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:text="price" android:textsize="20sp" android:padding="5sp" <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_alignparentleft="true" </RelativeLayout> 11. Buat layout dengan nama row.xml <?xml version="1.0" encoding="utf-8"?> 136

132 AGUS HARYANTO <RelativeLayout xmlns:android=" oid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:paddingbottom="5sp" android:paddingtop="5sp" > <TextView android:layout_width="150sp" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:padding="5sp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:padding="5sp" /> <TextView android:layout_width="0sp" android:layout_height="wrap_content" android:visibility="gone"/> </RelativeLayout> 12. Semua Layout sudah siap, saatnya membuat bagian javanya. Pada awal yang ditampilkan adalah list smartphone dan harganya, buat class baru dengan nama ListDataPhoneActivity.java package net.agusharyanto.mysqlphone; java.util.arraylist; java.util.hashmap; org.json.jsonarray; org.json.jsonexception; 137 Android PHP MySQL

133 org.json.jsonobject; android.app.activity; android.app.progressdialog; android.content.context; android.content.intent; android.os.asynctask; android.os.bundle; android.util.log; android.view.contextmenu; android.view.menu; android.view.menuitem; android.view.view; android.widget.adapterview; android.widget.listadapter; android.widget.listview; android.widget.simpleadapter; android.widget.toast; public class ListDataPhoneActivity extends Activity { /** Called when the activity is first created. */ private ListView listview1; private static final int REQUEST_CODE = 1; private ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); private static final int ADD_ID = Menu.FIRST + 1; private static final int EDIT_ID = Menu.FIRST + 2; private static final int DELETE_ID = Menu.FIRST + public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.listphone); try { getdataphone(); catch (Exception e) { Log.e("log_tag", "Error parsing data " + e.tostring()); 138

134 AGUS HARYANTO /** * Class CallWebPageTask untuk implementasi class AscyncTask */ private class requesttask extends AsyncTask<String, Void, String> { private ProgressDialog dialog; protected Context applicationcontext; private String protected void onpreexecute() { this.dialog = ProgressDialog.show(applicationContext, "Load Data From Server Process", "Please Wait...", true); urls) protected String doinbackground(string... { String response = ""; response = getdataserver(urls[0]); return protected void onpostexecute(string result) this.dialog.cancel(); if (actionflag.equals("list")) { if (result.equals("1")) setlistdata(); else if (actionflag.equals("delete")) { getdataphone(); public void getdataphone() { mylist.clear(); 139 Android PHP MySQL

135 requesttask task = new requesttask(); task.applicationcontext = ListDataPhoneActivity.this; task.actionflag = "list"; String url = " task.execute(new String[] { url ); public String getdataserver(string url) { String sret = "1"; JSONObject json = JSONfunctions.getJSONfromURL(url); try { if (json.getstring("errorcode").equals("0")) { Toast.makeText(getBaseContext(), json.getstring("errormsg"), Toast.LENGTH_SHORT).show(); sret = "0"; JSONArray makanan = json.getjsonarray("data"); for (int i = 0; i < makanan.length(); i++) { HashMap<String, String> map = new HashMap<String, String>(); JSONObject jsonobj = makanan.getjsonobject(i); map.put("id", jsonobj.getstring("id")); ; map.put("phone_name", jsonobj.getstring("phone_name")); map.put("price", jsonobj.getstring("price")); 140

136 AGUS HARYANTO mylist.add(map); catch (JSONException e) { Log.e("log_tag", "Error parsing data " + e.tostring()); return sret; private void showtoast(string msg, int flag) { Toast.makeText(getBaseContext(), "Result " + msg, Toast.LENGTH_LONG).show(); private void setlistdata() { listview1 = (ListView) findviewbyid(r.id.list1); ListAdapter adapter = new SimpleAdapter(this, mylist, R.layout.row, new String[] { "phone_name", "price", new int[] { R.id.phonename, R.id.price ); listview1.setadapter(adapter); public void oncreatecontextmenu(contextmenu menu, View v, ContextMenu.ContextMenuInfo menuinfo) { menu.add(menu.none, ADD_ID, Menu.NONE, "Add").setIcon(R.drawable.ic_launche r).setalphabeticshortcut('a'); menu.add(menu.none, EDIT_ID, Menu.NONE, "Edit").setIcon(R.drawable.ic_launche 141 Android PHP MySQL

137 r).setalphabeticshortcut('d'); menu.add(menu.none, DELETE_ID, Menu.NONE, "Delete").setIcon(R.drawable.ic_launche public boolean oncontextitemselected(menuitem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getmenuinfo(); int idphone = (int) info.id; HashMap<String, String> o = (HashMap<String, String>) listview1.getitematposition(idphone); switch (item.getitemid()) { case ADD_ID: adddata(o, "add"); return (true); case DELETE_ID: deletedata(o); return (true); case EDIT_ID: editdata(o, "edit"); return (true); return (super.onoptionsitemselected(item)); private void editdata(hashmap<string, String> o, String action) { Log.d("****editData*****", "ïd:" + o.get("id")); callintent(o, action); 142

138 AGUS HARYANTO o) { private void deletedata(hashmap<string, String> requesttask task = new requesttask(); task.applicationcontext = ListDataPhoneActivity.this; task.actionflag = "delete"; String url = " + o.get("id"); task.execute(new String[] { url ); private void adddata(hashmap<string, String> o, String action) { callintent(o, action); private void callintent(hashmap<string, String> o, String action) { Intent i = new Intent(this, AddPhoneActivity.class); i.putextra("action", action); i.putextra("dataphone", o); startactivityforresult(i, protected void onactivityresult(int requestcode, int resultcode, Intent data) { if (resultcode == RESULT_OK && requestcode == REQUEST_CODE) { if (data.hasextra("refreshflag")) { if (data.getextras().getstring("refreshflag").equals("1")) getdataphone(); 143 Android PHP MySQL

139 13. Tentunya Aplikasikita tidak hanya menampilkan data saja tetapi dapat juga menambahkan data dan mengedit data, buat class baru dengan nama AddPhoneActivity.java package net.agusharyanto.mysqlphone; java.io.unsupportedencodingexception; java.net.urlencoder; java.util.hashmap; android.app.activity; android.content.intent; android.os.asynctask; android.os.bundle; android.util.log; android.view.view; android.widget.button; android.widget.edittext; android.widget.toast; public class AddPhoneActivity extends private EditText edtname; private EditText edtprice; Activity { private Button btnsave; // Seusuaikan url dengan nama domain yang anda gunakan private String url = ""; String action=""; String phoneid=""; /** * Method yang dipanggil pada saat aplikaasi dijalankan * public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.add); edtname = (EditText) findviewbyid(r.id.edtname); edtprice = (EditText) findviewbyid(r.id.edtprice); 144

140 AGUS HARYANTO btnsave = (Button) findviewbyid(r.id.btnsave); Bundle extras = getintent().getextras(); if (extras == null) { return; action = extras.getstring("action"); HashMap <String,String> dataphone= (HashMap<String, String>) extras.get("dataphone"); if (action.equals("edit")){ edtname.settext(dataphone.get("phone_name")); edtprice.settext(dataphone.get("price")); phoneid=dataphone.get("id"); // daftarkan even onclick pada btnsave btnsave.setonclicklistener(new Button.OnClickListener() public void onclick(view v) { try { if (action.equals("add")) { url=" else{ url=" String phone_name = URLEncoder.encode(edtName.getText().toString(), "utf-8"); String price = URLEncoder.encode(edtPrice.getText().toString(), "utf-8"); url += "?phone_name=" + phone_name + "&price=" + price; if (action.equals("edit")){ 145 Android PHP MySQL

141 url+="&id="+phoneid; Log.d("url**","url:"+url); new RequestTask().execute(url); catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printstacktrace(); public void finish() { Intent data = new Intent(); data.putextra("refreshflag", "1"); setresult(result_ok, data); super.finish(); private void setresult(string result){ Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show(); finish(); class RequestTask extends AsyncTask<String, String, protected String doinbackground(string... uri) { String responsestring = null; responsestring= HttpHelper.getRequest(uri[0]); 146

142 AGUS HARYANTO return protected void onpostexecute(string result) { super.onpostexecute(result); setresult(result); //Do anything with response Edit AndroidManifest.xml lalu ketikan kode berikut <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" oid" package="net.agusharyanto.mysqlphone" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> <uses-permission android:name="android.permission.internet" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="net.agusharyanto.mysqlphone.listdataphon eactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> 147 Android PHP MySQL

143 <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name="addphoneactivity" android:label="add Edit"/> </application> </manifest> 15. Sekarang mari kita jalankan programnya. Tekan yang lama pada salah satu baris 148

144 AGUS HARYANTO Akan muncul konteks menu, jika ingin menambah data sentuh ADD, untuk merubah data sentuh Edit, untuk menghapus data sentih Delete. 149 Android PHP MySQL

main activity resource layout

main activity resource layout Nama: elza Nurul faradillah (10110012) BeNNy richardi p. (10110034) Nu man farid (10110044) Kelas : X tel 2 main activity resource layout

Lebih terperinci

BAB 3 XML LAYOUT, BASIC WIDGET DAN SELECTION WIDGET

BAB 3 XML LAYOUT, BASIC WIDGET DAN SELECTION WIDGET BAB 3 XML LAYOUT, BASIC WIDGET DAN SELECTION WIDGET 3.1 Tujuan Pembelajaran 1. Memahami tentang pembuatan layout dengan XML pada Android 2. Memahami tentang apa sajakah fitur dari Basic Widget dan Selection

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB V. USER INTERFACE (UI) PART 2 - BASIC VIEW Dosen Pembina : Bella Hardiyana, S. Kom Julian Chandra, S. Kom View View dalam pemrograman Android berfungsi sebagai komponen

Lebih terperinci

TUTORIAL PEMBUATAN APLIKASI SEDERHANA TOUCH AND GESTURE PADA ANDROID

TUTORIAL PEMBUATAN APLIKASI SEDERHANA TOUCH AND GESTURE PADA ANDROID TUTORIAL PEMBUATAN APLIKASI SEDERHANA TOUCH AND GESTURE PADA ANDROID Di dalam bahasan kali ini, terdapat tutorial pembuatan aplikasi sederhana touch and gesture pada android. Dalam touch and gesture ini

Lebih terperinci

Membuat preferensi atau pengaturan pada aplikasi android

Membuat preferensi atau pengaturan pada aplikasi android Membuat preferensi atau pengaturan pada aplikasi android Oleh: Jefri Rendra Wiratmaja Sempat bertanya - tanya pada diri ini "Bagiamana sih membuat pengaturan pada aplikasi android layaknya pengaturan pada

Lebih terperinci

Praktikum 9 Pemprograman Android GUI 2 Layar

Praktikum 9 Pemprograman Android GUI 2 Layar Praktikum 9 Pemprograman Android GUI 2 Layar Dosen : Ir. Nanang Syahroni M.Kom Pokok Bahasan Konsep pemprograman Java OOP pada Android Deklarasi pemprograman Android Penggunaan Button, Textview, Textfield,

Lebih terperinci

Program Database Sederhana di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.

Program Database Sederhana di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2. Program Database Sederhana di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.3, Eclipse, SQLite Artikel ini merupakan lanjutan dari tulisan sebelumnya yang

Lebih terperinci

PAPB-C. Yang harus dipersiapkan: 1. Eclipse 2. AVD/GenieMotion 3. JDK Membuat Android Application Project Baru

PAPB-C. Yang harus dipersiapkan: 1. Eclipse 2. AVD/GenieMotion 3. JDK Membuat Android Application Project Baru User Notification adalah pesan yang diterima oleh user yang tidak muncul dalam user interface utama tapi ada dalam bentuk icon dan dengan detail notifikasinya dalam notification area. Tujuan dari munculnya

Lebih terperinci

Call Phone Permission pada Android

Call Phone Permission pada Android Call Phone Permission pada Android Oleh: Adnan w Anadrep Halo, berjumpa lagi dengan saya :) Kali ini saya akan memberikan tutorial di android mengenai penggunaan CALL_PHONE permission. Dalam tutorial ini,

Lebih terperinci

Modul Pengembangan Aplikasi Android Berbasis Client- Server Aplikasi sederhana android Versi 1.0

Modul Pengembangan Aplikasi Android Berbasis Client- Server Aplikasi sederhana android Versi 1.0 Modul Pengembangan Aplikasi Android Berbasis Client- Server Aplikasi sederhana android Versi 1.0 I Ketut Resika Arthana, M.Kom http://www.rey204.com resika.arthana@gmail.com Disajikan dalam mata kuliah

Lebih terperinci

Penggunaan Button di Android

Penggunaan Button di Android Penggunaan Button di Android Oleh: Almibi Akmal Hallo sobat JK, kali ini saya berbagi tutorial bagaimana menggunakan button di android. Button merupakan salah satu bagian penting dari android. Ada dua

Lebih terperinci

Membuat Simple List Transaksi

Membuat Simple List Transaksi Membuat Simple List Transaksi Oleh: Wian Caniggia Eka Putra Hai sobat.. kali ini saya bikin tutorial android mobile yaitu Membuat Simple List Transaksi. Baik langsung saja.. Aplikasi ini mengimplementasikan

Lebih terperinci

Membuat project Android di Eclipse Struktur project pada eclipse Mengenal Tag Layout User Interface

Membuat project Android di Eclipse Struktur project pada eclipse Mengenal Tag Layout User Interface Membuat project Android di Eclipse Struktur project pada eclipse Mengenal Tag Layout User Interface TextView Absolute Layout Table Layout Jalankan Eclipse Pilih Menu File > New > Other Setelah muncul

Lebih terperinci

Pertemuan 2. Pemrograman Mobile. 3 SKS Semester 7 S1 Sistem Informasi. Nizar Rabbi Radliya

Pertemuan 2. Pemrograman Mobile. 3 SKS Semester 7 S1 Sistem Informasi. Nizar Rabbi Radliya Pemrograman Mobile 3 SKS Semester 7 S1 Sistem Informasi Nizar Rabbi Radliya nizar.radliya@yahoo.com Pertemuan 2 Universitas Komputer Indonesia 2015 Activity Service Content Provider Resource Views Notification

Lebih terperinci

Latihan 2 List Menu Bertingkat

Latihan 2 List Menu Bertingkat Latihan 2 List Menu Bertingkat 1. Buat Project baru dengan cara klik menu File New Android Application Project. 2. Beri nama aplikasi yang akan kita buat pada kolom Application Name. Huruf awal harus capital.

Lebih terperinci

Membuat list dengan RecylerView dan dependency injection ButterKniffe

Membuat list dengan RecylerView dan dependency injection ButterKniffe Membuat list dengan RecylerView dan dependency injection ButterKniffe Oleh: Adriyadi Savana Buat kalian yang sudah pernah mengenal ListView mungkin pernah mendengar RecylerView, yap! RecyclerView adalah

Lebih terperinci

MODUL 10 KOMPONEN GUI ANDROID

MODUL 10 KOMPONEN GUI ANDROID MODUL 10 KOMPONEN GUI ANDROID A. Tujuan : 1. Memahami berbagai pembuatan komponen di android 2. Memahami passing parameter di android dalam 1 layar 3. Memahami passing parameter di android dalam 2 layar

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB XI. DATABASE LOKAL ANDROID (SQLITE) Dosen Pembina : Bella Hardiyana, S. Kom, M. Kom Sistem database yang digunakan oleh Android adalah SQLite. SQLite adalah database

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB III. HELLO WORLD Dosen Pembina : Bella Hardiyana, S. Kom, M. Kom HelloWorld1 (1) Buatlah sebuah proyek baru dengan spesifikasi dibawah ini : @Override public boolean

Lebih terperinci

Struktur & Pemakaian Teknologi Game Pembuatan Activity

Struktur & Pemakaian Teknologi Game Pembuatan Activity Struktur & Pemakaian Teknologi Game Pembuatan Activity Activity Suatu Activity mewakili satu layar tunggal sebagai UI. Masing-masing Activity berdiri sendiri. Suatu Aplikasi dapat terdiri dari beberapa

Lebih terperinci

Praktikum IV Komponen UI (Radio Button, CheckBox dll)

Praktikum IV Komponen UI (Radio Button, CheckBox dll) Praktikum IV Komponen UI (Radio Button, CheckBox dll) Pokok Bahasan: Membuat aplikasi user interface android sederhana Mengenal komponen user interface di android Tujuan Belajar Setelah mempelajari modul

Lebih terperinci

Struktur & Pemakaian Teknologi Game Struktur Project Android

Struktur & Pemakaian Teknologi Game Struktur Project Android Struktur & Pemakaian Teknologi Game Struktur Project Android File proguard.cfg akan digunakan pada saat anda melakukan build aplikasi pada release mode, dimana dilakukan proses shrinks, optimizes, dan

Lebih terperinci

MODUL 13 KOMPONEN GUI ANDROID

MODUL 13 KOMPONEN GUI ANDROID MODUL 13 KOMPONEN GUI ANDROID A. Tujuan : 1. Memahami berbagai pembuatan komponen di android 2. Memahami passing parameter di android dalam 1 layar 3. Memahami passing parameter di android dalam 2 layar

Lebih terperinci

Tutorial Aplikasi Android Sederhana dengan Action Button

Tutorial Aplikasi Android Sederhana dengan Action Button Tutorial Aplikasi Android Sederhana dengan Action Button Deskripsi Aplikasi : Dapat menerima masukan dari pengguna berupa string. Lalu masukan tersebut dapat ditampilkan dengan menekan button. Terdapat

Lebih terperinci

[Pelatihan Pemrograman Android]

[Pelatihan Pemrograman Android] 2012 [Pelatihan Pemrograman Android] Safaruddin Hidayat Al Ikhsan, S.Kom, M.Kom Modul Untuk Peserta Pelatihan di Lab TBI, Departemen Teknik Mesin dan Biosistem, IPB 12/21/2012 Lisensi Dokumen: Copyright

Lebih terperinci

Cara Membuat Aplikasi Android Sederhana Menggunakan Eclipse

Cara Membuat Aplikasi Android Sederhana Menggunakan Eclipse Cara Membuat Aplikasi Android Sederhana Menggunakan Eclipse by webmaster - Sunday, December 13, 2015 http://xoxo.student.akademitelkom.ac.id/index.php/2015/12/13/cara-membuat-aplikasi-android-sederhanamenggunakan-eclipse/

Lebih terperinci

PEMROGRAMAN MOBILE PRAKTIKUM 11 ( DATABASE II ) Disusun oleh : CYNTHIA STEFFI CLIFF SI 12 A

PEMROGRAMAN MOBILE PRAKTIKUM 11 ( DATABASE II ) Disusun oleh : CYNTHIA STEFFI CLIFF SI 12 A PEMROGRAMAN MOBILE PRAKTIKUM 11 ( DATABASE II ) Disusun oleh : CYNTHIA STEFFI CLIFF 12.12.0037 SI 12 A http://cliffnewbie.wordpress.com/ SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AMIKOM PURWOKERTO

Lebih terperinci

Praktikum VI Activity dan Intent

Praktikum VI Activity dan Intent Praktikum VI Activity dan Intent Pokok bahasan: Membuat aplikasi yang melibatkan activity lebih dari satu Memahami konsep activity dan Intent Tujuan Belajar: Setelah mempelajari modul ini mahasiswa diharapkan

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB IX. PENGGUNAAN MENU DENGAN VIEW Dosen Pembina : Bella Hardiyana, S. Kom Julian Chandra, S. Kom Menu Menu berguna untuk menampilkan pilihan tambahan yang tidak langsung

Lebih terperinci

Modul Aplikasi Mobile. Pertemuan ke-2. Pengenalan environment android pada eclipse

Modul Aplikasi Mobile. Pertemuan ke-2. Pengenalan environment android pada eclipse Modul Aplikasi Mobile Pertemuan ke-2 Pengenalan environment android pada eclipse Konsep MVC pada Android Develop aplikasi Android seperti halnya pada platform yang lain, menggunakan bahasa pemogramman

Lebih terperinci

Cara Membuat Background Dinamis di Android

Cara Membuat Background Dinamis di Android Cara Membuat Background Dinamis di Android Oleh: Yudi Setiawan Sebenarnya judulnya agak aneh ya. Mengapa? karena, maksud dari tutorial ini ialah membuat background seperti aplikasi Instagram. Bagi Anda

Lebih terperinci

Tutorial Membuat Aplikasi Web View Android pada Eclipse

Tutorial Membuat Aplikasi Web View Android pada Eclipse Tutorial Membuat Aplikasi Web View Android pada Eclipse 1. Membuat Project Baru a. Langkah awal pastinya adalah membuat project baru: File-New-Project b. Kemudian klik Next da nisi informasi yang dibutuhkan

Lebih terperinci

Latihan 1 Menghitung Luas Persegi Panjang

Latihan 1 Menghitung Luas Persegi Panjang Latihan 1 Menghitung Luas Persegi Panjang 1. Buat Project baru dengan cara klik menu File New Android Application Project. 2. Beri nama aplikasi yang akan kita buat pada kolom Application Name. Huruf awal

Lebih terperinci

MODUL 14 INTERKONEKSI CLIENT-SERVER ANDROID

MODUL 14 INTERKONEKSI CLIENT-SERVER ANDROID MODUL 14 INTERKONEKSI CLIENT-SERVER ANDROID A. Tujuan : 1. Memahami interkoneksi client-server dengan php di android 2. Memahami interkoneksi client-server dengan php-mysql 3. Memahami passing parameter

Lebih terperinci

Praktikum XI Animasi dan Multimedia

Praktikum XI Animasi dan Multimedia Praktikum XI Animasi dan Multimedia Pokok bahasan: Animasi dan multimedia Membuat aplikasi yang melibatkan komponen multimedia Tujuan Belajar: Setelah mempelajari modul ini mahasiswa diharapkan mengetahui:

Lebih terperinci

Menggunakan Database di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.

Menggunakan Database di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2. Menggunakan Database di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.3, Eclipse, SQLite Dengan semakin beragamnya pengembangan berbagai aplikasi di platform

Lebih terperinci

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR MOBILE PROGRAMMING Oleh : CHALIFA CHAZAR MATERI 3 MENULISKAN KODE Tujuan: Mahasiswa memahami dan mampu menggunakan komponen dan penulisan kode untuk pembuatan suatu aksi pada aplikasi Android. Pustaka:

Lebih terperinci

Pertemuan 7. Create, Read, Update, Delete Pada SQL Lite (Tampilan)

Pertemuan 7. Create, Read, Update, Delete Pada SQL Lite (Tampilan) Pertemuan 7 Create, Read, Update, Delete Pada SQL Lite (Tampilan) SQLite merupakan bahasa yang dirancang untuk mengelola data di dalam relasional database,sqlite skalanya masih dibawah mysql, postgree

Lebih terperinci

PERTEMUAN KE 4 Representasi Data (ListView dan Spinner)

PERTEMUAN KE 4 Representasi Data (ListView dan Spinner) A. TUJUAN PERTEMUAN KE 4 Representasi Data (ListView dan Spinner) Mahasiswa diharapkan dapat memahami dan mengetahui tentang komponen widget, yaitu ListView yang digunakan pada aplikasi mobile. B. TEORI

Lebih terperinci

BAB 5 Android Event Handling Mahardeka Tri Ananta

BAB 5 Android Event Handling Mahardeka Tri Ananta BAB 5 Android Event Handling Mahardeka Tri Ananta deka.kelas@gmail.com Konten Event pada Widget Event Handler Event Listener Event Event adalah suatu cara untuk mengumpulkan data tentang interaksi pengguna

Lebih terperinci

Lecture Notes

Lecture Notes Lecture Notes 15.09.2014 LinearLayout 1. Hapus layout pada file xml 2. Drag drop LinearLayout (Vertical) 3. Drag drop button 3x 4. Lihat code di layout xml, jelaskan ttg id 5. Buat strings.xml dari folder

Lebih terperinci

Cara membuat Aplikasi Android : CheckBox dengan Eclipse

Cara membuat Aplikasi Android : CheckBox dengan Eclipse Cara membuat Aplikasi Android : CheckBox dengan Eclipse by webmaster - Monday, December 28, 2015 http://umarrokhimin.student.akademitelkom.ac.id/index.php/2015/12/28/cara-membuat-aplikasi-androidcheckbox-dengan-eclipse/

Lebih terperinci

INTERFACING APLIKASI PENGHITUNGAN LUAS SEGITIGA DI ANDROID. Dibuat Oleh : Nama : Zunar Fitrianto NIM : Kelas : 13.5B.11

INTERFACING APLIKASI PENGHITUNGAN LUAS SEGITIGA DI ANDROID. Dibuat Oleh : Nama : Zunar Fitrianto NIM : Kelas : 13.5B.11 INTERFACING APLIKASI PENGHITUNGAN LUAS SEGITIGA DI ANDROID Dibuat Oleh : Nama : Zunar Fitrianto NIM : 13081343 Kelas : 13.5B.11 Akademi Manajement Informatika dan Komputer Bina Sarana Informatika 2010

Lebih terperinci

Membuat Interface Dinamis Menggunakan FrameLayout

Membuat Interface Dinamis Menggunakan FrameLayout Membuat Interface Dinamis Menggunakan FrameLayout Oleh: Hasyemi Rafsanjani Asyari Pada tutorial kali ini kita akan belajar membuat aplikasi android dengan fragment. Seperti yang kita ketahui aplikasi android

Lebih terperinci

Pertemuan 7. Create, Read, Update, Delete Pada SQL Lite (Tampilan)

Pertemuan 7. Create, Read, Update, Delete Pada SQL Lite (Tampilan) Pertemuan 7 Create, Read, Update, Delete Pada SQL Lite (Tampilan) SQLite merupakan bahasa yang dirancang untuk mengelola data di dalam relasional database,sqlite skalanya masih dibawah mysql, postgree

Lebih terperinci

Praktikum 1 - Getting Started with Android

Praktikum 1 - Getting Started with Android Praktikum 1 - Getting Started with Android Dosen : Tenia Wahyuningrum, S.Kom., MT Sebelum menjalankan aplikasi sederhana Hello World, kita perlu untuk menginstal programming environment. Hello World App

Lebih terperinci

Tutorial berikut akan mengajarkan rekan-rekan cara membuat kalkulator sederhana di android.

Tutorial berikut akan mengajarkan rekan-rekan cara membuat kalkulator sederhana di android. Kalkulator Sederhana Tutorial berikut akan mengajarkan rekan-rekan cara membuat kalkulator sederhana di android. pertama-tama pastikan di komputer anda telah terinsal AVD dan eclipse. 1. Buat projek android

Lebih terperinci

Cara Membuat Layout Dynamic di Android

Cara Membuat Layout Dynamic di Android Cara Membuat Layout Dynamic di Android Oleh: Yudi Setiawan Dalam pemrograman Android, khususnya untuk aplikasi Native. Anda harus menguasai Java dan XML. Java sebagai algoritmanya dan XML sebagai UI-nya.

Lebih terperinci

Variabel dan tipe data

Variabel dan tipe data Variabel dan tipe data Variabel dan tipe data adalah sebuah hal yang penting didalam pemrograman. Variabel berfungsi untuk menyimpan sebuah nilai secara sementara di memory komputer. Variabel dan tipe

Lebih terperinci

PRAKTIKUM IX:TUTORIAL PEMBUATAN

PRAKTIKUM IX:TUTORIAL PEMBUATAN LAPORAN PRAKTIKUM Pemograman mobile PRAKTIKUM IX:TUTORIAL PEMBUATAN Database(Part 1). DISUSUN OLEH : Wahyu Nurfian 12.12.0062 LABORATORIUM KOMPUTER & JARINGAN SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER

Lebih terperinci

Praktikum VI Activity dan Intent

Praktikum VI Activity dan Intent Praktikum VI Activity dan Intent Pokok bahasan: Membuat aplikasi yang melibatkan activity lebih dari satu Memahami konsep activity dan Intent Tujuan Belajar: Setelah mempelajari modul ini mahasiswa diharapkan

Lebih terperinci

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR MOBILE PROGRAMMING Oleh : CHALIFA CHAZAR MATERI 6 PENGGUNAAN ACTIVITY & INTENT Tujuan: Mahasiswa memahami siklus hidup suatu activity dan mampu menerapkan penggunaan intent dalam pembuatan suatu aplikasi

Lebih terperinci

Membuat Aplikasi Sederhana Hello World untuk Android

Membuat Aplikasi Sederhana Hello World untuk Android Membuat Aplikasi Sederhana Hello World untuk Android by webmaster - Monday, December 21, 2015 http://ahmadarifudin.student.akademitelkom.ac.id/?p=50 Dalam membuat aplikasi android diperlukan Java SE Development

Lebih terperinci

Membuat tab menu di aplikasi android

Membuat tab menu di aplikasi android Membuat tab menu di aplikasi android Oleh: Jefri Rendra Wiratmaja Salam jagocoding. Dikesempatan kali ini saya akan menjelaskan bagaimana membuat menu tab di aplikasi android. Menu tab seringkali digunakan

Lebih terperinci

PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Pemrograman Berorientasi Objek 3 (Mobile And Web Programming)

PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Pemrograman Berorientasi Objek 3 (Mobile And Web Programming) Jl Srijaya Negara Bukit Besar Palembang 30139, Telpon : +62711-353414 TK PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Pemrograman Berorientasi Objek 3 (Mobile And Web

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB VII. USER INTERFACE (UI) PART 4 LIST VIEW Dosen Pembina : Bella Hardiyana, S. Kom Julian Chandra, S. Kom Tipe List View List view adalah view yang memperbolehkan untuk

Lebih terperinci

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN BAB IV IMPLEMENTASI DAN PENGUJIAN Setelah melakukan analisa dan perancangan terhadap aplikasi informasi seluruh provider perdana di indonesia yang ada di kota Jakarta, pada bab ini akan dibahas mengenai

Lebih terperinci

PRAKTIKUM 6 SPINNER. 1. Aktifkanlah project baru, File New Project Android Application Project. Modul 6 Spinner Page 1

PRAKTIKUM 6 SPINNER. 1. Aktifkanlah project baru, File New Project Android Application Project. Modul 6 Spinner Page 1 PRAKTIKUM 6 SPINNER Spinner adalah aplikasi sederhana untuk menyusun pilihan ketika akan memilih sebuah jawaban berupa option, dan menampilkan jawaban terpilih di textbox. Spinner merupakan view yang memiliki

Lebih terperinci

Ijin Akses Agar program kita dapat mengakses GPS, kita harus menambahkan permission pada AndroidManifest.xml sebagai berikut:

Ijin Akses Agar program kita dapat mengakses GPS, kita harus menambahkan permission pada AndroidManifest.xml sebagai berikut: Pemrograman Android GPS MAP Part 1 [Pemrograman Android GPS MAP 01][Level: Menengah] Andi Taru Nugroho Nur Wismono S.Kom.,M.Cs. andi.taru@gmail.com Lisensi Dokumen: Copyright 2012 JavaClopedia.com Seluruh

Lebih terperinci

Listing Program. //mengeset nama tab dan mengisi content pada menu tab anda. tabhost.addtab(spec);

Listing Program. //mengeset nama tab dan mengisi content pada menu tab anda. tabhost.addtab(spec); Listing Program MainActivity.java package com.pakarkepribadian; import android.os.bundle; import android.app.tabactivity; import android.content.intent; import android.content.res.resources; import android.widget.tabhost;

Lebih terperinci

Dapat memahami mekanisme kerja component dalam sistem operasi android. Dapat menggunakan component secara efektif dalam membuat aplikasi android

Dapat memahami mekanisme kerja component dalam sistem operasi android. Dapat menggunakan component secara efektif dalam membuat aplikasi android Dapat memahami dasar teori pemrograman android Dapat memahami mekanisme kerja component dalam sistem operasi android Dapat menggunakan component secara efektif dalam membuat aplikasi android Activity Menyajikan

Lebih terperinci

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR MOBILE PROGRAMMING Oleh : CHALIFA CHAZAR MATERI 4 CONDITIONAL STATEMENT Tujuan: Mahasiswa memahami dan mampu memnggunakan struktur kondisi IF..THEN..ELSE.. untuk mendukung pembuatan suatu aplikasi Android.

Lebih terperinci

Pembuatan Aplikasi Android Sederhana dengan Eclipse

Pembuatan Aplikasi Android Sederhana dengan Eclipse Pembuatan Aplikasi Android Sederhana dengan Eclipse by webmaster - Monday, December 14, 2015 http://suyatno.dosen.akademitelkom.ac.id/index.php/2015/12/14/pembuatan-aplikasi-android-sederhanadengan-eclipse/

Lebih terperinci

Workshop Struktur dan Pemakaian Teknologi Game BAB 4. Menu

Workshop Struktur dan Pemakaian Teknologi Game BAB 4. Menu BAB 4 Menu 69 4.1 Tujuan Pembelajaran 1. Memahami tentang Menu, baik Option maupun Context Menu dan bagaimana penggunaannya. 4.2 Dasar Teori Sebagaimana halnya aplikasi-aplikasi untuk desktop dan beberapa

Lebih terperinci

Gambar Tampilan aplikasi Database Android 2

Gambar Tampilan aplikasi Database Android 2 A. ANDROID SQLite DATABASE #2 Nah sekarang kita kembangkan lagi pemahaman database kita dengan menambahkan beberapa fitur seperti mengubah data dan menghapus data yang sebelumnya terdapat pada database.

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB II. MEMULAI PROYEK ANDROID PERTAMA Dosen Pembina : Bella Hardiyana, S. Kom, M. Kom JDK Download JDK terbaru dari link dibawah ini http://www.oracle.com/technetwork/java/javase/downloads/index.

Lebih terperinci

Modul. Android Programming. Dyah Fajar Nur Rohmah

Modul. Android Programming. Dyah Fajar Nur Rohmah Modul Android Programming Dyah Fajar Nur Rohmah 2011 DAFTAR ISI DAFTAR ISI... 2 CHAPTER 1 INTRODUCING... 3 Project Structure... 3 CHAPTER 2 ANDROID PROJECT... 5 CHAPTER 3 BUILDING APPLICATION... 7 Menambah

Lebih terperinci

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN BAB IV IMPLEMENTASI DAN PENGUJIAN 4.1 Implementasi Setelah sistem dianalisis dan didesain secara rinci, tahap selanjutnya adalah implementasi. Implementasi sistem merupakan tahap meletakkan sistem sehingga

Lebih terperinci

Custom Button pada Android Februari 2012 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.3, Eclipse

Custom Button pada Android Februari 2012 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.3, Eclipse Custom Button pada Android Februari 2012 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.3, Eclipse Salah satu hal yang menyenangkan dalam membuat sebuah aplikasi Android adalah

Lebih terperinci

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS!

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! PERTAMA ebook Bahasa Indondesia! Dilengkapi PEMBAHASAN Jelas dan mudah dipahami Sangat Cocok untuk PEMULA!!! Di JAMIN Bisa! Baca Coba Berhasil! L A B. A N D

Lebih terperinci

Membuat Alert Dialog Pada Android

Membuat Alert Dialog Pada Android Membuat Alert Dialog Pada Android Oleh: Wian Caniggia Eka Putra Hai Sobat.. Kali ini saya akan bagi tutorial android mobile. Kali ini saya akan menjelaskan tentang gimana cara membuat alert dialog pada

Lebih terperinci

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS!

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! PERTAMA ebook Bahasa Indondesia! Dilengkapi PEMBAHASAN Jelas dan mudah dipahami Sangat Cocok untuk PEMULA!!! Di JAMIN Bisa! Baca Coba Berhasil! L A B. A N D

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB IV. USER INTERFACE (UI) PART 1 - VIEWGROUP Dosen Pembina : Julian Chandra W, S.Kom,M.Kom Bella Hardiyana, S. Kom, M. Kom USER INTERFACE (UI) Secara umum arsitektur UI

Lebih terperinci

ANDROID FOR BEGINNER MODUL 2

ANDROID FOR BEGINNER MODUL 2 ANDROID FOR BEGINNER MODUL 2 [ANDROID WIDGET] SUDARYATNO yatnosudar@gmail.com @dodulz facebook : yatno.sudar 1 of 11 ANDROID WIDGET Widget adalah komponen view android yang digunakan untuk memudahkan end

Lebih terperinci

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS!

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! PERTAMA ebook Bahasa Indondesia! Dilengkapi PEMBAHASAN Jelas dan mudah dipahami Sangat Cocok untuk PEMULA!!! Di JAMIN Bisa! Baca Coba Berhasil! L A B. A N D

Lebih terperinci

Menulis Aplikasi untuk Android Bagian I

Menulis Aplikasi untuk Android Bagian I Menulis Aplikasi untuk Android Bagian I Selamat berjumpa lagi di ruang E-Learning Trisma. Seperti penjelasan artikel sebelumnya Bermain dengan Android, dijelaskan sedikit mengenai struktur dasar dari Android

Lebih terperinci

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS!

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! PERTAMA ebook Bahasa Indondesia! Dilengkapi PEMBAHASAN Jelas dan mudah dipahami Sangat Cocok untuk PEMULA!!! Di JAMIN Bisa! Baca Coba Berhasil! L A B. A N D

Lebih terperinci

ARTIKEL TUGAS AKHIR TUTORIAL APLIKASI RUMUS-RUMUS FISIKA LISTRIK DINAMIS DASAR BERBASIS ANDROID

ARTIKEL TUGAS AKHIR TUTORIAL APLIKASI RUMUS-RUMUS FISIKA LISTRIK DINAMIS DASAR BERBASIS ANDROID ARTIKEL TUGAS AKHIR TUTORIAL APLIKASI RUMUS-RUMUS FISIKA LISTRIK DINAMIS DASAR BERBASIS ANDROID Disusun Oleh Nama : Ika Widya Atni NIM : 24100150 Jurusan : Teknik Komputer Jenjang : Diploma III (D3) SEKOLAH

Lebih terperinci

Class yang dipakai Untuk membuat tampilan map pada Android, kita bisa memanfaatkan MapView sebagai berikut:

Class yang dipakai Untuk membuat tampilan map pada Android, kita bisa memanfaatkan MapView sebagai berikut: Pemrograman Android GPS MAP Part 3 [Pemrograman Android GPS MAP 03][Level: Menengah] Andi Taru Nugroho Nur Wismono S.Kom.,M.Cs. andi.taru@gmail.com Lisensi Dokumen: Copyright 2012 JavaClopedia.com Seluruh

Lebih terperinci

BAB 3 Android User Interface

BAB 3 Android User Interface BAB 3 Android User Interface Mahardeka Tri Ananta deka.kelas@gmail.com Konten User Interface View/Widget ViewGroup (Layout) Dealing with data (supplement) Google Material Design (supplement) User Interface

Lebih terperinci

Membuat Spash Screen

Membuat Spash Screen Membuat Spash Screen Oleh: christiawan eko saputro Tutorial ini sangat simple,pasti udah tau kan Splash Screen, semacam kaya Loading gitu lah :) Buat Project File New SplashScreen dan Beri nama Activity

Lebih terperinci

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR MOBILE PROGRAMMING Oleh : CHALIFA CHAZAR MATERI 6 PENGGUNAAN INTENT Tujuan: Mahasiswa memahami siklus hidup suatu activity dan mampu menerapkan penggunaan intent dalam pembuatan suatu aplikasi Android.

Lebih terperinci

Praktikum IX Drag and Drop GUI dan Image Gallery

Praktikum IX Drag and Drop GUI dan Image Gallery Praktikum IX Drag and Drop GUI dan Image Gallery Pokok bahasan: Drag and Drop GUI Fungsi shape Tujuan Belajar: Setelah mempelajari modul ini mahasiswa diharapkan mengetahui: Tampilan GUI yang lebih menarik

Lebih terperinci

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS!

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS! PERTAMA ebook Bahasa Indondesia! Dilengkapi PEMBAHASAN Jelas dan mudah dipahami Sangat Cocok untuk PEMULA!!! Di JAMIN Bisa! Baca Coba Berhasil! L A B. A N D

Lebih terperinci

Praktikum XIV Aplikasi dengan Database SQLite

Praktikum XIV Aplikasi dengan Database SQLite Praktikum XIV Aplikasi dengan Database SQLite Pokok bahasan: Database SQLite Proses CrUD (Create, Update, Delete) Tujuan Belajar: Setelah mempelajari modul ini mahasiswa diharapkan mengetahui: Proses penyimpanan

Lebih terperinci

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR MOBILE PROGRAMMING Oleh : CHALIFA CHAZAR MATERI 8 HTTP CONNECTION Tujuan: Mahasiswa memahami dan mampu menerapkan penggunaan http connection dalam pembuatan suatu aplikasi Android. Pustaka: Abdul Kadir,

Lebih terperinci

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR MOBILE PROGRAMMING Oleh : CHALIFA CHAZAR MATERI 6 PENGGUNAAN ACTIVITY Tujuan: Mahasiswa memahami siklus hidup suatu activity dan mampu menerapkan penggunaan intent dalam pembuatan suatu aplikasi Android.

Lebih terperinci

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN BAB IV IMPLEMENTASI DAN PENGUJIAN Setelah melakukan analisis dan perancangan terhadap aplikasi check point dan penghitung jumlah pada bus AKAP berbasis Android. Pada bab ini akan dibahas mengenai implementasi

Lebih terperinci

PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Pemrograman Berorientasi Objek 3 (Mobile And Web Programming)

PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Pemrograman Berorientasi Objek 3 (Mobile And Web Programming) TK Jl Srijaya Negara Bukit Besar Palembang 30139, Telpon : +62711-353414 PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Pemrograman Berorientasi Objek 3 (Mobile And Web

Lebih terperinci

PERTEMUAN KE 7 Broadcast Receiver dan Services

PERTEMUAN KE 7 Broadcast Receiver dan Services PERTEMUAN KE 7 Broadcast Receiver dan Services A. TUJUAN Mahasiswa diharapkan dapat memahami dan mengetahui tentang Broadcast Receviver dan Service serta bagaimana menggunakannya. B. TEORI SINGKAT BROADCAST

Lebih terperinci

Multi-platform Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP- UX dan Mac OS X.

Multi-platform Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP- UX dan Mac OS X. 1 MODUL 1 PEMROGRAMAN DASAR DENGAN ECLIPSE 1. Pengertian Aplikasi Mobile Aplikasi Mobile adalah sebuah aplikasi yang memungkinkan anda melakukan mobilitas dengan mengunakan perlengkapan seperti PDA, telepon

Lebih terperinci

User interface & XML Layout

User interface & XML Layout User interface & XML Layout Oleh : Farah Zakiyah Rahmanti, M.T Diperbarui 2017 Overview View Class UI Component XML Layout UI Hierarchy Layout Linear Layout Relative Layout Grid View List View View Class

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB VIII. MENAMPILKAN GAMBAR DENGAN VIEW Dosen Pembina : Bella Hardiyana, S. Kom Julian Chandra, S. Kom Gallery and ImageView Views Gallery adalah view yang digunakan untuk

Lebih terperinci

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR MOBILE PROGRAMMING Oleh : CHALIFA CHAZAR MATERI 5 LOOPING STATEMENT Tujuan: Mahasiswa memahami dan mampu memnggunakan struktur kondisi pengulangan untuk mendukung pembuatan suatu aplikasi Android. Pustaka:

Lebih terperinci

UNIVERSITAS KOMPUTER INDONESIA

UNIVERSITAS KOMPUTER INDONESIA UNIVERSITAS KOMPUTER INDONESIA BAB VI. USER INTERFACE (UI) PART 3 PICKER VIEW Dosen Pembina : Bella Hardiyana, S. Kom Julian Chandra, S. Kom Picker View Pemilihan tanggal dan waktu merupakan salah satu

Lebih terperinci

public class MainActivity extends Activity implements AdapterView.OnItemClickListener{

public class MainActivity extends Activity implements AdapterView.OnItemClickListener{ SOURECE JAVA MAINACTIVITY package id.andang.bukhari; import android.app.activity; import android.content.intent; import android.os.bundle; import android.text.editable; import android.text.textwatcher;

Lebih terperinci

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR MOBILE PROGRAMMING Oleh : CHALIFA CHAZAR MATERI 7 INTENT BAGIAN 2 Tujuan: Mahasiswa memahami siklus hidup suatu activity dan mampu menerapkan penggunaan intent dalam pembuatan suatu aplikasi Android. Pustaka:

Lebih terperinci

Membuat Chating Messager Di Android

Membuat Chating Messager Di Android Membuat Chating Messager Di Android Fitria Arnita fitriaarnita23@gmail.com Abstrak Dengan fitur telepon genggam yang lengkap saat ini dan tarif dari operator yang semakin murah maka banyak orang lebih

Lebih terperinci

SQLite adalah produk public domain. Artinya tidak punya lisensi, anda boleh mengambil binary atau source codenya secara free / GRATIS.

SQLite adalah produk public domain. Artinya tidak punya lisensi, anda boleh mengambil binary atau source codenya secara free / GRATIS. SQLite 1. Pengenalan SQLite SQLite itu merupakan sebuah Database yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat

Lebih terperinci