t,
kr
T
Nazruddin Safaat H.
INFORMATIKA
Bandung
KATA PENGANTAR
\NDROID
'emrograman Aplikasi Mobile Smartphone dan Tablet PC Berbasis
\ndroid
)enyusun : Nazruddin Safaat H. Perkembangan smartphone dan Tablet pc berbasis android sangat
menakjubkan, hal ini terbukti saat ini hampir semua uendor-uendor
'enerbit : lnformatika Bandung smartphone sudah memproduksi smartphone berbasis android, uendor-
)emasaran uendor itu antara lain HTC, Motorola, Samsung, LG, HKC, Huawei, Archos,
: Bl-Obses
Pasar Buku Palasari No. 82 WebstationCamangi, Dell, Nexus, Sciphone, Wafiee, Sony Ericsson, LG,
Bandung 40264 Acer, Philips, T-Mobile,Nexian, IMo, Asus dan masih banyak lagi uendor
Tetp.(022)7317812 smartphone di dunia yang memproduksi smartphone android. Antusiasnya
Fax. (022)7317896 uendor memproduksi smartphone android dikarenakan android adalah os
April 2012 (edisi revisi)
mobile yang open platfurm karena android sendiri adalah sistem operasi
)etakan Pertama
untuk perangkat mobile berbasis linux yang mencakup system operasi,
SBN 978-602-8758-52-9 middleuare dan aplikasi.
Buku ditulis dengan memisahkan source code dar. penjelasan. Source code
ditulis dalam kotak beraster sehingga memudahkan pembaca untuk
memahami isi buku.
PENGENALAN ANDROID
Seiarah Android
Android adalah sebuah sistem operasi untuk perangkat mobile berbasis
linux yang mencakup sistem operasi, middleuare dan aplikasi. Android
menyediakan platfurm terbuka bagi para pengembang untuk menciptakan
aplikasi mereka. Awalnya, Google Inc. membeli Android Inc. yang
merupakan pendatang baru yang membuat peranti lunak untuk
ponsel/smortphone. Kemudian untuk mengembangkan Android, operasinya, Aplikasi dan Tool Pengembangan, Market aplikasi android serta
dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti dukungan yang sangat tinggi dari komunitas Open Source di dunia, sehingga
keras, peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel, android terus berkembang pesat baik dari segi teknologi maupun dari segi
Motorola, Qualcomm, T-Mobile, dan Nvidia. jumlah deuice yang ada di dunia.
. libraries 3D yang mencakup implementasi OpenGL ES r.o API's l*lbr€ries A.ndr'e:id Runtirr"!e
Android RunTime
MffiMNWNNW C.$r6 Libraaie$
NwmlwwffiN* ffi
effiKffiwNi B&lr.lh Vlftrr&l
Mi6(t,i&d
Layer yang membuat aplikasi Android dapat dijalankan di mana dalam
prosesnya menggunakan Implementasi Linux. Daluik Virtual Machine
(DVM) merupakan mesin yang membentuk dasar kerangka aplikasi
ffiffiffi$tuffiW tuffi
N-lnux Ker$el
Android. Di dalam Android Run Time dibagi menjadi dua bagian yaitu:
. Core Libraries: Aplikasi Android dibangun dalam bahasa java, tlrysqqs ilr!|MEA f{-$q! f, 2 i:r$W*-ry]
sementara Dalvik sebagai virtual mesinnya bukan Virtual Machine frwxx lt-**€ssg{Yrye [Yry:-i t.ffij
Java, sehingga diperlukan sebuah libraries yang berfungsi untuk Gambar 't.1 Arsitektur Android
menterjemahkan bahasa java/cyang ditangani oleh Core Libraries.
. Daluik Virtual Machine: Virtual mesin berbasis register yang
dioptimalkan untuk menjalankan fungsi-fungsi secara efisien, di
mana merupakan pengembangan yang mampu membuat linux Fundamental Aplikasi
kernel untuk melakukan threading dan manajemen tingkat rendah.
Aplikasi Android ditulis dalam bahasa pemrograrnan java. Kode java
dikompilasi bersama dengan data file resource yang dibutuhkan oleh
Linux Kernel aplikasi, di mana prosesnya dipackage oleh rools yang dinamakan "apt
Linux kernel adalah layer di mana inti dari operating sistem dari tools" ke dalam paket Android sehingga menghasilkanfile dengan ekstensi
Android itu berada. Berisi "file--1ile system yang mengatur sistem apk. tr'ile apk itulah yang kita sebut dengan aplikasi, dan nantinya dapat di
processing, memorA, resource, driuers, dan sistem-sistem operasi install di perangkat mobile.
android lainnya. Linux kernel yang digunakan android adalah linux
kernel release 2.6. jika anda ingin rnempelajari linux kernel ini, Anda Ada enam jenis komponen pada aplikasi Android yaitu:
dapat mengunduh linuxkernel secara gratis di situs www.kernel.org. a) Actiuities
Suatu acfiuiry akan menyajikan user interface (UI) kepada pengguna,
sehingga pengguna dapat melakukan interaksi. Sebuah aplikasi android
bisa jadi hanya memiliki satu actiuity, tetapi umumnya aplikasi memiliki
banyak actiuity tergantung pada tujuan aplikasi dan desain dari aplikasi
tersebut. Satu cctruifu biasanya akan dipakai untuk menampilkan
aplikasi atau yang bertindak sebagai user interfoce (UI) saat aplikasi
diperlihatkan kepada user. Untuk pindah dari satu actiuity ke actiuity
lain kita dapat melakukannya dengan satlu euen, misalnya click tombol,
memilih opsi atau menggunakan triggers tertentu. Secara hirarki sebuah
uindoru s actiuitg dinyatakan dengan metho d Activity.setContentView0.
ContentView adalah objek yang berada pada root hirarki.
b) Seruice sebagai operating sAstem. Adapun versi-versi Android yang pernah dirilis
Seruice tidak memiliki Graphfc (Jser Interfoce (GUI), tetapi seruice adalah sebagai berikut:
berjalan secara background, sebagai contoh dalam memainkan musik, . Android versi r.r
seruice mungkin memainkan musik atau mengambil data dari jaringan, Pada 9 Maret zoo9, Google merilis Android versi t.t. Android versi ini
tetapi setiap seruice harus berada dalam kelas induknya. Misalnya, dilengkapi dengan pembaruan estetis pada aplikasi, jam, alarm, uoice
media player sedang memutar lagu dari hsr yang ada, Aplikasi ini akan search (pencarian suara), pengiriman pesan dengan Gmail, dan
memiliki dua atau lebih acrruity yang memungkinkan user untuk pemberitahuan email.
memilih lagu misalnya, atau menulis sms sambil player sedang jalan. o Android versi r,5 (Cupcake)
Untuk menjaga musik tetap di jalankan, actiuity player dapat Pada pertengahan Mei zoo9, Google kembali merilis telepon seluler
menjalankan seruice. Seruice dijalankan pada thread utama dari proses dengan menggunakan Android dan SDK (Software Deuelopment Kit)
aplikasi. dengan versi r.5 (Cupcake). Terdapat beberapa pembaruan termasuk
juga penambahan beberapa fitur dalam seluler versi ini yakni
c) Broadcast Receiuer kemampuan merekam dan menonton video dengan modus kamera,
Broadcast receiuer berfungsi menerima dan bereaksi untuk meng-upload uideo ke Youtube dan gambar ke Picasa langsung dari
menyampaikan notifikasi. Contoh broadcast seperti notifikasi zona telepon, dukungan Bluetooth AzDP, kemampuan terhubung secara
waktu berubah, baterai low, gambar telah selesai diambil oleh camera, otomatis ke headset Bluetooth, animasi layar, dan keyboard pada layar
atau pengubahan referensi bahasa yang digunakan. Aplikasi juga dapat yang dapat disesuaikan dengan sistem.
menginisiasi broadcast misalnya memberikan informasi pada aplikasi . Android versi r.6 (Donut)
lain bahwa ada data yang telah diunduh ke perangkat dan siap untuk Donut (versi r.6) dirilis pada September dengan menampilkan proses
digunakan. pencarian yang lebih baik dibanding sebelumnya, penggunaan baterai
indikator dan kontrol applet VPN. Fitur lainnya adalah galeri yang
Broadcast receiuer tidak memiliki user interface (UI), tetapi memiliki
memungkinkan pengguna untuk memilih foto yang akan dihapus;
sebuah actiuity untuk merespon informasi yang mereka terima, atau
kamera, camcorder dan galeri yang dintegrasikan, CDMA/EVDO,
mungkin menggunakan Notification Mana.ger untuk memberitahu 8o2.1x, VPN, Gestures, dan Text-to-speech engine, kemampuan diol
kepada pengguna, seperti lampu latar atau uibrating (getaran) kontak, teknologi text to change speech (tidak tersedia pada semua
perangkat, dan lain sebagainya.
ponsel, pengadaan resolusi WVGA.
o Androidversi z.ofz.t(Eclair)
d) Content Prouider
Pada 3 Desember 2oo9 kembali diluncurkan ponsel Android dengan
Content prouider membuat kumpulan aplikasi data secara spesifik
versi z.of z.r (Eclair), perubahan yang dilakukan adalah pengoptimalan
sehingga bisa digunakan oleh aplikasi lain. Data disimpan dalam Ttle
hardware, peningkatan Google Maps 3.r.2, perubahan UI dengan
sistem seperti database SQLite. Content prouider menyediakan cara
broutser baru dan dukungan HTML5, daftar kontak yang baru,
untuk mengakses data yang dibutuhkan oleh suatu actiuity, misalnya
dukungan;flosh untuk kamera 3,2 MP, digital Zoom, dan Bluetooth z.t.
ketika kita menggunakan aplikasi yang membutuhkan peta (Mop), atau
aplikasi yang membutuhkan untuk mengakses data kontak dan navigasi,
. Android versi z.z (Froyoz FrozenYoghurt)
Pada bulan mei zoro Android versi z.z Rev t diluncurkan. Android
maka di sinilah fungsi content prouider.
inilah yang sekarang sangat banyak beredar di pasaran, salah satunya
adalah dipakai di Samsung FX tab yang sudah ada di pasaran. Fitur yang
tersedia di Android versi ini sudah kompleks di antaranya adalah:
Versi Android . Kerangka aplikasi memungkinkan penggunaan dan penghapusan
komponen yang tersedia.
Telepon pertama yang memakai sistem operasi Android adalah HTC Dream, . DaluikVirtual Machine dioptimalkan untuk perangkat mobile.
yang dirilis pada 22 Oktober zoo8. Pada penghujung tahun 2o1o . Grafik: grafik di zD dan grafis 3D berdasarkan libraries OpenGL.
diperkirakan hampir semua uendor seluler di dunia menggunakan Android . SQLite: untuk penyimpanan data.
. Mendukung media: audio, uideo, dan berbagai format gambar
(MPEG4, H.264, MP3,AAC, AMR, JPG, PNG, GIF)
. GSM, Bluetooth, EDGE, 3G, dan WiFi (hardu.rare independent)
. Kamera, Global Positioning System (GPS), kompas, dan
accelerometer (tergantun g harduare).
Android versi 3.o ke atas adalah generasi platfurm yang digunakan untuk
tablet pc. Sementara versi 4.o sudah merupakan platfurm yang bisa dipakai
di smartphone dan tablet pc. Demikian beberapa versi android yang sudah
dirilis sampai dengan buku ini ditulis, kemungkinan besar versi tersebut
akan terus berkembang seiring dengan kebutuhan yang sangat kompleks di
bidang penggunaan smartphone. Untuk informasi detail versi platform atau
untuk mendapatkan informasi versi terbaru android Anda dapat melihat di
www. developer. android. com
Setelah kita membahas gambaran android pada bab sebelumnya, pada bab
ini kita akan membahas secara detail hal-hal yang kita perlukan dalam
rangka membuat aplikasi smartphone berbasis android. Sebelum kita
lanjutkan kebagian instalasi, semua paket instlasi yang kita perlukan untuk
pemrograman android yang dibahas di buku ini tersedia dalam cd yang
disertakan dengan buku ini.
Instalasi fava Instalasi Android SDK
Lakukan instalasijava, seperti yang dijelaskan di atas bahwa android adalah Selanjutnya yang perlu kita instalasi adalah Android SDK, seperti yang
aplikasi yang dikembangkan dengan berbasis java, sehingga sebelum kita sudah dijelaskan di bab sebelumnya bahwa SDK (So/truare Deuelopment
melakukan coding aplikasi berbasis android, komputer/pc kita harus sudah Kir) ini lah yang kita perlukan untuk sebagai alat bantu dan API dalam
terinstal program java. Paket untuk instalasi java tersedia di dalam cd atau mengembangkan aplikasi pada platfurm Android menggunakan bahasa
dapat langsung download secara gratis di website pemrograman Java. Selain source-tya dari CD yang tersedia bersama buku,
http://tuww.oracle.com/technenoork/jaua/jauase/downloads/index.html, Android SDK dapat kita diunduh secara gratis di uebsite resmi google di
http : //rvww. developer. android. com.
Kalau Anda menggunakan platform linux seperti ubuntu, java adalah
program yang sudah termasuk dalam repository dalam setiap versi dari Untuk mempermudah tahap instlasi Anda dapat copy isi direktori Android
ubuntu, tinggal kita hubungkan ubuntu kita ke repository lalu melakukan SDK dari CD ke komputer Anda, Untuk konfigurasi standard buatlah
instalasi java. direktori Android SDK di Program Ffles pada komputer/laptop Anda
sebagai tempat menampung file-file Android SDK, contoh Android SDK
I(ta memerlukan Sun Java SE versi r.5 atau r.6 atau versi diatasnya untuk berada di folder (C:\Program Files\Android SDK), kalau Anda
dapat mengompilasi aplikasi android yang akan kita buat. Untuk menggunakan linux seperti ubuntu sebaiknya letakkan Android SDK Anda
memastikan versi java yang sudah kita instalasi dapat dilakukan dengan berada di dalam home directory user Anda contoh
mengetik perintah (/home/useranda/AndroidSDK).
Linux: Letak posisi folder Android SDK perlu kita ingat, karena selanjutnya ketika
Dengan masuk ke terminalfconsole dan mengetikkan perintah seperti kita akan me-/ink-kan posisi Android SDK kita dengan IDE Eclipse sebagai
contoh berikut aplikasi coding yang kita pergunakan nantinya dalam membuat program
Android. Jika Anda menggunakan Android SDK yang tersedia di dalam CD
javac -vers-ion yang disertai dalam buku ini, itu berarti anda tidak perlu melakttkan update
Android SDKplof/orm-nya lagi, karena Android SDK yang tersedia di dalam
Windows: CD sudah di-update sampai dengan platfurm Android 2.3. tentunya, ketika
Jika Anda menggunakan operating sistem windows, cara untuk mengecek Anda membutuhkan versi terbaru dari platform Android yang akan datang
versi java kita adalah sama, cuma kalau di windows untuk mengetikkan Anda bisa lakukan update.
perintahnya kita harus masuk ke sistem command line (click Start- pilih
run- pada isian box run ketikkan cmd kemudian tekan enter/ok). Sebaliknya Anda menggunakan Android SDK yang di-dounload dari situs
http://www.developer.android.com. Kita diharuskan untuk meng-
rion 6.1.?6661 update platform Android SDK kita sampai dengan minimal Android 2.3,
ight (c) 2669 l'licrosoft Corporation. All rights r.eserued.
karena biasanya paket Android SDK instalasi default-nya tidak memiliki
: \ljsers\uxc , uilis )jaua -uers ion platform, sehingga kita perlu meng-update-nya, tentunya untuk melakukan
uersion "1.6.8-22"
Il'l) SE Xuntime Enuironnent (build 1.6.6-22-hE4) update kita harus terkoneksi melalui internet ke situs Android sebagai
Hot$pot(Il'l) CIient Ull (buiId 1?.1-b03, rnixed mode, sharing) penyedia platfurm-nya. Yang kita akan gunakan dalam pembuatan program
Gambar 2.1 Java -version windows Android di buku ini adalah kebanyakan untukAndroid 2.3,
Instalasi Eclipse Instalasi ADT/ Plugins Eclipse
Selanjutnya kita akan lakukan instalasi Eclipse sebagai IDE yang kita Selanjut kita akan melakukan instalasi ADT atau yang lebih dikenal dengan
gunakan dalam coding aplikasi Android nantinya. Eclipse adalah IDE untuk plugins Eclipse, plugins ini yang membuat eclipse dapat membtat project
pengembangan java/android yang free dan dapat di-dounload di yang berbasis android, ADT adalah plugins di eclipse yang harus kita rnstoll
http://lrrww.eclipse.org/downloads/, versi eclipse yang ada sekarang sehingga Android SDK yang sudah kita miliki di atas dapat dihubungkan
sudah banyak seperti Eclipse Helios (eclipse versi .3.6), Eclipse Galileo dengan IDE Echpse yang kita gunakan sebagai tempat coding aplikasi
(eclipse versi 3.5), dan Eclipse Ganymede (eclipse versi 3.4), kita dapat android nantinya.
melakukan instalasi salah satu versi, versi eclipse 3.4 sudah support dengan
Android Deuelopment Tools (ADT) untuk membuat eclipse dapat digunakan ADT adalah kepanjangan dari Android Deuelopment Tools yang menjadi
untuk coding project Android.
penghubung antara IDE Echpse dengan Android SDK. Setelah selesai
instlasi eclipse kita dapat melakukan instalasi Android Deuelopment Tools
(ADT) dengan menggunakan koneksi internet atau menggunakan file jar
Apabila Anda menggunakan Eclipse yang ada di dalam CD Anda tidak perlu
melakukan instalasi, cukup dengan mengopinya ke komputer/laptop Anda, untuk instalasi tanpa membutuhkan koneksi internet. Untuk koneksi
untuk keseragaman Anda copy-kan ke dalam folder (c:$rogram internet untuk melakukan instlasi ADT di eclipse-nya dengan cara sebagai
files\eclipse) apabila Anda menggunakan windows, sementara apabila berikut:
Anda menggunakan linux seperti ubuntu Anda dapat meng-copA eclipse ke . Buka Eclipse yang sudah kita instalasi pada bagian yang di atas.
dalam directory home user Anda seperti (/home/user/eclipse). . Click Menu Help - Softtuare Update, pilih pada pilihan Auailable
Software pilih Add Site dan isi location dengan https://dl-
Untuk menjalankan eclipse, Anda dapat dengan cara menge-click eclipse ssl. google. com/android/eclipse/
yang bertipe applicotion di dalam folder tempat kita melakukan instlasi
Eclipse. Sehingga akan muncul gambar tampilan eclipse seperti gambar di
bawah ini: *""* U"-4"
.{ cu.,-.:' gp6,16 5'..
i'l S rhe E(lipse p,ot€d updire'
tt n# src
Tujuan dari gambar di atas adalah kita akan melakukan instalasi ADT di
Eclipse dari situs resminya google. Setelah itrt, click OK dan setelah
muncul dalam daftar checklist dan click installs. Ketika akan
melakukan instlasi ADT, tunggu sampai proses instlasi selesai.
;, ii'l { Ganymede l.Jpdatesiti Not€: The tist of SUK Iargeti bel(w k onry relodd onre yeu hilAppty. sr ,OK,
r I { httpr. dl-rlgoogle.(oruandmrd'trlipra i. HerF Vesdor Pkform
l
r fr]ii DevelcperTcols r. Inltaluupdate l
And'oid Open 5ource P,olect 1.5 l
I.teqraied Aqeni {antroller
*r 'g Andrcid C0M5 801.v201012{6210j"81219
, l6va
l CooglP In< . 1.5 f
i AFd.oid Open Sou,<e P!oj-(r
i{ 49r Android Cerelcpmentlooli
1.6
8,01,v11101106110181119 Mip Proiect sete.taon i Googleln. 16
!i 4lri Andrcid Hierarhl lie*er 8,01 vl01$1Mt107-82219 :' Ptug-in De,elopsent
Prow,risning Admin
l Android 0pen sdur.. Projed 2.0 5
I
Googleln.. 2.O 5
Rsdhe Erimpre
Gambar 2.4. lnstall ADT Eclipse dengan internet, r, RunlDebug
i Android open Sour<e Projeci 2.O.1 6
r Ta<kr
i Goegle In<. ?.0.1 5
Android:.1-updetel AndrDid Open Sou.€c proJed 2.1,up... 7
Tenrpldte Editor Google In.. J.1-sp... 7
Undc Prderencer Android Open 5d0r.e ProlEd ).2 B
Go$gleln(.
Untuk instlasi ADT ini sebenarnya anda juga dapat melakukan instalasi U5aEe 0ata Collector 2.2
I
archiue jar lokal yang sudah klta download. File archiue jar-nya
tersedia di dalam CD, langkahnya sama dengan langkah koneksi dengan Gambar 2.6. Android SDK Location
internet tetapi pada pilihan terakhir pada Add sites kita pilih pilihan
Iocal kemudian brou-rse posisifle dotunload ADT.zipnya seperti gambar
berikut.
Membuat AVD
* Add rite
..--::;::-!
, LGd,,
Selanjutnya kita akan membuat Android Virtual Deuice (AVD) yang
I I :
h@non r,re:'E "*-*--**"i merupakan emulator untuk menjalankan program aplikasi android yang kita
I
i.-4rar";a.l i
buat, AVD ini nantinya yang kita jadikan sebagai tempat tesf dan
menjalankan aplikasi android yang kita buat, AVD berjalan di Virtual
Machine.
Gambar 2.5. lnstall ADT Eclipse dengan lokal.
Untuk membuat AVD dapat
dilakukan dari IDE Eclipse dengan
cara menge-click menu Windows -
Setelah melakukan instalasi ADT selanjutnya adalah menghubungkan
IDE Eclrpse dengan Android SDK kita dengan cara menge-click Android SDK and AVD
Managers, pilih virtual Device-
Windows-Preferences, pilih Android dan lakukan Browse SDK
New.
Android yang sudah kita miliki, setelah itu lakukan apply sehingga
akan menghasilkan seperti gambar berikut:
i sj.a..aye.., I I
qiE
, Instalasi Aplikasi Android
f, Andreid SO( and A{D MaNqs
I +APUo
+APuo 66o9leAFl!{Gsogleln.l
66oqleAFl!{Gsoqleln.) Z.A
z.a 5
5 i
i :,,n
i..,Anaroiazr Android2.ol 10.1 r i 'ill^:l
:n.1
APIZI
A.d.ordJlU
APUIU
. APUI.U
GoogleAPI!icooglPln(.,
Ard,. d i 1.rpJ.rel
6009l.APl<,booglel.(.J
6ooqr. APl. icooqle I.(.J
2.1'upda... ?
2.1-upda... 7,
?.I-Lpdd...
6
I-: *-
q
HELLO ANDROID
Sekarang kita akan membuat program pertama kita pada android, seperti
belajar bahasa pemrograman yang lainnya, biasanya program pertama yang
dibuat adalah program untuk menampilkan tulisan "hello word",lebih sering
dikenal dengan program hello uord.
Program HelloAndroidl
Jalankan IDE Eclipse, pilih File-New-Android Project, sehingga muncul
pilihan seperti berikut:
Select a Hizard
Wizards
type filter tst
I g$ .lava Project
| * ,J*a eroiect f rom Exrsting Ant Buildf ile
It* *! Pluq-in Proiect
I I t*l Generat
I ei Faceted Project
I f:i Project
I . i**r*q8,l
I *i android Prdert
Il"' d, Android Tst Prolect Gambar 3.2. Program HelloAndroidl
i )
i
LScvs
I i' L.i, Java
| : i:* Plug-in DtreloPmenl
Ketika Anda me-running aplikasi android, membutuhkan waktu untuk
proses loading emulator-nya, dianjurkan setelah Anda berhasil me-running
program tidak perlu menutup emulator-nya apabila ada program aplikasi
t?\
yang lain yang akan di-running, sehingga tidak membutuhkan waktu lagi
Gambar 3.1. Create New Proiect Android.
untuk booting emulator tetapi langsung mengesksekrsi project android
yang akan kita jalankan. Tampilkan project explorer untuk melihat semua
elemen-elemen yang ada pada program HelloAndroid seperti gambar di
project bawah ini.
kemudian isilah isian yang diperlukan dalam membuat slu'at:u
android sesuai dengan isian berikut: Id HelloAndroidl
: HelloAndroidr r ;$ srr
Project Name r S com,wilir.hello
Buitl Target : Android 2.3 , tB,tgt;+*ij
Application name : hello r, 6 hello
/ E* gen illlir.ril(tl Jr';a f rlcj
Package name : com.wilis.hello r $ com.wilis.hello
Activity : hello
e 1S
r ijl RJ',u
Min SDK
Android 2.3
:9 I $! androidjar- Fr\.irrrlriirl frisil,t.r.jrriC Li$(platirrmr\rntlreirl t
t. ____^_
. Pl ,"u
Untuk menjalankan programnya adalah click kanan di nama project di ; 6!, drmable'hdpi
jendela project explorer (menampilkan project explorer dengan menu r e} drawable-ldpi
I (3. drawable-mdpi
windows - show view - project explorer), kemudian pilih menu Run r (i' lByout
As-Android Aplications atau dengan cara singkat click tombol run yang l:( minxml
berbentuk segitiga ke kanan pilih Run As-Android Aplications sehingga r ilr valus
I strings,xml
muncul tampilan seperti berikut: ,,:il AndroidManilest.xml
El default.propertis
Program HelloAndroid?
Buatlah project baru dengan ketentuan berikut ini:
Project Name HelloAndroidz
Buitl Target Android 2.3 Program HelloAndroid3
Application name hello Berikut kita akan coba memodifikasi tampilan layar program HelloAndroid
Package name com.wilis.hello dengan warna tulisan dan warna background. Buatlah project baru dengan
Activity hello ketentuan berikut ini:
Min SDK 9
Project Name HelloAndroid3
Dari program sebelumnya dapat kita lihat bahwa coding aplikasi untuk Buitl Target Android 2.3
menampilkan hello-nya adalah melalui 7tle xml yaitu main.xml) string.xml Application name hello
(coding seperti inilah yang direkomendasikan),untuk lebih mendalami
Package name com.wilis.hello
sekarang kita akan coba membrat hello android dengan coding melaluif/e
Activity hello
java.
Min SDK 9
Pertama hapus beberapa dan file main.xml sehingga menjadi seperti
hello java
berikut:
. ?>cnl version='-1. 0" encoding="ut f-8" package com. wiLis. hello ;
?>
<LinearLayouf
irrport android. app.Activity;
android : ori entation= " vert i caL " irq>ort android. os. Bundle ;
android : layout-width= " f i 7 7 Jarent " public clase hello exteriilg Activity {
android : IayouE-heighL= " f i I f Jsa rent''
l"* Called when ihd actj-vity is iirst created. *l
< LinearLayout> G:)''crr i,ie
,/
publie woid onCreat.e(Bundl-e savedfnstancestate) {
EIrpGr. onCroate (savedlnstanqestate.l ; . ,,.
Kalau kita perhatikan dalam main.xml ini tidak memiliki TextView seperti setcortentview{R. layout : main} ; I
Dalam coding di atas berarti program dalam menampilkan isi fext langsung
Jalankan aplikasi dan lihat hasilnya seperti apa.
dari main.xml, tidak menampilkan berdasarkan string.xml karena dalam
main.xlm tidak ada statement yang memanggil string.xml (seperti contoh ke- Simpan 7tle it:u di
folder HelloAndroid/res/drawable-mdpi (proj e ct android
z kita yang telah dibahas sebelumnya), android: background kita biasanya berada dalam folder utorkspace di fold.er -usir), sehingga
="#ff}0ff00" dan android:color ="#tffftt}a" adalah untuk tampilan project uieu kita seperti ini. (ikafile belum tampil lakukan reyresn
memberikan warna background dan mernberikan warna text yang akan atau tekan Fs). cara memasukkan file-nya bisa juga Anda lakukan dengan
ditampilkan pada layar aplikasi android kita. Untuk pemilihan jenis-jenis click kananfle di windows explorer pilih copy, kemudian bukan project
warna pada layar dapat lihat di: uieu di eclipse, pilih drawable-mdpi, kemudian c/rck kanan aan pilin
http: //deueloper.anclroid.com/reference/antlroid/grnphics/Color.htntl. paste.
Beriknt ini adalah tampilan dari coding di atas:
HelloAndroid4
J G$ srr
r g$ com.witis.hetto,
;. pl hetlolava
E$ g.n l{rn*rrt*ti ,l;:.* lilr:l
t S Andrsi,d 2.3
[!. asets
G=l r."
* L*r drawahte-hdpi
1r, ill drawable-ldpi
r 1i$; draw.ahle-mdpi
ffi android.png
ffi icon.png
Gambar 3.4. Program Hel[oAndroid3 ;r ffl layout
i: B" vdlu.es
[li; AndroidManifest.xml
Program HelloAndroid4 Gambar 3.6 HelloAndroid view drawable
Min SDK 9 . l.*1 Callled,.vrhen the aetivity is fiist cre.aLed. ,*l ,..
tiOvc r r. -rlc
public void oncreat.e(Bundle savedlnstancestate) {
Sediakan 7tle gambar android.png seperti di supe.r. oncreate ( savedlnstancestaie ) ; .
samping ini. (file dalam format png) ImageView .fie1loWoid = iew Imageview(this);
liel 1 oWord . Se glmageRe$ource ( R. drawable . androj d) I
,, setcontehtvielr(Eelloword) ;
I
)
Gambar 3.5. android.png Image dipanggil dengan R.drawable.android (android adalah nama
file
tanpa ekstensi png dalam pemanggilannya)
main.xrnl: hello java
<?xrLl version= "L. 0" encoding= "utf.-8"?> packag€ com. wilis.he1lo I
<Lrnear Lavouf- irnport android. app. Activity;
xrnlns : andro td= " ht tp : t / schemas . andz o id . com/apk/ res /android"
android: orient.ation verticaf "
= "
anclroid : layout;width=" fj l,-paren t I
-1 public c1a66 he11o exienda .Activity {
android : layout*leight = " fj "I."lJ:aaent ^ > ,'* .al led when rhe activicy is firs[ created. *l
(.::,..),'i ]e
.pulrlie 1rol,il oncreaIeiBi]fldls savedlnstai.ceState) {
Euxrer. oncf eate { savedfnstancestate ) ;
Perhatikan coding java di mana kita menggunakan statetement setcontenfview ( R. l"ayoLrt . ma ju)
;
setcontentView (HelloWord) ; j
untuk menampilkan ke layar di mana )
Fi/e gambar yang ditampilkan umumnya harusJtle bertipe png dan ukuran
sizenya 64x 64 pixel, apabila Anda memiliki gambar yang tipenya jpg, Anda < I maqev i cw android : id= , G+ ict,r inageview,,
dapat conuert dengan tools conuerter image atau membuka file itu dengan android : layout_height=,. fi.j 7 J)arenL,,
mspaint dan menyimpannya dengan saue asformat sebagaipng. android : sr c= " d rawabl e,/ andr o ict.
@
/>
</-inear l,.ryo rr>
Program HelloAndroid5 Lakukan run program, sehingga menghasilkan hasil yang sama dengan
Proram HelloAndroid4 menggunakan coding java dalam menampilkan gambar 3.7 di atas, sekarang coba dengan menampilkan imageview dengan
gambarnya, pada program HelloAndroidS ini kita akan mencoba format wrap-content, artinya setiap coding ,tfill3arert- dig;ti
menampilkan gambar sebagai HelloAndroid dengan coding xml. Buatlah dengan ttwrar)-conEent" dan perhatikan apakah ada perbedaan hasil
projectbart dengan ketentuan berikut ini: tampilan programnya.
Project Name HelloAndroid5
Buitl Target Android 2.3
Application name hello
Package name com.wilis.hello
Activity hello
Min SDK 9
<provider>
<permission>
Mendeklarasikan komponen-komponen yang mengelola data dan
Menjelaskan batasan tentang user permissionf security permission.
nrempublikasikannya untuk dikelola/dipakai oleh aplikasi lain.
I
<instrumentation> <uses-sd.k . i: .;:ll android:minSdkVersion - ?>
Mendeklarasikan komponen instrumen yang tersedia untuk menguji
fungsionalitas dari paket aplikasi yang kita gunakan dalam aplikasi android Mendeklarasikan skd Android yang digunakan, bisa juga menentukan sdk
kita. minimum yang digunakan. Sampai buku ini ditulis, tersedia kemungkinan
nilai minSdkVersion sebagai berikut:
<application> . r mewakili Android 1.o SDK
Elemen rootyangberisi deklarasi aplikasi android kita. . 2 mewakili Android 1.1 SDK
-app I i car i nn android.: icon= " @dlawabTe/ icon" >
o J rrewakili Android r.5 SDK
o { mewakili Android 1.6 SDK
<intent filter> o g m€w&kili Android z.o SDK
Mendeklarasikan intent yang dibutuhkan oleh aplikasi android yang kita . 6 mewakili Android z.o SDK
gunakan, atribut-atribut bisa diberikan di sini untuk men-supply label, icon, o / rrew&kili Android z.o Update (z.o.r) SDK
data, daninformasi yang kita gunakan dalam aplikasi android. . 8 mewakili Android z.z SDK
r ! rl€w?kili Android 2.3 SDK
<action> o 1o mewakiliAndroid 2.3.3 SDK
Berisi tentang action tApe yarrg didukung oleh komponen-komponen yang . 11 mewakili Android 3.o
berada dalam aplikasi android. . 12 mewakili Android 3.r
<category>
. 13 mewakili Android 3.2
Mendeklarasikan kategori-kategori yang didukung oleh aplikasi android.
. t4 mewakili Android 4.o
<data>
Mendeklarasikan tipe MIME, URL, aufhority penggunaan URL serta Program Ulcodingl
penentuan p ath yangdigunakan dalam URL.
Pada program Uicodingr ini kita akan coba lihat penerapan dari istilah-
<meta-data> istilah yang telah dijelaskan di atas.
Mendeklarasikan meta data yang kita butuhkan sebagai tambahan data yang
ada kita gunakan dalam aplikasi android. Buatlah project android dengan ketentuan sebagai berikut:
Project Name : Ulcodingr
<receiver> Buitl Target : Android 2.3
Mendeklarasikan di mana aplikasi kita diberikan informasi mengenai Application name : uicodingr
sesuatu perubahaan atau aksi yang terjadi, seperti menerima SMS. Package name : corn.wilis.uicodingr
Activity : uicodingr
Min SDK :9
string.xml
<?xrI version=,,1 .0,, encoding=,,utf _g,,?>
<: €Ja!lt (:e1:>
<s trinq namei,,app_na]ne,,>ui iodingl< / s tr inq>
</r€r:O,;:,i,rS>
Android.Manifest.xml
<?yfi. : version=,,1. 0,, encoding
=,,utf_g,,?>
<n;:inif *st. xmlns : andro iCt*,,hfip: lsehemas.. qadiqid.
: . '-:*--:: ::Y.'l'.q'a/ /rer l android,,
"/ com l.qtrsk,/res
packaqre= "corz;rd-li,s. ojcodjnerj.,
android:versionName*r1.6,i>.r. . ,,, I
<eipplicafion android;icor:=,6dtawable/icon*. .
android;1abdl= iGstring,tapr>...Dame1>. , .,. i ,,. . .
.. ,
berikut: @ weuviro
@ AnalogCtmk
0 Aubcsmptei
W Suttoft
S fheckBox
S Ct'wkea;"xtt
S Chronometer
$ oatepi"ker
0 0iqitaltlock ri
$ fo*feir
@ eattrl, * i, n
ai layoui main.xmli
uicoding2 java
package com.wilis. uicoding2 ;
main.xml
<?. n,: version="i- 0" encoding="utf-B"?>
<tine&rla'r'out xmlng.i android=
" h t tp : / I s chemas . andro j d. c om / apk 1 r et 6 / andr ai d " Gambar 4.3 Program Ulcoding2
and.roid : orientat ion= " ver t i ca l- "
layout .width= "f j I fJarent"
""4r":d:
android : Iayou r-he ight = "fj 7 7 J)aren t "
Di dalam main.xml ada tiga komponen yang semuanya tipenya adalah import android. os. Bundle ;
TextView.
{" Call(,d when ihc ucr.ivit.y is riist creared. o,
string.xml SOrrerride
pulllic void oncreatre (Bundle saved.InsEanceSEALe) . {
<?xnL version= "1 - 0" encodingr="utf - 8"?> auper. oncreate (savedlnst.anceState) ;
<resuur -:es> setcontentview (R. layout.majn) ;
<s tr ing name= "app*name ">ui coding2< / s t r inqt ]
</re:;c.rrce.:> )
Apabila Aplikasi Uicodingz dijalankan akan memiliki hasil seperti gambar main.xml (Layout berubah menjadi
berikut:
RelativeLayout)
<?xm}. version=,,1 ; 0,, encoding= t,p51.-6"7,
<Ri:lelt ivel-ayoul. xmlns : android=
" http: ,t I schemas. aadro-r d, com/apk/res/android,,
unclro-id: Iayout -width=,,ti f f Jtarenc "
andr id : I ayoul i gh L= " f j -7--::a.z e?? t ">
a".-
o
,, a
_1 rr' -i
string.xml
andro r d : i d,= " G * i cl. F.L7 1 "
.:? rrri.i
and ro i d : layout-wid Lh= 'wrap-conLenL "
version=',L. 0,, encoding=,,utf-g,,?>
androi d: l.ayout-height= "t rap-contenc "
<..' in.j Lame=,dpp_name,,>uicoding3</,,.L l,q>
android: text= " El ement One"
<' , ,.r r 1.'ir:r'
androi d : id= "La t icl t EL02 " Apabila Aplikasi Uicoding3 dijalankan akan memiliki hasil seperti gambar
andro i cl : IayouL h= " wrap- canten t: "
anclroid: 1 ayorrL--widt
height= "wrap-cantent " berikut:
anciroid: LexL= "E-lement Two"
androi d: layout-be Law= "@id,rELT I "
<T,l: ".'.('r
andro j d : I ayout-wi<1t.h= "h/rdp-con ten r "
android : .Iayout-heighL= " r,irap-co n t en t "
android : text= "E-iement Thtee "
android: layout-toRightof - "t?ic|/Fl .O)"
</V -,,1 i.,111,f,,/(, i>
)
.'\lrlbila Aplikasi Uicoding4 dijalankan akan memiliki hasil seperti gambar
main.xml (menggunakan Absolutelayout) lrt,r'ikut:
<?;r,l version="1.0" encoding="utf-8"?>
<; JsolureLdyi:,l xmlns:android=
" hf ry) :,1,/ chemas . andx'oi d, c$n / apk / ves / andr aid'
x*:i ;
g
: ril:i:n*l; :;l:*ru: ; =
<.^xL'/iew
<Textview .. ..
android: layout-wi dth= "k/rap-conrent "
android : Iayouc_height = " wrap_con Een c "
anrlroi text= i'E-tement ?uo "
d r
android rlayout*x= "3 Opx"
string.xml uicoding5java
<?xrnl version= "f , 0" encoding: "uft-8 "?>
packagre com -roil
. is . uicoding5 ;
< resoul, ces> imgort android. app, Activityi
' . <striilO: 4ame= "apArierne">uicodi4g4iIstr ing> ingrort android. os. Bundle;
<,/ rc scu rces >
public c16EE uicodingS extendg Activity {
l** Called when the activiL',2 is f irst created- *l
,,.r':,,rfile
public wo:Ld onCreate(Bundle savedlnstancestate) {
3lrper. oncreate I savedlnstancestate ) ;
seLconLentvieln.( R. layEut . main I i
]
android;l,ayout*width*':fi7tJ)aienE..' r.l', .
<Tcxr \/i ew
android:,..teXts "[lserxame' 1' ',','r' . i. iri: I ' '
r '' '
.r'i
<ECitTexl
andrdid.; id* "6+ id I u5erna$ie ".'
aldroid: layouL_wldtb* lfili]:s4ve]1c " .,.' .
android:layout-widLh.?"twra.- ao tent'!:'
andgo i d.r.l. ayou L-hei gh.t = "'rrap* con t e.n t''
Program UlcodingT
<Fd i r-Te: f
B:uatlah p r oj ect android dengan ketentuan berikut:
android r layouL-widtln= " fil 7J>arent "
androi ayout-height= 'rdrap-co ntent
d:I " Project Name UIcodingT
andioid: inputtype" =.<bexf Passwoidq. ': Buitl Target Android 2.3
Application name uicodingT
Package name com.wilis.uicodingT
i3}llilrru-,,;'G+'/r.o nbuttoa", . , ',,
Activity uicodingT
.
a[6seigl'; ] 6yi5uL-rnri dthi' l';.wr:ab= con tar t ", .''
android. r lalrouL-hbighi; ;wrap*iorteaL ' Min SDK 9
androidrl Lextiti'L,gint "" ii '
string.xml ]
setcortentview (R. layout. majnl ;
main.xml
<?:nrl version= "-1 .0" encoding="ut t -8"?>
<Cl:-tl,.Box xmLns:android="http://schemas.andtoid.com/apk/res/android,,
andro id : !d=', G+ id/ chec k',
android : Iayout_widt h=', wr ap_conL ent,,
andro j d : layou t _hel. ght = " wr ap*conEen t,,
Gambar 4.8. Program UlcodingT android:text= "checkbox : uncheckecl,, />
string.xml
Program UlcodingS <?xml version="1.0" encoding=,'uLf B',?>
<.Pl:^l lv ( _a->
< s L r:.i ng name= "app_name " >uicodingS< / I r .r .i n g >
Buatlah project android dengan ketentuan berikut: </::csour.ces;>
Project Name : Ulcoding8
Apabila Aplikasi UicodingS dijalankan akan menghasilkan seperti gambar
berikut:
BAGIAN 5
ACTIVITY
Konsep Activity
Actiuity merupakan public c/oss dalam aplikasi Android. Setiap actiuity
merupakan sesuatu yang unik ata:u single, yang ditujukan untuk meng-
handle macam-macm hal yang bisa dilakukan oleh user. Umumnya, actiuitg
berhubungan dengan dengan user di mana ocfruifu menciptakan windows
atau LII yang mana ditampilkan dengan concepts setContentView(View) .
Ada z methodyangpasti dimiliki oleh satu actiuity yaitl:
a) oncreate untuk menginisiasi suatu actiuity, biasanya dipanggil dengan
perintah setContentView(int) untuk resource yang kita defenisikan di
layout UI, dan perintah findViewByld(int) untuk memanggil uidget
yang dibutuhkan UI untuk berinteraksi dengan aplikasi.
b) onPause untuk menyatakan ketika user meninggalkan suatu ochufry.
Siklus Actiuity
Actiuity aplikasi android dikelola dengan sistem yang dikenal dengan
actiuity sfock. Ketika suatu actiuity start, actiufry diletakkan pada stack
yang paling atas dan actiuity-actiuity yang sudah jalan berada dibawahnya
dan akan terus berada pada posisi atas stack sampai muncul actiuity yang
baru.
,:.i:.:,llrlillilllliii.itli':,,
::,ii.:.ii.i.rii.:, , l, ,,i.'1,'fl'r' ..: til.lrriiiiirri:r,i,i i ilitrrli
.:.,riiiil.:i.ulr;lrrl,ll,::Strltrtrittrr],r.r..:..1,,rr:1:rtt.:fiiiiil]liiulrir:iiitiili
lilllilliililllllltllllil,,.:,.
. .:'
;.
\.
: --::: 1
apabila click button akan dikirim ke actiuitg itu sendiri dengan perintah )
setonClicklistener (this) . Seterusnya memanggil fungsi updatetime0. Dublic void'pnClick{View.viewl .1 r' " '. '
updatetimq O ;. i i. .
Fungsi onClick O akan membuat setiap kita c/ick akan melakukan update
timeyang ditampilkan ke layar. Kemudian ketika kita melakukan onCreate0 prlvate rroid qpdaterirne{) {1,
bLn.seEText (new Date ( ) . toString( ));
atau mengclick (onClick0), akan meng-update time yang diambil dari fungsi j
Date0.toString0. )
main.xml
Aplikasi iam2 <?yrrl version= "-2. 0 " encoding=,'utf -8,.?>
<Br:tLou xmlns:android="http;llsci:emas,android,cornlapk/res/android"
Aplikasi jamr di atas merupakan aplikasi coding di mana tidak memerlukan android : i d=', 13 i c] /bu t: t on,'
+
t.ra.td.'a**a= u
"
atau membutuhkan main.xml sebagai lagout-nya, sekarang kita akan coba
i
lihat perbedaannya dengan aplikasi jamz di mana kita membutuhkan android : layouL*Lreiqh!1,,fi J J-.parel:6 *
dalam program android, berikut ini adalah file dari aplikasi jamz kita. <appli.c6tion>.. r:. .', ....
Buatlah proTecf android dengan ketentuan seperti berikut: <;. Livj ty android:name=" . jam2,' androj d: IabeI=', jam2",
Project Name ,lamz ."i r-Lorrr f iltor>
<action .android:name="android, in[eni.action.,uAiN* /]
Buitl Target Android 2.3 <caleqoray android : name:.'! andro id. iht enr . caLegory . LA{,NC}IER,, /,
Application name jamz .'inrenr.'1-ilrer>
< r acL ivi Ly,
Package name com.wilisjamz
:iapplicarjcr,>
Activity jamz , tndrlif es[:>
Min SDK 9
Dari coding di atas bisa kita lihat, bahwa android:id="@+id/button" adalah
id ualue yang kita kirim ke jamzjava. dimana id/button adalah merupakan
identifi.er untuk button widget. setcontentView(R. layout .main)
akan membuat Rjava akan di-updcte ketika project aplikasi di-running
dengan referensi layoutfile main.xml yang berada pada res/layout/.
BAGIAN 6
iiw,iilittleri
."t:.,:,..'
os.il}:.aes+,qarrtqt$*,:a1:,i
".,:.t. ANDROID WIDGET
Konsep Widget
Android uidget sudah kita implementasikan sedikit pada bagian actiuity,
pada bagian Android utidget ini akan kita jelaskan lebih detail mengenai
komponen-komponen yang terdapat dalam Android tuidget. paket widget
pada dasarnya merupakan visualisasi dari elemen user intergace (UI) yang
digunakan pada layar aplikasi Android dimana kita dapat merancang sendiri
sesuai kebutuhan kita.
Widget di dalam android ditampilkan dengan konsep Vieut.Di mana aplikasi Chronometer HorizontalScrollView
android pada umumnya menggunakan uidget sebagai Layout XML. Untuk CompoundButton ImageButton
mengimplementasikan widget, selain file java kita juga membutuhkan ImageSwitcher SeekBar
tambahan duafile. Berikut ini adalahTtle-file yang umumnya kita butuhkan lmageVrew S mpleAdapter
apabila kita membu al uidg et: Lrnearlayout S mpleCursorAdapter
r File Java Llnearlayout. LayoutParams S mpleCursorTreeAdapter
Berupa file java di mana merupakan file yang mengimplementasikan ListView SimpleExpandableListAdapter
aksi dari widget. Jika anda mendefinisikan suatu widget beserta LrstVrew..t rxedViewlntb SlidingDrawer
posisinya di layar yang didefinisikan dari fle XML, kita harus MediaController Spinner
melakukan coding difilelava dimana kita dapat mengambil semua nilai
MultiAutoCompleteTextView TabHost
atribut dari tata letakTi/e XML yang didefinisikan.
MultiAutoCompleteTextView.Comm TaFHost.TtESpec
. File XML aTokenizer
Sebuah file XML yang berada di res/values/ yang mendefinisikan
OverScroller TableLayout
komponen elemen-elemen XML yang digunakan untuk inisialisasi
PopupWindow TableLayout. LayoutParams
uidget serta atribut yang mendukungnya (file yang kita kenal dengan
ProgressBar TableRow
main.xml pada bab bagian-bagian sebelumnya).
. LayoutXML [optionaU QuickContactBadge
RadioButton
TableRow. LayoutParams
File ini tidak harus ada, file XML berada di dalam res/layout/ yang TabWidget
RadioGroup. LayoutParams TextSwitcher
menggambarkan atau penambahan keterangan pada layout uidget
RatingBar TextView
Anda. Sebenarnya ini kita dapat dilakukan di file java kita (/t/e ini
dikenal dengan string.xml pada bab bagian-bagian sebelumnya, dimana Relativelayout TextView.SavedState
fungsi string.xml itu bisa dihandle olehf/e javanya). RelativeLayout. LayoutParams TimePicker
RemoteViews Toast
abet 5.1. Jenis-jenis (Classes) anclrorcl wrclgets ResourceCursorAdapter ToggleButton
AbsListView CursorAdapter ResourceCursorTreeAdapter TwoLineListltem
AbslistView. LayoutParams CursorTreeAdapter Scroller VideoView
AbsoluteLayout DatePicker ScrollView ViewAnimator
AbsSeekBar DialerFilter
AbsSpinner DigitalClock
EditText
AdapterView<T extends Adapter
AdapterViewAdapterContexMenulnfo
>
ExpandableListView
Itlidget TextView
Alphabetlndexer ExpandableListView. ExpandableL Menampilkan text kepada layar dan memiliki optional bisa dilakukan edit,
istContextMenulnfo tetapi secara defoult Textview tidak dapat diedit, untuk dapat melakukan
AnaloeClock Filter edit harus menggunakan subc/oss yang berfungsi untuk menampilkan isi
ArrayAdapter<T> Filter.FilterResults Textview. Buatlah pro.Tect android dengan ketentuan seperti berikut:
AutoCompleteTextView Framel"ayout Project Name TextView
BaseAdapter Framelayout. LayoutParams Buitl Target Android 2.3
BaseExpandablelistAdapter Gallery Application name textview
Button Gallery.LayoutParams Package name com.wilis.textyiew
CheckBox GridView Activity tex[view
CheckedTextView HeaderViewl,istAdapter Min SDK 9
Aplikasi TextView di atas sebenarnya bisa anda lakukan tanpa
main.xml rnembutuhkan import android. widget yaitu dengan cara
0" encoding= "utf ' 9"?>
<?xprL version= "1. menampilkan text langsu ng di-coding xml nya seperti berikut:
<TdlxiYiew xmlns:android= "httP; ,r /schemas.andvoid.coil/apk/reslancbaid"
android: td= " G+ id/ Lu-I isan "
.android : layput*width= "fi-i J*parent "
andro id : layouL-he i ght = " wrap-co n te nL "
main.xml (ubah main.xml menjadi seperti
/> berikut).
<? . . vcrsion= " l 0" encodi ng=',utt 8"?>
textviewjava <T'e:{LViei,,J xrnlns:android*"http://schernas.andro:d.comy'apk/reslandroid,,
android : Iayout_widch= " f i I f_pat enL,'
Dacka.ge com.wilis. textwiewi android : layout*height= "wrqp*con Lent,.
android:Lext.= ,,Ini adalah Eulisan dengan widget Textview,,
:lmport andioid. app - Activi t)t; />
iattrrort android. os . Bundle ;
;*;;; ""J..'J. *raq;f . r""tvj.e,;
pirblic 'ckigF texEview extelrds Act.ivity {
texMewjava
. l**.aailed. when the acLiwitv is fi,vst created. *l
ld(l'Jcrt'fJ,
pulrlic wold onCreace(Bqndle savedlnstancestate) .{ . iilport android. app. Activity;
super. oncreate ( savedf nst.ancestat e); import android. os. Bundle ;
setcontentview (R. layout . mainl ;
pubLic c:.asa lextview extends Activ!.ty t
Textvieu/ t= (TextView) findViewevfd (R. id. tulisan) ; :'** Called when the aclivity is first created. *l .',
]
Diperlukan libraries android.widget.TextView karena kita mendefenisikan ]
komponen yang berupa widget TextView, apabila Anda banyak
menggunakan komponer widget Anda tidak perlu melakukan import
semuanya cukup dengan Perintah:
Widget EditText
inport android.widgeE. * ;
Edittext adalah kostumisasi TextView di mana menjadi TextView yang
dengan perintah itu akan membuat otomatis semua komponen dari uidget dapat mengonfigurasi dirinya sendiri sehingga dapat diedit. Buatlah project
yang tersedia bisa dilakukan pemanggilan. android dengan ketentuan seperti berikut:
Project Name EditText
Perhatikan cara pemanggilan id komponen yang sudah didefenisikan di Buitl Target Android 2.3
dalam main.xml dengan menggunakan f indViewf d (R - id. tulisan) Application name edittext
di mana ini bisa diproses karena sudah dideklarasikan dengan Package name com.wilis.edittext
setcontentView ( R . Layout . main) . Activity edittext
Min SDK 9
Apabila Anda jalankan akan menghasilkan
seperti gambar berikut: main.xml
<?xnl vers-Lon= "-i. 0" encoding= "utf -8 "?>
<LdiLfext xmfns:android="nttp,//sc,hemas.android.com/apk/res/android,,
androi fi 1 ifl= " @* i fi / tampi 7,,
Gambar 6.1. Aplikasi TextView android: l ayout_widt|r= " I il lJsarent "
layqut hei qht,E] fi ]]l2arelrt
,,',' qn4ro i,4 : ]l l't'rhatikan cara pemanggilan id komponen yang sudah didefinisikan di
android : singleLine= " €al se'
rlalam main.xml dengan menggunakan findViewfd(R. id. tampil) di
nrana ini bisa diproses karena sudah dideklarasikan dengan
Komponent berupa EditText yang dikenal dengan variabel tampil dan r ;etContent.View (R. LayouL . main) ;
memiliki sifat boleh lebih dari beberapa baris (singleline=false).
Aplikasi EditText dengan coding xml tanpa import android. widget . * ;
edittextjava
I)acksgts com.wilis. edittext ;
main.xlm
.:?rml version= "1. 0" encoding= "utf-8 "?>
iryrort android. app.AcEivity ;
iryrort android. os. Bund1e,. <l.,iLTexi xm-Ins:android="httpj //schemas.android.com/apk/res/andtoid"
android : id,= " 13+ id / t anpi 7 "
android: layout-widt h= " f i I JJ:arenL '
android : Iayout-hei ght= " f i 1 f J)a rent "
$rJrlic claa8 edittext 6xt6rxd.s Act.ivity { android.: singleLine= " faJ-se"
/** Called when Lhe acLivity is firsL creaEed. *,i
android:text="rni adalah tampitan EdiETexE di android 2.3 Anda
tg(JVerlt ce t,isa melakukan tanpa anda imporE l-ibraries android.widget. Bdit'rext
public void onCreate(Bundle savedlnstancestate) ( yaitu meJalui coding rcnJ, Tampilan EditText nenjadi beberada baris
auper . oncreate ( savedlnstanceState ) ,.
kd rlna andro id : s ing le f i ne=f al se "
setcontentview (R. f ayout . main) ;
EditText. f= (Edit.Text) findviewByld(R. id. tampif) ;
f.setText("Ini adafah t.ampilan EdiEText di Android 2.3 " +
" Anda bisa memanggil fungsi EditText setelah anda" + Sehingga coding edittextjava hanya seperti berikut ini
" import libraries android.widget.EditText, Tampilan
" EditTexL menjadi beberada baris karena '
" android: s j-nglel ine=f al-se " ) ;
+ edittextjava
Dackage .cQm.wilic.. sdiLtext; .:
import android. app. Activity;
lflulort .android, os. Bundl,e.; .
Apabila Anda jalankan akan menghasilkan seperti gambar berikut: pubtrlc class ,edittext.. exterrdF, Activity..{ .
main.xml
<?xr1 version= "7. 0" encoding= "ut f . 8"?>
<P.rLdioC:r rr
xmfns: android= "httg:: 1 l schemas. aadroi d, cc>ml apklres /android"
android. : orientat i on= " vet t ica J
android : layour-width= " f i I LJ)arent "
android, laiout-treight= "f i lTjar ent "
naa i o Bu
<
ffi ,T,ffi ,:h:Hj,{,ff3;, ", t
.,,
android: layout*height= 'Mrap-corten
android:text="Radio Button 2,' />
,,
Widget I mageView/l mage B utton
<!.adioHut.an android: id= " @+id/radio3,' ImageView adalah utidget yang menampilkan gambar seperti icon.
androi d : 1 ayout*width= " wrap_co.n ten L " Imageview dapat memuat gambar dari berbagai sumber (resour.ce ata:u
il3::x*' 13*::;;13";; ;rfii:';:""' " content prouiders), sementara ImageButton adalah uidget yang
< /RailioGroup> menampilkan tombol yang berisi gambar (bukan teks) yang bisa ditekan
atau di klik oleh pengguna. Secara defoult, sebuah ImageButton hampir
radio java sama dengan button biasa. Buatlah project android dengan ketentuan seperti
berikut:
package com.wilis. radio,.
Project Name : Imager
luports andro.id. app. A,ct.ivity : Buitl Target : Android 2.3
imlrort android. os. Bundle ;
Application name : image
public cLasE radio extends Activity { Package name : com.wilis.image
/ { * Cal 'l ecl when the act ivi ry is irsl credt ed.
f " , Activity : image
ldr)1/L,r t-:.le
Min SDK :9
public void onCreaEe(Bundle savedfnstanceStaEe) {
sw)er. oncreate ( savedlnstancestate) ;
setconl.entview {S; }ayout . main) ;
main.xml
:-ragtrVr,'l xmlns:android=,,hEtp://schemas.android.com/apk/res/android'
androi d: id= " G+id/ 1ogo,'
and ro i d : l ayout_width = ,'wrap_cont.ent ,,
Pada deklarasi main.xml kita temukan dalam satu RadioGroup terdapat tiga android : l ayouL_hei ght = " wrap_content. ''
buah RadioButton. Apabila dijalankan akan menghasilkan tampilan seperti andro id.: adj ustviewBounds=, t rue,'
berikut:
Lnport android.rrridg€t- ImageButEon;
rmage.Java i.,.',.
-
;
@0vei::lder I
seEcontentview(dua);
DuFIiq votdl oncre'atse(Bundle savedlristancesqqle) {
'sL{rgr.oncreat-e{qayedrnstancegtate.}r,i'. .i:i. "
i
setcontentview(R. Iayout .main) ;
>anl.ns : android= " hatp : I / schemas . android; qom/ apk / re.s / andf Qid'l main.xlm
. . and.roid: id= " E+idlloga.z'l
and.ro id: 1ayout-width= "wrap-content " <?ff- version= "1.0" encoding="uLf -8"?>
android : layout. helght*! wrap-conEent "
-,.1, . i.,r
....,. . i ..android: adjuptViewBorrnd$.= " true'. i r,-d r:,.tyou l.
<.i..
xmlns : android= " ht tp : / / s c hema s . and r o i d. c om / apk / re s / andro i d "
android: oriencation= "verticaT "
inr6rort android. app. Activi ty; android : iC,= " @, id / i con "
Lqrfrnrt android. os . Bundle; android : layouL-width= "wra1r;co,rltdo,ir"
android : layout-heiqht = " Iilrap*con Len L "
android: src -'@drawable17ogo "
/>
Bekeria dengan Kumpulan Widgets
<,.rn-qcB,i- f on l(umpulan Widgets yang memiliki struktur tersendiri-sendiri biasanya
xmlns : android= "fi1 Lp; I / android, comlapk/res /android"
schemas . tlisebut dengan controiners. Jika kita bekerja dalam sebuah tampilan
android: i-cr= " G+ id.I icon2 " tlimana terdapat beberapa uidget kita harus menentukan layout yang
anrlroid : J ayout -w id th= "wrdp-can cen r "
android : I ayour-hei ghl= "wr ap-conren t " tligunakan. Seperti kebanyakan GUI yang memiliki layout management
android : src= " @dr awabl e t I oqo2 " trntuk menampilkan containers, seperti layout Boxlayout di Java/Swing,
/> Android juga memiliki beberapa layout management yaitu sebagai berikut:
</L.ne;t ",a,'r;ut > . Linear
Penggunaannya mirip dengan model box dari Java/Swing, yaitu
rmage.Java menampilkan uidgets ata:u containers dalam posisi baris atau colom,
satu per satu. Konfigurasi Linearlayout mempunyai 5 contents yait:u:
package com.wil is. image;
Orientation, Fill Model, Weight, Grauitg, dan Padding .
import android. app. Activity;.' 1. Orientation
lilulort android.os.Bundle; Orientation mengindikasikan loyout ditampilkan berdasarkan baris
public class image extends Activity { atau kolom, sintaksnya adalah:
,1,* Called when Lhe. act-ivitv i.s f irst ct eated,. '1
, '::-i lr android. orienLaLion= "vaf ue "
pub1ic void onCreate(Bundle savedlnstatlcestate) { Valuenya horizontaf berdasarkan baris atau vertikal berdasarkan
gulrgr . oncreate t'savedlnstancestaee) ;
kolom.
setcontsentview {R. layout. maja},
2. Filt Model
l
)
Fill Model adalah bentuk tampilan elementf ruidgets terhadap spoce
yang tersedia. Terdiri dari tiga pilihan, yaitu
Akan menghasilkan seperti gambar berikut: . Spesific dimension, seperti 125px untuk mengisi uidgets
tampilan di rz5pixel.
r wrap_content, widgets akan mengisi posisi dengan konsep
natural space.
. fill*parent, widgets akan mengisi posisi yang tersedia.
3. Weight
Weight mengatur settingan android.layout_width (untuk baris) dan
android.layout_height (untuk kolom).
4. Grauity
Grauitg Secara defoult pada tampilan dengan Linearlayout adalah
"Left and top aligned". Jika kita menginginkan tampilan yang
berbeda kita bisa mengatur gravity sesuai kebutuhan. Nilai-nilai
Gambar 6.6. Aplikasi Widgets /mage dengan XlvlL gravity adalah feft,center-horizontaf, right for left-
aligned, centered, dan right-aligned.
5. Padding
Padding memiliki empat nilai standard yaitu paddinsleft,
ii .. . -, 4{ld.r:old: text= "verl j ca1 " />,
paddingnight , paddingTop, dan paddingBottom. Berikut </Rad i.oCroup>
gambar yang menjelas posisi padding dari sebuat widgets. <RadioGiorip aldio-id: id= ti?*idlgravity, ,. '.
. diidroid:ofienLalion-"ver.t:lca.I n . ;t' .. :
' :. r ....androii,el.:r1'4y.outieishE:',r,idhp_:co4LelrL r i,
.aadroi'dlpadding=n5bx.|.|..>..:....
<RarljoRrrttcn
.'., . ... ."andrA,idit idE.re +jd/]efl "
android: text= " teft,, />
. <R&di0Butto!,t..,..' i'
android : id=,, + id /cent er',
@
xmlns : androi d= "ht tp : /,/ s cl)emas . andro i d . com / apk / res / a ndro i d "
..r' ..iigravity.set0ncheckedchangelistenerittriEi),
androi d; orientat ion = "ver tica 7 " l.
android: layout-width= " f i7J*parenL "
public vold oncheqkedChangediiRgdioGroup group, irir cheikedld)
androi d : layout-height =' fi f JJarent "
i....ewltcb..(,ih6ckegrd}]i-:'..i.li...:.l:.........l1
case R.id.center:
gravi Ly .se
,'^*---...^
tGrawi ty ( Grav irtya.
CEN?E'R- HoR I z )NTAL \ ;
di HTML,
<Br.it1-an i :,.. . . penerapannya seperti aplikasi di bawah ini. Buatlah project android
. androiE':i.d*r'@+idlek,,:.. ....'. dengan ketentuan seperti berikut:
. analio i illi. 1ayout-lwidth-.t nrrap-co.R t6n t "
.. aadrord., layou!-hei ghr*,,lwra11*conLent " Project Name Tabula
. . android.; l.gyqu!:be1ow= Gid/ enert, tl Buitl Target Android 2.3
naro.i{: 1a}rout-alignRight*,.,Eid / entry " Application name tabula
android: texL='OK" />
Package name com.wilis.tabula
<Bilt ron Activity tabula
.android: id* "6+id./cance-1 '
android : layout*widlh=, wrap*content " Min SDK 9
android : 1 ayou t-lre i UhL =,' hrra?r-co n t e n t tt
android, layout tot e fLOt=.@iA/ok"
andrd j 11: layout*alig$Top=.,,djdlok ' main.xml
, . android:text='canie.l, l> <?xnl version= "-1. 0,, encoding="utf-g,,?>
i <TableLayout.
</Relal-iwellayouL> '
xmlns : andro id=,,-h L tp :,/ 1 s c h ema s . andr o i d. c om/ A:pk,/ r eb I andr a i d ll
android r layout. wldth= "fi-Z j parer:t,
relative java andioid I layout*heiqhE.= ,,f1If_p6y6r,g
android I stretchcolumnsi,,l,>
,,
{,i <.,iierr
/tr* Called when Ehe activi.ty is first created. tl
?(tvt'. r -ae androi d: laycut_he ight= " 2px,,
..trlublic void onCreate(Bundle savedlnstancestate) ' anclroid:baqkground"=,, #0A.00,Fy,, / >
{
'super. oocreat€ t sawed1ns.tancestaie ) ; < I'ah I ePt;>
setcontentvie*(R.:'layoul , majn) ir -
<Eu.!Co:t.androidrid=,'Qtid/ca:nceJi . .'l . .,, ,, ,i,:
) android : layouL_column=',2,,
i android: ter.t=,iCancel , />
<3**. tDn android: id=',G+id/ok,,
android: texl= ,,0ff. />
<1..:rableRqwi
<l$ablel,e:rb11tz <TabJ cL,ryoui:
i t,.....
android : layou!_widqh*,,fj-11__parent,:
aridroi d ;. 1 a.yout*he i gh t E,i f i -l J3aren E,',
tabulajava <1'ab.l. eRc r,r>
<Vi ew
..android: lalrout height. t 80pxu'
inport android. Activity; app. android: l:ac!ground=..f,# 0AA00A ! />
iraooqg,r:lg- ,oid.,os.; B.und:tr ?'i '. ,,,:,,,,''. ' . rrl.. .i:ilrr,.'i rr::- <TaxLVie, android:text=',Aaris ke 1,,
i' . ,andqqid;piiddiog]Jefti "Apk". . - '
i*l ti,
/',
itatq, talura, itigc6, a*tl!iry,,', i,,,t.,,,,,.,,1,,,,1,,,,' andioid.:.1".a).qUt*gravi,ty3 .,cqn teu:v.ert jcal,r
Called when t.he acLivity is first created.
i.c
t-)t/et: r l cle < /'lalrl *Row>
publtc woid onCreaEe (Bundle aavedlnstancestate)
oncreate ( savedlnE tancestate ),'
Eu.D€r. <Tabl oFnv;>
'.,'...., setContentVi ew ( R: layouL . ma jn ),; . <'/icd
] android r:layout ,.heiEht = " 81rsx"
android:backgrorind!,1 #A4.:A000,t l> .. .,
<l'a b LeRorr>
<'.'iew
andro id : layouE_he iqhL=,' B \px',
. android:backgfound= "#8944A0" ./; . :.
. ..<T€xLVi.ew android.:tex!*,,Earis ke*3,
. android:paddingleit=,4px,,
android: layout_gravit)aE ,,certer_verf, j ca j ,,
<Ta bl..eRow>
Scrollwork <'-lte,
android : layout*hei. ght -,1 I opx,
Scrollwork adalah membuat layout yang bisa dilakukan scroll baik .
android: backgr:ound*,,#aa?g44:, / >
scrol/ naik maupun scroll turun. Buatlah project android dengan <TextVier,v android:text*.,rBarl,s ke*4". .,..
ketentuan seperti berikut: android i paddinglef t= r,dpx,,
' android.; layoutgrarrity= ,,cexte3:lvert jcal ,,
Project Name Scroll
Buitl Target Android 2.3 <,/'i u.Lleliux>
<fal, Ir"Porr>
Application name scroll <r./iet
Package name com.wilis.scroll ,. android : layout_heighl= .,g,px ,,
9
andro.id : layout.-.gravi ty=,,6'6fl ,5'sr::1/errCieef':,
/>
main.xml < /Tab] ePow>
<?><rn] versiono ".1. 0' encoding- "utf-B "?> < fablePow>
<ScrollVi ew
<'J I O'd
xml ns : andro i d= "h c tp : / / s chema s . andro i d, c om / ap k / re s / andr o id"
androi.d : layout_heiqht=,, Opx,,
android : layout-width= " f i f fJ>arent' B
androidrbdikgroundi "#f ff f aa, . /i, :..
android : layout-hei ghL= " wrap-con t ent ,.i,..
">
<Textvi"ew androidr texti,_Aaiis'ke:d,
android : paddingl,ef t- " 4Px " Akan menghasilkan tampilan seperti berikut:
android : layouL*gravi ty= "center- ve r t i c al "
scrolljava lisMewjava
package cornrwiLis. llstview;
package com.wilis. scro11 ;
rltltc
ial
vti.Ld onlistltemcl.ick { ListView parent, .View. v. int. posiL-ion, J.ong Gambar 6.14. Aplikasi ListView
t
....,,
selection. setText ( it-erns [po.eition] ] ;
1
Spinner /Combolist
main.xml Widget ini hampir mirip dengan ListView, hanya perbedaannya ListView-
nya berasalah dari satu combo atau yang dikenal dengan spinner, kalau
<?xrnl veision.:'.1 .0.1'. enqoding- :.\ttf -.8t'.?> ,
<L j nearlayor.lt Anda yang terbiasa di programan visual basic mengenal namanya combolist,
.,, .:'' .
lrerikut kita lihat penerapan spinner. Buatlah project android dengan
.
android: layout-widLin= " f il7-S;ayent " Hasil tampilan pertama kali dijalankan adalah sebagai berikut:
android : layour _heighl- = " wrap_(ont en c "
android : drawselectoronTop= " t-rue "
l>
<./1,i,nea:Layou L-.>
sprnner.Java
InputType
Inputtype adalah untuk mengontrol inputan terhadap uidgets sehingga
inputan sesuai dengan struktur yang diharapkan. Pada android terdiri dari
beberapa closses inputan yaitu:
o Text (deloult inputan)
. Number
. Phone
r Datetirne
c Date
. Time
<licli tTexr
Berikut akan kita terapkan inputType dalam contoh aplikasi android di
bawah ini. Buatlah project android dengan ketentuan seperti berikut: 1ndroid:.inF'.,*.i*.iiiiiiiiifi+t'!+,n*/u**'txuLoCr:rrecL,j:
Project Name InputType android:gravity= l'toPr':' , '
inpuffilejava
package com. wiIis. inputtype;
inDort android. app. Act.ivity;
import android. os. Bundle;
Dublic',class inputt)rpe, extends Adtivity.,{ . ' ....:.
l** Called.when the aceivity is.first created. *l
,;nvert:i.de
public void oncreate(Bundle saved.Instancestate) {
Euper. oncreate ( savedlnstancestaEe) ;
.- .setiontentView(R,,iiryott.rlajE) ,i'.i.i'' '..'.. :t : . I
)
)
TypeFace
TypeFace yang dalam android ditulis dengan typeFace adalah untuk
mendefenisikan jenis huruf yang Anda mau tampilkan, tentunya jenis huruf
di android tidak sebanyak jenis huruf seperti di operating sistem seperti
windows/linux. Berikut typeFace yang tersedia di android
1. !,peFace="sans"
2. typeFace="serif'
3. tytrleFace="monospace"
4. typeFace custom (untuk font yang kita include sourcelfi/e tff-nya)
t v - setT)4)eface ( face) ;
' : .. tv.set?lpeface{face); .
)
tentu coding tersebut membutuhkanlibraries yang diwakili dengan perintah
Penjelasan costum huruf, didefenisikan tulisan yang akan kita berikan import android . graphics . Typeface ;
fontFace custom adalah berikut ini:
'l'ampilan program typeFace tersebut adalah sebagai berikut:
<Textview
.,, android-: iext.,:,,,Custom -,,
. ... iindroid r layout-marg'inRight* tr $pv1;
,ai1droid: textss,lze! "?0sp,' , i
. : /,f r-'.,. !
' <fextviein . , .,,1 ..' ., ..' . .,
.i
t
jl
it Gambar 6.19. Aplikasi typeFace.
Di mana isi dari variabel custom akan dijadikan huruf mistral, pastikan il
ii
huruf mistral sudah ada di folder assetffonts seperti view project di bawah tl
ini. l Messages Box
il
il
il Messages boxyang di kenal di android terbagi dua jenis yaitu:
il . Ioosts
it Adalah messagefpesan yang muncul dalam waktu sebentar dan
kemudian hilang tanpa mempunyai user interoction dengan pengguna,
biasa ini merupakan fokus dari actiuitA yang acfive.
o Alert Button alerL;
Sutton t.oast t
Adalah Dialog box atau messoge yang mempunyai user interaction
dengan user, biasa terdiri dari 3 bagian yaitu ,ii" Ca:L:1.e:d. when lhe act.ivity is f irst c::e.rteC. */
,/ setMessageO berisi tnlisan pesanf messaEe GOverride
p"fiio-r"ia oncreate(Bundle icicle) {
'/ setTitle0 / setlcon0, konfigurasi titlelicon dari dialog box sup€r. oncreate (icicle) I
./ setPositiveButton0,setNeutralButton0,setNegativeButton0, berisi setconLentview(R. fayout .main) ;
posisi serta metode click-nya. alert= ( Button) f indViewByld (R. id, a-1ert) ;
alert . seLOnClicklisrener this ) ; 1
Berikut adalah penerapannya, buatlah project android dengan ketentuan t.oast= (Button) findViewByld(R. id. Loast) i
toast . setOnCl ickI,ist.ener ( this ) ;
seperti berikut: )
Project Name Messagebox
public void onClick(View vjew) {
Buitl Target Android 2.3 if (view==alert) {
Application name messagebox :rew Al erLDialog. eui der (this)
1
. androi
d I a)rou t_wi dth=,,wraa ion t en t.
.1" f
,
android:,1a]aout_width* ,'wrap*cantent u ,.
. . android r layouL_height= "wraLcerterr, "
andrOid: text= "8-lue " /> ToasE.makefext(formstuff .this,''Beep Bop,,
'l'oasL. T,ENGTH-SHORT) . show( ) ;
</1 , ,,,.r l, iil> ]
"';:33::*il?l;iiEliil:flll"l.",,,checke.l,,.
final" RadioRut.lon radlo_red = (RadioButton) lodst. LEAIG'IH_SHORT) . show( ) ;
f indviewByld (R. id. radjo*red) ; 'i else {
final RadiotsuLton radio_btue = (RadioButton) toast .makeText(formstuff.this, "Nor clteckeo',
f indviewByld (R. id. radio-bfue) ; '. ,asL. LLWGfH-SriORT) . show ( ) ;
radio*red. setOnClickListener ( radio-1istener ) ; I
radio--bf ue . setoncl- ickl,is Lener ( radio-1i s tener) ; ]
1),
f,inal Button button . (Button) fi"ndViewByld(R.id.button)
button. seLOnClicklistener (new oncl-ickl,istener ( ) { final RatingBar rating5sl = (RatinqBar)
public woid onCfick(View v) { i ndviewByld (R. id. rac ingba t ) ;
P' r I ( ..-r. :'-Cl ;1.:, 'i " ': i ,.
. ra!ingbar.setonRatingBarchangelistener(aeit
onRatingBarchangelisienef { ) f'r'.
x}ublic vald onRatingchanged (RaEingBar ralingBar,
rating, bo61eail frotiUser) {
. ,,' Toast-maJce"e*i(formstirff.this, "New Rating:
raLing. Toast ,.f,glrG"ri-.9fl08f) . sliow { ) ;
)
. rJ :'
.. privite 0rlclicktislener. radio*listener = nemr OnClickl,istener ( ) {
Dublie vold onClick(View'v) (
ll Ferform actrio& lrn. e1ick.,
' Rddiogutton rb' i .(RadioBuuEon)
rb.getText ( ) ,
lvlORE VIEW
Jalankan aplikasi, dan setiap Anda melaukan ocrion terhadap uidget akan
dimunculkan pesan dalam bentuk widget.toast yang berisi achon adalah
seperti contoh gambar berikut pesan toost ketika checlisk click.
Pada bagian more uieu ini kita akan menjelaskan tentang layout user
interfoce yang belum dijelaskan pada bagian user interfoce dan bagian
Gambar 6.22. Program stuff.
widget. Layout tersebut adalah sebagai berikut:
. TimePicker view
. DatePicker yiew
. Spinner view
. Galleryview
. ImageSwitcher view
a GridViewview import android. app.Activity;
import android. os. Bundle ;
a Context Menu
c Options Menu public class timepicker extends Activiry
a AnalogClock ir,lvqrl:: ds:
a DigitalClock protected void onCreate (Bundl e savedlnsLanceStaEe)
t
super. oncreate ( savedlnstancestaLe ) ;
seLContenlview (R. layout - da L et i nep i cker) ;
]
TimePicker View
Picker Vieu adalah tampilan layout tanggal dan waktu. Fungsi Picker Vieu I(emudian ubahlah .{ndroidManifest.xml seperti berikut:
dibagi menjadi dua bagian yaitu TimePicker dan DatePicker view.
TimePicker ini memperbolehkan user urrtuk seleksi waktu dalam sehari AndroidManifest.xml
yaitu z4 jam (pm/am), berikut adalah penerapan TirnePicker.
,'',.rbion-"1-r"' cncocling="u'.t.-8"?>
.r:if:...rii xrn.l.ns:androieT=,,http://schemas-andraid.con,apk,:.c_.;.andrcid,,
Buatlah pro-7ecf baru dengan ketentuan berikut: pa,'ko.,1..= "cun.-r-i7 i.s. r io"epickor ;,
Proiect name TimePicker an lroid: rersior'foc1o- " j '
arJroi.r: vcr si.onNare=,' L .,' >
Target Android 2.3 < I d..droid:icon="fi,/,dk,,tjl(,i,un',
Application name timepicker .l...io: labcl=",.r_. r i:,q apL, Ljrrnp,.>
Package com.wilis.timepicker <) rr.Jrrio: Cam^: ., . r it.,,l-,i 1ke , .
datepicker.xrnl
*ro1 ya.p.;iurr- /.ti' CilCodinq-";;1 ' P'?>
LinearLayouL litrat fi.le java dengan nama viewsActivityjava yang akan meng-lrundre
xmlns : android= ".hilp: / /schemas. anrj::oid. com .?pkl:('s .trrlJrni.l " tr<:tiuity-nya.
aL.<l-o:cl;c,r . en: at lon= "','r - ie-: J
hour = hourOfDay;
minute = minut.eOfHour;
Toast . makeTexC ( getBasecontext ( ),
"You have selecred : ,' + hour + + minute,
Toast. . LENG"I{*SH0fiT) . show ( } ;
C/ick tombol tambah atau kurang dan perhatikan bahwa nilai jam atau Ilunning ulang project sehingga akan menghasilkan seperti gambar berikut:
menit otomatis akan berubah. TimePicker sebenarnya bisa ditampilkan
dalam bentuk dialog box, seperti penerapan coding di bawah ini, ubah
timepickerjava kita menjadi seperti berikut:
timepickerjava
package com.wi-Lis. timepicker ;
lJnDort android. app. AcEivity;
irnport android. app. Diatog;
import android. app. TimePickerDialog ;
import android. os. Bundle ;
imgrort android . widget . TlmePicker ;
i-nport android.widget. Toast ;
gubLic class timepicker €rltelrds Activity
{
:.int.hour,minutqi........:'..i..li.ii..il.i]
.r... static f,tna1 inU ffW DIALAG-.JD.i Q;:r1r" :'.'.'
0o';e.r iCe
I,roteeted void onqre4t.e {Eundle Eevedlnstanqestate ) Gambar 7.2 Aplikasi TimePicker Dialog
t
Eulrer . oncreate t savedf nS tanaqstate-)',
setcontentview (R., layou t . da te rimepi eker ) ;
showDialog(rIW-DIALOq*fD)i, I'imePicker muncul dalam bentuk message dialog yang tampil di tengah
] layar, lakukan perubahan setelah itu click button set.
QOvrrrioe
xlrotGqted Dialog oncreateplalogliat' itd)
android.: 1a11out*heiqht= ,,fi -1Jjareln t ,,
(' " i
': -'..
andr:o i. <i : l ayou t df h=,' r/rap-co,
t er? t,,
-wl i gh
ar:droid ; layout_he t =,, i4 z ap_ colt f en t, 1>
datepickerjava
package com.wilis . dat.epicker,
kita lakukan.
l-tari coding tersebut baik coding timepicker maupun datepicker kita tidak
nrenggunakan defenisi layout dari main.xml, sebenarnya Anda bisa
DatePicker View ,relakukan penghapusan main.xml karena kita tidak ada memanggil atau
rnembutuhkannya dalam project ini.
DatePicker uietu adalah laYout yang memperbolehkan user untuk
melakukan seleksi tanggal (tanggal, bulan, tahun). Buatlah project dengan ,lalankan aplikasi dan akan menghasilkan
ketentuan sebagai berikut: gambar seperti berikut:
Proiect name DatePicker
Target Android 2.3
Application name datepicker
Package com.wilis.datepicker Spinner View
Activity datepicker
Spinner Vieu adalah menampilkan /rsf dari
item pada saat tertentu dan membolehkan Gambar 7.4. Aplikasi DatePicker.
Lakukan penambahan datetimepicker.xml pada folder resf layout dan lsl
uset' untuk memilihnya. Buatlah project
dengan coding seperti berikut: rlengan ketentuan sebagai berikut:
Project name Spinner View
datetimepicker.xml Target Android 2.3
<?:**1 vergion= "f , 0" encoding= "utf -8 "?> Application name spinner
<Li:fe;1r Li}yarut Package com.wilis.spinner
xml"ns : android* "hC tp : / / s chemas . andr a i d. c om I aI:.k / r es / andra i d "
androicl' or ientot io n= " ve rt i c:a J " Activity spinner
androj-c1: layout*widt:n= " f iII3arent "
s1 . setAdapter I adapEer) ;
s1 . setonltemselectedlistener (new OnftemseLedtedListener ()
{
gublic.. void onI temselec ged AdapterVi ( ew< ?> argo,
t
int index = s1 . get,selectedltemposit,ionii( ) ;.
Toast . makeText getBasecontext ( ) ,
(
,,you have selected item : ', + clublindex],
Toast. lEiIGrH_SHORT) . show ( ) ;
]
public vold onNoih.inEselected(Adapterview<?> arqo) {}
AndroidManifest.xml
.?..' version="1 .0" encoding=',utf B"?>
-. .r ' i,t. xmlns:android="htLp:/.schemas. android.com/apk/restandroid,,
package= ,,com,wif is ^ spjnner,,
android :versi oncode='ll'
android : vers ionNam e=,, l. 0,, >
<..,!.1'. I , ar.io,r android: icon= "@drawahte/icon,,
,rndroid: lai:el. ,'tgstrin.g/app*name ,,>
<dL'i .J,v i " ', android:name=,,. sp jnner,,
. android: labe1= ,@sVring laptrt*iniime ,,>
<::t1.,:i:l lilt^f>
<eeti*n android:name=,,Anidroid. rntenC. actian. MAIN,' />
Lretegiory
.''rdroid:name= "andt Oid. intent. cacegar.y -LALINCHER', / >
</:ty,y,t l'at-..,r>
<..i5(.s- ;..k android;nrinSdkVersi on=,' 9,, />
'.,/ ^ ,n i L(.atr.>
I(emudian buat satu file java dengan nama viewsActivityjavd dan isikan
coding seperti berikut:
ViewsActivityjava
lrackage com,wilis. spinner;
import. an{5o!d.app,Aqtivi:(y;,',,.t.,,,,,...'
importandroid.content,Int.9nL;.........
import android.os.Bundle; ,.,'
1lub1ie.c1as5ViewsACtivityexLends4cLivity'.].ill.
I
gtarLActiviiytnew lntent (this, spinner.class) ) ; ArrayAdapter String adapt.er = new ArrayAdapt.er String
] thiE,
' andro id .R. I ayou t .s inipl'd.sp i nner*dropdown*i t em,
presidents
Running aplikasi sehingga akan menghasilkan Sambar seperti berikut:
running l;lang projecf dan lihat perbedaan hasilnya. Sebenarnya cod.ing ini
akan menghasilkan tampilan yang berbentuk lain.
Gallery View
Gallery Vieu adalah layout yang menampilkan item-item dalam bentuk
image. Untuk mempermudah memahaminya buatlah project dengan
ketentuan sebagai berikut:
Project name GalleryView
Target Android 2.3
Application name gallery
Package com.wilis.gallery
Activity gallery
displayview.xml
<?xnr version=',1. 0,, encoding=,,utf-8,'?>
Click list yang muncul dan pilih Mencherster City, sehinga akan selected dan <l.,ineal:taY(}ul .,
memunculkan pesan dalam bentuk Toast apayang kita pilih seperti berikut: xmlns : andro Lda "ktr.p: / lscfidinas;.endraid. con,/a:pk/reb /android',
android : orientaUior1= "1/6rtical.
android : layout_width=,, f i I _l_-paren t,,
android : 1 ayouL_height=,, fi I l;:arer0,, .
<Tex'-Vi ew
. android.:l"ayout.-widbh*'rfi"I]-*parenil
android: layout.:h.eiglxt= :"rra:p*cor len t ,
andinid': tc:rt.x "fp66gss Kata Bandung, . I 2
<CaI:ery
andioid:id=u.€*id,r'git11artri.,!. ., ..
r l*p "*s
*: LI} d'ra,'uva.ble
l&* bandunsaiPs
ixdi handurlg;ips
&-l band'r,rn93jPg,
iKj bandung4ip'g
i&j h'an*ungsipng
;= bandun96jPg
i*.;l bandurrg7.JPg
Gambar 7.7. drawable Aptikasi Gallery
galleryjava
$ackage com.wilis. gallery;
import android. app. ActivitY;
import android. content. Context;
Lmport android. content. res' TypedArray ;
i&)ort android. os.Bundlei
inEnrt android. view.View;
S.mport android. view,Viewcroup;
inrport android. widget . Adaptervier4l;
inrDor! android . widget . BaseAdapter ;
inDort android.widget . GallerY;
inDort android. vridget. hageview,
irnport android.widget . ToasE;
imsrort androi d . widge t . Adaptervi ew . OnI temc 1 i ckl,i s Eener ;
{
.'.......isu!,ef.onCreaie{sdvedtn5!ancestate)]i
setcontenEvier,r (R. layout . disptayt jse71 ;
nrageView. setfmageResource ( imagelDs
ViewsActivityjava i
Iposition] );
i4>ort, android. app. ActiviEy ; llunning ulang project dan perhatikan apabila Anda milih salah satu photo
J.rport android. content . Intent;
i$port a4droid. os. Bundle; rlalam gallery akan menampilkan photo tersebut daram image uieu yang
..
berada di tampilan bawah, seperti gambar berikut:
pubttc cl,ass ViewsActivity .extends ectivity
/*" Called when lhe activir.y is firsL creaLed. *l
!;l0V(') r1.1,
public void, onCreate (Bundl-e savedfnstancestate)
t
super. oncreate ( savedinsLaniestate ) ,'
setcontentview(R. Iayout .mainl ;
ImageSwitcher View
ImageSwitcher sampai sama dengan ImageView, hanya perbedaan cara
menampilkan perubahan atau pergantian gambar yang ditampilkan pada
layar. Berikut penerapannya.
displayview.xml
<?xml version=,,1. 0,, encoding-"uef*8,?>
Gambar 7.8. Aplikasi Gallery , :tt.l. r..l.ctyouL
xmlns : andro id. "http: / lscJrernas . androjd. cony' ipk/ res,/Andraid,'
android:orien.tationq,,!'€rtica-l" I .
gambar yang di pilih. Perbaiki method onltemClick menjadi seperti berikut: android:,background= , #ff0A0000 "
(
pr:Jr1ic vol.d onlt,emCl ick (Aqapterview parent,
''''ro...........
</Rel.at j.ve1,a)aou.> ', I rrr
View v, int position, tongf id)
t
.i
--^^c,.,1 iwitcher.
ts^h^- -^ts T-
seLlmaqeResource ( imagelDs [pbsition]
imageswitcherjava )
)
returr, position;
imageswitcher = (fmageswitcher) findviewByfd(R. id. swiLchert\ )
imageSwi t.cher, setFactory ( this ) ;
ViewsActivityjava
package com. wil-is. iiriagegr,ritcher ;
i ilearT,Av$ll]'
ImageSwitcher dijalankan.
.
Iterikut akan kita coba membuat Opfibns Menu dan Contex Menu, buatlah
1
troj ect dengan ketentuan berikut:
Gambar 7.1 2. Aplikasi AnalogDigital Project name : Menulayout
Target : Android 2.3
Application name : menulayout mnu2. setAlphabeticshortcut (' b, ),
rrru2.setlcon(R.drawab1e.icon) ;,
Package : com.wilis.menulayout )
Activity : menulayout MenuIt.em mnu3 = menu.add(0, 2, 2, "Item 3',);
{
mnu3 . setAlphabeticshortscut (Ic!) ;
Buatlah-7t/e xml di resf layout dengan namafile menu.xml. mnu3 . setlcon (R . drawable . next ) ,.
]
Menuf tem mnu4 = menu. add (0, 3 , 3 , ,,f tem 4,,)
menu.xml {
;
return true; . i.
{ case 5:
@Overrlde ToasE.makeTexr{this, ,,you cficked on IEem 6'
public void onCreate (Bundle savedlnslancestate) Toast. LENGTH_LONG) . show ( ) ;
t return true,'
super. onCreate ( savedlnstancegtate ) ; n=ea 6.
ToasC.makeText(this, .',you clicked on f tem 7,,,
setcontentview ( R. Iayout. menu) ; Toast . LENGTH*LONG) . show ( ) ;
BuLton 5;n = (But.ton) findViewByld(R.id.btnl) ;
return true;
btn . s etoncreateconbextMenuli stener ( tlri q ) ; t
privat@ void CreateMenu(Mern1
return false;
merlu) I
{ Lduverrade
menu. setQwertyMode 1 Lrue ) ; public boolean oncreateOptionsMenu (Menu menu) {
Menultern mnul = menu;add(0, 0, 0, "It6m 1",) t
super. oncreateopt ionsMenu (menu) ;
t C-reateMenu (menu )
.' mnul . setAiphabeticshortcut ( 'a' ) ; return true;
;
ViewsActivityjava
package com.wilis.menulayout ;
AndroidManifest.xml
<?\n i. version= "1.0" encodinq="utt-8"?>
<m.;.riLr.i;', xml-ns:android="htip:t/schemas.and.roid.com/apk,/res/android"
package= "com.wi 1 is.menulayout"
unaroiA : versionCode= " J "
android : vers.i onNam e= " 1. 0 " >
..;;; ;;;;.j.; ;;;;;id, icon= "@drawa bte/ icon"
android : Iabel= " GsLr ing / app-nane " >
<.icL ;v i cy android:name= " .menuIaYout"
android: labe1= " @strinEIapp*name ">
<:rIltl-t. i:. l.e'>
<J.t r c,' android:name= " anclroid. inLent. acti on. I"IAIN" / >
<ca teg'\ ry and.roid : name= "andr o i d. i n t en t . ca t egorY. LALINCHER' />
. /int ini- ritr*r,
.r_;{i::lx:::' g" />
<usi:s*sdk android:minSdkversion- "
</r,1nr-Li:Lrf->
Running pr,o.7ecf sehinggal menghasilkan gambar seperti berikut: Gambar 7.16. Aplikasi LayoutMenu action i.
BAGIAN 8
DROID DRAW
Gambar 7.17. Aplikasi LayoutMenu action ii.
Pengantar DroidDraw
DroidDraw adalah fools desain aplikasi android yang bersifatfree dan dapat
di-dounload di http://www.droiddraw.org. Dengan fools ini, kita dapat
dengan mudah mendesain tampilan android.
a& U[ tuljd Hp
riurri 1**11:*1m\ \hq5 r.oron am's s{mn
i&rlry.ui;,49***.1.:,
k s S!e: 4trhd* t
Ian" l- r--t
& d. & torzr i f f fJ'r"rs.,L)"u,'ou,no. V).4
Pada bagian ini kita akan membuat aplikasi conuerter nilai mata uang dollar
menjadi nilai mata uang rupiah, di mana kita akan mendesain dua buah drag dan drop Linearlayout ke atas tengah layar
inputan dan satu buah button untuk proses conuerter. Langkah-langkahnya sehingga menghasilkan gambar seperti berikut:
adalah sebagai berikut:
Buka DroidDraw dan jadikan root layout adalah Relatiue Layout seperti Double click Linearlayout dan jadikan nilai
gambar berikut ini. propertisnya menjadi width "zoopx" dan height
"13opx", setelah itu c/ick apply.
I .;,,','
.widget26"
' r lroid: ict= "G+id
r ndroid : layout_\didth= ", 0Opx "
.r rdr.;i d : 1 ayout-heighL= " 2 1 gpx "
..rr Lns : andro,d= " ht f p ; / / schemd s. andr o id. com, apk t res t andt o i t! "
,r:dro icl: ori-enLaLi on= "vert i ca L "
, r reli:oi d : .layouL erVer t i ca I = " t t ue "
,
-ccrrt
rclroid : layout-centerliori zonl:al :' Lrue "
@+id/rupiah dan textnya kosong serta uidth-nya "loopx". Edit RadioButton r,d roid : layout_wi d t-h= " 10apx "
r
pertama menjadi id @+id/dtor dan text-nya "Dollar to Rupiah". Dan ,ndroid: layouc_height= " wrap-content "
RadioButton kedua menjadi id @+id/rtod dan text-nya "Rupiah to Dollar". : t€xt size= " 3. isp "
lndrord
Dan edit Button menjadi "6r+id/convert" dan text-\ya Conversi. Sehingga ' / 1 r.l l')'ell >
menghasilkan gambar seperti berikut: . i \:r\/1@'d
rd roi d : i d= " * id /widget3 2 "
rr @
conver.Java I
paelt*ge ..com.wi 1is-; eonverter t ,lalankan project dan masukkan nilai di isian dollars dan clrck conversi
itrDort android. app. ActiviEy; sehingga akan menghasilkan seperti gambar berikut:
irrport android. os. Bundle,'
BAGIAN 9
ANDROID WEBKIT
Gambar 7.8 Aplikasi ConYerter.
Konsep Webkit
Arrdroid Webkit adalah salah satu toolkits GUI di mana kita diperbolehkan
rrrenggunakan format HTML untuk menampilkannya di brot-user yang lebih
licnal dengan istilah embedding. Web browser dapat dijadikan sebagai
widgets di dalam sebuah actiuity untuk menampilkan format H'IML. Web
ltrowser di android dikenal dengan istilah Webkit, sama dengan istilah
Safari Web browser di produk Apple's.
Class di Android Webkit sangat banyak seperti WebView, WebStroge, l:rowser. f oadData (" <htm1><body>Tulisan pertama yanq ditampilkan
<f i web brouscr. .brcl1 '-.hLJnL>", "LexL/lrLrnI", "UTF 8");
WebSetting, WebChromeClient, URLUtil, WebViewClient, WebViewDatabase, )
dll. Class yang paling banyak dipakai adalah WebView.
Min SDK 9
main.xml
<?irl version="J. 0" encoding="utf '8"?>
<I ; n.il a t.,1yr rr
Alrabila kita jalankan akan terlihat tampilan blog yang kita sebutkan di-
utding java menjadi seperti berikut:
'IAR'H
AnstP Etoc
. ^i t it Jtll
l'ada saat Anda jalankan aplikasi tersebut bisa jadi aplikasi Anda akan tidak
rrrenampilkan isi ueb yang kita sebut dalam coding java, seperti berikut:
Ada dua kemungkinan yang menyebabkan tidak tampil yaitu Anda tidak <linl:*nl*f ilter> . ., ' :t. .:.: . .,
</acr ivit.v>
terkoneksi dengan internet dan dalam Android.Manifest.xml tidak ada
permission untuk mengakses internet. Permission tersebut adalah sebagai </appiicat'ion>..,.
<r-rsg.i-.gdk iudroidixinSdkVdrsion= n9, />
berikut:
, ): . .. i tt. i- i :: i. : and.roid : name= "androjd. permjssi on. INTERNET " , .,rriI*sl,> i
Pada Aplikasi webkit3 ini kita akan melihat penggunaan webkitS java
IoadDataWithBaseUrl yang kita terapkan untuk menampilkan jam sistem ke package com.wi1i5,webkit3; :
lmgort java.util.Date;
Package name com.wilis.webkit3
Activity webkit3 pubJ.ic slass uebklt3 extends Activity 1 "
GOverride
pulrlic woid. onCreate(Bundle jcicle)
main.xml super. oncreate ( icicf e) ;
(
i,:,. ...
android. : versionName= " 3. . A' >
<a1rp, i,'.1t ion android: icon= "@drawablet icon"
android : label = " t3 st r ing / app-name "> )
<acliwiLy android:name= ", wei:kj tJ "
androi d : labe1 = " G s L t .i ng /a pp-name''>
<:Lll e:.t.-filte:'>
<acti** and.roid: name= "andrr:id- inle:l]t . action ' MAIN" />
<l:dl egcly
android:name= "android. intenc . cateqary. LAUNCHER" / >
Mon lan 10 1 6:08:0q-G1,,[rq7:402Q]_1
Konsep ArrayAdapter
ArrayAdapter adalah ListAdapter yang mengelola dari objeck arraA,
ArrayAdapter adalah salah satu closs yang terdapat pada
a ndroid.widgets.Adapter.
< /?ab1eR*w>
Aplikasi arrayl
<RLrLt on android: id,= "G+id/save"
Pada aplikasi ini kita akan membtat layoutftampilan serta pembuatan android : layou.t_width= r fi lfjarene,'
class-c/oss inputan yang nantinya kita masukkan dalam arraA diaplikasi
. android text. dsarze ,i
array2. Pada aplikasi arrayr ini akan kita buat inputan untuk Address :
/>
Manager, inputan yang kita gunakan adalah Nama, Jenis Kelamin, dan </-i.:ic,dyoLr>
Alamat. Buatlah pro-7ect baru seperti ketentuan berikut: . /;.|ine:a: i dyc.Lrr >
android: text= " PIi a " Edi.tTex.E. alamat:{EditTdxt) f indv.iewaVld (R- id. aLamatl;
/>
.andioi d:,i d* " @ t i d/ g+rernpuatl f :
. <RaCi oBu t t on . ,.: ..
' :.r'. .. ....,rr,., r.tid:etl{qla(nama...getTextO.toStrinS.O ) ;
. android :. 1 ayor.it-width* " hrrap-cor:te4 f "
......:....'.]i.anr1roid:t,extF.llFer€J,!puan,,.:
r RadioGr.orrp jekel= (Radiocroup) f indviewBlrlO(n.'iO. je.tre:l
/>
</RadieGr!:up> ewi.tch 1jekel .getCheckedRadiosuttonJdr, , { ,]'",'
,.......'
<t'ffrLview android: text= "efamat : " 1> .
.',.. ,.
. <EdiLfexi android:id="@+id/a7amat" /> caEe R. id.perempuan;
-f
/> I .,.
</Tab I eLJyo,iL>
<L.ist t,I.i e, android: id="@+idtalmag" publlc void setJekel{S,lrinq jekel) { , , ,
i
/> raturri(getNamao ), ....
Itu artinya inputan yang sudah diinput nantinya akan ditampilkan di atas lnport android.app.Activity; 'ii
tampilan inputan (layout_above), jika Anda menginginkan tampilan hasil lmport android.os..Bundfe; .,,,...
l :
,,t' r,.. ,,
pulrlti String getJekel ( ) { private View.OnCl ickl.istener onsave=new View.OnClicklistener ( )
returr(jekel);
publlc vo-l"d onCl-ick(View v) { , rrrr I roid. R.Layout. simple_list_item_t adalah
) rindview,vld (R id' nama\ ;
',ttrk layout yang menampilkan baris yang
:iiii:i:":L:l6:jl;""' l.ilir inputkan. Aplikasi affay2 untuk inputan
alamat= (EditText) f indVi.ewById(R. id. aLamaL) ;
;rr,r'tamz setelah mengisi data dan menge-
r.setNama(nama. geLText ( ). tostring ( ) ) ;
,'li& tombol save akan seperti gambar
r. setAlamat (alamat.geEText ( i . tostrinq{) ); lrt'r'ikut ini.
RadioGroup jekel= (Radiocroup) tindviewByld(R. id. jckeJ );
switch t;ltT'T'"fi'.dRadioBuLtonrd ( ) ) {
liff
T. setJekel ( ''pria'1 ;
break;
case R. id.perempuan.:
r. setJekel { "perempuan" );
break;
Gambar 9.2. Aplikasi Array2
]
addpter.add(r);
:.:';
t ::
lt.
''i.
**rr
wffi
It'onr untuk tampilan tab yang berisi inputan data almag (alamat manager)
Iconz untuk tampilan tab yang berisi /isr-listyang sudah diinput <rablALayout iirrdro j.d : id:' 6*id,zdeLa j ls I
android : layor.rt-widtih= " f i I J. Jsar ent "
Icon3 untuk tampilan Iist data yang berjenis kelamin perempuan android,: r}'ayout*hei ght= "wrap:con tbn t "
Icon4 untuk tampilan hst data yang berjenis keiamin pria. android: stretrchcof umns= "-i "
.,. android: padding?op= ' Apx't ..
i
<Tab I eRow>
<TextV: ew android: text= "Lfekel i " />
<RadioGrc:i"rpr andr:oid ; idl " @+j d,z j ekel ">
<RadioBu.LtGn 'arLdrpid: i'd= 't 8+id,/]}r-ta "
android: text= "Pria"
Gambar 9.4. Tampilan Tabl
<Ilad i aBr t* t on andro id : id='
r Q+ i d/ perempuan "
android: Eext= "Perempuan "
Dari tampilan di samping, kita membutuhkan
dua buah tampilan layout xml yaitu main.xlm </Padj cci oup>
<,/"T'abieltovr>
dan row.xml. Buatlah project baru seperti <1'ablcRow>
ketentuan berikut: <Texr.','iFw android: texL= "AlamaL : " />
Project Name Array3 <EditIc..{t android: id="@+id/alama:" />
Gambar 9.5. Tampilan Tab2 <,/'l.1h rcP,ow>
Buitl Target Android 2.3
Application name array3
Package name com.wilis.array3 <BuL r-on android: id* " A+id/ save "
Activity array3 android: f"yort-*iAth= ".fill*.par ent" . .'
Min SDK 9
andro i d : 1 ayou Llsight = r. wrap*co:,ffi
: ;", t **r =,sr.re,
main.xml <
/>
/?ablel,aYo.ut>
<?xml versjon= " encodi.ng= "utf *8 "?>
""1 . 0 </.1 Yamel-aYout >
<TirbHo$l xmlns: android= "hl[p: / lschemas ' android, camla[sk,/res/andrr:id" < /Linea*:LayouL>
android : id= " @android : i d t tabhost " .:.r OSl >
andro jd : I ayout-wi oth= "f j I1...-parent "
android: layout-height= "f-il 1 parenc">
< I- i t'r o r La) 'r'lid t'()w.xml
, o-. i"rrt.t ion= ,,vert i cal ,,
/>
<Liaeartayout
androi-d : layoul-width= " f illJarent" I
andro.id : Layou t-he ight. =' wrap-conient "
orientation* "werticaL " public String t"oStringO t
:ndroid: retura(EelNamaO );
.:?exL\i i ru anrlroid : id= - 8+id/ title " I
pubLic void seLNama(String nama) t nama= {EditText) findViewByld (R. id. irama) ;
thls.namasnamai i aIa$atF,(EditText) flndVieweyfd{R, id. aJamac) i
] j ekelq (RadioGroup) findViewqlrd {R. id. jerel ) ,
publlc Slring, getAlamaE{} { ' , Button. save- {Button} f indvieuByf,d,{B. id,..cel|el i .t,
rdturd{a1,irnat) ;...: :' . i. l
1 . ...r.
save.sdtOflClicklistener{o4Save);] . i: . .
{
returrd(jeke1 ); ryabHost,TabSpec spec=getTabHost I),.nedlabspee.l LfaSl' ) i
]
spec , setconlent ( R. id . a_lrnag) i
public void set.lekel(SLring jekel) { spec.set.Indicator {,,tisf ',, qetResauiie; { )
thle . j ekel=j ekel ;
)
1"
( (spec)
geETabHost ) .addTab ; .cf,'aBe ,al$idQiAdaplter 6ritgtrdlrr'' arrayAdapter<dlmagl { iir ".',.':
i.
rrr.,.ir,'ll','.t,r'i.
i,r''1.
: 1.4....,i. _.ri..:'-r
a ':.ii l r'i...:.. :.,.
:'::: , r., ., . .:.a,
case R. id.Pria:
r . setJekeL (" Pria " ) ., :,...,,... .. . . .',.'............. . hold-er.po.p,uL*t,errorri:{mqqel .get {position) ) ; i:.'
break; :.::....:,t.. . .. .,,_. r'r:r.t ..,.t,. ...
roturn(row) ;
, ca$C R, id, pere-mpuan r i
r.setJ6ke1 {"Perempuanr: }, ,r
break;
)
Drivate Textview nama=null ;
adapter.add(r); Dri?ate Textview alamat=nuIl ;
) Drirrate ImageView icon=nuIl;
privatc View row=nuII;
'''i
.getTabHost ( ) . seccuirent"ab ( 1) i
Activity : filer
Min SDK :9
Pada Tabr adalah menempatkan inputan dan pada Tabz menempatkan list- nrain.xml
lrst yang sudah diinput, seperti coding berikut:
vcrsion= "7- 0" encodi rg= "ut f - 8,?>
. .:".),."1.1
Tabllost.TabSpec spec=getTabHost ( ) .nevrTabspec ( "tagl" ) ; , ns : android= ht tp : l,t schemas . ardroi d. catn / apk / re s / andra id,,
"
android I ayouL_width= " fi Lljaren l',
:
spec. setcontenL (R. id. a lnag\ ; android: I ayout-height= " fj I JJ:ar ent "
spec. setIndicaLor ( "Ll st ", androi d: orien[ation= "vertica-l ">
getResources ( ) .getDrawable (R.drawable. I isr) ) ; <g,,rt ton android; id="A+id/c|.ase', .
getTabHost ( ) . addTab ( spec ) ; android : Iayou t - wi dch= ' rdrdp- con Lcn t "
android : layout_heiglnL= " wrap_ a on t eu L,'
spec=geETabHost ( ),newTabspec ( "tag2 " ) ; android: text= "C-lose " l>
spec. setcontenL (R. id. deraj-1s) ; <r'.1 '' r-
spec.settndicator('Detai ls",getResourcesO.gelDrawabfe(R.drawabIe.aJam androicl: id= ''(lr idteditor"
anllroid : J ayour widrh= " { i t lJlarettt "
anrlroid: layorrL he'i ght= " IiJ L ltat .'nt "
( ) .addrab (spec) ; android : sinqle1-ine= " fa 7 sc "
""llr"-"".
get.TabHosL ( ) . setCurrentTab ( 0 ) ; and.roi d : graviLY= " r 6p'
/>
. Lr,.i,',)
berikut tampilan aplikasi arrays untuk entry datake-5
liler java
package com.wilis. file1 ;
strinqf sEr;
StringrnuilCtei buf-neiir Scrl,4gizuilcter ( )i Ini adalah contoh progman
mengekses file di android
w&tle { (str': reader.readl,ine!| } t*
buf . append(str+ " \n " ) ;
j
in.closeO;
ieditorl setrext (buf . tostring{ )} i
,
)
catclr t j ava I io . ri1 eNotFoutrdfi(cept ion'e ) {
Toast
. ,nakeText ( tlris , "Exceptipn: l+t.to.Strirlg( ), ('lick close sehingga terbuat sebuah fileku.txt, lihat file tersebut
?000) nrenggunakan file explorer-nya eclipse sehingga tampil seperti gambar
. showO ;
) lre rikut:
)
:.'' : ,. r.,',.,. ,,...,....... .. ..
eqblj,c 'rr'ol.d,.rronPaus*,{) {'",.i .. . Froiect Exptorer ffili$k
'surni..oiiPa{ise(}.,,..'....
ii eral
{ .' ..r'...r,,'... .,:..
B{l
OutputstreamWfiter ouE='
.', n€,lr'ioutputstream .riter{openfileolrtpuElfi-leku'' r [3 rom.wilis,filel
0) ii r {J, iiles
'irut . write { e4it'61:'.,getsTrlxt { ) . tostr'iBg ( )}; . $ fileku.trt
out.c-Lose(l; r Et lib
l
eateh (fhrqwable t) { Gambar 9.9. File Explorer aplikasi file1.
Toast
.makefleit.{bbtp; "Exception:'+t'tostsrinq(}
2000 )
. show( ) ; ,lalankan aplikasi lagi, akan menghasilkan tulisan yang pertama yang sudah
\
:
;rnda ketikkan, coba edit dan tambahkan lagi tulisan "Ini adalah
\ l)enambahan baris kedalam fileku" kemudian close dan coba jalankan
;rplikasi dan seharusnya akan menghasilkan seperti gambarberikut.
ul
I
BAGIAN 11
DATABASE DI ANDROID
Gambar 6.10 Aptikasi filel(edit isi).
Pada bagian ini kita akan membahas tentang database, Android juga
memiliki fasilitas untuk membuat database yang dikenal dengan SQLite,
SQLite adalah salah satu softtuare yang embedded yang sangat populer,
kombinasi SQL interfoce dan penggunaan memorA yang sangat sedikit
dengan kecepatan yang sangat cepat. SQLite di android termasuk dalam
Android runtime, sehingga setiap versi dari android dapat membuat
database dengan SQLite.
fl
I
I
._.::.....:.".....-........- I
bentuk group s key yang dikenal dengan prefences. N Ddab6i. Nd &le.t.d
o Files yaitu menyimpan data dalam file, dapat berupa menulis ke file
atau membacadarifile.
. SQLite Databases, yaitu menyimpan data dalam bentuk Dafcbases.
o Content Providers, yaitu menyimpan data dalam bentuk content
prouiders seruice.
Pada bagian ini kita akan fokus membahas bagian databases. Tidak ada
database yang otomatis disediakan oleh android, jika kita menggunakan
SQLite, kita harus meng-create database sendiri, mendefenisikan tabelnya,
index serta datanya. Untuk membuat dan membuka database yang paling
baik adalah menggunakan libraries
Importandro id . database . sqI i te . SQLi teOpenHelper SQBE all Gr*o1,9.?f,1 +6.5
DBAdapterjava
Dackase eo:a, wi1,iS. databa'se1 i
itrE)ort android . content . Contentvalues ;
l[E)ort android. conEent. Context ;
publ,lc DBAdapter openO throws SQLException
i
db = DBHelper' getwritab,leDatabase ( );
return thi6;
)
{
DBHe lper. close ( ) ;
)
t
return db.query(DATABASIT-TABLE, new String[] {
KEY*ROWID,
KEY-ISBN,
KEY*YIrLE,
KE.Y PUE TSHtrR},
nu1l,
nuxl,
nuI1,
nul1,
nu11);
i
rxrb].ic Cursor gelTitLe{l'ong rowld). throws SOLExcepLion
(
Cursor mcursor =
db.query (true, DA?ABASE-TABLE, n6!r StrinqIr] .{
KEY*ROWID,
KEY_ISE}tr,
!_ttDt\ t
^E
KEY-TITLE,
Log.iv(?AG, "UpErading database from version " + oldVersion KEY PUBLISHER
+ " f-o " ],
+ newVersion + ", which will desLroy all. o1d KEy RAWID + ,,i,, + rowfd,
daEa'' ) t
rru1L,
db.execSQL('DROp TABLE IF EXISTS tit.1es"); nulX',
onCreate (db) ; nu11,
)
null '
rf
.,,r:1il6.19g.9 ilr*r,r..hUll). .{
lfungsi open database adalah sebagai berikut:
Lf _,
Penj elasan DBAdapter j ava Irungsi delete record adalah sebagai berikut:
Kita membutuhkan libraries yang berhubungan dengan SQLite dengan publ5.C bQsleaq deleteTitle(loag.rowId) ., ... r.... . .,,....,.
{
defenisi berikut:
r€tlrrn ar'aetetlyTy;';,Ti3,
1'1#u"'
*,
irqport'andibid,.da!abalse.sg].iue.sQLiteDataba$e,
ir{aftandfoid;databalsei9q1ltQ.sQLiteopeflHe1pefi.].-' )
LlEroft ardrQidr; da.babar:d.. sgl ite..sQri testateineiiLi r'
lrungsi menampilkan semua record adalah sebagai berikut:
Nama database, uersion, dan table-nya didefinisikan di DBAdapter dengan public Cursor qetAllTitles ()
co ding sebagai berikut : i
rerurn db.query(DATABASE*rABLE, $e* Sir,ingIl t -
nuI1,
DrLvat6 statlc flurl string DATABASE-NAME = "books"; nuL1,
DriwatE"gtatic tirel strinq DATABASE:TABL.E.='tit1 s'' null);
.}ri*at..Btattc.f'iii'itt..ifrtDgirBaAsg*.yE,8,9.I0}I=.1;...i''.... ]
prlvata statlc flBr]. String DATABASE-CREATE =
.' : . '.1 .,.*'ei:eaE.e tab.le'i.rrt.itles (rid inteqe{.. prim6.r:y., k*y autoincremenE, ' Sementera fungsi meng-update record adalah sebagai berikut:
r.+ ';isbn :Lext rtd|*'.'.,ru11,l lg1tr* ,text noE. nu1l, ..0. .,... .
Pada databaserjava akan kita contohkan untuk melakukan proses :l', i iai r3;iiiri 1}-{;}.l&-I'Ar,*
penamiahan data ke dalam database. . Frcject
' Erplorer.. +iktrdos ;3. . 1* d -
- ,J'- ffi:-#ffi-'*-\-,
Nam< !r;e Oaie
, .. .D$
Databasel java F.ad.rccoirrt
Li com,srox.piro
[:. rom,$ilis,rodingnrEprl
20Ll-01-li
2fl11-01-06
2011,n1-1]
package com.wilis. databasel ; Li rom.wili!.(odingmaps2 2011,01,1!
i:: (om,wrlis,dBtibas€1 1011-tl1-11
* databdler 7011 0l tl
inqrortandroid. app. ActivitY;
-L: --l !- -
boots 5120 2011-81-ll
import android. os. Bundte ; ;1. lib 2011-01-1j
L:.. conr.lrili!.datdbB5el 2011-01-13
public clasa databasel extendE Activity { a] r0n1,wi|s,edrfred 2011-01-11
l!* Called when Lhe activity is first crE&ted- Gambar 1 1.3. Fite Explorer aplikasi databasel
@Override
xrrrblic woid onCreate(Bundle savedlnstancestate) t
super, oncreate ( sav€dlnstancestate ) ,'
setcont.entview (R. laYout. marn) ;
l,akukan proses pull dengan menge-c/ick tombol yang bertuliskan pull a
DBAdapLer db = nen DBAdapLer(thig), lile from device dan simpan di direktori penyimpan yang bisa Anda ingat.
. llrrka SQLite dan buka database yang barusan kita pull sehingga muncul isi
_ | :- .,,
-l.,] f*rrar,-
, iari"'. * i",
r-----'''- ....'.'-
Linux Frogranr,'ninE ",
" rMcterlrite{1) I
I Lntir lQL
I
"Bandunq Press" ), te_mi:let
l
"
"Anclroid Devlopment l,ife (yclc", |
,: i
"Hongkong Press" ) ; I -
Indatr rul
r 0{Eri irl It-
j-;;;
Run 501 Adr Lart Etrorr rct an Etrcr
databaseljava
package com.wilis.databasel ;
11
)
lf (c.moveToFirst O )
G].Be
Program akan menampilkan isi database ke tampilan layar dengan konsep ,',..',:,:,.,:;::,':,,'.,,".:..{d&s,Slt;Ea:kefextjt}it,i)r',.,r.,.,1llq Brlt:1e found,,
widget foasf dengan satu per satu data seperti gambar beriktu: i ..rt,,;r:.'.,,iiitri , .iitilt,, i t,ir,.iri it ,,,,r,i i,:t'r:,rl,u, .
fOaSL . eEfBtfL.IiOMI . show ( l ; r
db. close O ;
I
-f
Databaseljava
package com.wilis. databasel ;
//---update title--- Lakukan pengecekan kebenaran data dengan cara melakukan p.u/I database
db.open(); schinga isi database kita adalah seperti berikut:
if (db.updateTitl€ (1,
-id ilbn trtle rubtlshel
,iiliii#Ht::?, ;"'"'"nces " i1 lua:l*rs lanaroia rr0{ramrgiii.t*1,1 $ashlnggq ir*s
Toast .makeText (thj s, "Update successful.
Toast. LENGTH-LONG) . show ( ) ;
"
tl
t_
ll:atrl+s lLinux
programming Sandlng Prels
//--irelrieve the same title to verify Itz:+st::+s lAndroid coding references llukrrt.
p,.,,
Cursor c = db.getritle(1);
if (c.moveToFj.rstO ) ls*lrttn+s lLin* Programmin,g lBandung
presr
dan apabila anda mau menghapus salah satu data bisa menggunakan fungsi
berikut:
db.openO;
if (db.deleteTitle (1) )
Toast..makeText (thl,a, "De1ete suqqe$sfu1
Toast . LENGTH-LONG) . show ()
else
(tlilg., ' 'Da1etdr fail-ed. ",
Toast .Iuakefbxf
Toast. LENGTH-LONG) . show ( )
db.closeO;
Aplikasi Database2
Pada aplikasi databasez ini akan kita rancang aplikasi yang akan menyimpan
alamat seperti pada aplikasi arrag, tetapi dalam hal ini kita kan menyimpan
dalam database. Buatlah project baru seperti ketentuan berikut:
Project Name databasez
Buitl Target Android 2.3
Application name databasez
Package name com.wilis.databasez
Activity databasez
Min SDK I
Inputan form kita terdiri dari nama, alamat, jenis kelamin. Kemudian
tampilan dibagi dengan z tabulasi, tabulasi pertama adalah list data yang
sudah disimpan dalam database atau yang sudah diinputkan, tabulasi kedua
adalahform input data yang akan dimasukkan dalam database. Dibutuhkan
beberapa lay out xml sebagai berikut:
layout/main.xml
<?xml versior,= " 1.0 " encoding= "utf-q "?>
<TabHost }(In1ns:android.='htLp://schernas.android..com/apk/res/android"
android: id='@android: 7d,/ tabhost "
android: layout-width= " f i 7 TJarent'
android: layout-height= 'fjl lJra rent ">
<LinearLayout
android : layout-widt h= " f i 7 f J>arenc'
android : layout_height='fill-a renE'>
<rmaq*Vie\,r android : id* " G+idlicon" android: layout-heighL= " wrap-contenL "
android : 1 ayout-rnridth= "wrap:-conEent "
android: IayouL-heighL=' fi11 Jarent' " < lLinear;,aya1r!>
android : layout-:al ignPa"entTops " Lrue "
1.
android: 1 ayout-aI ignParentBottom= " true
androi d : layout-ma rgi nRighE =' 4px "
"
:
<Tablelayout android : id='A+id/detai-1s
$3::1$;1ffi*{:i}ll-tf,!u"'*"',,,
"
1>
android: texL. "e.Lamari "
android : paddiaglef ti "rpx "
< I'cxLvi cw anctroid: id=" G+id/aLamat" andrr:id: PaddingRight=- "?.,l:X "
randroid: layaut*width* " fi1I-:raient. "
/>
android : layout-height'='t wrap-contsent "
<tr1i L r'ex.L
android.: layout "1"
android : id= r E+ idl aTamat "
-weight=
android: gravi Ly= " center-vertical "
andro id : maxWi,dt.h= " 1 4 Osp "
android: singf"ii.t"= " true "
android:el1iPsiz6="end" l>
</Table&ow>
/> <'Iab1ei1r:w>
4 lLinearlalrouL>
<TextVier.r android;text- "f14?e: " ./>
{/ r,ined.rl.ayouL> <RatlioGroup android r id.' @+ id/ j ekel il>
<Radiogr"rlton android: id1 "e+id/pria*
android: text= "Pria
layout-land/main.xml />
"
:tin*arlayou!
:.' android: layouL_width= "fi 1J3 arent "
andro id : 1 ayout*lreiqht = " fj 1 f--paren C " .rrdroid : scrollHorizontally= " f a ! se
*l
,i..r iiir'ri,.,riii.i.arrdro.id.l'lt6youL::width=
"fi113ar9nt" .'.: .,i:. '
package com-wi1ls . database2,;
',ii r irii'.',r i i andrqid I rleyoue heighL*
,,
,i.*_rap_con.f ea.L .1 ..,
i,,
ttnport android.cont€nt,.Contexi.;. ,.. ,,.,...
.'i., . i ...
ttcn ,erid.rQid;i.d*rt.d-+idlseve.ir.
.-..::.t <.F Itry)ort android. contenf . ContentValues ;
:., .,) . .android : layou!, iwidthi f il J-J.arent
., ,, ,,
lmport android. database. Cursor ;
lmport andro id . database . sq1 ite . SeLi teopenHetper ;
.
..". . ,:.:: androidr.i laypuL*hqight; ',wi4p*.contenL-,1
..' . . . l
lmport android. database. sqliEe. SeLiteDatabase;
arid'oid:t'exb*".se'e,',.l.il.lii.i.
l>.......i..i.l,'l..
<,/Lined.rLayorr> c1e35A1magHe1perextenda'sQI.jiteQpenHe1pei{...
. ,-, ...i . . rr:<ltaJfl:eRbw>r, .,t.. . ......,., .... , ...., ...t r:,r -.r . -. priwate s!{ti.c. .f iaaX. Striflg DABABA,SE*NAI{E=, addiessmanager
,,,, :.. . db,' ;
. .:.,,1,,
,.<lY4tjl.eltsyr:ul> , ., .. : :.. :.: -::. .. ,' . , pf,:ivate static ftrrql iat SCI{EMA*VERSIOff=1;
nu1l) ) ;
1
Gambar 1 1.8. Tampilan tabl -2 aplikasi database2. pulliq St.ring getNama(Cursor Cc) {
retrirn (c. getString ( 1') );
) " ''
AlmagHelperjava yang berisi fungsi utama SQliteOpenHelper adalah puJrlic String' EetAlamat (Cursor c,.). i
retuiE{c. getSerlng(2) ) i.
sebagai berikut: )
-l
i
.il.;r,+r: r j tle
prrblic vqid onCreaEe(sQliteDatabase db) {
db.execSQL('CREATE TABLE afmaE {-id INTEGER PRIMA&Y KEY
AUTOINCREI{ENT, nama TAX{, alamaL TEXT, jekel TtrX?, hp TEXT) , " ) ;
)
databasezjava
package com.wilis. database2 ;
iViewcrollp'r, gaid0t) {
case R-i.rl ,pria: .,ii'
Layoutlnf leler: inillat errgbtlayout Inf later () ;
. r vieid.iow=iefliiter,irfla'b6{R;layou!"rolrr, parent,
..,,. ,.'.: .. '..,-.breah; . l
false );
aas€ R.id.perempuani ldpr holderlnew
.tt. typei$Perer'!"rpuan"; .
AlmagHo Al.litrdgHo lder ( row ) ;
:. i , -break; .. ..,
. .. : .,.i
j
row.setTag(holder) j
:,,',' fatuf.tr(rowi'i . i",r.. .,1,,.'', ... i., ...
i
helper. j.nsert ]
i. {riarna; getTexL ( ) . toString { ). alamat ,.getTex! ( } ..toStri 1
ng ( ), type, hp. gerText ( ) .rostririg ( ) ) ;
model.requeryO; .
if {helper.getJekel (model) .eguals( "Pria'' ) ) ' ' :',,. .1,. .',iaoid'popilLaterFrofi(.exrrqgr c, Almagl{elper hs}p6r} {
, {
.,.i...i .:.i.. i r,,,, . .nafiia,setrext(helper.getNarda,(c) li
jekel . check (R. id.pria) ; : i'., "''..,'.',].'alaiidt.eetfexI(helper.getAlamat(c)I;
]
else if
(he1per.getJeke1(mode}}..*"'-j;i;f:Ifl::i;}lij.'pe.*,,u,.,u,), ''
i:.. . icon.sqtlmageRlsource(R.drawab1e.g>rigl;
t :ll .,
)
,.., : a]laa if '(helper.get.lekel ('c).e$ral${';perempu4n")
. i
t. )
1
,,EIaEa AlmagAdapter. ..exteirda C.ursorAdaptei i{. ...
' AlmagAdapter(Cursor c)
..
{ : .:. . . . ., .,:
.,:::.r,ll -.,..:iitii.. .: :.:.:.::. .
.. euper{database2,thiE, c) i. :,
)
.lalankan aplikasi dan inputkan data seperti pada gambar berikut:
.....l.i.....''''BsVerric1e...
pubLic woid bindview(View row, Context ctxt,
Cursor c) {
AlmagHolder holderi {AlmagHo}der } row. gelirag ()
holder.populaEefrom(c. heip.er) ;
lable |ndu lim Trigger Tgris Hdp
lELttT'FRO[,lanrag
H
lNaruttrJin Safaai ltr suaiim u... ln,;, loar:amtosoo l
Ituutu ltt.Harapan 76 F...lPerempuan loas:ttol+rr,t I
, r-t irh
: li. com,rvllil,edittert
:i com,rv lis,Iilel
Setelah Anda lakukan proses pull, buka hasilytle proses pul/ dengan SQLite
Manager, dan akan menghasilkan seperti gambar berikut:
: ..' iindroid:layout_alignParentBoiLom;ttraitei. ir
I inearLiyoirc>
</TabIeRow>
<TableRow>
*$*XtView aadr.Oid.r.L;qxLt !,$p,:.r., i,I,: rt:. ..,. a :"::.::,;:.:.,'.
menu/option.xml
imtrt?stE ap.dloi4,: ridr.:,9+tdlrhp)r,r :,' I'1:. ;,,,, 1,,,r,, . ? ;r r version= "-l . 0" encoding="utf -8"?>
'dndioid : gravitlE' Eop' . ., ru xmlns : android= " ht tp : t / schema s . andro id. com./ apk / r e s / android " >
< i Lern android: id= "G+id/add"
android: lines= " 2' android: tit1e= "Add"
i iliiiiidibi n]..s crO f f l{orre(intrl.llrli ll f eli9a.
.: ::, .,t,lttlt tr:' tit t
android : icon= " @d rawabf e / i c-menu-add'
android : maxlines= '2 ' /\
IJ
android : maxwidth=' 200sp " . /:.+n t>
args);
lJr''r':.,, )
xrublic void onCreate(sQliteDatabase db) { public String getNama(Cursor c) {
db.CxeCSQL(',CFEAT}, TABLE AIMAg (_id TNTEGEF PRIMARY KEY
returrr (c. getstring (1 ) ) ;
AUTOINCREMENT, nama TEXT, alamaL TEXT, jekel TExf, hp TEXT);");
)
nul1) );
, DetailFormjava
public Cursor qetByld(Strinq id) { package com.wilis. database3 ;
String[] args={id};
import androj d. app.activity;
impore android. database. Cursor,
. rawQueiy('SELECT *id, import. android. os. Bundle ;
nama, alamat, jekeJ, hp FROM aLmag WHERE
-1D=?", inport android. view. View,.
import. android. widget . Button ;
args) ) ; import android. vridget . Edi tlext,
) irnport android. widget. Radiocroup,
import android. widqeE. Textview;
publLe void insert(String nama, String aLamat,
pubLic claE6 Detail,Form extends Activity {
String jeke1, Strinqr hp) { Edat.Text- nama=nuI1;
Contentvalues cv=f,r6't{ Contentvalues O ; EditText alamat=null;
EditText hp=nu11;
cv.put( "nama", nama) ; Rad.ioGroup jekel=nul1 ;
cv.put { "a-Iam"rL " , af amat) ; AlmagHelper hdlper=nu11 ;
q
String almagld=nul-L; t)ry)e= " Prla,, ;
break;
i"L\! i" r iae case R.id.perempuan:
public void. onCreate(Bundle savedlnstancestate) { type=,,Perempuan', ,.
))
finishO;
rlCrrr*r r i.le
pubtic void onDesEroyO { );
Euper. onDestroy ( ) ,'
helper. close O;
database3java
lrrirrate vqid load0 .{. ..i.
package com.wilis. database3 ;
. .. qurgor c=helper.getByld(almagld);
import android. app. ListActivity;
e.noveToPirst () ; impor! android. content. Context. ;
'
,
:ffi;::::;l1i?llil;f;Iilifilli.,,,
hp.setText{helper.getlip(c) };
import
import
import
android.
android.
android.
content. Intent
database. Cursor ;
os. Bundle;
;
AlmagAdapter adapter=nu1L,.
tl
]
SO!*l:rid*
publlc void bindview(View row, Context ctxt,
Cursor c) {
AfmagHofder holder= (AlmagHolder) row. getTag ( ) ;
holder.popufateFrom(c, helper) ;
]
'.''...t iU'.
public View newView(Cont.ext ctxt, Cursor c,
Viewcroup parent) {
Layoutfnfl-ater inflater=getLayout lnflater ( ) ;
View row=inf later. inflate (R. layout. rokl, parenl,
false);
AlmagHolder holder=new AfmagHolder (row) ;
row. setTag (holder) ;
I
Gambar 1 1.15. Aplikasi database3 tampilan tambah data,
Aplikasi Database4
Pada aplikasi database4ini akan kita rancang aplikasi yang fungsinya sama
dengan aplikasi database3, tetapi memiliki tambahan menu untuk sortir By Narnd. Ascending
berdasarkan kemauan user. Buatlah project baru android dengan ketentuan By Nanla, Descending
seperti berikut:
gy Jekel i '
Project Name database4
Buitl Target Android 2.3 By Alarnat. Ascendrrrg
Application name database4 RV Alamal. F)es.cncltnq
Package name com.wilis.database4
Activity database4
Min SDK 9 Gambar 11.19. Tampilan Aplikasi database4 pilihan setting.
XmI/preferences.xml
l'r eterencesscreen
xmlns : android= "h t tp j / / s c hema s. androicl, com / apk / res I andt o i. d " >
<Lirl ProIei:encc
android : keY='5,'. a-old"r "
android: title= ''Sort Order"
android:surTrmary= "Choose the order the -l jst uses"
android: cnrries= " @array/ sorL -names " l,rss AlmagHelper extends SQliteopenHefper {
andro j d: entryValues= "(dar'l ay./sot L-cl auses" privat.e static final String DATABASE_NAuE="addressmanager4. d.b"
android:dialogTitle="Choose a .9ort ordcr " /> private static finaf int SCHEMA_VERSION=1;
</ PreferencesScreen>
public Al"magHelper(Conbext'context) {
super(context, DATABASE_NAI{E, nu}1, SCHEMA_VERSION) ;
j
Sedangkan menu yang ditampilkan oleh tombol setting dibuat oleh
values/arrays.xml yang mempunyai isi seperti berikut: GOverride
public void onCreate(SQLiteDatabase db) {
db.execsQl,(TCREATE TABLE almag (*id INTEGER pRIMARY KEY
nama TEXE, alamat TEXT, jekel TEXt, hp rEXT);,,);
values/amays.xml ^r|TOINCREMENT,
)
<?r,rl version=''1.0" encoding="uLf-8"?>
<'r Dall Ct:c;>
GOverride
<:,'--r lrro ali-v name= "sorc rdmes "> public void onUpgrade(SQliteDatabase dh, int' oldVersion, int
rr, WVerS On) {
<it.,:r,>By Name, escending</ -.-..,,'>
<: l, :n>By Name, Descending</ i L *r> / / no-op, .slnce will not be caIled until 2fid schema
< j rcn >By Type<,/ i r- -Ln> // version exists
. <iLem>By Address, Asce$ding</itea>
< | t er >By Address, Descending</, - er>
</:. .' ''(l .. r'rr'l> public Cursor qetAll(String orderBy) {
<, ! r'al-d] r.r, name="so-tt-clduses"> return { gelReadableDatabase ( )
<i' . : >name ASC</ j " ^r,> .rawQuery(.SELECT _id, nama, alamat, jeke], hp FROM
<, i ..-,>name DESC</. L r.> r I mag ORDER BY '+orderBy, nul 1) ) ;
<i r t':',>t),pe, name ASC</'. :r::> ]
..,, -,radda"ss ASC<,/.'r.c,:>
<i I tr >address DESC</ i I Fr> public Cuisor gerByld{Strir-rE idi {
<,/r. li ,n.J &r'dy> Slring[1 arqs={id};
</ , .'. ric" q> .return(,getReadableDatabase O i .
perbedaan di dalam fungsi getAll dengan penambahan String orderBy iuU:.ic void insert{$Lring nama. $tring alamat.,Strihg jekei,
seperti sebagai berikut: . ContentValues cv=new Contentvali.res {) ; :
J
alamat.seLText (hefper. getAfamat (c) ) ;
hp. setText (helper- getHp t"l t,
l--"t,r-.1:
public void onDestroyo {
'l
super. onDestroy O
database4java hetper.closeO;
;
]
xnclrage com.wilis. daEabase4 ; ,..,.,ji,
publ c vo r_d nL i r r.
import, android..app,ListActivity;
irrport andro i d . content . Cont ext ;
i" o s
",..I ",.,,
inport. android. con.!.eEl. Intent; :::r"."rr; rr::.,, J,,.:
imDort android. conEent. SharedPreferences ;
Intent i=new IntenL(database4.this, DetailForm.class)
rqlort . android. database, Cuisor ;
imnort arldioid. o.s. Bundie, i.puLExtra (I D-.EXIRA, String. valueOf (id) ) ;
Lnrport aadroi d, paef erence,, Pref erenceManager ;
sLartActivity(i);
irnports android.view.Menu; .. .
AlmagAdapter adapter=nul1 ;
EditTexE nama=nu11i returrr(tflre);
EditTexE alamat=nu1I; )
rLs);
,, .. }e,lbqr=fi6w AlmarrHelper{thl,e);. model-helper. getAll (pref s. getstring (" sort*order.", " naft.i ")) ;
, ,..,
startManagj ngcursor (model );
. pz:g'is=PrelfrdrenidManager. getDefauLtsharedPreferencds(this}, adaprer=new AlmagAdapter (mode'l ),.
setListAdapt-er ( adapt er ) ;
Il vt.:- i :lf
public void bindView(View row, Context ctxt,Cursor c) {
AfmagHofder holder= (AlmagHolder) row,qetTag () ;
til')\f el-r1fi
"
public View newView(Context ctxt, Cur$or C,ViewGroup parent) (
Layoutlnflat6r inflater=getI,ayoutlnflater ( ) i
View row=inflater.inflate(R.]ayout.row, parent, false) ;
AlmagHolder hol-der=new Al-magHolder (row) ;
Gambar 11.20. Aplikasi database4.
row.setTag(holder);
return(row);
]
'fekan tombol menu di keyboard emulotor sehingga akan muncul menu di
static class AlmagHolder { bawah layar seperti gambar berikut:
private Textview nama=nuIl,;
private Textview al amat=nul1 ;
privale Imageview icon=uu11 ;
private View zow=nulI;
AlmagHolder(View row) {
this. row=row;
na6a= ( TextView) row. f indViewByld ( R. id. t i t-7 e ),
alamat= (TexLVie\'/)row. f indViewByld(R. id. alamar) ,'
icon. seLlmageResource ( R, drawable . perefipuan) ; Gambar 1 1.21. Aplikasi database4 Nenu option.
Untuk menguji proses sorting data, c/ick tombol setting dan pilih try
] Nama, Descending dan perhatikan hsf data kita akan otomatis tersortir
sesuai dengan jenis sortir yang kita pilih, proses pemilihan setting dapat
Jalankan aplikasi database4 dan lakukan tambah data sebanyak 3 buah, dilihat seperti gambar berikut:
seperti gambar berikut:
By Nama, Ascending
By Nama, Descending
By Jekel
By Alamat, Ascending
By Alamat. Descending
BAGIAN 12
CODING MAPS
Gambar 1 1.22. Aplikasi database4 sorting dato.
. -,,1,,,,1
!.,nll r i ntrai llii r
ri .l',1
Aplikasi codingmaps I
program ini bertujuan mendapatkan nilai dari gps.provider, dalam hal ini
nilal gps-nya kita dapatkan 4ari ddms, tentunya kalau A.da running
progr;m ini di n obil" android yang memiliki hordtuore gps, akan
meidapattan nilainya dari gps tersebut secara reol time. Buatlah project
android dengan ketentuan sebagai betikut:
Project Name codingmapsr
Buitl Target Android z.z
Application name codingmapsr
Package name com.wilis.codingmaPsr
Activity codingmapsr
Min SDK 8
default.propertis
# Project target.
target=android - B
di sini default.propertis nya adalah android-8 atau android z.z, pastikan avd
yang targetnya android z.z sudah Anda buat.
AndroidManifest.xml
<?:-m version=".1- 0" encoding="utf -8"?>
<manifesl:arras:androld=,,http://achemas.ancltoid.cam/atrtk/res/android"
package= " cc:m. wi I i s . cod i ngtnaps L">
-
<applicJiian android: iconr'.Sdrawablelicon">
iactivity android: nams* ' . codingrmapsl "
androi d : label= " s tr ing / app-name " >
@
. <inLeoL-filter>
. <aetion android:name*"aildroid'intent'action'!!AIN" />
<cat{i!{ory..android I name= "android' in ten E' category' LAIINfNER " />
,</inLeni'-r;:.t*.t
<,/activ:ry>
</at:Plicari-.r>
<LSCS lr€rr issi 'tn
,ratoia,""*e-"andrctid.perrrds,Sion;ACCESS*rJJ\IE-{'OCA"ION"/>
</moni{esr>
rnain.xml
','xml version= n L. O,' encoding* rutf:8,!?>
. . .-or LayLU,*
xm] ns : android= "h t Lp : / / s chemas. android. com / apk / res / andro id,,
dnd roid : orient.at ion= " ver t Tcal',
android : I ayouL_width=,' f i I lJ:arent,,
android : I ayout_height=,,fi j J)arent,'I >
< -exlView
Gambar 12.4. codingmapsl android : id= " + i d/]3nyLoc aL i anText,
@
perubahan nilai gps Qrpdate location), program update location akan di-
handle di codingmapsz.
string.xrnl pubLic void onrroviderDj.sabled{Strj.nq provider)
updateWi thNewl,ocal ion (nuI1 ) ;
{
LocaLionManager locatioiManager i
locationManager =
( Locat i onuanager ) getsys temservi ce ( ConEext, L?CAT I ?N_SERVICE\ i
rrilai /ocafron pertama yang kita kirim adalah seperti berikut:
criterla critseria = new CriteriaO;
cr i t eria . s etAccuracy ( Cr i t er i a . ACCURACY-FIJVE) ;
criteria. setAl titud;Required ( falsa) ;
criteria . $etBearingRequired { f,a1Ee ) ;
criEeria. setcostAllowed ( true ) ; ,lSi Decimal
cri ter ia . set PowerRequ irement { Cri teria . PawER-Low) ; ,' t,5exaqesimal
Locationl-istener ( ) {
public'v:oid onlocationchanged(Location location) {
updatewithNewlocat ion ( location );
)
Aplikasi codingmaps3
l)rrlam program codingmaps3 ini kita akan mendapatkan alamat/nama
rlrrcrah dari suatu location yang dikirim oleh Gps.provider ke aplikasi kita.
'I't'ntunya kita membutuhkan koneksi internet di sini ketika kita
rrrcnjalankan aplikasi codingmaps3. Buatlah project android dengan
lit'tentuan sebagai berikut:
Project Name : codingmaps3
Buitl Target : Google Api's 8
Application name : codingmaps3
Gambar 12.6. Aptikasi codingmaps2 locationl Package name : com.wilis. codingmaps3
Activity : codingmaps3
Min SDK :8
Program codingmaps2 masih sedang running, sekarang kita kirim nilai
lokasi baru sebagai berikut:
tlefault.propertis
r ProjecL target.
U''lrl,**:.v tlrlsx,Gsj'xsrl Lrrget=Googie Inr. :Goog le ApTs: B
r"lu*i 16p; I 61a1
l
i
rtr D*imal t:rrget kita adalah google API level B, pastikan avd untuk level API tersebut
I i',i Ssagsimnl srrdah ada.
I tongitude 75,0840&5
Latitude
S€fid
S0.q:i0S6
AndroidManifest.xml
versi on= "l - 0 " encod )ng=,y1[ -g,'cs
Gambar 12.7. Nilai location2 codingmaps2 ..:r m I ns : and.ro i d=', h Ltp :,/ / schema s. andr oi d. com t apk t r es / and ro ici,,
1:du^dge- cam. wi Lis.codjngrnapsJ,,>
<. l ".,' 't )
< .sr.:- : -i,r,: 1 android:name=,,com. qaoqle-android.maps,, / >
Sehingga codingmaps2 melakukan wdate location secara otomatis seperti <,r L -'-
gambar berikut: android : narne= " . cod ingmaps i,,
android : label=,' Gs r.r i ng, zpp ramt. ">
< *, l , ,| , >
.,- i,,
onaro:d:name=,,andt ctid.- inLFnt.acLion.MAJN,, />
<. .. - *e. i "7 android : name=,, a nd ro i d.intent . cat egor-y. I,A'LINCHER, / >
</lr.lc:LL .[..- l:- r>
</:,,' .. ,,>
< /,.1.1: ),,...,.,....>
< .lc:i,J, .rj s! :,,: android:name=,,android.permission. LNTERNET,, />
<:: -g. : ,r, r ,,. , ';- j r,1
.nrlro id : name= " andro i d. permrssion. ACCESS_FIffE_ LOCATfON " / >
i:- 1 , '>
;
main.xml ::*:iii ::::a:at?i*;i;;in;
:
crj"leria.setPowerRequirement(Criteria, POWER-LAWI i ..
<?xnl, version=".1 .0" encoclinqt -"utf-8"?> String providqr. : locationndanager. getBestProvider (criteria, true)
-.L,/t.
< . ,
xmlns:android'=,,htt1://schemas.ar:dr:oic' co*t/atrsk/les,landroi.d,,
Location focati,on =
anclroid: or i er,t. ar ion= "ve.t. t' tcsi "
Io ca t i onManagor . ge tlra s tKnor,rrnlocat isn { provi de r ) ;
anclroid: layout-wicith= " { i L'- pa tonr " upda t ewi thl{ewlocat j on ( 1 ocation) ;
androic!.: Layoul-lreight= " t i i I -pdrent">
aI..L''i.r. IocationMa&ager. requestLocationupdates tprovider, 2000, 10,
androiC: id="At icJ my{oc'ac i-o'1 exL" ,
locaLionl,istener);
android: layout-widLh='fj'Iliarefl c"
I
android : layout*heiqhL= "urrap*cr:n f en' "
l"mport java. util - List; mylocationTglg = (TextView) f indViewByld (R. id.myrocat ionText')
impor.t java. util . Locale;
SLring addressSLr-Lng = "No address found";
imlrort android. aPP. Ac tivitY ;
if (addresses.s-Lze() > 0) { l)engan emulator kita dapat melakukan map uieu untuk membuat agar
Address address = addresses.get (0) ;
Ooogle Maps bisa kita masukkan dalam mops yang akan kita buat. Google
for (int i * 0; i < address.getMaxAddresslinelndex0; i++) Mops merupakan hak cipta Google secara propierty, sehingga kita dalam
sb. append {address.getAddressf,ine (i) 1 .append{ " \n" ) ; rrrenggunakannya memerlukan adanya perjanjian, Google membuat
sb.append(address.getLocality () ) .append ( " rn" ) ; rrrekanisme untuk dapat mengakses Google Maps dengan coding aplikasi
sb.append(address.getPostalcode ( ) ) .append( "\ n " ) ; tlengan sebuah kunci yang dikenal dengan API Key, kunci ini dapat kita
sb. append (address. getcountryName ( ) ) ; rlapatkan berdasarkan nilai generate otomatis dari SDK Android yang kita
addressserinq = sb.foSLri.hgO, i nst al.
i catch (IoExcept.ion e) {}
) else 1
Langkah-langkah mendapatkan API Key Google
latlongString = "No locat.ion found";
J t. Mendapatkan nilai MD5 Hash
mvLocationrext' setrext'' Carifile debug.keystore yaituTt/e MD5 Hash dan biasanya berada pada:
I:xi"il:::l:r":" * i:?".' :;)l""iu *i"q ) ;
Windows : document and setting user uindous kita seperti berikut:
)
)
Directory of F:\UseFs\uxc -uilis\.android
l/61,/2gLL 16:19 <DIR>
Apabila kita aplikasi dijalankan dan ada nilai location yang dikirim akan 3/E,-/2g1L 16 ! 19 <DI R>
4/BL/2A1L 14:21 L23 adh usb-ini
menghasilkan seperti gambar berikut: 4/BL/zALL 13 =44 223 androidtoo1-cfg
5/AL/?EJ1,L 66:23 <DIR> aud
/E,7./2gl1,L 13
5/E,7./2gl1,L :58
13:58 1 - 532
L/17./2gl7.gl
/LL/?gJ7,gl 26=gl7
zB=glL 7- -26A
L6f,atiBn f.ontrolls /LL/2B18 26=BE ?04 Eefau-lt-kEyEEI
*rvr;;;;f /E|L/ZEJAa a4=gz
/ZEJAa E?=99
1?1 mo de m-n u-ran-S 5 5 4
7-?1 mo de m*n s-ran-S 5 5 6
XRS{ ,."X-{${t:::l _ /2BLL 86=23 2s
t$:r Decimal
Gambar 1 2. 10. Lokasi file MD5 Hash android windows
,{} Sxaglesimal
Longitude 107.6105f9
Latitude -6.493211 Linux : berada padahome user lirutx seperti berikut:
re.---14
t@uxcuilis :,/hoee/uxcvilisl. an.irBid* pwd
lhffi/0xcvilisl . and roid
root6uxcHilis i lhomE,/uxcuilis/ . and r6id* ls - 1
tot6l 28
-ro-r--r-- L uxcui.lis uxcwilis 123 ?418-ll.-l.A 89:52 adb usb.ini
-ru-r--r-- 1 uxcuilii uxcuilis 143 26LB-12-19 l4:55 and;oidtoot.rfq
ruxr-xr-x 7 uxcuilis uxrwilis 4996 2gXO-1?-:6 6E:5U *sil
Gambar 12.9. Aplikasi codingmaps3 -ru-r--r-- I uxcwilis uf,cwiLis L217 2416-1?-26 13:4S ddms.cfg
.ry-r--r.-1UxCUi11suxcuili51?577s1g-1]'.l616:€l@
-ro-r--r-- I uxcwitis uxcuilis 75S 2OlA-l].-15 18:gZ default.keyset
-tu'r--r-- :. ux(witris uxcyitis 72 2SlA-L2-26 86:52 repositories.(fg
lis : /h(m,/uxcultis,/. and roid* I
Api Key Google Gambar 12.1 1. Lokasi file MD5 Hash android linux
Pada codingmaps selanjutnya kita akan b:uat map uieu, yang dapat
menunjukkan dalam bentuk mops di mana posisi dari nilai lokasi yang kita Masuk ke directory bin dari folder java anda dan lakukan perintah
kirim (nilai GPS nantinya apabila dijalankan di deuice yang mempunyai berikut untuk mendapatkan nilai MD5 Hasnya
harduare GPS). Ini dapat dilakukan di android karena Google mops Keytool -Iist -alias androiddebugkey -keystore <Iokasi
disertakan pada android, jadi hal ini merupakan salah satu kelebihan detrug.keystore > -storepass android -keypass android
android daripada sistem operasi deuice mobile yang lain.
Sehingga mendapatkan nilai MD5 has seperti gambar berikut:
:\Program Files\Jaua\jilkl.6.0-12\hinlkeytool -list -alias
androidilehugkey
Your key isr
Here is an exampie xrnl layout to gEt },ou sta.rted on your lllay to mapping glory:
Gambar 12.12. Nilai MD5 Hash android di windows
crn. graale andrcrd naps.1{aFY1E{
;nlrord Ieycut_urdlh= t rI.[_parer,t "
andraid : layaut_h*ighi = " f i 11_Farert "
andrard apiley= ".iltlldibht hanpltO0td0 1rBIilX4wngbciqDl,-cUVi
: "
/',}
rootQuxcuilis : lusrlbin# M
/usr/bin
-tist -aU.as- androiddebugkey -keystore lho*eluxcwitis/ Gambar 12.15. Nilai API Key Android
rootpuxcvilis:lusr/bin# keytool
.androidldebug.keystore -storepass andraid -keypass android l
Certifi{ate fingerprint (l{05}:2E:2tr:19:37:}5:66:*B:[C:F(:?5:BA:E3:91:AC:44:80 Nilai API Key ini lah yang kita gunakan untuk program membuat dan
root@uxcwilis : /us r/bin# [ rnenampilkan serta memanipulasi maps. google.com di program aplikasi kita.
Gambar 12.13. Nitai MD5 Hash android di linux
,
Aplikasi GoogleMaps
Lakukan koneksi internet untuk mendapatkan nilai API Key dengan
mengakses alamat http : / / code.g oog le.com/ android/ add-ons/ g oog le- ini akan kita lihat penerapan dari penggunaan Api
Pada aplikasi GoogleMaps
apis/maps-api- signup.html, baca dan checklis terms and conditionnya, Key yang sudah kita dapatkan diatas. Buatlah project dengan ketentuan
danpaste-kan nilai MD5 Hash kita seperti gambar berikut: berikut:
Project name GoogleMaps
Target Google Api's 9
ldl lharn read *nd agree with the lerms and condittons {pI|Ilable yeEigni Application name googlemaps
Package com.wilis.googlemaps
My ce,rtificate's MD5 fngerprint : F4:C l ]5.8E: 14:57:39 t C. l D:'1 8.84 33:A4:55:EE.DB
Activity googlemaps
Sehingga kita mendapatkan nilai API Key kita seperti gambar di bawah AndroidManifest.xml
berikut: <?,:l version= "1.0" encodi ng="utf-8"?>
< rr.r f es'. xmlns:android= "Jrt tp: //schemas.android-com,/apk/restandroicl"
package= " com. wi I i s. goog Tenaps "
oid : versionCode= " -1 "
and.r
android : vers ionName= " 1. 0 . A ">
<dplr. -1.:L i cr. android: icon= " @drawabfel icon"
android : labe I = " st r i ng t app_name,'@ >
.f
<11 ses *per.mi s s i on androi d I name= "a;:clro j d. permj ss j on. JJV?SAIVE?' / > rho acLivr ly is iirsl- crealed" "l
lr" Ca11er1 ul"ren
</-nan1-iti'-> Override
public void onCreate (Bundle savedlnsCancestate)
Defenisi penggunaan library didefenisikan dengan t.
Bu[rer, oacreate (savedlnstancestate) ;
. "i:us I i r'r-r:.t anriroid:name='com. googfe. android.maps" ., setcontentview (R. J ayout. ma j n) ;
I
Pada main.xml di atas dapat kita lihat apiKey dari Android SDK yang kita
gunakan, pastikan apiKey ini adalah dari Android SDK anda sebelum
menjalankan, karena setiap SDK harus memiliki ApiKey yang berbeda.
Dalam coding di atas kita menggunakan Gambar 12.16. Aplikasi GoogleMaps
android: 1:iyoqt-a1 iO4ParentBottom' u Lru*' lmport com. goog 1 e . androi d . maps . MapAct ivi ty,'
android: Layout-centerHorizontal- " r'.'' I mport com. qoogrle . androi<1. maps, I4apview i
l> I mport com. qoogle - androi.d. maps , Mapview. LayoulParams;
lmport android. os. Bundle ;
Sehingga main.xml sepenuhnya menjadi lnport android. view.Viewi
lmport android. widget , IJinearlayout ;
<?xnl version= "1. 0" encoding= "ut f-8"?>
<kel aLl vel-,ay,>uL public clasg googlemaps extenda l'Iapactivity
xmlns : andro id='http: /,: /schernas. android. camlapk/ ::es /androi.d*
android : layout-width= " f i I 7 iaren c" MapView mapView;
andrOid : layou t *hei ghr= " f i 1,]--paren E ">
/.i Cal1ed w}:en the activitf i s {i rsL crealed: 't,/
<ionl. qooqile.. anclroi"d' naps " ryapa,riE"ld GOverride
android : Ld,= " @ + i d / napVi ew " pubJ"ic void onCreate (Bundle savedlnstanceState)
androi d : layout-wi dt h= "f i I ) Ja rent "
aldroid: layout-height = " fj I lJ:ar en c " Errlrer . oncreate ( savedlnstancestat e ) ;
andro id: enab l ed= " t rue " setcontentview (R. laYout -mair) ;
androi d : clickable= " E rue "
android : ap i Key' = " A I UZ dAbh tltawpKQ QVd) 1 e I KZ X4v'rmgbc CqDkcWVA " mapview = (I{apview) f indViewByrd {R. id' niapvjew).,
/> Linearlayout zoomLaYout =
( Linearlayout ) findviewByld (R, id. zaom) i
<LinearLayortt android: id= " @+ id,t zoom' View zoomView = mapView.geEzoomcontrols ( ) ;
andro.id : layout*width+ "htra.p*cqn aen f "
, .androl"d: layout-heiqh!: "ufa.tr,*cofic€.nf ' zoomlayout . addvie\u, ( zoomvi ew,
android : Iayout--aI ignParenLBot L om= " Lrue " new Linearlayout. LayoutParams (
dao l.jta memerlukatr coding untuk freng-handle apabila kontrol zoom zoom seperti gambar berikut:
difu ngsikan sebagai berikut:
tEr l,.r ! .u.EIr.{N '.tirEtwcv!ryJii R.id,sae$:elr: :
r,i.niiGrcur zqre,,int " Li6.rlaierii li.a<rvi.tBvrd E! la.39d. .
!.!er.'9o.vr*," meYi .s"tr":"ilc"1:.,1i6 i,: ' ..' ,.,.,,
!"*r^"""t..iiwr.* 'o*vr*, .
.:.jar lia6dL;lnyorr. L.yoqtrFa, aM :::
.
.:i:'.'r r.
ta!outp*-+. kBlE;idift"Y,'. '' ' ', '
'":,':r
.:, ' ":"'
Ie'YtutPa?a4r.WRAP-[ou-rffi ''
maDvis.disFlayz@co.rrols ttu
</.,"- :: '>
. ' i: ll .Lli>
./ ,t:'x:;' >
rnain.xml
' :'\ I version= "1.0" encodi ng="utt-8"?>
,l i'/C",n /!1rt
. rn lns : androi S.* " http : ,/ /schemas ' anilroid, coml apkl res / andraid"
android: Idyour-width=" fiJt -patenL "
anclro id: layouL-heighE= "fj J J-parent">
< coir. uc<:g le . andrci d . :rap s' Mapv-i e** anclro id : i d= " @ + i d / nap "
an<lroid : layout*width= " f i 7.7 iar en t "
android : layout*hei ghL= "f: I fJ:arer: f "
Pada aplikasi codingmaps4 berikut kita akan coba tampilkan sebuah lokasi
(nilai longiture dan latitude) diketahui, berikut adalah co ding -nya. <Lin{}arLay*ul-
mlns : andro id= "h L tp :,/ / s chema s . andr r: i d . e am / apk I r e s,/ andr o i d"
android: IayouL-width= " wlap content "
default.propertis andrt:j-d: layout heighL = "tdrap-L ont.ent "
android, I ayout .a1 i gnPare:LPortofll= " t rue "
# Project targeL. android : layouL*aliqnParentBiqht' "Lrue" >
targeL=Coogle ln-. :Couglc API::a
<But"' i ilri
android : id-, g * i.d/ Saae.l j t,,
Android.Manifest.xml anclroid: I ayoul-wi dt-h= "wr.rp-cont'efl c "
android : layout*height= " trr-ap--c'on Ler t "
"I C" encocling-"uLf -8"?>
<?r-l.nl wersi.on= .:ndroi cl i text= " laI cJ i t-'
<riiirnllesi xmlns:androio="htlpr sc,he.,nos..r;:droicJ.r:omlapklres,tanLfu aid" android : laYout-x= " 2 5 ?Px "
pa. k:ge= "coft1 .wi) j.+.1"66f 1716;1,3p5J"1 android : laYo.ut-Y= "5PY'
<r1$*s--iro.rrli-s:;ion. androirl:name= "and.rojd.perrnJss:ox. fN?Eql,/trT' /> <,/ B,:r- t rr>
<., ,,,":
dnclr o i d : namc= " and ro i d . pe rniss i orr . 1\(e EI..3-COARSE 1 Lr('/77 ON " /> <*rl ic
android: id= "0+id,zJalan "
<.:J..j., ( .. ......': android: :con= "@dtawaofct icon" android : layo ut*width' "wr6p-con ren t "
ini API Key yang di-g enerate dari SDK Android kita.
string.xml
<?r*ml version= ".1. 0 ". encoding= " utf -B " a. >
<I e90,1rces>
<rr ri,rj name='he7 Jo"></sLrr ilcT>
< str inq name= "app-name ">codinqrrnaps4< / s t r i rig >
</, a:.r-t,f t o.:>
codingmaps4java
xrackage com. wi1is. codingmaps4 ;
private GeoPoint getPoint.(double 1at, doubLe 1on) { Irita memberikan posisi lokasi ( - 6 . 89321L, 1,07 . 6 1 0 5 3 9 ) yang merupakan
return(new GeoPoint ( (int) (lat*1000000. 0), rrilai lokasi dari Jl. Ganesha, Bandung yang kita dapatkan dari
(int) (Ion*1000000.0) ) );
nraps.google.co.id dengan cara teknik yang sudah kita pelajari pada awal bab
lrrrgian ini, sehingga aplikasi kita sudah otomatis mem-uieu-kan lokasi dari
pri?ale cI66E siteFoverlay e,rt6nds ItemizedOverlay<Overlay1tem>
titip pusat lokasi yang kita tentukan, sehingga nilai gps tidak ada dikirim
priwate List<OverlayItem> items.new Arraylist<Over]ayIt.em> ( ); ,ltri hardwore gps melainkan kita masukkan nilainya langsung di-coding
5rrLvale Drawabl"e marker-nulI i;rvanya, untuk coding maps dari nilai yang dikirim dari gps akan kita bahas
t'ubric e marker) { rli program codingmaps5. setzoom(r7) adalah untuk nilai zoom dari maps
liita bernilai t7, anda bisa mengubah ini menjadi yang lebih besar atau lebih
x#i::?:i1f"--,- '
kccil sesuai dengan tampilan seberapa besar/kecil mop uieu yang
rI itampilkan diaplikasi kita.
items . add (new .OverlayItem ( getPoinr ( -6 . 8932 11, 107 . 6J-053 9)
"Jln.Canesha", "Jln.Ganesha" ) ) ; r ems. add (new overlayltem (getPoint ( -
populateO; ,,.8932LL,107.610539), ".Jlr.Gdnesha", "Bandung" ));
]
i.-...t1..rJ.. ini adalah untuk membuat keterangan yang ditunjuk oleh getPoint dengan
protected overlayltem creaLeltem(int i) { nilai ( -6 .89321-i-,l-07. 610539 ) . Potongan coding berikut adalah untuk
roturn(i uems.get (i) );
l neng-handle apabila user melakukan click terhadap button satelite dan
i slreet.
POver.r'id{: . ,,t
I
public voLd draw(Canvas canvas, Mapview mapview, ll,rtton satelitBtn = (ButLon) findviewByjd(R. id. Sate-7iL) ;
boolean shadow) { ii
I.,rLton jatanBtn = (Button)f indviewByld(R.id. Jalan);
super.draw(canvas, mapview, shadow) ; r'i I )r awable *ar146y=getResources { ) . getDrawable (R. drawable. marker) ;
I lr, r rker . set.Bounds
, 0, ( 0
tom (marker ) ; ',r,rrker. getlntrlrsicWidth( ),marker. getrntrinsicHeight
boundCenterBo L ( )) ;
) I ',.rp. getoverlayi'( ) .raa(lrew sitesoverlay(marker) ),'
li
I rlr
r,,-nevr Mylocationoverlay(this, map) ;
r\iV --: ,f i a1* rj ,,,rp. getoverlays ( ) .add(me) ;
protect€d, boolean onrap(lnt i) {
Toast . make?ext ( codingmaps4 . thi6, : r,) re 1 i tBtl]. s-etoncl i ::L.::::"::j?fl,onc1 i ckr,i stener (){
pqblic uoid onCllck(View v) {
ltems. get 1i) .qetSnippet ( ), map, setstreetvieu/ ( f aLEe ) ;
map. seLsat.ellite ( true) ;
Toast. Iaivcr}l (
^SHo.&?) . show ) i
)
roturrr(trlre), t;
1 ,rl anBtn. setonclicklistener (n€w OnClicklistener ( ) {
publlc void onclick(View v) {
E*vclrridr: map. set.SEreeEView ( Erue ) ;
map. setsatellite (fa16e) ;
]
]
);
tlefault.propertis
'r l,roject target
' ,, rget=Google Inc. : Googl e APfs : I
Android.Manifest.xml
.' ve.rsion="-1.0" encoding="utf-B'?>
r;r.l.fest xmlns:android-"http://schemas.andz"oid'com/apk/reslandroid"
package= " cam. wi I i s . ccLdingmaps 5 ">
. I l i. .rt lcr.
android: icon= "@drawabJe icon">
< i'.,, i - 1.: i:- a
:
".,r android ; name= com. g oog 7 e.
" and.L c: i d. maps " / >
< .i 't -v i i. y
android: name= " . codingmaps\ "
Gambar 12.16. Aplikasi codingmaps4 android : label - " Gscr i ig t app-nam? " >
view satelit <;nl,-3f ti-', r'>
<action android: name= "android' inEent. action-MAIN" />
.a;;4,;;, l' a.atoi a : name='' andro i d.jnren t . cdLegor v. LAn:HER " />
</ir'tcrt L.j er>
<,/:u-:'r. rY>
</aY,P':' .'.1
<us es j j
$ $ r Qn andrc id : name= " andro d. permj ss on - fl\lr.cEnlEf " / >
-perm1
<*.:r 5 pe?':r,i 1.'' rcI
androi d. : narre= "ancfu a i d . rte t m i ss i on . ACC E S 9-F I NE- LOC A'f I ON " / >
</:iJnl r!:.'>
main.xml
<?xmi version= "1. 0" encoding= "ut f-8"?>
<:..ncrrl 4J iuL
:m1lns : andro id= "h t rp ; / / s cherna s . a.rrdroi d. c csm / apk / r e s / andr o i d "
android. : ori enLa L ion= " ve.rt i ca l "
androi d : 1 ayoul-widt h= " f j .l I J>at ent "
android: Iayout -he.ighr= " tiTi pa tent">
<Tc \ L'./-L /,
Pastikan apiKey sudah anda ganti dengan apiKey dari Android SDKAnda'
string.xml
<?xmI version="1.0" encoding= "utf. 8"?>
< r e5(rU rr:eS>
<str i nq, name= "hel-lo"></st r : ng>
<s: r...:.r:il name= "app-name">codingmaps5</st r inu>
</tcsour '.',>
codingmapss.java
package com.wi 1is . codingrmaps5 ;
Longitude ioi.oig:z
public void onProyiderEnabled(String provider) t ) Latitude -O.aS9ZAA
public void onstatusChanged(String provider, int status,
Bundle extras) { }
Gambar 12.18 Nilai Lokasi codingmaps5
private void updateWithNewlocation(Location focation) {
String faLlongstring;
Textview my]-ocati onText,.
mylocationTexL = (TextView) f i ndviewBy-td ( R. i d. mylocationText );
String addressString = "No address found";
if (location != nu11) {
// Update the map location.
Doubfe geolat = Iocatj on. getlatitude ( ) * 1E6 ;
Doubfe geolng = Iocat.ion.getlongitude() *1E6;
GeoPoint point = new GeoPoint (geolaL. int.Value(),
geol,ng.intvalueO);
mapcontrol. ler . animateTo (poinl- ) ;
double fat = l-ocation. getlatitude ( ) ;
doubLe lng = lo"raion.getlongitude() ;
lallongstring = "Lat.: " + lat + "\nlong: " + ]ng;
doubfe latitude = l-ocation.getlat-LLudeO ;
doubfe longitude = Iocation.getlongitudeO ;
""'";i::ii:;i:iIi:::l:::ti::::i:ff:"* 1'ca'Li'n {
I
HANDLE TELEPHONE
I
super.draw{canvas, mapview, shadow) ;
)
o Dec'ma,
i';'Sexase'imal
L6ngitude 1q7.62f44f
LatitudE -5.8ry214
.rsMs
i
: ill lels 9p l
!r:fii t::li'rl
....** --:Si::lilll iliiii
, &ka)
Aplikasi DialDemo
l(ita akan merancang aplikasi yang kita sebut dengan aplikasi dialdemo, di
rnana dengan aplikasi ini kita dapat melakukan panggilan/diol terhadap
rromoryang kita masukkan. Buatlahproject dengan ketentuan berikut:
Gambar 13.2 Dial Masuk. Project name : DialDemo
Target Android 2.3
Application name dialdemo
SMS Emulator Package com.wilis.dialdemo
Activity dialdemo
Begitu juga dengan SMS, kita dapat melakukan SMS terhadap emulator,
pada pilihan Emulator Control masukkan number pada incoming number .ladikan coding layout main.xml nya seperti berikut:
I
Default.propertis
+ Project target
Target = android-9
String.xml
<?xnl version= "-1. 0" encoding= "utf-8"?>
<yesourc€s>
<$ t t: j. r.g nanie : " app:r]ame. "> Di a I erDemo< / s tr i ng>
</:' ', . .rc, :.,>
AndroidManifest.xml
<? rn.. version="?. 0" encoding="utf -8"?>
<nranitest xmlns:ar:droid= "itLp: /,/schernas.androjd. cam/apk/res/and::rsid"
package= " com. u' i.7is. d ia I demo "
anclroi d :versionCode- " l "
android:versionName= " t -0">
<*.pp} ir:rrl i *rr android ; i con= " 6drai,va bJ e I i c on "
andro i, I : I abcl=' @sLr i ng /dpp-ramL.'>
t
running aplikasi dan akan menghasilkan aplikasi seperti berikut: android : layout*wir11-h= " f: l. llrarer:t "
.rndroid: LayclrL he-ight= "wr<tp -conLcnL'
anclroid : text= "Md.sukkan tVomor penetrma "
/>
<,,,, 1,.ra:(r
androi d: id= "O ti d/tx:-PhaneNo"
android.: IayouL-widch=" ri LJ J)at:ent"
ancLroid ; layout -height= " wt ap -contenL "
/>.
< ,rt:ir-r.
arrdrcid: J ayout_width= "fiJ 1 - parest "
android: Iayout*hei ght= "rilr'ap c()ntenc "
andro id : text = "Mes sage "
/>
< .u' . Te/"-
android :'Lc!= " G+ id / t xEMe s s ag e "
android: layout--widih= " f i-IfJsarent ''
android : 1 ayout_he i ght= " I 5 Apx "
android : gravi Ly= " 16,p "
/>
<PLL; 'ln
andro id : i d= "A+ i d / b tn.Send.ctrf.5 "
andr oid : Iayout_width= " f il *pa rent,' 7
Gambar 13.5 Aplikasi DialDemo ndroid : layou t-he ight = ";dt'ap- c onten t
a "
androi d: texL= ".Sencl SflS "
/>
'/ r' iLrlOUL>
Aplikasi SMS Messaging
I)efenisi main.xrnl ini adalah untuk menghasilkanloAout seperti berikut:
Sama halnya dengan Dial, SMS juga merupakan merupakan fungsi utama
dari android, pada aplikasi ini kita akan lihat bagaimana membuat aplikasi
yang dapat mengirim sms pada sistem android. Aplikasi SMS ini akan kita
rancang untuk dapat mengirim pesan dari satu emulator ke emulator
lainnya. Buatlah project dengan ketentuan berikut:
Project name SMSMessaging
Target Android 2.3
Application name SMSApp
Package com.wilis. SMSMessaging
Activity SInS
SMSjava
packag€ com. wi li s . S!{sMessaging ;
. ., -u,Ef,on btnsendsMs; .
EditText txtPhoneNo;
EditText txtlvlessage,.
'/**.Called .when tile qctivity is flrst cr€aL€dl.:t i/
GOver ricle
public void onCreat.e (Bund1e savedlnstancestate)
"" ]
I
SMS dari 5554 sudah diterima oleh emulator 5556, click notifications di
emulator 5556 untuk melihat pesan, seperti gambar berikut:
Perhatikan emulator yang jalan aplikasi sms dikenali dengan number 5554 Gambar 13,9 Emulator 5556 membaca pesan.
dan emulator yang satu lagi dikenali dengan number 5556. Isikan SSS6 di
nomor penerima dan tuliskan pesannya "ini adalah pesan dari emulator
sebelah" dan lihat apakah emulator 5556 menerima pesan tersebut. Apabila
dilakukan dengan benar akan menghasilkan seperti gambar berikut:
Aplikasi SMSBoom
Berikut adalah aplikasi yang kita lakukan kostumisasi dengan aplikasi
smsmessaging yang di atas, di mana akan dilakukan pengulangan untuk
mengirim pesan terus (bomb) sejumlah variabel perulangan pengiriman
pesan yang di input oleh user, aplikasi ini sering digunakan untuk
membanjiri nomor tertentu dengan sms. Satu sudut pandang aplikasi ini
agak sedikit berbahaya apabila digunakan untuk hal yang tidak benar.
Desian tampilan inputan seperti di atas di mana ada 3 isian yaitu nomor,
pesan, dan jumlah pengiriman sms. Coding tampilan diatas adalah sebagai
berikut:
android : layout-x=' Apx'
anclroid : Jayout-y-
2
") 0px " sms.Java
</:.,1 ..:'>
<l.rx.'. -i t
android: id= " G-rid,twidqet4,L "
android: layout_wi drh= "rurap_conl enr "
andro jcJ : 1 ayout- hei ght=' wt ap-con'.ent "
ondroid:tcxl="Mcssage 1()opin9 (Nu.nt)er ) "
android : layout_x= " 2 ?px "
androj-d : 1 ayouL--y= " 2 I n px "
finish () ;
<,/1'exrV iew>
</Al_r' .,,11 q .a,/,)u..>
inc i;
.:,.;rX.::'".." fl.oat n1 = FloaL.valueof (akhir.getTexL () .LoStringO );
wait(200);
] .eaich (hcerrupt€dException
.
.q,);,,:l
,:..:iit;
{
i . /l ryaDo Auto-generaLed't,.lll
catch block
e.printstackTrace();
) , ,,.,1
...,:t.l
\.
else
foast.makeText {getBaseContext ( } ,' l
"Please enter both phoRe nunber and message.n,
Toast,IENGT}I SHORT) , show( ) ,
)
));
btnExit . SetOI1C 1 icklistsener new View' OnCl i ckl,i s eener
{
(}
@overiide i
));
)
Jumlah message looping tidak dibatasi tetapi sebagai catatan ini akan
berpengaruh terhadap kinerja smartphone Anda, apabila memiliki souT'c?
memorA dan cpu yang lumayan akan berjalan lebih kencang. Untuk
menghindari lambat diberbagai macam hardware perangkat mobile,
lakukan kostumisasi aplikasi dengan terjadwal mengirim sms atau dibuat
range pengiriman misalnya dalam z menit pertama dikirim 5o buah dan
seterusnya sejumlah mes sog e looping -ny a.
l':r<la bagian ini, kita akan membahas bagaimana cara menjalankan aplikasi
l,t'riect yang kita buat langsung running di deuice android kita, tentunya
l,;rgian ini dapat Anda lakukan apabila Anda mempunyai deuice smartphone
,,rrtlroid.
[&qq'.r;] Drruesarrr
l:iym.] ,.**.a.
Google USB driuer sudah di-update untuk source Android SDK yang u,,,r .p,..
[.irqryL'-",] 'ci'rt,
terdapat dalam CD yang di-include-kan dalam buku ini. @i,.1 nrr"*a*,**r*,
. Setelah USB deuice android Anda terhubung dengan komputer untuk
f
, Terr onty
sebagai berikut:
Gambar '14.2 Google USB Drivers Packages.
Windows 7
Untuk menginstal USB Driuers pertama kali di windows 7 adalah
sebagai berikut: Berikut adalah contoh AndroidManifest.xml dari aplikasi jamz yang
'/ Hubungkan android deuice dengan USB komputer dibahas pada bagian actiuity yang sudah di-setting untuk running
./ Klik kanan my computer di dekstop atau dari windous explore langsung di deu ice l<tta.
lalu pilih manage. - ma::i
./ Pilih device pada window sebelah kiri.
f r-.s,-
><rnlns : andr oid='http: / / schemas . android. com/apk/res /android,,
,/ Klik kanan pada nama perangkat (nexu, samsung, dll.) dan pilih package=' com.wllis . j am2 " >
. nppl i ca i iori androi d: debuggable=,'true', ,
Update Driuers Sofnuare sehingga menampilkan harduare update <oct i",ri ty android:name=". jam2" android : label=',jam2,,,
uizard. <i1Leut-[iILcr
<at'.ion android:name="android. intenL'action'MAIN" I:L ,'. tl, dll (yang apabila kita melakukan command /ine tidak terlalu susah
r' 1 r -r ardroid:n,lme-"android.inLent.category'LAUNCHER" rrrcngaksesnya). Berikut adalah gambar contoh debuggin project aplikasi
.. ...:.,or ' ita: -
..- l,rrrrz kita dengan commandline adb
r l.l i JL -"'.
. , i .r,
DDM-ware?
sebelum running aplikasi, pastikan bahwa setting IJSB Debugging padir App dexription:
Onlift
deuice smartphone android kita sudah aktif, Menu-Setting-
73
2il6 B E6oo
Pro.es5 IDi
Aplication-Development- dan aktifkan USB Detruggrng isss g 8601
Suppo.ts PrBfrting Centrcll
11$ .f$Q, sctmry,,*$t aplikasi di deuice android kita untuk memastikan apakah aplikasi yang
,,@, - , lf rrl<a
l. tta debugging sudah masuk.
iNS&tl
Online 2.2
2s46 A
2s8s B,
86oo
8601
Package Aplikasi Android
'ir.lrelum kita melakukan distribusi aplikasi kita tentunya kita harus
rrrt'lakukan package terhadap aplikasi kita, frle ".apk sebenarnya sudah
,,r,'r'upakan package aplikasi android yang kita bangun, namun dianjurkan
,,' a I i kita melakukan p ackag e den gan menyertaka n certificate pada aplikasi
l<
l, rtl sebagai bukti bahwa aplikasi itu adalah aplikasi yang kita
Gambar 14.3 Nomor deYice android. l,;rrrgun/deuelop sendiri . Certificate di sini adalah certificate atau kunci yang
l.rt;r dapatkan dari google di mana cara mendapatkannya sudah dibahas
g,,rrla bagian coding mzps.
Kemudian posisi.Tile apk dari setiap project android kita berada padafoUtr
bin di setiap project android kita. Copykanfle ".apk tersebut kedalam/oldt'r'
Berikut adalah cara melakukan Package dengan menyertakan certificate. a, .v+d c:l:l: Ap!-r(a::::
,/ Buka project dengan eclipse dan cliclc kanan pada project kita i Keyslore selection
I
Lo(ationl F:\d.bu9.keystor" rt
New ) -f
: t"l ,
' a a Shdxlln Alt+Shift+!t >
,.
I .l p"*. Ctrl.V
1: -.
iX out.t. Oelete
. t , i:.il.!e {iem a.*.i lr,i-Ah. inill; $.t\ ^
j e"ita potn
n*ator
'I
i Alt+shift+T
i du Imgod"'
: ej E po(...
ClsE Projed
Clorc Unrdakd Prujeds
Pasryordr
Gambar 15.5 Export Sign Applicotion.
Confirm;
vdlid:ry kars)r
O Aoeldtb.
Etmd Ad.dd
Firrt and Lait Name Nazruddin gEfaat H
i -.-__*
i Prored Checks Organirational Unit: 5TEI
p.{ormrdseror(.F !rrotule,-,.th+r!pl.Ldioa.d.bic.aoded
'\! i
Organi:ation: ITB
{:?)
L:",hl:l[:r -:
Gambar 15.8 Pembuatan Key.
._:'!3tal
$qi*sdij!r
$w
BAGIAN 15
PROJECT BONUS
ril t'@ r[:-Iry]*1re-,:l
Gambar 15.9 Tempat Hasil file apk.
Setelah proses ini kita dapat melakukan instlasi fi.le apk ke deuice kita
dengan cara adb command line atau meng-copy-kan fle apk tersebut
ketempat penyimpanan deuice dan melakukan proses instlasi langsung di
device kita dengan cara menge-click file apk tersebut. Sebenarnya setelah
kita melakukan package aplikasi android kita dengan teknik di atas berarti
kita sudah siap untuk mem-publish projectl<rta dan siap didistribusikan.
Pada bagian ini akan kita bahas berbagai contoh project androidyang dapat
diunduh di situs resminya devoloper.android.com.
Aplikasi Notepad
Pada bagian ini kita akan membuat aplikasi android yang berfungsi seperti
notepad pada sistem operasi windows.
No,tepade pe!'tamaku
Ini adalah tutisan saya
Gambar 15.1. Aplikasi Notepad Gambar 15.3. Aplikasi Notepad menu simpan
tO:39.F
Notepade pertarnaku
Ini adalah tulisan sayal
Aplikasi Facebook
Aplikasi facebook yang kita bahas adalah aplikasi facebook dari
androidpeople.com. Buatlah project android dengan ketentuan sebagai Gambar 15.6. Configure Poth aplikasi facebook.
berikut:
Project Name : Facebook
Buitl Target : Android 2.3 FacebookRo cketExample j ava
Application name : FacebookRockeExample package com.wif is. facebook;
Package name : com.wilis.facebook
Activity : FacebookRocketExample import net . xeomax. FBRocket . FBRockeE.;
ifiDort net . xeomax. FBRocket . Facebook;
Min SDK :9 iqrort net . xeomax. FBRocket . toginlistener,'
iryert, net , xeomax. $'BReeket, $eir1re]9Er.forqxc€pL Lq;iri.'.'..
Tambahkan jar fbrocket-o.la ke dalam projecf Anda dengan cara click kanan iryort android. app.Activity;
i4lrort android. os. Bundf e ;
jar pilih build path pilih configure built path, kemudian add External
Class Folder. Tampilannya confrgurepoth seperti gambar berikut. public cIa,ss FacebookRocketExampLe €xt€n a Activity irqrleueatg
EharieEacebook( ) ;
.,i.'.pe]-'m:isi;:ion android:rram€="arldrord.permissjon.,f]V?Eal,IEf"></'.:,+:'
::.i ll4)
: . ,'>
Gl 1l:oop*
trN&i,:
Ms*dartar fa{ab$qk
Wl.#'.*
Gambar 15.7. Aplikasi facebook login.
l.ii{iUt*.
"rhrirl ;r
ixrur;So
BAGIAN 16
.1 rlt{ ill!l!:
BEKERJA DENGAN MEDIA
Spe More Stnries
Pada bagian ini akan kita bahas beberapa aplikasi yang berhubungan dengan
rnedia. Salah satu fungsi smartphone dan tablet pc android adalah sebagai
lremutar media yang mobile yang sangat digemari oleh pengguna, baik itu
rrntuk memutar lagi seperti mp3, mp4, maupun untuk memutar video.
Aplikasi Pemutar Musik
ini kita akan membuat aplikasi android yang berfungsi
pada bagian seperl i
t'\*
W untuk image buttonmemainkan lagu.
rnendefenisikan uarioble sebagai Media Players seperti coding di bawirlr private void playO {
mp.sEartO;
berikut:
play, selflnabled ( false ) anilroid : €nabled: " faJse "
pause . setEnabled true) (
stop. setEnabled ( true) ;
)
lmageButton Pause
Brivatevoidstitr(t)-: {, , ,.
mp. stop O ; ua!e3utfon android: k1=' G+i.dlparu*.'- -
pause..,S.EtsEnab1ed { f alSe } , android : src5 "Gdrawabl e / Pause "
.........:..'.:r*i,seekTo(0).;
., : E1i!y.setgnabled{truel
i .1., , '.,)-. , ".r. ,...i., lmageButton StoP
r.ii i catch... {Thfouiable t..} {
goBlooey(t); I rageButton android: !d= " 6+id/6top1
aodroid : sic q " @'drawable / s EaP'
)
)
. i android:layout-heiqht="wrap-cortent'
privaLe void pause ( ) ' eindroid; layoul ,widtbt "wrdl)'collf enl " '
{
..: ..mp.pauseo, andro id : PaddingRight= " 4Px "
: llx;iSll;i:ii:i[:i:;]r, : '
Selangkapnyafile layout xml kita adalah sebagai berikut:
st op . setEnabled ( Erue ) ;
)
Main.xml
Masukkanf/e mp3 sample ke dalam/older raus di project android kita dan
versi on= " 7.0" encoding="utf-8"?>
- ?:..rrl.
akan di-lood dengan fungsi seperti berikut: . t,inearlayolll
;<mlns i andio iii=lhf;ipl / /schamag. androld.eom /apk4res/andfaid'
private void loadClip ( ) t androi{ : orientaticrhs "vert j caf '
try { android : lavout*width'r "fi.l:Jpare'c "
mp=Mediaplayer.create(utris, R.raw.mar s danokratl i android : layout-height=' fi llrparent "
setonconpleLiolir'iqtener(tbie) ;
. , ::mp'
, .'.'. c*tch..{,fh:r0wab,lg tl { <L i c+arLdYou'.
goBlooey(L); .android : tayouL widthsi f il lparent'
l..:']}'','...........i..
androi d ; layout-heig]nL= " wtap-conEent "
)
android : Padding=' 4P* "
Dari coding di atas bahwa sample mp3 yang akan di-/ood adalah mp3
dengan namafile mars_demokrat.mp3. apabila Anda ingin mengganti bisa ' i ' androl-d: layou! height,a "w{4p-conte'1.t1' ,.
: .'
i
r'.,1r:,-.]
Dublic void onDestroy0 {
sulror.onDestroy{);
lf (stop.isEnabledO) {
sEoP O ;
1
j
]
Pada bagian ini akan kita membuat aplikasi sederhana tentang doa-doa
r' harian dalam Islam, aplikasi ini sendiri dapat Anda dapatkan dengan di
,, .'._setfitle("SXceCtioiii'.,;,,i i
E
doa dalam bentuk gambar dan suara yang berisi bunyi dari doa yang dipililr I)o'a Agar Diberi Limpahan Rezeki
tersebut. O Do'a Agar Mendapat Kedudukan Yang Mulia
Langkah I
Persiapkan menu aplikasi dimana menu menampilkan pilihan berikut:
o DoaBersumberAl-Qur'an
r Doa Bersumber Hadits
o Bantuan
r About
o Exit
Menuhadist.xml
.?-r I version=''7.0" encoding= "uLf 8"?>
. ,,,,t i-,-.cL
xmlns : android= "ht Lp: / / schemas " android ' cam/ apk/ res landroid"
android : layout-width= " fj -lJ:rarent " -1
<Texl\ii.e?l
androi d : id= "@+ i d, fabe l "
android : texi:=' G*id1?exlI/iew01 "
android : layout-wid!h= " wrap-c ontent "
anclro i d : I ayout-height= "h/rap- cantent "
android : Lextsize= " 3 Apx' / >
Dari uraian diatas kita memerhkanlayout xml sebagai berikut: </ l.:,r-l irti,:n:i>
o Menu.xml untuk layouttampilan menu utama pilihan
. Menuhadist.xml untuk layout tampilan menu pilihan doa dari hadits Menuquran.xml
o Menuquran.xml untuk layout tampilan menu pilihan doa hari Qur'an <?:<;rl. version= "-1 ,0 " encocling= "urf *8"?>
. Dr.xml untuk layouttampilan di mana doa-doa dari Qur'an ditampilkan <li-is n.l-uleI,aycuf.
r Ddr.xml untuk loyouttampilan di mana doa-doa dari hadits ditampilkan "}t bp j I / schenas . androi d. ioml apk/ res landraid"
xmlns : anrlroid=
android: Iayout widrlt= " ti I I parent "
android: layouL-heiginf= " f i7L3)arerL ">
Sementara kita memerlukan beberapafile java sebagai berikut: (ir,:i-'-'-.
. Menujava untuk handle tampilan menu awal .
Nlenujava
package doa. islam;
)
Intent . AC"r0rf_.MAI]v) ;
.1t . ;.1 .
''mef hocr ir. lkan nl.:ng(lverlc', merhocl u^L..;trtemcl icl. /ang "1da
exit. addCategory ( Jntent . CATEGORY -HOtLEl ;
p"*ge l ldss L.ist a,:; jj,'iiy
- methc,J ill.i -tool-. iLlpgrgS-4 apabLlu i ai].a salal, satr) lLem clidri exit
1is]: rterlu ydng dipi l in
. setFlags ( rnt.ent. . FLAG-ACTIIrrY-NEW-TASKI;
Xrrotocted vol.d onliscltemCl-ick(Listview 1, View v. int
position, long id) { startActivity(exit);
eu;rer.onI,istltemcfick(1, v, position, id) ;
// Ge1: the it.enl thal wa$ cliclleC
llc!!:lqf.o,9 r,ilai rcx: Tang uklik ) )' . setNegativeBut t.on ( " Ti dak " ,
Object o = thle.getlistAdapter( ) .get,ILem(position) ; new
String pilihan = o. toString ( ) ; I Ir os r n t e r r ac
\.ar/rmn: ldr ''."si-: r ih:r:r :rf IJ JJI+r benrLt) fncst
tampif kanPil ihan (pi lihan ) ; :r: "'"". r r'.T;r',: :r ;.. rrace d i a l os,
) int id) 1
dialog,cancel();
' Igtipi-}!g: Activity !-?!,Ue! {Slig*q nenu y.dris a-ipj.iil,.
)) 'show|;
protectad void. tampilkanpilihan(String pilihan) { ) else {
try { Toasl. rdaker€xt {
ri lt:r.enr '1i l,r|okan unt''*li sebagai p*rrLgenal suatrr tlrts.
l r. 1...r 'i r r '/
IntenE i = nuI1; l,ilihan ...
Dialoglnterface. oncl-ickl,istener ( ) {
lrnport android. app.Activity;
import android. aPP.AlertDialog ;
Gfir,*::ri*e
public woid onCreate(Bund-le_ icicle) {
suirer. oncreate icicle) ;1
*
gambar setlmageResource (R drawab Ie'doaakarunakanJ;
- '
.ffir S ffi
l'lda bagian ini akan kita bahas beberapa aplikasi yang dapat dikategorikan
',t'lragai aplikasi client seruer database. android sebagai client akan
lrrhubungan dengan mysql seruer dengan perantara php, secara konsep
,lirsar di gambarkan sebagai berikut:
rromor-lrp varchar(1,.2) NoT NULL,
Android Device Server Side I,RIMARY
)
KEY {'username' )
I"l'%
[ .."iffi;i
t re#ffi"I
langkah Il
hffil
Er :--:--l
Kita memerlukan 7ile php sebagai penghubung (web seruices controller)
lsn ,.. :-- -J
I; E (".',:;'"r vang berfungsi penghubungan/pengantar data ke mysql seruer.
,t\ Simpan.php
+
r:----El."ffil
I :
-":4,4#*il l
II : *":&ii#a1l
.i."&sffiE- I
'?nhn
'
irr=5-pOST [ 'username' ] ;
$pw:$,PosT['password'];
$rpw=$-POST [' repassword' ] ;
Snl=S-POST [ 'nama ' ] ;
$jk=$-Posr['jekel'];
,.',,,,.. .'...,..., .'.'l ,-
i l
$a1=$_POST I' alamat' I ;
$nt=$-POST L'nomor-tlp' I ;
$nh=$-POST [' nomor-hp' ]
Ngl
;
Langkah I /loot adalah user database dengan passuord-nya dalam hal ini kosong.
membuat database-nya dengan perintah berikut: I)enggunaan _POST atau tanpa _POST tergantung setting uariable globals
sistem apache/php yang anda gunakan, apa on/off.
creaLe database latihan;
retype-Password:
lt(rxt android: id= "8+idlet*un "
Ii
rr rr Iroid : rfio.xWidth= " I 4 0,sp
ldarnaLengkap: r, Iroid : 1ayout heighl= "tr'rap-corlEenc "
sr;\
i rr
. . ir. VJ>
I cw r t-1/
rr rr ' lext. "Pas,sword j "
l;6id
Alan'lat: ,, r, r ro i d : 1 ayout-wid Lh= " wr ap-con tenL "
,rl iroid: layoul-heigrlrt.= "rllrap._corf cnC /
,n,1roid : texLColor= " #t t0 A00f t "
Fiornor YIP:
. , iit'lerxt android: id= "6+ ''dlet p!,/"
Nomor HP: rrr' l roj d: Iayout-heighc= "wt ap-coatent "
rrrr roid : layout*width=
I "matclurarer E "
rrr, Iroid : 1ayout-gravitsy= "center*ver tical '
rrr, Lroi<l : inpu.tT:rpe* " Lexf Fassfi/ord ">
' '. I L X t >
,,_) _)\i>
L lr l elt$w>
Tambah-user.xml '
r I I roid
" : e,l
: text= "retype-Pa6sklorcl."'
<?xml versi on= "1-0 " encoding= " utf
-8 "?> , rr,lroid: layout--wi-d.t1= 'urap-contenI "
<Scro,l lVierr }snlns : andro id= ! h t ap : 1 /$chenas.. 4ndr a i d. c on / apk / r e s,/ androi d' r l lrcrid : layout*height= "wrap.-cofi te'nx "
. android: orienlation= "vertica"l " r, lroid:
, r textColor= " *t fOA 0ltf '
' android:layour*widLh'"fi77J)arerlt" ' 'l
'
<TexLVi ew
android : text= "Jvo.rnor ?-1p.. "
android: layouc-widtll= " wrap_content " Langkah IV
android: layout.-hei ght= "wrap_content "
android: textcolor= " # f f 0 A 0 O t f " I trratlahTt/e java yaitu tambah-user java dan CustomHttpClientjava
/>
'l'ambah_user.java
<EdiitT6xt ",'andra'id: Iayout-heigtr-tiiiiwr';I1-son ren r "
android : id= " A + id t et_no t e7 " I,, rckage com,.w11ig,,,ptr.lxnysql ;
android ; layout.-width= " mat chJ)a rent " >
</ Edi tTexr > lrnporto::g,.apache1hitp'NameVa1uePdiri;.l'
< /TabIeRow> r rl1;ort org . apache , h.itp . mes sage , Bas icNamevaf uePair ;
import android. aPP. ActivitY ; Arraylist<NameValuePair> postparameters = new
lmport android. content. Intent,
imiort android. os. Bundle ; r.r ayl-istcNameValuePair> ( ) ;
r
postParameters. add(new BasicNamevaluePair ( "username",
import android.view.view; .,rr.qetText ( ) .toSLring( ) ) ) ;
import android.widget. Button; pos LParameEers . add { new Bas i cNamevaluepa j" r ( " paB sword ",
import andr'oid. widqleL . EditText ; .tostrinq () )
imporL android. widget. RadioGroup ; t,w.(trelText ( ) ) ;
postParameters . add ( new Bas I cNamevaluePai r ( " repas s!,ord'',
imiort android.widget. TextView;
' r,w.getText- { ) . toSt-ring ( ) ) ) ;
posLParameters. add(new BasicNamevaluePair ( "nama",
public class tanbah-user exlends ActiviEy {
' l.serTexLO.toSEringO ) );
postParameters.add(new BasicNamevafuePair{ " jeke1". typel) ;
EditText un, Pw, rPw, nl, af , nt, nh,'
posfParameters . add (aew BasicNamevaluePair (" alamaL " ,
RadioGroup jk;
Textview error; ,rl.getTexto .toStringO));
Button simPan, keluar,' postParameters . add ( new sas i cNameValuePai r ('' nomor*t lp',
rrr . get.Text o .rostrinso));
postParameters.add (new BasicNamevaluePair ( "nomor 'hp" ,
/** Callad when the activiey is firsr created' */ rlr.gretText{} .toStringO ) );
nh= {EditText ) f indviewBvld (R. j-d. et.nohp) ; res = res.replaceAll t"\\s+", "");
GOverride
public Yoid qnqlick{view v) { catch (Exception e) I '
$,#(ffiw
-,.:.-- .
,,,,,-""'. ,_
Siring
,
:,
;
.tlgre=nr1}1 .
,ut )
switch (jk.getcheikedRadioButtonldO ) { ]
case R.id.Pria:
tsype-'iPria n '
break; i);
caEe. B.,.id.rperefi{)uan : i i. ,
txle*{ Perempuan"
public void keluar
,.
(Vj-ew theBuuEon)
break;
] {
InIent a = new fnLent ( this, l"ogia. cl"ass ) ;
slarlActivity{,a);
* orelurn an Htfpclidrit. .obj'6ct with conoectsion parameiers set
i
private itttpclient getHttpclient()' { :
"e*.ti"l
if (mllttpcl-ient,ir.i ru1.L) {
.t'
Karena database kita berisi text untuk-7te/d jekel sementara diinputan/ornr .. mHLtpcl.ient 'ii new lefaultElt$Cli€nt{)i ,.t ,', . I :. ..
kita adalah berupa radio button sehingga kita memerlukan kondisi berikut ar*a*.,,Il,ttpFarams 'paramF. =. :nHtrpclient.getParams ( ) ,
untuk mentransferkan pilihan jekel kedalam text. . attpconn€qtionParams ..EetConnect idnlimeout'.( p4iams,
II'I''I'P_TIMEOUT) ;
Blsd HttpconnectionParams. setsoTimeout (params, HTTP-TIMEOUT)
l/a1ur variabel utk menam;x-rnqepfllhsn Jenis'kel&rfH Conn!-IarlagerParams . setrimdout { params, HrTP*TrMEour } ;
r-r,1ri,...,.. switch (jk.getCheckedRadioButtqnldt)') {
return mHttpclient;
' ' '*'*'il11:"f;ii'1:l', .. .,,..,
:
I
Jalankan aplikasinya dan lakukan input data seperti gambar berikut dan . S cni-
$-.g:_,1"
:q :-t{tg:.y. lHW i
l$ ! rabre Data
l,-::*. j-ry.qg.. "
pastikan isi database di seruerbertambah setelah tombol simpan ditekan. , -\ pmplr . -.
Strrd Proci
. Funeiim:
. Tr(gtr:
tilakan'Login sebelun imem6kai aplkas! titditText android : id- il g+idle t*un 'i
Uggmannel.
'i
,, , ''
.:-i..-
, r
. r r
rrdroid : layout*width= "maf ch.,*Irarent'r
rdroi d: layout-height= "wrap-content '>
l . EditText>
'lexLView
Pasxuard:. ::
r ndroid : text='lPassword :
. F:ditText>
'l'.rbfeRohr >
,,rii." android: text= "Login"
,, ndroid: id= " 0+id/btn-Iogin "
, r ri<1roid: layout;width-'wrapicontent " .
. rr
idroid: id= " G+id/btn-cancel "
rdroid : layouL*width= "wrap-cQnEent "
<?rsnl version="1. 0" eacoding='utf*8 r"> rrrclro j-d. : layout-heiEhti: "wrap-cQnteint " l
<LinearLayout / Bulton>
xnlns : android= "htlp: / / schemas.. android. comlapk/res /android"
. android: orienLation= "vertical " 'l'abIeRow>
android : layout*uidth= " f i I liarent "
android : layoul*height.=' f i l1Jarent "
android: background= " # ff00 ffff' 't'r:xtView android: text*' '
. rr r, lroid: fayout-height= "wrap-content "
, r rrclroid : id= i G+ld/tv-er.roi "
<TableLayout
>cnl,ns : : I lschemas. aldroid. com/apk,/reslaodroid'
android: " http . , r i<lroid: Layott-width= "wrap:-conLen! * >.
GOverride
<Brrttqn android:L€xt*'tBuat AccOunt'.' 11.
. __ o.:ry"isE<NamevaluePair>
< /BuEton> postParameEers = new
Arraylist<NameValuePair> () ,.
:iffi:::::il::i. pos t Fdralnet. ers . add { new Ba s i cNameva 1 ue pa.l ri ( ." username ",
rrn.get.Text ( ) . tostrinq( ) ) ) ;
Buatlah"lile loginjava seperti coding berikut ini: .. postPiiranieters . add ( new Aas ic$amevaluePalr (" passwqrd,rl.,
l)w gerrexr{}:toslrlnsil)); ,,,, ',,,,.
, ,
Loginjava String valid = "L';*/
String response = nulI;
inqport java.util.Arraylist ;
try {
,, ..
Textview error;
Button 1ogin, cancel, daf tar; lor ! q,et:text, { " Correq ! Uger{ra$e or. Fassvrord!
e,f ) i
,.,, .. r tt
. ,,.i ..
)
tinavl ay:dlR.id,btn*fosin) ; ,. .
lil..,.,.ll,,i;nlni.,{nulioni
,
login. setOnC.l"i ckl,i sqener ( new Vi ew. OnCl ickli Etener (.)
Selanjutkan kita akan buat tampilan menu utama aplikasi yang akan diakses
));
j setelah user login kedalam sAstem, menu utama untuk kasus ini adalah
seperti gambar di bawah ini.
publ"ic void taflhah-uscr {View theButton)
{
// disini menampilkan menu utama atau hal selalah login
berhas i I
// dalam haI ini menu blum ada yg kembali aja ke tambah-:user
Intent i * new Inl.ene(this,tarnbah*user'c1ass) ;
siartAc!ivirY(i) i
Jalankan aplikasi sehingga akan muncul, silakan isiform login dengan user
data yang sudah ada di database, berikut contoh apabila user yang
dimasukkan salah user atau possu.,ord-nya salah.
Menulayananiava
Silakan Login sebelurn rnemakai aplikasi I,ackage com.wilis. appmysql ;
Username:
i mport android. app. ListActivity;
import android. content. Intent;
, farah i mport android. os. Bundle;
i mport android.view.View;
Password: i mport android. widget . ArrayAdapter;
i mport android.widgeL. ListView;
ataallal import android.widget.Toast;
public class menulayanair extends LlstActivity {
tll
hgin
I:.*. - Ii Fncd I /** Called when t.he activity is first created. */
,i+ul L_ -;: ;
BAGIAN 19
IilOBILE LEARN'NG
Dari gambar di atas ada dua bagian inti yang bisa mengintegrasikan Androirl Ite re.trmsded *rat yDu dose all ohtr app&.an.f,s
beture sbrtru sEEp. l'1xs wlli mdF itFsibl€ to uFdEle
dengan Moodle, perangkat Android itu sendiri dan Seruer yang terdiri dali reklst lvrEm filet fl$tuthauhq b retut tru.
Moodle dan database-nya plus connected file yang berfungsi sebagli ald Neit t..ontnue
perantara.
Ada beberapa peralatan yang dibutuhkan untuk membangun sert)er ini, rli
kHJll.dim
antaranya: S@se ttE lolder in *hich io inslail\AuP I 7 l.
1. Localhost
seM slltutd xffi 1.7.1in 6t AIoME tulds,10 imHln a dfi.rent fslder, dclt
Untuk localhost kita menggunakan Xarnpp sebagai localhost, karenir &osri dd dert onoher fuller' S* &d h.stnffi.
li r: ?;::ri
lurset,SCFG, ,' r.
l
hilangkan centang pada seruice section, kemudian klik install dan tunggtr.
4. kemudian buka brouser ketikkan http://localhost/phpmyadmin
dan buat sebuah database dengan collation = utfS-bin dan MySQL
connection collation = utfS-bin. NB: nama database di sini harus
Instalasi dan Konfigurasi Moodle sama dengan nama dbname yang ada padafile config.php tadi.
5. Masih di brotuser, ketikan http://localhost/moodle dan ikuti
1. Extract moodle-latest-19.rar ke directory C:\xampp\htdocs.
instruksinya, hingga moodle ter-insfall. Jika telah selesai biasanya
2. Buatlah sebuah/o/der data directory di C:\xampp\htdocs , dengan nattt;r
tampilan browser kosong warna putih dan untuk itu kita perlu
folder moodledata. melakukan r elo ad ulang terhadap url http : / / lo calho st/ mo o dle.
3. Untuk pengguna Windows 7 ataupun Vista atau Xp, copy-kan .lilr 6. Kemudian kita masuk ke folder atau directorg
config.php yang ada pada CD, kemudian edit file config.php tersebtrt
C:\xampp\htdocs\moodledata. Di sana kita akan menemukan Ttle
mulai dari nama dbrype,dbhost, dbuser, dbname, dbpass, dirrool. .htaccess. edit.file tersebut menjadi seperti di bawah ini.
wur$Toot, dan dataroot.
.7
Kemudian isilah konten dari moodle tersebut, mulai dari username,
course, dll. Untuk cara mengelola konten moodle bisa dilihat pada
file bagian manlg e moo dle.
. t$ mobjlelr.mang
Setelah selesai membuat tampilan untuk login,kitalanjut ke tampilan untrrl android : layout*height='wral1-contefi t "
android: ori entation= "vertica7 ">
halaman utamanya. Di sini kita memberi nama file-nya welcome.xrnl
halaman ini berfungsi sebagai navigasi untuk menu-menu yang akan kitl lJuLton
buat nantinya. Berikut code dariwelcome.xml android : id= " e.+ id/ ibKon t en "
android : 1 ayout-widt h= " wr ap-c ont en t "
androj d : layout-he ighl= " wrap-content "
<?xml version= "-1 . 0 " encoding= "utf -8,'?> android : Iayout-gravity= *6'"rra", var t i c a L
<ScrolIView xnlns:android="http:t./schemas.android.com,/apk/zestandroi<1" andro id r background* ".Edr awabf e / kont en "
android : id= " @+ id I sc roJ. 7Vi ew1 " androidrLexL="" />
android : background= " # f t t t f t'
android ; layout*width= " fjl J._.paren t,' E. /'LinearLayout>
android: layout_heighL= " fifLJ)arent "> INW
n
re
LinearLayout
<LinearLayout
android id/ l inearLayout l,'
: i d= " @ +
r android: id* " 6+id,t 7inearl,ayout5 "
android : layout-widtin= " mat chJ)aren t "
android. : layout-widt h= " match 3.ar enL' rt I android : 1 ayout-hei gr.x= " wr ap-c onten t "
android: Iayout-heig i.L= "match-parenE " android : orientation= " ver t i ca 7 " >
android : orientation='verti ca-1 "> i
'l'extview
<Linearl,ayout s android : id='t A+ idl t\.KanLen "
android: @+id/7inearLayoilt2 '
id.= " ttl android : 1 ayoul-width=' wrap-c ont ent "
android : l ayout-width= ma t chJ)ar en t "
" android : 1 ayout--hei gl)t= " wr ap-c o.n te.n t "
android : layouL_heighL= " wrap_content " android : layout*gravity='eenter vert ical "
android : orientation= " verticaJ- "> ffilsD aadroid : lrextstyLe= " ba 7d -
android: textColor= ' # A0 AA00
<Texwiei,r
android : id,= " G+ id / I ogou t "
H android: texE= " MATERI"
"
androld:oiieni;tuion*"vefticb1.1>., . .,:.:'
<ButLon /LinearLAyout>
..,. andrdid tidi+i!',@*id,/j ITTUgas]' I - iii '
rr :
<Text^View
:- /Linearlayout>
::3::i1:i";.':l#:Xfi:)i-,u,r.,j,,. t,inearLayout
rlnilap-co
android : layout-trei ghb= nt ent' dndioid.r id= " &+ id / T inearLayout l 3 \
android : textstyle; il ba ld ti android : layouL-widtr1= "natchJ)arent "
android : textc.olor= . #00 000 0 " andro.id : 1 ayoul*hei ght= "h/rap-salten t "
android: text= " TUGAS" android : orientation.'vertica-l ">
/>,
'rexlView
</Linearl,ayout> . androi.dlid='tg+id./tvDonTot''
android: layout-width= "wrap-contenE "
<Lineailayout' ,, android : lefyoul*he i ghl* " wt ap-cont ent "
android,:textstYle*"boZd* .
<Button /Linearlayaut>
andioiilrid;.'t@.*idlibNiT,iti.tl .,,t"..,,,'.,,,,.,,,..'.'...,,,:::',,',' ..
r : andfoid,IeyoUL*height*,fiJlJagenbr1, . ,,
::
<TexLView
android : id= " G+id/ isi "
. .,,android'; layoqt ,,rnarginTop=r'r'5p'x' . , I ., i
r..r
,, 1., .,, . . iindip,id: layout*width= "fi_1_lJrarent,
.: i :i:i andloid:1.ayput*height+,,wJ:ap..go4tent*
'..i.'r., . . rand::Oid:grraviLy*."J6ft"''
< /Linearlayout>
< /Linearlayout>
E. showdetailnilai.xml
File ini berfungsi menangani tampilan untuk nilai yang diinput oleh teacher
dari seruer. Berikut code darifile showdetailnilai.xml.
<?;anI verslon= "-1 .0" encoding="utf -8',?>
<gcrollview :orlns:'and{oid=,'JrEtpj,//gche&ag,androjd. com/apk/res,/and.raid,,
android : background=' # f f t f t t'
.: a{droid : 1a}aout*width=, fi -zJ:aren t,,
-1
I ' andlroid: layout-height* "fi1l--.pa rent,>
<LinearLayouE.
android : orientation=,' ver t i ca J-,,
''-v^"rA-,,O"".Oi.,,
android ; backgrourd* "#f f t f t t !
i .. .-,,e.ndroi-d: layouu widLh- ufrLJ_Jrarent,,
aadroid : layout* eight= "fj-I-IJ:aren t,,>
<f,iinearlayout
. .
android: orientation='horizontaf ,,
<Textview
i.i..',, '&ndroid;id=,'€+id/kepa1a,, r.i
:,]l.li]:ii..andr.oi.d,:text.lJrIlI,Ar,,:.
"''.'.'.",',., androidi.,.layoutJnargin.Iop:l'5px" .,.,,,t.,
android: layout_width= ' fil-lJtarent "
',,,,',.,,,,..' dndroldilayout*height.,:'rffai2-:corteri.' .
< /Lineartayout>.
android: f ayout_height= ,, f if f *arenL,,> ton>
ilu t
<Absotutelayout Li rlayout>
nea
android : layou t.-heig hL= ',wrap_content ,,
:,:roIfView>
android; Iayout-wi dtin= ', f i I 7J:arent,',
<Button
android. : l ayou t_heighL= ,,
5 Opx,,
and roid : f ayou t_width=',
andro id : id=,' @ rid/ upf oadT',
ma t chJ)ar ent,, G. pilihantugas.xml
android : text= ,,UpLOAD TUGAS " /,ik, ini berfungsi sebagai tampilan untuk pilih tugas, nantinya kita akan ada
>< /Button>
< /Absol uteLayout>> rlrrir jenis tugas yakni upload tugas dan update tugas, Ttle inilah yang akan
rlf ()nangani dua proses ini. Berikut code daripilihantugas.xml.
<LinearLayout. {B
android : orienlat ion = ( ho r i z ontal,, :<ml version="t-.0" encod.ing= "utf -8"?>
android: f ayout-widtih= ', f if f J>arent,, lirrrrrrllrrrisllri,]ir,irlrrtrffi ffi $$Nl:.!',r rollView )<mlns : androi,d= "htLp: / /scftemas andra id. com / apk / res / andro i d'
android : layout_heighE=,' f i 7 TJsarent android : background= " # t f f f f f "
android: layout-width= " fi 7lJsarent" HiB
<Textview -[,.i,t
:ir.,ii]i';i i ir,l,, :':,, android: layout-height= " f if fJarent"> W
android : Ld= r @+id/J:udul-Tugas,t
'.,"
r , i nearlayout *{|:$|t@$ijwi{tc , , .... ..., i
andro.id : l ayou E.-marginTop= ,5p.;* , lW$&iiiiirriit1!il:llr;!lll,iiilrliiiiliii android: orientati on= "verticaI " ruM * ",
android : layout*width=,, f i 7 l_Jsaren t,, android : layout*widLh= "fj l lJrar6.l"lt " liill$lllr'\rilirlrl}4i::iii.rlirlrrrliirill i
android : f ayout_heighL= ,,w.rap_conL ent ,' android: layout-height= " fiffJarent ">
android.: fayout-weight= "-l "
android : textsize= " 2 7px "
android: gravity= 'qqrlrr " <Linearlayout
android : textstyle= " bo ]d " android : orienta Lion = " hor i zonta L "
and.roid: textcolor= " #000000 " android :,Iayouu-width= " f i f 7J:arent "
><,/Textvi ew> android: layout-height= " fil7J:arent "
< /LinearLayout>
<L i nearlayout
aidroid : ori entation-,, ha r i zonta l, l{uLton android: t.exL= "EA/?Ry TUGAS'.
android: layout-width= ', f i713arent,, android : id= " + id / entr\4ugas "
@
<Button upload.xml
android. : tayout-heighE =' 5 lpx "
android: layout*widLh= "ma?chJ:,arenU 1 r' . I,'ilc ini berfungsi untuk menangani proses uploadfile yang berupa dokumen.
alldfoid : id* "6* i d / updat€up-l. oad,' llt'rikut code darifile upload.xml
android : texL= "TJPDATE FILE"
android: Iayout*x= ,,3dip',. .
. ,'xml version=.,1f '.d" encodingE"utf--81.?> '.r... . ' ,." . ,. ,' .. l
android : layOut;r. "16iO "r< lButton> - t, i nearr.ayeut-,.
.,.. , .'
. i , ,., ..,
xrrr lns: aad*oidl*':hECp.:./,/scliemas,. and,z:bid.. aan/apk/rea/andraid
. <Linearlayout
'
r.. .. r"i
and.roid : orientat ion= " vert i ca7'
android : orientation = " hor i zantal " android : background= " # t t t t t f "
;;;;l;, i.vorr.*ria.h= t'fil-lJarert,, '
i"y;i;r'width=:" fi l]--paient I ' i r l' i-'
android : layout-height= "filfl:a rent " > ""Oi.idtr
android:layout:height*"fj-I.1--rraiena' '
<TextView
android : i d= " + id/ Judu LTugas,,
@ 'l r:xtView
android : layout-margintop='5p5 " android: id{'6;jd/jn fo" ffi
1,r
l. i stview
android : layout-marginTop=' 2 Tpx' ' randiOrid, i d*'r,: &avldro i d : i"d/ L l atl ",',,:
android : id- " 6:+ id / j awaban ( : andiqid:1a11ouc*width= " fjl]'J2arctnt "
. android I laydut*widlh= 'fif f:.pareri.[ , andr.qid : 1.dlraut:h€tght='&rrap*dort[.d;id't . ..
android : layout_height= "ma tchl, arent u
"..
lr,.r.,
l>.,. . . r,.tlfltiliriili.ir'',' ):
android: gravity= "1sl'g " ''l'extView
android:hint= "Ketik Jawaban Anda oisini,, android : id=' Gandro i d : i d,/ empty'
android : l.qyouf*gravi ty* " f ef e ">< / Edi t1texe> anatoid,ilayo(t-vriatn=' fj ll"-pqj:erril
ant en t
android : IayouL-heighx'- " wrap-c ont en t "
androi d : layout-hei gint= " wl: ap*c "
android : j d= " r?+ i dt detaif spubdaLe " / >
android: LexLCoIor= " #00A000 " ./LinearlayouE>
android: texL= "No Data"
/>
< /Linearl-aYout>
L. about.xml
. ?Kn1 version= "1,0" encoding- ^utf-8"?>
J. row.xml
.r
Absol utelJayout
ndroid : Ld,-:' @+ id / Absof uteLayou t 0 l "
File row.xml berfungsi sebagai Ttle pembantu untuk tampilan dari .;J;;t;, i;yout-width= " ri ttiarent "
rndro j d: layout-heighL= " fiJ13arent "
upload.xml. berikut code daifile row.xml.
.
<TextView TexLView
, ;"rout-width= " wrap-cont en.- "
;;;;i;'
- xmlns:android= "htttrs: /,/schemas'androjd'can/apk/res/android" , layout-height' " wrap*c ontent "
Lndrold :
android : layout-height= " wrap-coiltefle " ,rndroid. : gravi tY= "-1eft "
android : gravitY= "center-vettical " ,rndroid: i.yort-*= "1Tdip" android: layouL-y= "115dip"
android: textSLYle= " itaLic" rndroid : Ld.=' C+ id / abou t 7 s i
android: textcolor=' #0 0 0 0 0A "' ,rndroid: Lextr* "I,lV.f ABOUT OPTIONAL : ) "><l'lextView>
android: Lextsize= " 23sP" / > .'lextview android : layout-width = " wr ap-content "
,rndroid : texts ize= " 2 0 px " android : gravi ty= " center'
ANdTOJ-d:IEXt;_, SELA}IAT DATANG DI MOBILE T'EAfiNING'
-'-""a'"
:ffi :i ; =i' ;; ;;-"-""c
;' i ;;;;.:#, t i d : id= " G + i d/ abo ut r udut "
""
android: texfStYl e= ""
" boLd"
K. detailberita.xml .indroid : LextColor= " # 0 A 0 0 0 0 "
android: layout-x= " \dip" androidI layoutj= Idip""''extView>
File ini berfungsi untuk menangani tampilan berita atau notifikasi terkait
" 2
/ Absol utelayou L >
course yang ada. Berikut co de dari detailberita'xml'
<?:<rnl version= "-l . 0 " encodrnq= "utf '8"?>
<LinearLayout
Hffi, ffi;;li-'n"ry t t schemas. android' com/apk/res/android" M. Linktext.xml
android : orienfation= " vert icaT llerfungsi menangani tampilan untuk link downloadfile dari seruer. Berikut
android : l ayout-w-Ldth= " f i f I Jar ent "
c o de dari file linktext.xml.
android : Iayout-hei g]nt= " f i 7 f J)az ent "
ADSofu t elayout
<'I',exLVteW : id= id,tAbsoJ uteLayou t 0 1 "
f i I 7J>ar ent: "
,ndroi d " @+
android layout-width=
: "
, rndroid: layouL.widt]n= " fi7TJtarent "
android : Iayout-he i g:rlL= "wrap*conten E"
., ndroid: Iayout-height= " t iTfJtarent "
android tLexL=" " /> rdroid; background=' # t f f f f f "
<TextView
- '
;<mlns : andro i6'= "http: / /schemas. android. com/apk/res /android">
a.rAtoia, layout-width= " f j flJtarent " .'rextview andro id : 1 ayou!*width= " wr ap*c ont ent "
android : layout-heig]nL= "wrap-conEent "
,rrdroi d: textsi ze= " 2j?x"
androjd : id= " @+id/detailstiLfe" / > .rndroi d : gravity= " center "
<TextView . rrdroid: textcol-or= " #00000A'
android : layout-widLh= " f i 1 LJ>arent " nJroia, LextStY[e= " bo7d"
andro id : layout-he i ginL- " wr ap-c ant en t "
, r nrlroid : ::d= " G+id/.Text " android: layout-height= "wrap*content "
android: id= r e+idldetaiJsd.escription' />
rndroid.:text=,,Sijahkan KJik Link di Bawah Ini llnLuk Mengunduh Fi1e"
<TextView " 6dip" andro i d: Javout3='
gdip"></Textview>
android: Jayout-width= " fill .J)atent" ';;;;t;' lryora-*= id layout-wi wr ap_c en t"
.. 'rextvi ew andro r dt.1:1= " on E
android : layout*height'= " wrap-cantent' ,rrdroid : Ld- " G + i d / Tex t L ink " android : layout*he j"g]nL* " wr ap-c ontent "
android: autoL i nk= "h/eb " rndroid: Eext- "t i " android: layour-x= "6dip"
android: id= " @+id/detail sfink" />
ndroid: fayout-y.- " J 3 3dip" >< /'textview>
<TextView < /A]lso Lut elayout >
android : Iayout-wid Ll-L= " t i J 7J)a rent "
i
http://ro.o.z.z/mobile, yang berarti di sana termasuk domain seruer
Penanganan Aksi berserta path connection .fi\" yang dari PHP, kemudian ada
Setelah selesai membuat tampilan untuk sistem atau aplikasi yang akan koneksif)ownloadjava hanya berisi domoin dari seruer dan ini hanya
dibuat, masuk kepada tahap berikutnya, yaitu memberi aksi. Sehingga cligunakan untuk class dotpnload.
aplikasi bisa berjalan sesuai yang diharapakan.
- -tugasHttpClient j ava
Paket Konfigurasi
paket konfigurasi sangat penting untuk dibuat, hal ini dimaksudkan untuk
memudahkan kita ketika ada perubajan dari rrl seruer. Aarena aplikasi ini
berjalan dengan metode client seruer, sehingga paket konfigurasi ini dirasa
akan lebih membantu dalam hal menjalankan aplikasi. Buatlah sebuah
package dengan nama mobile.config.
Dalam paket konfigurasi yang akan dibuat terdapat 3 closs, yakni c/oss
koneksi java, koneksiDownloadjava dan tugasHttpClientjava. Berikut code
dari class-c/oss-nya.
--koneksijava
tr,ackage mobi 1e . conf ig ,'
Dublicclaes koneksi {
--koneksiDownload j ava
Dackage mobile. conf ig;
publicclasa koneksiDownload {
SEring urlMobilelearning= "http: / / 10.0.2.2/ " ;
public koneksiDownload ( String urIml ) {
urlMobilelearning = urfMobilelearning+urlml;
grbli.c SLring geturl O {
return urlMobil-elearning ;
Closs koneksi java dan koneksiDownload java berfungsi sebagai Ttle koneksi
semua closs ke selTer. Pada class koneksijava terdapat url StringBuffer sb = new StringBuffer("");
I
String ljne = "";
String NL = SysLem.gerproperLy(',line.separator,' )
I'ir(la paket ini buat 3 closs, RSSFeedjava, RSSHandlerjava, RSSItem java.
whife ((Line = in.readl-LneO) t= nullt { Ittlikut code dari ketiga c/ass tersebut.
sb. append (f -ine + NL) ;
]
--RSSFeedjava
in.close();
String resuIL -- sb.toslringO; package mobil-e. ke1as. rss ;
return resu I t;
tinal 1y { lrrport java.utit. List;
if (in != null) { lmDorts'iava .util .Vector;
trY {
in.close(); gublicclass RSSFeed i
.] catch (IOExcepLion e) { privete Slring Litfe = nulI;
e.printStackTrace ( ) privatse String description = nuI1;
)
,.
private String ijnk - nu11;
)
privat.e String pubDale = nuII;
private SLring category = nu11;
prLva.te List<RSSltem> iLemlisL;
trv { 1
Untuk itu, buatlah sebuahpackage dengan nama mobile.kelas.rss. kemudian public String getTitle( )
si
i
return title;
)
pulrlic String getDescription @Override
( )
pubJ.icwoid endDocument ( ) throws SAxException {
{ / / TOD0 AuLo-generated method st.ub
leturn description;
I
public String getLink ( )
@C)\/err r cie
{
retura fink,. lruIrLicvotd sLarlEfement (String uri, Str-Lng localName, String qNafte,
Attributes attribuLes) throws SAXException {
] / / IODO Auto-generated method stub
pubtris String getPubdate ( )
{ if (focalName.equalslgnorecase( "item") ){
return pubDate; it.emFound = t,rue;
)
String getCatego-ry ( ) item = Ireiv RSSItemO;
currentsEaLe = staLe-unknown;
{
return category; elBeif (focalName.equalslgnorecase( "ciLIe" )){
] currentstate = state_LiLfe;
)
€lself "description"
(l-ocalName. equalsrgnorecase_( )){
currentstate * state_description;
--RssHandlerjava ]
eleeif, (1oca1Name. egualslgnoreCase ( " link" ) ) {
package mobiLe. ke1as. rss ;
currentstate = state ]ink;
)
irnport org.;onl . sax. Attributes,. algaif (tocalName.equalslgnorecase('pubDate" )){
inport org - xm] . sax. SAXException,. currentst-ate = stateJubdale;
import org.:m1. sax,helpers. DefaultHandJer,. )
elseif (localName. equafslgnorecase ( "cateqory" )){
Dublicclass RssHandLer a,rtends DefaultHandler {
current.State = state*cateqory;
j
final-i.nt state*unknown = 0; olso {
finalint state_t.itle = 1; currentstat e = sEate-unknown;
finalint st.aEe_description = 9; ]
finalint state_link = 3,.
fLnalint. sLat.eJubdate = 4; ]
f,inalint state-category = 5-
int currentstate = staLe_unknown; @Overri de
frubticrrotdl endEl-ement (String uri, SLring localName, string qName)
RSSFeed feed, tlrrowE SAxExceplion {
RSSIt.em item; / / g,oDO Auto-generated method sLub
if (localName.equalslgnorecase ("item" )){
boolean itemFound = falEe; feed.addTtem(item);
)
public RssHandfer O {
]
)
@override
publie RSSFeed getFeedO {
publicvoid characEers(char[.] ch, int start, int length)
return feed.,. throws SAxException t
/ / aODo AuLo-generated meLhod stub
i
string sErcharacLers = nerr strinq:{ch,start, length) ;
3:;ii:isi" srarlDocumenr ( ) rhross sAxExceprion
if (itemFound==true) {
/ / BODA Auto-generated method stub
feed = new RSSFeedO; // "item" Lag found, it's item's parameter
item = new RSSItemO; switch ( currentstat.e ) {
case state_LiLfe:
item, setTitle ( sErcharacters ) ;
'. tm.Jr;
deso :!,lien: r,e{d 66. r: LIe(SL.i.q vclle)
rrd, sEtDesciiption (.ti*da.rer5)j I
': bE.,!i :r!e . valuei
'::: tae.s6tl,inkirElcracLe<s); 6lit selLiaicriptimrsEtlhlr laruer
- .::,r "' : . . br-tr j :. (
:. :: d.ililaEe,pLbdaLe: . .' deEcrjprior = value:
br.Atr : . 6erlllxisrrils va_E)
. :i. 'it at ll,dC6-catevory: -a?t
I
itq.re.CateqorwlsLlchalactels); llnt r v.llej
. :' br..b, , l
' ,rl,ii:i' .f:i di!.ulti 'i: ' :: r,ii! Eaal.BeiPubdat6{s!.rias va1*e)
i:t::. :::,:,,
" I
brer;:,: .. ,:ll { , . ,
pubDace - value:
)
.rt"i Ellt serca-eqory (sErlnq v.lu.)
/, noi "tEa" tas rdrd, "L,. F.pd,s pa.arerct t
:' ErlrcL,curre.rs-ccr I c
cu! stsdEe ti tl6: I
' feed.seLiiL-€(strch.racters) ;
. bE.!r: t tbXl,o str'bg g6E_iE.e{,
. d... sLac6-oGscripE'or: I
. reed.aetDescrtptton(st{nalactclcl i Etuh EiE-e:
. b!.al; I
. .: .i:'art..6tate_1iqk: .:. Ilrbllc' srrj,hs geEDeicriprion (I
ted.s;Er,ink (etlchaf,acr.ers) j |
. brGlE, !.rqn des.riprj orj
stsate pxldafe: I
feed.6alPubderersrfchalacr.lsrj rEbXlc ScriDg geELiMr,
bc..lri t
' car. stst€-category. zarurd linkj
leed..etcaEeqory rs! rcnd rqcLer s i :
h!..,rr ,uutc SL I tnq qoloubdare()
a|f.ult:
br..l: E.tua plbDace;
l)
,i ,,, strins setcaEesory( )
,
curtentgtaEe r state_uknom,
?*u,c
Erura categoryt
t' . l
OOve!ride
Dubtlc iL!inq
-,; tost!:E ( ) {
-i'ii"5';-,;.;;erar
--RRSltemjava '
--' ed 6e,hod srur.
rcbtl.e.*r.s.rssr
D.cr.!rr :: !! (Lr;r;.rasrhr) , too)
tu$ltccl... Rssl(e .l :1, iit - cirta,tustrinsto! .roo) .+ , .. ..,
Fl*."s-.],a'.,..1"..u1x,,:,,..,L."'o.i".",
il;;;.;;{;;'rfi;, '-:' '
srn rq:d;.cr:pr,.!d r ltrir:
t|!rnE.
:, ,: I :
Jllst
]
retum description 1oqin, setonclj.ckI,istener (n6w OnClicklistener ( ) {
publicwoid onClick(View v) {
) //hedbuat Buno re
rr* i
newlncent. putExt.ras (bundle) ; / /ryqmblraL B\rndf e
starLAccivityForHesu'l b (newTntent, 0) ; Bundfe bundle = new Bundle();
1
t*'*==""ed! =null)
l'
Textview feedTitle =
( r ex tvi ew ) r i ndvi ewBvr t
[i1r*"it"::t3s c r iut i on =
.i
tI
( TexLView) f indviewByTd R. id. f eedde scr i bt i on \
( ; t
Textview feedPubdate =
iTextView) findViewByTd {R. id. feedpubdatel ; l,l
Textview feedlink = it ,l
( rextvi ew ) r i ndVi ewBvrt t*"'a1r11"i'"'J.?;.
( myRs s F eed . se tr i r 1 e ( ) ) ; 'i
I
f eedDescrib"'";!Elliil:iti::l;::;?*i::;::3illll,lli,,",,,, I
t
feedlink. seLText (myRssreed. getiinX () ) ;
1
ArraYAdapte"*tiliSliu::i:::;r;
r.em> ( rrrr.e,
)
I
protect,ed,void onl,istltemCfick(ListView l, View v, Lnt posltion,
long -Ld) t
catch ($alformeduRlExcepEion e) {
/ I TOD6 Auto-generated catch block --courseDetailjava
e.printStackTrace ( ) ;
catch (ParserConfigr:rationException e) (
/ / lArlo Auto-gererated catch bfock
e.printStackTrace ( ) ; ;"':"-:',""..:;" ;oneksi ;
catcb (sAxException e) { lnrport mobi1e. kefas. rss. * i
/ / IoDo AuLo-generated catch bl"ock lmDort java . io. loException;
e . printstackTrace ( ) ; lnDort iava. neL .Maf formeduRlExcept-Lon;
catch (loException e) t t rrDort j,)v.l . ncr .llRL;
/ / TODo Auto-generated catch ]:lor:k lnport jirv.rx. xml .l)arsers. Parserconf rigurationException;
e.printSt,rck'I'race ( ) ; lnfgort j.lv(lx. xtnl . I)arslors. SAXPrrr'$;{tr';
if
]
tf (myRssFeed ! :null )
t
il{,ort org, apache. htslp. HttpResponEe;
lrylort . org . apache, hltp - Namevaluepair ;
iryort org . apache . hltp . cl, ient . Cl ientProtocolExcept i on ;
i.rurort orE. apache. hLLp. clienL, Htstpclient;
lryrqrt org . apache . http . cl ient, enti ty. url SncodedFormEnui tv,
LnDort orE. apache. http. cl ient . melhods . HttpPosi i
iryort org. apache. hllp. impl . client . Def auf tlit,tpCLient.;
lrpqrt org. json. JSONArrayi
irE ort org. jsol1. JsoNExcepEion;
l.&rcrt org., j son.,JS0Nobj ect,,
lryort com.mobile; learni&g. R,
L$prt androld. app. ActiYity;
llElort .android. os, Bundle; :
linkurl =
adpkoneksi { '/coursaDetailTopikJson- php?idc= " +paraml+.}&idri " +para&2+ " &u
n='+param3);.i..isERVER:uRL*1inkur]..geLUr1();
*i
I
iq>ort android. contenL. Intent ;
newlntent . puLExEras ( bundle );
iryort android,wier^r. View; startActiviEyForResuft {newIntenL, 0) ;
lrport andioi d. View. Vi6w, Orql i ckl,i s tener
iwort android. widqfet . Butlan;
;
]);
. startActivity(iatent) i
)]
Code di atas berfungsi sebagai aksi menampilkan course yang nantinya di
dalam course itu ada tugas.\
--tugasDetailjava
ort
l,flE j ava . net . Ma1 formedURlException ;
inport java.net.LIRL;
InE ort j avax. xml . parseis . Parserconf i grurat ionException ;
imDort j avax . ;on} . parsers . SAXParser;
i4port j awax. xm1 . pars ers . gAxParserFactory ;
inqlort org.xm1. sax. Inputsource;
import org. :cn1 . sax. SAxException;
import org.:<rn1. sax.xMlReader ;
inE ort com.mobile. learning. R;
iqport android. app. ListAcE.ivity;
import android. content. Intent ;
irwort android. os . Bundle;
import android. view.View;
impor! android. widqet . ArrayAdapter;
irnpbrt android. widget . ListView;
irport android.widgeE. Textview; . .......l
-l
1
sAXparserFae,.*,",*{ftfr:::;,*:.-:iiirm'i::l'*= '
mysAXParser' getxMlReadTs!*rr,ar"r
myRssHandrer = nes, RSSHandler ( ) ;
myXMlReader . s"iconterrtHandl er {myRSSHandl er }
Inputsource mylnputsource = aew
Input.Source ( rssUrl . openstre_am () I ;
myxMlReader. par$e (mylnputsource ) ,
. myRssFeod : myRssHandler.gettrcEdil;
.: .i.
) cnteh (MalformeduRlExceptioa.e) {
/ / TODo Auto-generated cat.ch block
e . prints Eacktrace ( ) ;
e.printstackTrace ( );
)
Lf (myRssFeed! =nu1I)
{
fextsView feedTitle =
(TextView) f indviewByld (R. id. feedE it 7e) ;
Textview feedDescribtion =
(TextView) findviewByfd {R. id. feeddescribtionl ;
Textview feedPubdate =
( Textview) findViewByld ( R. id. feedpubdate\ ;
TexEView feedlink =
(TextView) lindviewById (R. id. f, eedl i nkj ;
feedTiE.le. seEText. (myRssFeed. getTit.l-e () ) ;
f eedDescrib"'";:::;:;:iH::ffi
:i;?ff:::;:::i]!il,l*".",, li
feed],ink. s€tText lmyRs-sreea. getiink ( I ) ;
ArrayAdapter<RssItem> adapt.er = now
', Array&dapter<Rss1tem> ( thls .
aqdroid. R. layoui. si4pJe_"1jsr*j tem_-l, myRssFeed. gerlisr () ) ;
setlistAdapter ( adapter) ;
)
)
I
*l
I
. protoctedvoid oolisultemclick(Listview
long id) { 5trang paraml : bundle.getsEring{ "keyIdc, ) ;
Strj"ng param2 = bundle. getstring (.,'keyUserld" );
Intent intent = nerf Intent'(thlE, tugasDetailup'claas)'
Bundle bundle = new Bundle0; / / SERVER*URI, = SERVER-URL+ r'
? |
idca +paraml+',&un*,, +param2 ;
bundle, PutSEring {'i keYCaurse", trv t
myRssFeed.getltem(position) .getTitle ( )) ; Jinkurl" = ners
bundle -PutstrinE ( " keyuname ", koneksi ("/ tugasupdate . php?idc= " +paraml+ " &idu= " +param2 ) ;
myRssFeed. getltem posi Lion) . EetDescriptlon ( l ) ;
(
SERVER*URI = linkurL,geturl{) ;
bundl-e.Putstring ( "keYIdc ", URL ,]
rssurl * nerrr URI(SERVER-URL);
myRssFeed. getltem (position) , gdtI,ink ( ) ) ; SAxParserFactory mysAxparseiFactory *
bundle.Putstring ( "keyuserrd" , SAXParserFactory. nerJns Eance ( \,
myRssFeed. getltem (positioh) . getpubdate ( ) ) ; SAXParser mysAxparser =
. intent'PutExtras (bundle) ; illysAxParserFactory.newSAXParser(),...
startActivitY ( intent ) ; )O{LReader qr}O4lReader : mysAxparser.get}O4lReader ( );
j RSSflandIer myRssHandler = n6r, RSSHandlerO;
) nlyXM l,l{(., r(l(. r . se L ContentHandler (myRSSHandler ) ;
ln[)ul il()llt r'(, rl]ylnputSource = new
l !ll)lll lir)lll i'('( r tttlllt I .0lrIttlil t .!.lrl ( ) ) ;
myxMlBeader . parse (mvlnputsource ) ; Code di atas untuk menangani aksi update tugas yang ada pada setiap
course. Update bisa dijalankan ketika tugas telah ada yang di-submit.
- ] catch. (MalformeduRlExceptiori e) {
./l T]ODA Auto*gendrated catch bloik :
--tugasDetailJsUP
. .e;PrintstackTracd ( ) ;
) catch (Pars'erConfiguraLionException e) {
. //. TODO AuLo*generated catch block
e.printstackTrace ( ) ;
) catch (sAxException e) {
/ / ToDo Auto-generaEed catch block
e.printstackT'race ( ) ;
) catch (loException e) {
. / / ttc,E8 Auto:generated catch block
e.PrintstacXfrace ( ) ;
)
lf (mYRssFeed! =nul1)
I
' T"ttView feedTitle =
(Textview) findViewByld(R.id . feedLiELel i
Textview feedDescribtion =
(rextview) findviewByld{R jd.[?"igrfl,f":i?,=, '
l
]
protected\roldl onlistltsemClick(ListView 1, View v, int position'
long id) {
Intent .intent E new Intent(thlE,tugasDetailJsup'cl'ats),
Bundle bundle = new Bundle ( ) ;
bundle. putstring ( " keycourseName ",
' >sition)
myHssI eeo. geE1 tem (posr-r,1 get ra:, O ) ;
on ) ..get.title
. "-,-,,
bundle.pltstrinE "keyuserrd"
( ,
myRssFeed. geti
ition ) . getDescript ion { ) ) ;
tem {pos
bundte. putstring ( " keyassignf d'',
myRssFeed., getltem(.posilion) . getLink ( ) ) ;
bundle ;putstring ( " keyCourseld"'
myRssFeed. getlrem(posi.t.ion) . EetPubdate ( ) ) ;
bundle-pulstrins{,,heyAssignsubldf,,myRssFeed.qetltem(position).getcaEeg
ory( ) ;
intent.putExtras (bundle) ;
startAct.ivi ty ( intent ), *
) - thlr.qolfntentO
IlrrncJle brrndle .getExtrasO ;
)
*i
fr8al. sLringi paraml .i bundle. getString (."key-C6urseId'l ) ; createDialog(."Se1arnat"., "Jawaban Anda B€rhasil Di
fLnal St.ring param2 = bundle.getString( "keyAssignld" ) ; UPdate ^,4.!i) ;
fLnal String param3 = bundle.getstring ( "keyUsertd" ) ; . ]a].se
f,tnat String paianA. - bundle.getString("keyAi:slgnsubid") i .., {
Button uploadupdate = (Button) createDialos("Maaf", "Jawaban Anda Gagal UpdaE.e T-T
findviewByld(R..id.updateupJoad), : : waktu untuk updaLe teLah habis,l),
'': uplEadupdate.BeLonclicklisEener(u.nI oriclicklistenqr() { :
)
t
IrJbltcv.t{dl onclick{Vie\d v) { ,. ..:
// fo,!o. Auto*$enerated,mEbhod stub ''., cttcb (Exceptioh e) {'
. StrinE courseld = pirreiiil.i.i . '.
' jawaban. seltei(t (e. tostrinqr.( )),
Strir'rg userld :i Pdrim3; .
Strinq.vaJueoftusd,rrd) i'
Strinq txtAssignsubld =
Etrins - vaTudd i lessisilsubrd ) ; Httpclient hrLpclient = aew EefaultriELpclieni() t
tsund16 bundLe: nec, Bundle{}i . i' HLtpPost ht.tpPost ; new lltlppost(SER1rER_URIr) i
bundle,putstsrinq ( iidc" , t*tcourseld) ; / lparameter
.. bllndle.plrt$trins("idtgsr ; Extrugasld) ; Arraylist.<NameValuePair> param = now
bundle.put'$tri.ng If iduri ; . txtUselfd.) ; Arraylist<NameValuePair> ( ) ; {
bundle-putsLring 1 " idastt trv {
txlAssignsubld) ; I /add parameter
iUr:load.putExtrag(bundle); .. .t',,t. ht tpPos t . setEn t i ty ( new Url,EncodedFormEnt i ty (param ) ),
starEActivity ( iUpf oad) ;
) HttpResponse httpRespose = hEtpCLient.execute(httppost) ;
]); * (Button) findviewByld{R. id. kirimtlpdate)
HttpEnt.ity httpEntit.y = httpRespose.getEntity( ) ;
'Butt,on bt*jawaban t
/ / read content
Inputstream in = httpEntity.getconlentO ;
nul|lrcvoi* onclick(view vJ { BufferedRead.er read = nert
r / rop1 ooao*n**.r.ted method srub Buf feredReader ( nenfnputsEreanReader
:'..* - -. ( in ) ) ;
= neYt
Arraylist<NamevaluePair> ( ) ; String content = "";
postParameters. add (n6vr BasicNamevafuePair (" jawab", String line = "";
jawaban.getTexuO .tostring(l ) i; i
-l
import. mobile " kelas . rss . RSSFded;
string name = jobj .getslri-ng ( "name" ) ; inport mobil-e. ke1as. rss . RSSHandler ;
String alltexl = jobj -getslrinq( "description" ); inDor! mobile. kelas. rss. RSSIt.em;
iuport java. io. IoException;
namaTugas += name+'\n" ; irnDort java. neE.Maf formeduRlException;
detailTug:as += alltext+n\nri ' irrport java. net.URL,.
l funDort j avax. xrnl . parsers . Palserconf igurationException;
.
i' ll :rODO Auto*Slet'reraqgd ealch block "''i' inglort mobile. kef as. rss. RssHandLer ;
'q.print,$tdckTraqe ( ) ; : imlrort mobile. kdl. ds. rse rRSSItern;
.....}.c*tch.(IoException.e'),t'','.......... iirryort.Java.io.. IOExceritiorl!.r', ,,,, '. .. i:. r.'i . , '..
,. 1 / ' $OUO "j\]rrLo-g€rnerated'. catchrl,block .,...
.
.tmort j alia. $et .1'{a1 f orobd|BlExceplion;
iruport java.net..URL;
i inElatt, j avax ;'rdntr. ..parsers.. pers droOof i gnitationEx*ept ion ; .
..'',{.f.......{myRssF6ed1=nutr1).. tqrort j avax ::on1.;.pAr:EBrs';.SAxgartier ;,, .
'
'"'0"!;:iffiii;jji5;ij5:;l;lIl**"*u /** Cal1ed when Ehe act.ivity is first created. */
I
GOverride
) publicwoid oncreate(Bundle savedlnstancestat.e)
protactadvoiil -onr,istltemclick(ListView 1, view v, int position, aupar. oncreate ( savedf nstanceState ),
{
l,
myR$sreed. getltern(posiLion),getlitIe ( ) ) ;
bundle.putstring ( "keyuname ", / / SERVEA*URL = SERVER*IIRIi+ ( ?idc= r +paraml.+ " --:--
&un=', +param2 ;
tr,Y { r"' ri. ..i .. .
Code class di
atas berfungsi untuk menjalankan aksi menampilkan nilai RSSHandl€r myeS$HandlQr.,r,'nerr nSs$aadler.{ I i ,:.,,,.. .
berdasarkan course. Di sini akan ditampilkan course yang ada. Inputsource mylnpuEsource = rro!,
I.nputSource ( rssUrl . openstream () ) ;
myxMl,Reader. parse (mylnputsource ) ;
-l
n
myRssFeed = myRssHandler.getFeed( ) ;
) eetah (MalformedURlExcepr'ion e) {
I / *ODO Auto-generated catch blqck
e.PrintstackTrace ( ) ;
) satch lParserconfigurationException e) t
I / \oN Auto-generared catch block
e.printstackTrace ( ) ;
i aatch {s.AxException e) {
. / / TODO Auto-grenerated calch block
. e.pri4tstackTrace{ ) ;
) catch (ioexception e) {
. / / .lroDo .AuLo-generated catch block
e. printsstackTrace ( ) ,
1
at (myRssFeed I *rul1 )
t
Textview feedritle =
(Textview) findviewByld (R. id - feedtitJ-e\ ;
Textview feedDescribtion =
( Textview ) f indvi ewById ( R. id. f eedde s c r ibt i on ) ;
Textview feedPubdate =
(Textvielv) f indViewBytd (R. id. feedpubdatel ;
Textview feedlink =
(Textview) findviewByld(R. id. feedfink\ i
feedtlble.seuText{myRss.Feed.EetTitsle(} ),,
feedDescribiion. seuText (my-RssFeed. g€tDescription O) i ..
ArraYAdaPeer<RSSItem> adaPter =
n6w errayAdapter<RssItem>(tbie.
android. R- layoxlt . simpJ.e*J is t-i tem-1 . myRssFeed ' qetlist ( ));
setlistAdapter ( adapEer ) ;
)
)
protsct€drrold onl,istItemClick(Listvie!'' 1, View v; ltlt position'
long id) t
Intent intsent. = aa$ InEent(thlB,nilaipetail'Js'class) ;
Bundle bundle = ndw Bundle0;
bundle . puLstring ( " keycourseName ",
myRssFeed. getltem(position) . getTiEle ( ) ) ;
bundle . putstring {' keyAssignld",
nvRs sFeed. geLltem (posilie4 ).'.getDescript ion ( ) ) ; .
. bundle.pi"rlstring("ke)ruserld",
rnyRssFeed. getriem(position)'- g'ettink ( ) ) i
bundl e . PutSrring { "keySubmisrd",
myRssFeed. getltem (positioa) .getPubdate{ ) ) ;
intent .PuLExtras (bundle ) ;
startActivic:, ( intent),
)
)
I //1r.rr rrrnr,lor
sl
Paket mobile.upload
Paket mobile.upload ini berfungsi sebagai paket untuk menangani aksi
uploadfile, image, uideo, dan audio. Untuk itu, kita perlu membuat sebuah
paket di path lsrc dengan nama mobile.upload. dalam paket ini ada 3 class
yaitu
--uploaderjava
pachags mobile. upload;
URL connectuRl;
String params;
String responsestring ;
String fileName;
5yteil dataToserver;
FileInpuE.Stream f ilefnputStream;
TextView info;
. voj.d .seturlAndFile (String urlstring, String fileName, Textview
info)
thls.info = info;
try
{
filelnput$tream = new Filelnputstream ( f ifeName)
connectuRl = nevr URL(urlstring);
]
catch(Flxception e)
slimchroniiedlvoiddoupload() . ...''.... l.
SEring twoH)4)hens
String boundary - n*****n-
try
I
publishProgress ( "Sedang Upload. . . " ) ;
HttpuRlconnection conn : (HttpuRlconnection)
connectURL. oponconnocLlon ( ) ;
-l
arive.i; . : ,:. , .:. .. . ,:', .
aar rrouraarv.;-rounoaryr ;
a
' :: - . :' tiEi...idio.;;etlextlpfa€Bsi0li; .
. oitao".pursr@ 'do6 =; raourix EsEr6:i$ I
i Da : ! , ,: .'..
-*.seqirxr1luii6ar r; .' 1 )' . i:' ::..
' dor. El..eqr!.d t6. {}rh@ r b(Nd6ry'..Il;€h Ld
I
{os.yllr.ByLcsr'cotrLent Di.posititdi.. fotudt tar .'.':.":. .: . :'::i
rrri.'us6!Illc\.;!i-oir$e-\.' + fii+{a ,,\'. , lilErrd)I ::' ::l:i
Code di atas berfuDgsi seb agai engine day', aLsi uplood }"ng akan dijalan}a&
rlt W....\!efl"Ute ... ..'1::i:'
..:i'
i?rtl.Ilnislranh. ih i l6bte ) : ',.:: i'ii. i:i.
l.;r ,*Buf t;Estre. . i2A;:'::,:::.. ' . - i":r l:i
I
, 1a bufre!6t,6 . )qat}t.'ti.ltlilryrivEllab}a,
':' .".,,..:, :.:".., ..i: .a:i:.:,,
-Uploadjava
Mxsutt€lslzq), ,;,, rr6talt riobit€,ueload:
b!ri. t l::h$tcr - ilr!!r^rlh! trersr .e)'i , .: '.r:.,'..".::':
.
:: doi;irtrettuifE!, o, burrerati'ir;
... I f*ert a,.d,"td.q!E,r,iuda.iii,iLy,
. ,,.. .fy! 6'be$ai rab16 -
:l '
rlleli;pttatf€dird{,b11.}1.(}';-,,:' : ':. ,,,,,',, ,,.,,,i:
-:.. r$oirr:.i"droid.conE@r,Di6roElrilGrIa<e:
qEt;ndrcid.G.B.tedl;i ---T
,:, :' 'l' : bui'f6rd-ire :. !(eLh. ria tbyrsiGrl6blc, ''' ,r;6rr drord.vii!,,vi€u;
dxBr!fersi,..): ,,:.:.. :.:.:.. .i: 1904 Mdrold. vie,. ,/Ieo. oE!.LiEkrJl t6€! E
': byrds!.ai = ftl9rlret-sr.ree.;aad(trrrei, ilDoi 6droid.widc.r e"&ira"pre';
. '
O. bul!e!s1ze): . ,: L-,q.r u@o14. wid;e!, Eur L;a;
koneksi (.''.lup}'oadProses . php?idc= " +paraml,+ " &idtgs= " +.pararn2 + 1' &1du='' +param File file - nalu Fi1etpatsh.qgr.(pa$icion));
1\, tf (file.isDirectoryO )
SERVER_URL = ]inkurl.qetUrl O ;
Uploader uploader = neltr UpLoaderO;
:, {
i re r ril..;S*Tii:llllllllllllllllJr.
uploader . setUrlAndFi le ( SERVER-URL , s.1po.iriool: l: ;
( ( Edit"ext ) f i.ndViewPyTd R' id. a"lanrat) ) . getText
( { ) . toString ( }, (Textview) (, elea
f indviewByld (R. id. info) ) ) ; t
uploader,.execute(); il, , nelr AlertDialog, Builder (thls)
i
catch(E>ac€ptior e) .setTiLle("!" + file.getNameO + "l folder can,t be
. t ',t'
*l
fI
item.add("../");
/** Ca11ed when the activity is first created' */
@override
publicwoid oncreate(Bundle savedlnst-ancestaLe) { t
Euper. oncreaEe ( savedfostancesLate) ;
setconcentview { R . Iayou L - uploadl i foi(int i=0; i < files.lengEh; i++)
Buridle bundle * thlg.getrntent O.'getExtrasO ;
fifral SLring paraml . bundle.getsLring('idc'') i
fLnal String param2 = bqnqle.getstringi"16ggs") ;
f,ina1 String param3 = bundler,getstring("idu" ) ;
fLnal String param4 = bundle.getstring('idas") ;
ArrayAdapter<String> fileI,ist =
new ArrayAdapEer<String> (thlg, R. layout..row, item) ;
up. setoncficklistener (Bew oncfickl,isLener ( ) { setlistAdapter ( fife],ist) ;
t
Dublicvoid onClick(View v) {
/ 1 a}!p Auto-generated method stub GOverride
try Irrotectedvoid on],istlt.emCfick(LisEView t, View v, int posiEion,
{
long id) t
l"inkurl = new
koneksi ( ,,
/uploadupdate. php? idc= " +paraml+ " &idtgs= " +param2+ r &idu: " +param File fil.e = naw. File (paE.h.get (position) );
3 +" &i das= " +param4 ) ;
SERVER-URL = Iinkurl.get.Url ( ) ;
lf (file.isDirectory() )
catch(gxception e)
{
.;setTitle{{lo + fi}e,AletNameO + ".1
folder can't be read! " )
( (EditText) findviewBvrd(R- id. alamat) ) ' seiText (e' cost'ring () ) ; . seuPosiLiveButton ( "OK" ,
n6w Dialoglnt.erface.OnClick],istener( ) {
1'
)); publicvo:Id onCliek{pialtogtnterfece di.atrog, Lnt. which),
)
I **
AuLo-qenerated method stub
prLvatevoid getDir ( String dirPaLh) )
t )).showo;
rnyPaEhl'ext. setText (di r:Pat.h) ;
i
]
elEs
{
mypathTexE. setText { fi1e. geLPatsh( } ) ;
l
Paket mobile.download
Paket ini berfungsi menangani aksi untuk melakukan dounload file dari
seruer, teknik download ini menggunakan teknik linkifu. Dalam paket ini
ada 3 closs yang saling ketergantungan. Berikut class-nya:
--downloadjava
Dackage mobi1e. download;
iwort mobil-e. confis, koneksi ;
{ryrort mobile. kelas. rss.RsSFeedi
isprt mobi Id , kelas . rss . RssHandler ;
itqlrcrt mobile. kel"as. rss . nsslEemi
iryrort java. io. IoExeeptioni
iqrort j ava. net . MaIformedURlException,'
irE,ort j ava . net . LIRL
;
-l
1
finkurl = new
koneksiDownload ( "moodledata/ " +paraml+" / " +param2 ) ;
ArraYAdaPter<RSSTtem> adapter >ffivpR_U.RL = linkurl.getUrl O ;
myRssFeed.
bundle.PutString ( "keyrdc "'
getlEem(position) . get]-lnk ( ) ) ;
Paket mobile.berita
intent . PutExtras (bundle ) ;
startActivitY ( intenL) ;
Paket ini berfungsi menangani aksi menampilkan berita yang ada pada
) seruer, ketika edmin ata:u teacher menginputkan sebuah berita, maka kita
) client akan mendapatkan list berita tersebut. Dalam paket ini ada z class,
berikut class dari paket ini.
Closs di atas berfungsi menampilkan lisrTtle yang di-dournloadberdasarkan
courseyang diambiioleh user. Berikutnya ketika salah satu list diklik akan
menampilkan link untuk doranloadfile, berikut clcss-nya: --beritajava
package mobile. berita ;
pagkage mobile,download;
import mobile. keLas. rss.RSSFeed;
l-mport mobile. kelas. rss . RSSHandler ;
import java.util . regex. Pattern; inport mobile. kefas. rss. RSSItem;
iuDort com.mobile. Iearning. R ; inport java. i o. IOException;
f,n6ott mobile. conf ig. koneks ioownload; import j ava. net. Ma1 formedURlException;
LrE ort android. aPP. ActivitY ;
import java.net.URL;
lmport android. oe. Bundle ; inport j avax . xrnl . parse.rs . Parserconf i gurat ionfixcept ion ;
import j avax. xm1 . parsers . SAxParser;
tnport android. Lext. util . r,inkify; inport javax.xml.parsers. SAxParserFactory;
:tryoru arrdroid, widBlet - Texaview; inrport org . ><rn1 . sax. Inputsource;
p.drlicclaE6 dctwnText al3t€nds Activity I inllort org.:<nl . sax. SAxException;
inport org. >cn1. sax. xMlReader;
. Publtc koneksiDownload linkurl;
import com.mobif e. learning. R;
String url; lmDort android. app. ListActivity i
' l*x Calfed when the aeti-vity is first created' */ imgort android. content . Intent ;
J.nport android. os . Bundle;
Goverride inport androld. view..View;
pr:J:ltqrroidl oncreate ( Bundle savedlnstsancesLate) {
rl
/**.. ca]l.ed wtren Lhe aceivity is f irsu created'
i/ J
qoverride GOverride
pubficyold oncreate{Bundle savedlnsEailcegtate) { protected,void onl,isLrEemCIick(ListView ], View v, int posit.ion,
-*rrper
. onCreate { savedtns tances tat e ) ;
lons id) {
. '. .. .getconLentvie,ii (R.layouts.majlnrss) ;
// TODO Auto-generaLed method stub
fntent intent = rrew InEent (this,beritaDetaif.class);
Bundfe bundle = n6t' Bundle();
trv {
bundf e. putstring ( " keyTitle",
....]"inkui1*n€wkoneksi(,'/berita.php,');l.
SERVER-URL = linkurl.get.Url ( ) ; myRssFeed. getrtem(position) . get.Title ( ) ) ;
URL rssurl = n6!, UR1J(SEBVER-URI;) i..
bundle.putstring ( "keyDescripti on",
SAXParserFactory mysAxParserFactory = myRssFeed. getltem(posiEion) . getDescriptjon ( ) ) ;
SAxParserf&cLory. xibitI]lstance ( ) i
bundle.putstring ( "keyr,ink" ,
SAxParser mYSAXParser = myRssFeed. getltem (posit ion ) . getlink ( ) ) ;
bundle . putst ring ( " keyPubdate ",
nysAxParserractory.rrdwgAXParser ( ) ;' myRssFeed.getltem(position) .geLPubdate ( ) ) ;
XffiReader mYxMtReader
( i ntent. putExtras (bundle) ;
mysAxParser. EetXMLReader );
RssHandldr myR$SHand.ler : tew RssHandfer()i
:
starLActivity ( intent ) ;
. myXMlReader ..setcontentHandl er {ryyRS$tlandldr )
Ir}I)utgoufce mylnputsource = new )]
rnputgource {rssUrl. . openStieam( ).). ;
qryxMlReader. parse (myinput$ourqe ) I
myRssfead :. myRssfiartdler-getFeed( ) ; --beritaDetailjava
package mobile. berita
) catch {Mal"formedURlException e} { ;
I / go',} Auto-efenerated catch block
e . printstacktrace ( ) ; import com.mobile. learning. R;
) eatsh (ParserConfigurationException e) t iryort android. app. Activity;
I / I]Offi Auto-g€nerated catch block irqport android. os . Bund-Le;
e.printSEackTraceO; inport android.widget . Textview;
) eatch (SAxException e) { publicclare beriraD€tail extends activity
/ I ?.a,Jo Autso-generaLed catch block {
e.printstackTraceO;
1 c&tch (IoException e) { @Override
I / YaDA Auto*generaLed catch hlock Drotect€dvoid onCreate(BundLe savedlnstanceState) {
e . printstackTrace ( ) ; / / Ig)fc. Auto-generaL,ed meLhod st.ub
] sup6r. oncreate ( savedlnstanceStaEe ) ;
'- '' '' lf (mYRsPreedl=nuIll sebcontentview {R. layouE. detaiTberita) ;
Textview det.ailsTitle =
( Textvi ew ) id. de ta j s t i El. e ) ;
f indviewByld ( R. -Z
--aboutjava
package mobile.about;
AndroidManifest.xml
Edit Android-1.{anifest di project anda seperEi di bawah ini.
<?;<rnl version="1. O" encoaing="utf-8"?>
<manifest:cn1ns:android:"http://schemas.android,com/apk/reslandroid"
package= " com. mobife . learning "
android : versionCode= "1"
android:versionName= "1.0">
<appficat ion
android: icon= " Gdrawable/ i c- launcher'
android : tabef = " @s tr i ng / app-name " android : debuggable= " f a1 se ">
<actavaty
androi d : 1abel= " Gst ring/app-name'
I4ndyoid: naxre=" . login">
<intent-fifter >
<action android:name= "arrdroid. intent. acEion.MAIN" />
< ca tegory android : name= " android . intent . category . LAUNCHER' / >
< / int.ent- filter>
< /activity>
rl
$Suery = "SELECT subject, messag€ ,from mdl*forumJosts
CONN ECT ED F ILE lvlOBlLE'
$run = mysql_query(Squery) ;
whif e ( $b=mysqL_fetch_array ( Srun) ) {
?>
<item>
LEARNTNG <Eit1e><?php ech6',$blsubjecsl ", i?></titie>
<dericription><?php echq l$blmes.sage],' ;:. ?>5/ddscripiion>
</ ilem>
<?php ) ?>
<,/ channel >
</rss>
<?p!p rnyegi*c1ose() ; :>
lX D.:hop
Berfungsi sebagaiTt/e koneksi untuk semualfi/e ke database dan konten.
--course.php
: .ouE.Dd.ilTsp'rndn
..ur:eIdp,r :,r, t!:a!Li ,:.: .i: Prl,,:.i.i
lrli t. nr: i \8
<?php ?>
ffi vu"". { .u-o.",r,.^ <rss version= " 2.0 " )qllns : atom=', http : // wvtw .w3. org / 2 0 0 5 /Atom,, >
l: u'e"'oauu'o. <channef>
81, rEJo'trk t(jj tugrsF,nmrerr
9i tu9.rtu,mr.kup&t€ <tit1e>cou*SE YANG
:1 rueasupd.r6
:i: upr.adP.6;e!
i1.y::51:ii:;:
<1ink>http : / /m-learning. com/< / link>
:i uprcadupd!re <descript ion>< /descripl' on>
< 1 anguage>id< 7 languagl>
<managingEdi tor>I{obi I e Learning< /managingEdi tor>
Isi dari/older "mol)ile" connected file <copyright>Copyright 2011 Mobi 1e Learn.ing</copyright>
< ?php
include "config.php";
--berita.php Squery = "SELECT a.course, b.fu11name, b.id, c.usernamer a.userid from
< ?php ?> mdI-course-di splay
<rss version="2. 0" xmfns:atom="http: //www.w3.orgl2005/Atom"> as a inner join md1 .,iourse as b:on b.id=a.course..inner, join mdl_user
<channel> .ls c on c.id=a.userid and c.usernarne=,',.$_eUt1'uname'l . ", ,;
<ti tf e>BERITA< / ti t1e> Srun = mysql_query(Squery) ;
<description>< / descript ion> while ( $b=mysq1_fetch_array ( grun) ) {
<Ianguage>id< / language>
<managingEdiEor>MobiIe Learning</managingEditor> . i t.em>
<copyrighL>Copyright 2011 Mobi 1e Learni.ng</copyrighL> - t i.tle><'lphp echo ',$btful lname],,; ?></tj"tle>
. ?php .1:rrbDate><?php echo n$bIrraorirll,, ; ?></pubDate>
inr:1 rrrir' "r'orrl irJ.plty:" ;
.. I ink><?phl: n(-"ho "$frI trll , r /.. / I lnk>
<descriplion><?php eeho "$blusername] " ; ?></descripEion>
< / item>
\IIJITP
-r^h^ 1 ?!
I-
'
< /channel>
</rss>
<?php mysql-closeO r ?>
File diatas berfungsi sebagai querA untuk list course berdasarkan user.
--courseTopik.PhP
<?php ?>
<ris- version=' 2 . 0 " )<mJns : atoma "http : / /www. w3' org/2 0 05 /Atom" >
<channel>
<t.it1e>TOPIK C0URSE< /tiLLe>
<1ink>http /m-l earning. com/< / Link>
:/
<description>Silahkan Klik Topik yang Ada</description>
<f angua-ge> id< / 1 anguage>
<mariagingEditor>MobifeLearning</m€nagingEditor>
."opyiiqht.rcopyright 2011 Mobile l,earning</copyright>
< ?php
j-nclude "conf ig.PhP" ;
$query * "SELECT a.course, b.fullname, c.username, a'userid, d'id' .'
a,.r.*", d.t)rpe, d.alLtext, d.reference from mdf-course-display
as.a innei-join mdl*course as b ofl h.id=a'course inner join mdl-user
as c on c.id=a.userid
inner join mdl-resource as d on d.course=a.cour5e and d't14)e='t'ext'
and b.id=''.$-GET[' jdc' l.'' and c.id=''.$-GETI'idu' ) ";
$run = rnysql-query($querY) ;
""
while ( Sb=mysq1-f eLch-array ( $run) ) {
?\
<item>
<titfe><?php echo "Sb[namel "; ?></tiLfe>
<pubDate><?php echo "$blcoursel' ; ?></pubDaLe>
<1ink><?php echo "SbLidl "; ?></1ink>
<category><?php echo 'Sbtal ILexl "; ?><,/category>
<description><?php echo "$bluserid] "i ?></d€6cription>
</item>
<?php ] ?>
< / channef>
< /rss>
<?php mysql-closeO; ?>
File di atas berfungsi sebagai querA untuk lisf topik yang ada berdasarkatt
course.
-- courseDetailToPikJson.Php
. ?php
include "confiq.PhP";
$idc= $-REQUEST[' idc' ] ;
Sun= $-REQUEST [ 'un' ] ;
if(Sidc && $un) (
$sqlSEri.nq = "SEL,ECT a.cour'!;e, b. f rll lrldm(), t). irl, r-:'trt;r'r'rlllllll-r, (l't'tttorld'
d.itl, ct.nirrrrr,, d.ty1tr,, ti,;tlllcxt , rl .tr'lrrr'(lrl('e trom mrll t'ortrttt' rlirllrlay
File di atas berfungsi sebagai querA untuk menampilkan file yang bisa di- File di atas berfungsi sebagai querA untuk menampilkan nilai berdasarkan
dousnload di client berdasarkan course. course.
--login.php --nilaiDetailJson.php
<?php <?php
include "config.php"; include "config.php";
$username =. $-REQUE6TI lusefname' I ; gidu= g_REeUEST [ 'idu' I ;
,,,
$password : $-REQUESf I rpassvord'l i 6166= g_REeUEST [ , lda, ] ;
$passwordhash = 'inds {-$password) i
/ / q)ery untuk mendapatkan record dari username i $""rllJfi;"=t:-#331{"..orr**,b.rr"r11name, c.username, a.userid, d.id,
$query = 'sELECT * from mdI-user where username = '$username' and d,name, e.id, e.assignment, e.grad.e FROM 'mdf_course_display' as a
passwbrd -''i $passwordhaEh"' ; innerjoin md1*course as,b.on b.id=a.course inner join mdI*user as q.
$numRohr myqql-num*rowe (mysql-query ( $query ));
. .,.,,. on c.id=a,userid inner join mdl,assignment as d on
=
/ / cek kesesuaian password d.course=a.course inner join md1-assignment*submissions as e on
if ($numRow >= l-) e . assignment*d. id
echo 1; , and a.userid=,',.$_cETt,idu,l.'"
el se and
'r'i e'assignmentr'il'$-GET['ida']'''
?> and. e.id=,,,,$*cETt'idsub' j.",,';
)else{
SsqlString = "SELECT a.course,b.fullname, c.username, a.userid, d.id,
File di atas berfungsi sebagai querA untuk loginke sistem. d.name, e.id, e.assignmenL, e.grade FROM md1_course_display' as a
innerjoin mdf-course as b on b.id=a.course inner join *df_r"ar a" .
on c.id=a.userid inner join md1-assignment as d on
--nilai.php d.course=a.course inner join md1_assignment_submissions as e on
e . assignment=d. id" ;
<?php ?>
<rss version= 2 . 0' ><rn1ns : aLom= "htLp : / /www.w3. orgl2 005 /ALom" > )
"
<ctrannef > $rs = mysql-query (SsqlString) ;
<title>Nf LAI TUGAS</tit1e> if(Srs) {
<link>htEp : / /m-learning, com/</link> while ($objRs = mysqf-fet.ch-assoc (Srs) ){
<descriptign>Silahkan Klih Untuk l4elihat Nilai Tugas yang goutputll = goUjns;
Ada< /descripti on> l
< language> id< / 1 anguage> echo json-encode ( Soutput );
<manigingEdiLor>Mobile Learning</managingrEditor> ]
<copyright>Copyright 2011 I'{obiIe Learning</copyrigrh!> mysql_cioseO;
<?php ?>
include "config.php";
$<Xuery = "select c.id, c.fuJlname,a.userid, d..username, b.name, a.id, File di atas befungsi sebagai querA menampilkan nilai secara detail
a.assignment,a.grade from md1-assignment*submissions as a inner join
mdl*assignment as b on b,id=a.assignment inner join mdJ"*course as c on menggunakan porsing Json.
c.id=b.course.inner join mdl*user as d on d.id*e-userid and
c.id='".$-GEtt'idc'I . "' and a.userid='".$-GETI'idu'I . " "';
--tugas.php
$run = mysql-query{$query),
while ( $b=mysql-f etch-array ( $run) ){ < ?php? >
?> <rss version= "2.0 " xmlns : atom= "http :// tlww,w3. orgl2 005 /Atom" >
<iterrP <channel>
<li.t1e><?php eiho'- "$b[nane] u ; ?></title> <ti tle>TUGAS< /Lit1e>
<pubDate><?php echo r96lidl "; ?><lbubDate> < 1 ink>http : / /m-learnine / < / l.ink>
<lirtk><?php echo.'.r,1.$btuseridl'' ; ?></link> <description>Silahkan Klik Tugas yang Ada</de*ciiption> i .
4&l
.#l
- -tugas KirimTeksUp date. php
include "config.php";
Sidtgs=$-REQUEST t' idtgs' I ;
Siduser=S REOUEST [ 'idu' ] ;
$idas=$_REQUEST I' idas' I i
$ j awaban=$*RfrQUHST I' jawab' ] ;
Stimezone = "Asia/Jakarta",.
daEe-def auf t-Eimezone-set. ( $timezone ) ;
1l
<1ink><?php echo "$blassignmentJ " ; ?></fink>
/ / echo $data2 [ 'timedue' ] ; <category><?php echo "$blid-subl "; ?></category>
<description><?php echo "$bIuseridl " ; ?></d.escription>
$t = $data2['timedue']; ; </item>
$y = intval ($t); z"^h6
1;YTJP 1
J
"\
< ,/ channel- >
$t.s = date("Y-m-d H:i",$y) ; </rss>
$te = date("Y*m*d H:i"); <?php mysql*cLoseO; ?>
$q1 = "SELECT count(*) as jum pROM md1*assignment-submissions WHERE File di atas merupakan query untuk menampilkan tugas yang bisa di-update
datal = ,g jawaban, ; ,, ,. berdasarkan course.
Shasil = mysql-query($q1) ;
Sdata = mysql-fetch-array($hasi1) ;
if (($daLaf'jum'l > 0) ll (Ste > $ts))
t
--uploadProses.php
echo ,'I4AAF DATA YANG ANDA MASUKAN SAMA ATAU WAKTU ANDA TELAH HABIS, <?php
] else // setting nama folder tempat i:pIoad.
$guery = "UPDATE md]-assignment-submissions SET timemodified = include "config.php";
'$waktu', datal = '$jawaban' WIIER$ id = '$idas"'; $dirPath =' .. /../htdocs' ;
$result. = mysqf_query($guery) ; $idcouqse=$_REQUEST I'idc' 1 ;
if ($result >= 1)
echo 1; Sidtqs=$. REQUESTI 'idtss'l ;
File di atas merupakan query untuk update jawaban tugas yang berupa teks.
)
$dlrpathz= " . . /moodledata",'
if (opendir ( Sdirpath2 ) ) {
--tugasUpdate.php if ( ! is-dir ( ". . /moodledata/ " .$idcourse) ){
<?php ?>
.rss version="2. 0" mlns :atom="http : / /www.w3.orgl2005/Atom">
mkdir ( " . . /moodfedaEa/ " .$idcourse) ;
)
<channel>
Diupload";
/ /ec\o'1</scripti";
] )efse {
$timezone = "Asia/Jakarta'; //ecbo "<script>";
: date*defaul"t*timezone*set ( $timezone ); echo"File cagal Diupload" ;
:
if ($handle = opendir($dirPaEh) ){
$q2 trSELECT tiniedtie. from md1..asislgruiient.where-id ='$idtgs' ",
t''.,, .$hq2=* mysql;query.{$q2);
' ', $data2 = mysql, feiih.arraV1$hq2) i',''',
'r'.,rr
, " 1''"-ft'*'i,,I::;*mHJi.i,
t /. iecl:rol $*atai t.
, timq4.rre' 1 i $dirpath2='r . . /mopdledata" ;
if (opendir ( $dirpath2 ) ) {
i',' $C ;'$datat[''timedue']; ; if ( ! is-dir ( ". . /moodledaLa/ " .$idcourse) ){
$y * intval{$t);
mkdir ( ". . /moodledaLa/ " . $idcourse) ;
SE.s = date("Y-m-d g:i",$y) ; )
StmpName = $_FILES['userfile' ] ['tmp-name' ] ;
$dirpath3:" -, /mood1edatsa,1 ". $idcourse;
" sidcourse;
ifi?I:i::31; ; ;"lffitHii'La/
(opendir 1$dirpaLh3 )){ // membaca ukuran file yang diupload
$fileSize . $*l'ILnS['userfile'] ['size' ] ;
if ( ! is-dir(Sdirpach3.''. . /moddata" ) ) {
,// membaca jenis file yang diupload
mkdir ( $dirpath3 . ' . . /moddata" ) ; $fifeType = $_FILES['userfile' ] ['tlrpe' ] ;
j
$dirpath4=$dirpath3 -'l - . /moddata" ; //5t91=date 1' v-m-d' ) ;
if {opendir ($diryarh4 )) { $uploadfile = $fiIeName;
if is dir{$dirpath4. ". . /assignment") ) t
(,! $guery = "UPDATE mdl-assignment-submissions SET timemodified =
'$waktu' WHERE id = 'Sidas' " ;
nkdir(5dirpatlr4. -../assign$ent" ) t mysql_query ( Squery );
)
// proses uptoad fife ke folder 'data'
i:
i
I
TAANAGETAENT TNOODLE
UNTUK MOBILE- LEARN'NG
' ces@a0ta!{6
.tutuF
Setelah selesai instalasi Moodle, kita masuk ke bagian otak atik moodle atau
mengisi konten moodle agar nantinya bisa dilihat pada client (android).
Konten-konten yang akan kita kelola hanya beberapa saja, di antara course,
resourse, assignment, netns, dan dotanload. Ketika pertama kali kita
membuka url http://localhost/moodle kita akan mendapatkan tampilan
seperti gambar di bawah ini
Klik menu course ) add/edit course kemudian klik Butfon Add new
category seperti gambar di atas. Ketika button Add new category di klik
maka akan muncul tampilan seperti gambar di bawah ini.
;1tr**,,:::2$&ri.;ifuli[tii*])i:r,l'ri:i.:.l.Jr,nr,,"l"*..i.'..
'&i $*{il{Wi ffi;:::,-,,,r,,trllli
+ C alrr(alhotti.i').r..ir:i..i:ii)kr,,..: ,,,:,:,',!,1 * \
[/ser dalam moodle terbagi beberap jenis, mulai dari Administrator yang,
mempunya hak akses paling tinggi, kemudian course creator, teacher, Non-
r Ccf* S.rlt *tiry$
editing teacher, student, guest, authenticatic user. Semua user di atas
mempunyai hak akses yang berbeda tapi bisa di coustimsasi oleh
administrator sesuai peraturan yang berlaku. Berikut gambar pengaturan
role user.
r'x*\,ri*r*Nffil:,,.,.,
fiYl;"t;l, . {]N**,,,_:,*ili;;;;;;;;;; :iliWr,
Kemudian buatlah course baru dengan klik Button Add a new course
seperti gambar di atas maka akan muncul tampilan seperti di bawah ini.
Catqary
S r*il. iltrd ka:_1
, il:xj 0
r,[, ar r€ M
Sh.iuffii e
CM*IDMere
cM Editlah form di atas sesuai ketentuan atau aturan yang anda punya untuk
SffiryS moodle.
o 6
===E 'n
ii 1=i;;=j= &&,*,I,-*e S-O*P Kemudian kita akan membuat beberapa user yang akan bertindak sebagai
Lodp t.nrdg ,4
tacher dan student sebagai percobaan kita pada aplikasi kali ini. Untuk
membuat user lihat gambar berikut ini.
@
ftrrol O iwrskrtumd E
Nnhr oiw€ksiopics, 10Ii]
Cour*saddate@,rs[il k*q [] :sr2i:-]
Hi&n s.lions S . n'dds *ilsN nc no* r dap(d io,m [iJ
l@ilmsloswO 5ll;"1
ffiI
.,]X*rsr*f.*--:,*$sir{*F*ti-;,r,.rt,,;,;*,",**-""" .\*S,}$id$ r:, Klik Add/edti courses kemudian klik teknik informatika, seperti
a i C i'.irc.arhosi',',,,i.,,,-,,-r'l.,r,r':.,:,,.r,,..: i * \
gambar di atas. Setelah itu akan muncul tampilan seperti di bawah ini
,rrre.ftt*t::,::,..:,,;...,.-ii,&l",lryti,lLt.'......_.....,ln,,r a,s6ddc{(du ::,i*ff$*i;;,ri:i:,:ffi]Niik;ffiili:&t
F-roi di$pky Ab{ 61, ,rhs !i!r.e ru$b*. r! 5.e sr:,*i **r$ i:l
f reil aqMled l]n3 ; ;.Bd j.]
.rui ddi;;
e millffiEl F,eu @a bsd i:l
fm[drFdryP' fl.to**i,@1.sfr lBeBpd] i:l
Kiik Add a new User seperti gambar di atas kemudian isi form, ulangi
langkah di atas hingga tercipta beberapa user baik untuk teacher dan Kemudian kliklah ikon yang ditunjukan gambar panah di atas untuk
student. memberi tugas kepada seorang teaclrcr untuk mengampuh sebuah cou?.se.
Kemudian akan muncul tampilan seperti gambar di bawah ini
Setelah selesai pembuatan user kita beranjak ke tahap selanjutanya yaitu
'ltw$rlgli*
memberi teacher pada setiap course. Untuk pemberian teacher pada setiap rlrllli::il&r.iari:
*d
course berikut caranya.
.,.nn;.*..,-_,...1,, :i.lr}iq*,,i_+ii:. '-:::iri:r-'"i,.i*,o.;, 'rii.!*f*$1!i{6 }- li$.]il*};k$H
e Ci'-ilerrx4l.,rr.i,,_..!rri.fri,r:,i,.rir, '1 *\
S - r*,.
'{**x,.*#-
l|1 'tn'oryn"
r*'*e w*x xt,nlr
.
I
$ e trsiBe
llosuu'
* o ,**'r,*rp
D erjLrhiss
*
t ,seh:
el
Pada gambar di atas kita bisa lihat bahwa belum ada teacher yang Di sana telah ada teacher yang mengampu course C-AA. Ulangi langkah di
mengampu course C-AA. Noh, untuk itu klik teacher seperti yang ditunjuk atas untuk memberi pengampu pada course yang lain.
panah kemudian akan muncul tampilan seperti berikut.
Setelah selesai memberi pengampu pada setiap course, cobalah /ogin dengan
ili,
menggunakan akun teacher yang dibuat tadi. Sebagai contoh pada course C-
€ C a:]io.aibon.,r.r,il.r.ii. i: :ilii.i:.r., !.al.. i.",ir,. i
iwNw:i1si\$i;iw$\r\:iiii::\NiiN.ts$i!$]wry{s9rsillit AA pengampunya ada Nazruddin Safaat, ST, MT. Ketika pertama kali login
maka akan muncul tampilan seperti berikut
Esdre&dsaton ud,-i;I:]Staniryrm Todav1z7&r!4&121 l:
M1
Cenuyr ldrrc:,,
CjttoMi,rerdrku
CouB$: 1,. ir !$
FjB1..c€33: stMar, 7 Aqls! :lli i 11 A Atl l1ll dnys 1 io!,
Lait6ccaer: Frday,2lJanrary2013 N2?lAd i1.e.i
Di sana akan ada beberapa potensial user sesuai dengan jumlah user yang
ada. Kemudian pilih salah satu user yang ada pada box potential user Kemudian kliklah halaman utama seperti yang ditunjuk tanda panah pada
kemudin klik Bufton Add, buatlah seperti gambar di atas. Hasilnya bisa gambar di atas. Maka akan muncul tampilan seperti berikut.
dilihat pada gambar di bawah ini.
.&iei rJffiB;;::r:r,::j:lffi:i*l:lllN$,lllLiw{qiffi
..P,!:l!:*4:llilii,..,:ii
€ g il:o..rhon *\
St,tclirlr itrr l<lil<lirh (:()lrrse yang diampuh si teacher seperti yang ditunjukan
lltrrurlr rli irttrs. Mirliir ;rliirrr rrrtrnt'rrl tarnpilan selterti berikut ini.
.$...1lv81 :::.....--...rttt':tt.i.Y:ll\tla:lilill L. *- l-e +e:{*
+ C r:, o.arhcd. . *\
ssrmry 0
ffi
t.r3.br: r.::r:fkb.,
Kemudian klik tombol Turn editing on. Ketika tombol itu diklik
maka si
upload, dll sesuai role
teacher bisa melakukan create course, topik, tugas, Hasil akhirnya seperti gambar di bawah ini.
yang diberikan.
.'..q,lr*::1;.,,,:,r.,-.1:l[t{1.&tli* -- .rl*,a*.l**m !11**$:er*{a1.1ffi.1)]:r,..Jffiffifff11:KL&- lx*c$r
Kemudian buatlah beberapa topik, Ttle yang bisa di-download,
dan tugas, S.C'l"riocihoni:.,i.ir:!r..rr:,:.r, !l\
berikut caranya.
,xi.'r.rt|1....,r,,::n'ri11.9qlqi&:
.i1tu".('*-s rr*siwt&:!Nlu,-:-:':,J$Wi lS$.i:iaM--Sr&'W
*{
+tC ,oa.i{
Kemudian buatlah file yang berhubungan dengan course yang bisa di-
dounload student. Caranya teacher harus meng-upload file, file-nya bisa
audio, uideo, atau dokumen. Caranya dapat dilihat pada gambar berikut ini.
$tr1 Rep{.
$llasieiom
* g !,€rdNrer.a.ed
.tYed{$lliwi{ti
:!!oEmnas k, Sl&
t.q.'
a.) I irri-3ri.rtar5:r
.st
arnrs,:F ale{ Fq! Airl! ri.e $.n'i.sday,
I Jeurr 2alr. {2 il&
(' r. *$-r ..m OAn*&l*!
ar.erbradr-r.,r
'r Llfoi !r':.,xl.rr ft
Adr ad $S l..L^m:-ra?P
Plihlah Link to a file or web site pada combo box seperli gambar di
atas, maka akan muncul tampilan seperti di bawah ini.
Pilihlah folder dokumen karena kita akan upload 7t1e berupa dokumen,
maka akan muuncul tampilan seperti gambar di bawah ini.
Isilah lform sesuai perintah dan klik button Choose or upload file Ittitl<tt
akan muncul jendela seperti gambar di atas, kemudian buatlah/okler uploed
sesuai tipe data seperti Audio, Video, atau dokumen. Maka hasilltyit ttl<ittt
seperti gambar berikut ini.
Klik brrltorr Upkrnrl t lilc sehingga hasil akhirnya seperti gambar berikut
irri.
Sama pada seperti pembuatan topik tadi, pilihlah combo box add an
activity dan pilih Online text. Kemudian isi form-nya sesusai perintah,
sebisa mungkin pada judul tugas online texr diberi label atau embel-embel
kalu tugas ini jenis online texf, seperti contoh gambar di bawah ini.
i{trr.*IXSS
{r {,
1r&...:.&*+re G.-'.i,e8..{>
=,=..== ,Ii :;:l;is:s IE
l. Pcngefriai Sttem Opera\r I 7. ieh{k.rn ]--rn ailten ap€,nti I
Apa l. Aoa
rGmn ![r!!]r OF a\i IJq (rp.. l
€@
arc
i ?! Jinu.ry?012 u? 43AM Grn& 0 lic a
li .!rr !ix,l r',{r{r,, 1 irr'
Ayerhbbftom ,:;]i--{ ';.j 20r a: i2;l $ a l Drsab[
bdddt,,, t.b_j ,;.,..r 0.. ..- n,so,e
(D Addarce.u.. i: O Adds,-r'!
P,*n,n'c i&mr, or, \ ;
nFl &S
O ,. e .^ .j,6Nryd
!16 [M,]!iil':li'il'iilr'lilil
ffi;,;, .,.,.,,t,,1,,,t.,.t1:ffi
*Eliin'a{!'rrri',,':r',rlr'''
ffi#lKi***#
i{{S*f,llrllrl,',1""'1,1,]i,1 * irrs n ,r'r . tt {
flo ns nas *n Fosre
#$lriidiii*'rrr,','" rrf
$r h.sasr6!4
nFus I Egidiiiiriir*r,il
tf
.iB i *) r.r. a1
t Fd6r i Fei,,.."
ilaitsif !8sliltl,r";;,tirrr,ri Biul[r1 +tdxi
11
Kemudian cobalah enrol course oleh student, hal ini ditujukan agar nantinya
studenf bisa melihat konten moodle melalui c/ient (android).
3 , C {lto(atno!::1,:.,:!,,,,:...:ii,rii,. * \
Reirmlng to thls web sate? 16 thts youri6l tlme here? Setelah itu cobalah login pada client menggunakan akun studenf yang kita
!Q6 Mr6 !$rf,g !ou. ,sefii,re .nd @s{or( Hrl Ffi tu( .sftr pI ne& lo 6k a diruF b . de , N a.ianl to,
tr.iss b gunakan loginpada ueb tadi. Berikut tampilan client-nya
{wee mst b, eirnw in }nff br.sr{i, youMns fr 6 $.b ste Elcn.l ihe hd*idlal rdrffi sat al$ hile a.nelk
'ln.ohril r.y". !firh !e {on\ @ unD Be' riere afe tre Jre6
u** roFl .. l Urnd$e lrx&.&n, re,b S ylur &6it
e"*o* .:::::l':::....-r:.....rren....]
&sw drs lldrd€l! ser! !o ts ffiri**5
{es ye. ei and .ki s rk xlb &ri i re&is.
You.&rsil $n k iontM and !o! sn & rqr& 6
se {@.s @l a{s gmt a.c6 .ltre seel 1& rn{* pu **dl lo 8{6ipde d
tr @ ..e A.s!6 re an lsolrunt Sf - !* he om ha, your lkhtr nas
lrQs* ryslli we.@ 1i6*{bndpuh&.ee
Y0r.ao M a(s$ he tun cilff ars ns on t6usl 0n[ ng h sler
pr*6nduxrffi adF$M{inl&lmonlhisp.!ei6rqrndM
Fqdbn sr t*.nire o. Fsw6, ar.*a ertrrle w bv. srdsd ilr
l-ld,lFiP;iiii! 1
Ketika gambar Materi/course kita klik maka akan tlunt:trl li.sl t'ottrs('v;rrtl{ l)an.iika sirlirlt srrlrr topik diklik maka akan muncul detail topik seperti
telah di-enro/ tadi. Seperti gamhar berikul ini. garrrllrrr lx'r'ilirrt in i.
Kemudian kembali ke halaman utama dan klik gambar tugas maka akan
muncul tampilan seperti gambar di bawah ini.
Ada z jenis menu tugas yaitu Entry tugas untuk enfry tugas yang diberikarr
pada student dan update tugas untuk update tugas yang telah di-entrrT tiipi
update tugas memiliki batas waktu. Batas waktu sesuai yang diberi lcuclrar
saat create tugas. Jika kita telah update-nya atau melewati batus waktrr,
(ilrnbirr cli atas adalah jenis upload tugas single file. Di sana kita bisa
maka sistem akan menolak.
Ittcl:tlirr l<ir n /rrorr.r.sc rl;rl ;r scsrriti di mana kita menyimpannya.
Setelah itu, masuklah sebagai teacher pada web untuk memberi nilai pada f
tugas yang telah di-entry. Seperti gambar di bawah ini.
Kemudian lihatlah nilai melalui client buktikan kalau sistem bekerja sinkron
Kemudian berilah nilai atau grade pada tugas yang submit oleh srudenl dengan seruer. Login ke sistem di-client dan klik gambar nilai pada halaman
dengan klik tanda yang ditunjukan panah di atas. Maka akan muncttl utama, kemudian kita akan dibawa ke lisf course di mana kita membuat
tampilan seperti gambar berikut ini. tugas, misal pada course C-AA, maka akan muncul tampilan seperti berikut
ini.
+g
Pilihlah tugas yang telah diberi nilai. Kemudian akan muncul tampilan
seperti gambar di bawah ini.
NITAT
Tugas A1 Online Text
88
Dari gambar di atas kita lihat hasilnya telah sinkron antara clienf dengan
seruer,
Jika punya Anda seperti gambar di atas maka, sistem yang Anda buat telah
berhasil.
Kemudian kita coba update tugas. contohnya rlallat <lilihirt p;ttlrt grttttlrrtt
berikut ini.
BAGIAN 20
WEB APPS HTTALS,
JQUERYtvtOBtLE SERTA
Pilihlah salah satuTt/e. Maka sistem akan membawa kita ketampilan berikut PHONEGAP
seperti gambar di bawah ini.
pqJ
Pada bagian ini akan bahas mengenai Mobile Web Applicattbn, sebelum
lebih lanjut mungkin sedikit pendahuluan mengenai gambaran umum
tentang mobile web apps mobile. Bahwa pengembangan aplikasi untuk
mobile sudah diambang perubahan secara besar-besaran, di mana kita
ketahui sekarang paling tidak yngg mendominasi sistem mobile sekarang
saat ini irclalah ios untuk iphone/ipad dan android, blackberry serta
winrlows pltortt'. Sclitma ini yang berjalan aplikasi yang kita rancang untuk
iphonc lt'ttlttttt';t tirl:rli lrisl herialan di android dan di os rtto6ik'lairlttya,
begitu juga sebaliknya, sehingga masa yang akan datang akan diperlukan apalagi programmer useb pasti sudah familiar dengan adobe dreamweaver
sebuah pemrograman atau pembuatan aplikasi di mana bisa dijalankan di baik itu programmer php, jps, cfm, html, js,vbs, dll. dreamweaver sangat
seluruh os perangkat mobile atau yang dikenal dengan istalah cross enak dan comfatible sekali dipakai oleh programmer, tapi dreamweaver
platform. dipakai oleh orang yang akan mengembangkan untuk aplikasi mobile
mungkin agak lain bagi orang lain untuk sekarang.
Dan permasalahan di atas dapat diatasi dengan membuat aplikasi dengan
HTML5 sehingga dapat dijalankan di-cross platform. Di lain hal, cerita
teknologi di pemrograman di komputer pc biasa juga diawali dengan cerita
seperti pemrograman di perangkat mobile, awalnya aplikasi dekstop seperti
aplikasi buatan vb, c+, borland, dbase, foxpro sangat pouterpul, sehingga Aadthln (, Ajay {un}ar, 4lnin Dumesny, Alnn sonE. andr.a! }vud! aueesh Ral K u,
pada masanya berakhir atau berkurang digantikan oleh hadirnya teknologi Eob E*terdiy, (hirles Antio, Ch.is Ennk, (in Elar, JEff Booher, Justin Pa1m. la! 5i09h.
Nl.nikifldan s. Na..yan M. Pann.e.relvam v.rdthardjan, Rtsndf Ednrunds. Ridqn}raFl C I
Ralmond L!n. 5<oS Ri<hdrds, 9resh Xlma.. S.nlarai Umap.thv, vit Mitflick,
web (php, asp, jsp, cfm, .net, dll), sehingga aplikasi menjadi berbasis ueb vr.trnnaditya oha.al. !rshikha vardla. Ydto Biler
pada umumnya, begitu juga dengan aplikasi di mobile, pada saat ini Q6kyEqirceE
akir. x'kka$a, Andred*enl &rLn Ka:a, Avni!fi Gupta. Afelha Anrin Ddstagirii
kebanyakan berdiri masing-masing, android dengan base programming Ehnrqava S, Corrinnn Kink. Oatrd Alc.l., Debbie Suruk!, Dr!yd E f, oonald Eoolh.
Eflly Chanq, I.ini Mrdery.h, lanaki Likshmrkrnthan. lung Chor, llslin Rain{ater,
Luiz o. L mi, N o 9irafta! &rtlra M v" Pihu 5harBar RiLa NGhro. 9.dh.k SnEhal,
dengan java, sementara ios lebih dominan dengan c, sehingga sudah tiba Silas Norbu Lep.ha. 5uhalatha Sekd., turai Ajila. Iakesh! H!.al:hl, !do ?6dll!
veeresh Hfemith. Vrn.stTruouq tan Ngn" Sinda Hunng
masanya membuat aplikasi yang dapat dijalankan di multi platform, dan E@k€.iry ffidaGn€Dt
jawaban atau keinginan itu dijawab dengan HTML5 anind situu.l Ed*in, la, Londo.. l6rqe latlar. Lil) l*en, Nr.k !nlbatken,
Peler ftleis, Raolaran Gorurrdh!, 5ao.Y Bannur
Apa saja hal-hal menarik yang dimiliki oleh html5, point-nya dapat kita
ringkas seperti berikut:
. TrulA crossplatform
. rich content: 'video', 'audio', 'canvas'
. ofrtlene storage
Dengan hadirnya HTML5/CSS3, sehingga dreamweaver sangat cocok sekali
dipakai sekarang, hal ini karena adobe dreamweaver cs 5.o sudah memiliki
t Cache Manifest
tampilan untuk multi screen uieut (desktop, tablet, smartphone) bahkan
. Location versi 5.o ke atas sudah support dengan tagging html5 terlebih versi 5.5
o Websocket sudah sangat support sekali dan sudah memiliki plugins untuk android sdk
Kemudian teknologi seperti Javascript (ajax atau jqueryjson) dapat platfrom sehingga dengan dreamweaver cs 5.5 ketika testing aplikasi mobile
digunakan di dalarn tagging-nyahtml5, berikut ini adalah padanan yang kita tidak perlu buka eclipse lagi, tetapi bisa langsung running ke avd
sangat banyak digunakan bersama HTML5 yaitu: android kita.
. JavaScript (Jquery)
. CSS3 Untuk contoh berikut yang digunakan adalah adobe dreamweaver cs 5.5
. Deuice API Working Group (Contact, Calender, Media Capture yang sudah memilikip/ugins untuk membuat aplikasi natiue ke android sdk.
(API/HTML Forms) Berikut adalah cara setting dreamweaver cs 5.5
o Cross Origin Resouce Sharing (CORS) seperti JSONP . Setelah adobe dreamweaver 5.5 terbuka, click menu site pilih new site,
kemudian buat nama applikasi/rrebapps yang akan kita buat.
o Setelah coding web apps-nya dibuat, untuk menjadikan menjadi aplikasi
WEB APPS dengan HTML5 8r CSSS natiue android, pilih menu site - mobile application - Configure
Application Framework sehingga muncul gambar seperti berikut:
Bicara tentang apiikasi ueb adalah salah satu software yang sang,at populitt'
yang paling banyak digunakan programmer untuk melakul<art uxlirrtl
aplikasi ueb yaitt Adobe Dreamweavcrs. Sebagian lrcsirr pt\r(1,'(t,,tnt(,'
r$]ry.rrrsr,r,
build/package.
Note: sampai buku ini diterbitkan, masih android-sdk saja yang sudah
memilikiplugfns untuk natiue di dreamweaver.
Aplikasi Cafd
Berikut ini adalah salah satu contoh aplikasi dasar yang berbasis html5 dan
css3, contoh aplikasi ini dapat Anda download dari situs resmi adobc
(www.adobe.com) sebagai perusahaan yang mengeluarkan softtuare adobc
dreamweaver.
Langkah I
Copg-kan folder citrus dari cd kedalam sistem folder komputer Antla,
sebaiknya berada dalam folder httdocs sistem apache, panggil index.htrrtl
dengan mengetikkan perintah (localhost/citrus) di browser komputer Att<lit
sehingga menampilkan gambar seperti berikut: Senrentara apabila kita jalankan di smartphone akan terlihat seperti berikut:
i[ c]rai a!'ffisi]avdi "sms, .k tt (d]le€ti,sia eif q]* sfr'l$e. &tga,rrgfid i'*iBsa&9 yaiu'$--aa,.r']!ir, la{ttr
lv,ebsitx",A$:|reatriwd.ay*r,sitiilimUql*Vtrasrrrbnad,iiCi'idi,S.ilairi;dt$4tdiir*.&rirlg*r:r,'.
resl6t$ar tihlirE,l*ain.ratore shS,!.{i&*}( $n file,s, ae-d &r,rdd?6,{e.r{t&iB']r{!n qrgerys
\ylrerts yqlr ${}3t ttlE sMilii-fi,las t6 itne.,wek'. ,,.,,,i,i..... ...rt.r.
H;re tidiitr:It,.irdted $hrdj&ci', fBifdrer 6,n'd, a nawe f,qi'*ss Qii&g!!is$-{! *ft&;l,' .i,.. I .':iil::' .. . :
''..,:.i.'ii};'ic.*",'':...:|.:.:.:.:.:.....
.,',. ro*"l xtirr,qiii:a,. [E,p=EGE!i:@{l:s::r:]eqyi=:6l---l- I e
[..,;,,.r' ,:I
Setelah site terbentuk pilih menu eksplore dengan cara clickkanan nama
site seperti gambar berikut :
lh*rkln
Aplikasi ini dirancang untuk berjalan normal di tiga platform sekaligus lJids {herk ll01
(desktop,tablet pc, smartphone). !h!:*i {ir(Led Crt !}..
ii{,ll Edck !a,$e
iorrp:re *rih iemcte 5*n'*r
Aplikasi di atas dijalankan dengan memanggil dibrowser baik itu di tablet pc
Site-Speri{ic aode Hint5"..
ataupun smartphone, berikut ini akan kita bahasa langkahJangkah 1)rrhrcni:r..,
membuat aplikasi native dari sebuah aplikasi web mobile. li:irl3-!'lrnihr.ni:. lntormitre*
. Buka Adobe Dreamweaver Version Control
. Pilit menu site - new site dan isikan nama aplikasi web yang akan kita Ctcaking
Turn off Rtad Only
buat seperti gambar berikut: Ls(Ete on RemBte 9eNe.
Prsiea in grMer
Ih.erk Linkr
^tt li tJ^'cnle:
L"ttt'r'
.t-:'.j rn ........
Lxplere,,,
Refrsh Ltrdl Filet
le4ahtffi
l1#&.:# : - ". rd3lMi!#'.!),w,
'k$r.@";Sn,l@ff
eErl€r!4y &*$ks.d&$rle
o[us-'a'e
qa&
d@r,b
"$$ r@i .lwrr!ffid
lsyM4&e1
4{&b d6&tsrir
ra1Mrtsd
&jg. .: iouer{ jQuery Mobile Overview
(hr|M. !.rsn: l.o
5/@I^L-' A Torrch-optlmlz*d web Frsmework ;qrierys mobile strate8y can be
@hl(dtu:
c;lk.surr'nllitpdt4 &
for Smanphone5 & Tablet3 summarized simply: A unified user
rareiPah;
interface system that works seamlessly
16 lageiO! v.ls$ across all popular mobile device
Me, ,r.. .,,,-n |!l!ifi$i!,&,] W*Ic0rse" Browse the jQuery Mobile platfarms, built on the r0ck-solid
ccmponents and learn howto make jQuery 5nd jQuery UI foundation.
rich. accessible, touch-ft iendly Focused on a llghtweight cadetrase built
w€bsites and apps. on progressive enhancetnent with a
flexible, easily themeable design.
Ihe critical dlfference with our
approach is the wiele variqty of
Intrn to jQuery.Mobtle !]tq!ils_-I{&r tfa rm s we rg t{r r&et ng
l
Note: perintah itu dilakukan di command line (cmd) windows atau Untuk menjalankan jqm di
terminal linux dengan posisi di platfurm-fools sistem folder android-sdk smartphone / tablet pc bisa
Anda. dilakukan dengan dua
cara: yaitu dengan
. Cara lain untuk menjalankannya adalah dengan teknik import aplikasi memanggil jqm dari seruer
natiue yang terbentuk ke sistem utorkspace eclipse kita dan melakukan ffiIe jqm berada di seruer)
running projecf dari eclipse. atau dengan memanggil
jqm di mana jqm sudah
berada dalam package
aplikasi project yang
JQueryMobile dijalankan. Cara yang
JQueryMobile (http //j querymobile. com/) adalah fr amew ork yang berbasis
:
pertamafle jgm berada di
HTMLS/CSS3 dan javascript untuk aplisi u.reb yang dijalankan di perangkat seruer (folder httdocs
mobile. Tentunya Anda sudah sering menggunakan atau paling tidak pernah sistem apaclrc) sehingga
mendengar, bahwa dalam membangun web kita bisa menggunakan kita dapat memanggilnya
fremaworkjquery, begitu juga apabila ingin membuat aplikasi ueb untuk seperti gambar berikut:
perangkat mobile (smartphone/tablet pc) kita bisa menggunakan
iquerl,rnobile. Seterusnya iquerymobile akan kita sebut dengan iqm urrtrrlt
mempermudah penjelasan selanjutnya.
Berikut ini kita akan membuat aplikasi sederhana dengan menggunakan jqm
sebagai framework-nya, aplikasi ini menampilkan data-data pemain
Barcelona dalam bentuk /isf serta kalau dipilih details akan menampilkan 8:,.
Langkah I L1.l
13
t3 ,
<Ci? id:"erl}:16}.eelistFaq=" Cnle-role:"Feae" }
-,*^-".J
t,rhisl>
Perhatikan coding di
atas terdapat d,ua file pada folder css yaitu
jquery.mobife-1.0rc1.min.css dan styles.css. .fi\"
j query . mobi le- 1 . 0 rc 1 . min . c s s adalah bawaan dari Jramework jqm
yang telah kita dounload pada tahapan sebelumnya. Sementara berisi
seperti coding berikut:
s\rles.css
,.. *' $ti:ti$).'i...i::yrtr.'i.'r ,:: I
P f]aar: aEit'.-
i3 tr}Bdd".ira,q-riglac; l,&Ilxi
Langkah II "* Fact.Cift{lr*h,*t:.t.cm.: A6}}}{ i
Persiapkan;fi/e html danfile javascript Qs) seperti coding berikut ini: . 'T t 1! r*l&F: i...t.!"."' {: r:i: :--1'!: tl i: ::i. * }:i -l
..1..
rE ]l
]);
jquery. js dan jquery.mobile-1. 0rc1.min. js adalah bawaan jqm fwcli@ iis!,]a'rljELElee {deta} {
| {'ic:i!'l,trxlieryl.r}e--.cj.ty) ;
r 3E:1'1:eL1Rl ='rr:!:. -:rdin:s! iI:::Ltr\ :::',i:?:'"; .^nE1l! l!ryl. rc i"r.rtlr-c\'
i{ rf i€r$IciEe,aannEerll:.)] {
rEv Erl
^t,FFr' ;{'*aiilr{1it'}.illenlt'{ii.}1. h:ri=.:rEirieedrr::r1:.hitr1:il=' } erpltfer,mns.ge:IC . '"Hh.ltiit$ Siir;::' h3)'
i! (;)'-:4::iee,[r.dl:]fijitllrT - '- eT-cl:€,H:al::L:3::iilr -', t. i. ,I)'l;
; {' *.empi*}relirtFagt' } "bilC (' pafeixit', fusfi sn {31erl} { I
getErglcyEel,ist {} i if {efiFlcyee,ftp*rtclunL)i} {
$l ri:: --li''l,e!!€:j{' --).; i:.:- r:(:lrl-J:,r,i[. ]:- - :r;ic;::.:l - "'..1ir] r:; "::::: '"eia:::. ': -
]!; - "rrl- r.E r. ^ / :! '' l ,
rrl, ',r\' "
:1. i
fuctictr getEnplslEPli3t{} {
!1 ia l6ril^.eE.n::l\ I
1.i:.,,. S.geLJS$],I{iefficeuRt +'{Etenplij,ees"FhF', imction{data} i "'r .i.:):,ar:< ni:' "
i: ;{'ier;i:iee::3: l;'1.:eE;el};
:l arn_.(-aEa = n:r:1tEii,
:j ;.eeEhle[r.1rlee3, fuctlon(1nCex. ErIl:;ee] { St'*a.ar..hit'l.apFenCt)<iilii Lrr:-':n1-:,r' - e$f1:ie::xnr.L r'"xI3)Errr1{/h'r}'a
l,i $('iEtrf.t?E:Llir'),iFpend{rd1i}<r hHi='eilpiryeejleiail3.hlrlliC=' + er,p}sye'e.iC i '"}' r
<F:' + e[$.1alae,eNr1 ]'<,/!).;,ie:.{,/1i}'} ;
dir e ctorg f s eruices pada sistem htt do cs op oche kita. \4. r6i!
aar hashes
- LJ, u:nu,
- rr:lar,iicalr5i.h*f. ...ir:.:l-;.I:aat:rx.hr::.. (':'] + ll,i:flr:{';'};
{1. forier r . i; i < hrihe3.lenglh; ilt)
Employeedetails.html Getemployee.php
, f, r:f,-m?EF gTU \
{illi
:-5"n_-- .-': -.;, r.
i {hLr-I>
S .. {head} :::ii.":t]:.::.lj.i'.i]3ilii]i't.]i::].iJ..,:,1i:t,;:l:d.l'i:i1t.l.ltil:....
4. d,/he6c1 tiriti.ir.ijl :i:l:i:lr,: " ,
3r ''r,.reii, t.!1riu:!, tr,:i:i:li;ff ii:t{:::i::'i.}id3, r,i:i:iiari ti:til::l::i:lii:,
'':i:r:[l::j,er: j.:::.j]:i.rr:!1,r,,,* i:r:.xiin;t::i*r.itli::: -". -r:.ir::-... =:.:ri ".
<n*rd -..
'lih::i:.:j.:lil.;:i:r:r :.1i::l'1;:3 ::li: j:i i,:r3-:1;if,i, :,:ii:;l;i[:";
|
S...r{CiT iC="CeiBilsF6!e" CatE-rD.Le=-F6{e" Cir*-adc-beEk-llin="true"}
rit 1
.t3-
ll'
ll
"if,'.,, <ul aC=-aciiBn],l3]:" daiB-rq1e=''.ilst{ies"" CatB-insei="trui"xr"ul->
.l,l
aS:: {J.Civ>
i6 Jalankan aplikasi baik itu di brousser komputer biasa maupun di brourser
{3ii' dlci?}
.,1$ I -<lb*i'',:
smarq)honeltablet pc, dan perhatikan tampilan layar jqm akan
;.* lr:- {lhtsi}} menyesuaikan dengan besar layar yang ada. Dan inilah merupakan salah
satu keunggulan jqm. Berikut adalah tampilan aplikasi ini dijalankan
Langkah III diberbagai layar.
config.phP
{}}h:}
iilti:l = '1,:l;';
, r;
iClr6,a;i: '
= dire*llir*! ;
r
$,$h,ra:::r
i:iirt i*t:
hicAlidal
& ir liri
&
&
& lbrahim Ahllay
3elifiiil]l Srai,l
,
& *[]ir,l:::'., 0 s
,1
& R?li*:'" o *3
&
0atliAlvtl
i$
& !t! ii.Jl]tr
::H."^."1::ff' ! qx
$agioBuqud
i{1 *1111:
o" o g
& !l3qlal]q!siJhil
Adriano 0e
v
& !e{kia:
satu keunggulan jqm yang di desain untuk berbagai jenis layar dan jenis
platfurm (android, ios, bb, wp7, dll.).
$ Jonathan Fonlre
r$
A ;rnlsrBrI
Perlu untuk diingat bahwa khusus untuk and.roid, untuk menjalanka n ruteb
apps yang didesain dengan html5 atau menggunakanfamework ueb apps
mobile baik jquerymobile (http://jquerymobile.com/), dojo
(http://dojotoolkit.org/), maupun menggunakan frameutork dari sencha
Tampilan dijalankan dibrowser normal di komputer. (http://www.sencha.com/products/touch/), dll., berjalan normal apabila
dijalankan dengan platfurm Google APls (Geogle Inc.), bukan dengan
platfor m Android biasa.
SK&:s:," task.html
thl-sErtry ]atB Ir"e jB{ian{rrhl.}
(31:iF: Lt;::''iex:,:laY6"!l::1pi" .::L;:3ti="ul: ;" 3rC="EhC:le?e;,1-i''x. J;::!t,
Leo$*l Mssri
!l,nike.
S*rashr6,5PA . -,i -. r. t-..."taELne$B"'lleBClir1Es: . l.:,;".,: {hr .r}
-i r: .'-'*le:{]:" :i : .-, ";a;i(-lte}e]" "Ldikr-&m€'"
!adil ''! ]
r!il':irii:ir*ri!|r tr.i,.
"r6$kdl'1e" .TerxTlat KEjadian: r' . .{br
view slanager "r-r{l'idr!cl
!kJrLru!l lOSnJUtr
{all ortite
l; {lCi1,}
"sulri[" *i.'.-e"
Call (*ll gffail
fi .i::: llJib*rrf lin.. :am
(ell felN
File html tersebut apabila kita buka di brouser komputer akan
menghasilkan seperti gambar berikut:
Jdvi Compiler
Compil
l-,{d4r{t""{l*tl,,--l
Activity
Minimum SDK
task
8
Jwa Editor
javado. Lo.ation
PGje.t Rderen€Er
Rtfe
lillr l -- v*aurs"
iI .- - -ma
"- - .*:,... ..,... .
l. aaaLo'"o... li
i
_
I
fi.un.rDehuq Sding:
Usld.ryrqw@
dan pilih new-folder dan buat dengan nama folder www seperti gambar
berikut:
I
l
''',.',,,,....1
(al (..,:
{-.. ..,.. l.;,{rrs*-'-.t
Pilih tombol Add Jars dan cari nama project kita dan/o/der bin di mana
file jar phonegap kita copy-kan.Pilih sehingga libraries kita bertambah
seperti gambar berikut:
Kemudian p aste-kanfile html kita tadi di folder www yang barusan kita buat
sesuai langkah di atas. Selanjutnya copg-kan phonegapjat dariframework
phoneGap yang telah kita dotunlood untuk bagian android kefolder bur di
project kita. Setelah itu, click kanan project kita dan pilih build path -
configure build pat]l sehingga akan muncul seperti gambar berikut:
Selanjutnya copg-kanfolder xml dariframeuork phoneGap yang telah kita
dou-tnload ke folder res di projecf kita sehingga susunan folder res project
kita seperti gambar berikut:
;:. ip drawab,ie-hdpi
rr tr;t drawa[:le-ldpi
1.. [] drawahle-mdpi
. * l:,,a,,+
I t}. trluu,
, l_'.:l *nlr
gl phonegap,xmt
;q plugins.xmt
t+ AndroidM.anifest.xnrl
;.:i proguard,cfg
$ prnject,propertier
" ,:t ^,
!:: HnCnEqapl.
,r i$ src
,r,$ con'r,wilis.phaneqapl"
r. .ft phenegapljava
Catatan: tentu cara-cara di atas berbeda dengan cara buat natiue untuk
aplikasi di platfurm lainnya seperti ios, bb, $p7, tetapi intinya tetap mudah
Selanjutnya rbahfile taskjava menjadi seperti coding berikut:
dan bisa dengan menggunakan phoneGap, untuk mengetahu cara untuk
platfurm lain silakan pelajari di situs http://phonegap.com/start
taskjava
package com.wif is. t.ask;
irlport com. phonegap. DroidGap ; Aplikasi RSS Reader (Iquerymobile +
import android. os. Bundle ; PhoneGap)
public claBs Lask extends Droidcap {
",.aIied.vhen Llt.-a,:ri.:r7 i' l-r:, crr.,l r:.i . ' Pada bagian ini kita akan mernbuat aplikasi android untuk membaca RSS
i,i,VLi'tU- dari sebuah uebsite ataupun blog. Anda dapat mengganti menjadi RSS
public woid oncreale(Bundle savedfnslanceslrate) t
sebuah uebsite apabila uebsite itu memiliki RSS. Pada kesempatan ini kita
sul}er. oncroate ( savedlnsL.ancesLate ) ;
agper, loadurl ( " f i ld : I I /android;asset /viww/ task. html " ) ; akan contohkan untuk membaca RSS sebuah blog dalam hal ini adalah blog
nsafaat.wordpress.com, jadi kita akan membuat aplikasi android untuk
J
membaca posting-an terbaru dari blog tersebut dengan menggunakan
fr amet-u orkj qm dan phoneGap.
Perhatikan coding-an "super.loadUrl("fi1e:l I landroid assgl/www/task.htnrl")"
disesuaikan dengan lokasi dan namaTtle yang kita buat, jalankan aplikasi tli- Langkah I
emulotor android sehingga akan menghasilkan tampilan seperti girrrrlxrr
Coprl-l<;rn .file jquery.mobile-r.o.min (css), jquery.mobile-r.o.min 0s),
berikut:
jt;rrcrv r.().,.1.rnin fis),phonegap-1.3.o 0s) ke folder js di dalam folder
I{SSI)r.rrro. /,i/r, irri tak usah diubah karena merupakan bawaan dari
li'tttttt'trrtt'k ir1trr rl;rrr plrorrt'(i;r;t.
ry,
Langkah II Pastikan file yang dipanggil dengan script src sudah berada dalam
yang tepat.
folder
Buatlahlle index.html dengan posisi sejajar dengan/older js (bukan berada
dalam/o/der js).
Langkah III
index.html Buat.Ttle mainjs di dalam/older js dengan beriskan code berikut ini-
{ htr[]
,i':ri:3iirtiiiliiiili:
2
I
<hLEl>
SSCTYPE
marn.Js
(head>
<tria na&e='vieh?art." conreni="uidth=Cevi*e-s*iCihr ini.tial-3c81e=l-"> ... ili;... ::::
<iirleH/rii.Ie> llr':.i wr TIll,E = "nsaaaai,scrdpres3.com";
,$,tir:,r:]. {1ink rE1="stylesheet" href="i3/irT'l€ry"mebile-}..['ri*.sss'' J]
1 <script src="js,/lquerf-'1..6.4.tri:i,ls"x,/3crrp;)
*, fSS = "hllF:li'ssBilsL'tr3rCFre3s,cffi!,r:eed,J"
'::llti},l.,l
rl {script 3rs="j 3/iqu€ry"mcbile-l. 0'ej$. i 3"><,'scriFt >
:rt:,:.:.::.,;;
;1,&iiii It; tlt,., destrriptioni $ ' trim {$ {v} . iilc ("da5eripiim"} ' text {} }
r,r3i$i...':. t/div>
,t tl
l $,$,,,,,,,,,,,,
i:{,X,,iliiiiil. </div> 4i enEries. I . l.: (enErY) ;
44 ll;
{s
i{gt::.rl:, {lbsdy> *
a7x61" 46 1*EBl5Eor6get"eltries"l ,;561'l'3Lri-sgiiy{entrle5};
uir{{r,. .. (ent:ies);
{? renCerEnErles
lt
i: er:crtfuclionlll.LiR,statu3.e::::, { RSSDemoActivityjava
-: if{I::"]sE;:axel'litj1:l"li { package com.wi Li s. rssdemo;
5!,.. $ {''*:tatu:"1 .his1 {''11i1!E aeciic Yelsirl.'
ii errtrreE * .15.;li.ai.i:;,:r ilccelsrqra.Je l"tirllies""'}:l ]
:{
*!,
-f,le:Ef,tr:er(eaE:r'3);
i else { iffi::: lffi;illl3!i8..,u,",
.S1.,"', +{,'*stBl}s,,},hts1{'5iti}, !E aie uinfle io r]ei tht A5: e}l ih:rs is nc cai.h:,''}i
:1 l public c1a6s RSSDemoActivity €xterlds Droidcap {
.* , 1lr
,r** |al1etl lrhen lhe aclivily is lirst creal*C" f,l
,{:., }}i prblic woidl onCreate(Bundle savedlnstanceState) {
$3.lli.ilr Eulrer. oncreaLe (savedlnstancestate) ;
i: $ {"*rair,Fage"1, llYe {"FalrlE
jNresh;s", fmcliqn {*r,'r:ri, cBta} { super. loadUrl ("f i le :. t /android asseL/inn,v index.irLml ");
S{ if{Ceta.PEl'Feg:,lewrh}i I
,:* +i'hi", Car*.Erre"f8ge].tErt{"""},'
i.i .' i{''itritr-$err'", iex6.FiEvFEge}'brnli''"}i
'El 1;
,ii
$9
rr ,
Selanjutnya jangan lupa untuk copg folder xml dari frameu.tork phoneGap
l'1.. $ {"icrrt*rrf :ge"}' l.ifE i"F.EeEhr.". f urcti+n{FreFage} {
kefolder resf project android kita. Jalankan aplikasi sehingga menampilkan
Li ..- seperti gambar berikut:
l! i{*hl', ftis}.tE{t{e}tr1e5[sElecr:dcrt:!].tit1eJ;
1* rar rcstentilJ}ll, - ''";
;15 trcrtincHll'i]-t=etrrrieslEeLectedlatr]:l.Ce5c:llltita;
r"]:ElelgliapeJa{ln}';
:i c|rte$il{iIl i= rr:privii hre:=''r*alrieE[3ele:teCErirlf].11.]: +
'- €{",;:,:l;:rrl',this!,hf,.i{':ateat'-Ty-L}r
j; j);
+c->handleRequest O ;
Ir
'.I
ri c.arch tExceptlen 6e| {
i render{'etrrnr',*r'rey{'uesseEer=}Se-}Eet}kseage{} }};
,,:: I
J"!
Untuk mempermudah pemahaman kita tentang aplikasi ini mari kita lihat
t-:
.E
l:t cldsi FrfflucEl
;i;llrltfflt,r,ill erc*E ::erlortitrE {E-&IL ' E-I'IaTISE} ;
:':::i'a:::::1t.al.ii1::, I
'99,:::::,)::: o''
Nama hosf, nama user dan rrama databcse sesuaikan dengan setting Sementara fle sebagai controllers adalah file category.controller.php dan
komputer di mana disimpan database-nya. home.controller.php
Sementara yang bertindak sebagai models adalah category.model.php dan category. controller.php
product.model.php. {:Flxp
cI aEs Cat€gorllcontrolIer {
category.model.php Euf:1ic function hMdle&equest {) {
irai = Category: :fiad{array{}id':>$*$EI['cat€gnry'] ]];
ii terFry {&rat} I {
Ehrl8 sew Exceptisn('-Ihere j-3 n6 Buctr cai€gsry!*l;
l
.t.:i.:rr:ii ii:::: i,:-: r,i:-.;.-._..r- :r,:_.ii..,,.,.,',.,'.j.
icaiegrrrtss = Category: :find() ;
F&.llc at&ric truoction tind{$*.: : 8.16!'{l }{ gFrcducii = Pro{iuct: : find {Btray {' cat:Eory':>g Gg.T [ " caiegory, ]] ],
!fshal 6.ih;
geu->erecute tgBrr) i
home.controller.php category.php
{}Fhli render {' _he6Ce r', nrrei' t' r it:le ! =}i-:il:: } } t}
1. < I Flrl:
.tB],trlillr,iti|i
<diY clEsE-'rightIsl]m">
'..t1::.:3 ,,',':,a:,: : r I:-r -: ,: i: r,: )-: : i.- ::, .l -r ar:rr :: i'-: i i liil,i-.: l.'r:. , {u1 dEra-.ole="1isivieu" CBtB-iriei:"true" datd-ihene="f," d6ta-d1}1Celihere:"c">
'.',.Slr:trrll <?FhF tredEr{;l ri{trits) }l}
',.-iitli$:.itl11i l
11lil
{lu}>
,|:t:::51' :| !1.*me{*nt.r*a 1e r {
::t:..1:.1
c I Bs ,,..,,$,.r..:r
:
:',' ::' ::ai',: ::' ::., < I di\ >
,]':l:lri$iltr.::, Ilu]3lic. func.Eia.rr fra:rdleRetl"re5t {}{ ':l'::.9..::::a::..:
,l :}:':lliriiirlilllil' :a'.:::'Y:,:t'
.idi? class="1eftctrll]&*!
a .tl&{lL,ili: du1 data-rB1E='ll3tvieN' data-inset="t.uE" iBta-there="s' data-da?1d€rlher€="h'>
<11 dBta-ro1€="'1isr-diride:">CBtegories</1i>
:]::::Stt:t,li Sc*j:rl:el1c : CaEeqt$I:y::firxit)'- ,r.l.titl ,;:t
ir. <rll1 rEnder(4rai*{::ier,a:rs:'{'arii"e'=}"t';ETl'isieqc:}!'l)} t}
1-O. 1l;:1&&.11,11::;: t,1u1>
1f;t"'llrlll"'''' r€tldEr t t t:r:me' o *rrey { ":t {.'::'::',:: :: < f d it >
,:,';g,,,,.::,,,,,'::,,,': rt.it1e' :F'3$*}}i1e-Ii"e5t*'
lltt,l:{lt,t-, I s\:Lr trnder { t_iBsler' } }.''
iiiiilYtii,i'r
::7!,&.:"':,,::t)': i);
rtg I
:',*$;,:,1::111,11;,'' 1
_product.php
a,&lrlilrliliiiriti,iii ?F,
r 11i glsss=,;:0du[I"]
:}.rlirl:l{1s{ srr=,sgsetrlrry/{?php enir* ipr,ir.r*i-:id }},jg" ali*{?p$ mhi rFr:,***i-}nam ?}' l}
Sementara yang bertindak sebagai uieu.r adalah file-file php berikut qlp1t rrh* ;lx,iu$*nanfl ;) (iX?!:hF rrhi, ip$iu,:t-hmnufa*urer?H/i) {b*p,{}$ tch: i;::1:::-:
r,3,,,
_category.php n$! Fn rV
y;fLL r /E\ \J s/
category.php
r,{rrr,,lrrrr, {lii}
_footer.php
-header.php home.php
_product.php
Error.php
, 1 {?}i:$ rcnder{'_header', array {
1
title'-}itirle} I ?}
Home.php :{'r'r'l
Aplikasi HADITS
Pada mulanya aplikasi yang mengandung bahasa arab di perangkat mobile
khususnya android agak sedikit rumit, hal itu karena sistem android belum
nrengenal dengan sempurna huruf arab, sehingga untuk menampilkan
llirhirsa arab/tulisan irrirb rnermerlukan arab re.shoper. Sehingga schagian
besar aplikasi Alqur'an atau hadits itu masih menggunakan sistem image
untuk menampilkan tulisan arabnya atau dengan teknik yang cukup rumit
yaitu menggunakan arab Reshaper. Akan tetapi, tidak untuk genarasi
android 3.o ke atas sudah memiliki kemampuan untuk menampilkan tulisan
arab, sehingga kita bisa menggunakan aplikasi client seruer untuk aplikasi
Alqur'an ataupun Hadits.
Berikut adalah gambar awal aplikasi hadits ini apabila dijalankan di antroid
tablet (android 3.r) dalam contoh berikut:
Pilih salah satu hadits sehingga akan menampilkan seperti gambar berikut:
Apabila dipilih salah satu akan muncul seperti berikut (dalam hal ini pilihan
kedua yang dipilih).
< / styl e>
< /head>
<body>
<secLion id='r'page!i> < l-- Def ining the #page .sectlon with the section
tag -->
'' <header> <l-- Defining the header s€ctiofi of the page with
the appropriate tag -->
<hl><img src; " img/lladi st*himpunaa. png " a1 t= " i con "
widrh="113 " heishr='101'>Hadits App</h1>
<span claEs'=!'styleZ"> Ensiklopedi. Hadits -
Kutubus Si tLah< I span>< /hgroup>
'< lheilddr>
<section id="articles">
r,' ,..<ar'tiile irtl-"articIe1">
< figure>
: <div al"isn="r:jghr"!<img src*"imgrlbgkhari,pnq"
vridth="50'r height="60' /></div> l
< / figure>
<a hret. " tradisL.php?tlitr)e=1 "><h5><stiong>
shahih Bukhori <,lstiorig> - Abu Abdull"ah Muhanuiiad bin rsmail bin
lbrahim bin a1-l4ughirah biir Bardizbah al'Ju' fi a}-Bilkhari< /h5></ a>
< / div>
. i </artlcle> .,,.,... .,. it,,
. </section> .
:. .,.. ., ..
r
Untuk menjalankanini import database.sql dalamfolder hadits ini kedalam
sistem mysql ini, dalam database ini hanya beberapa contoh sample hadits <art.icle id. I articlel d'i
saja, tidak semua hadits diikutkan karena pertimbangan storage, sila hkan <div c'lass;"artic1eBody clear'>"'
<figure>
ditambah database haditsnya serta aplikasinya sehingga benar-benar siap ',', : <div ali gn='rri.ght q>< img,, src* ",img/mu'sllm; png'.
dipakai oleh orang yang akan menggunakan aplikasi hadits ini. tiidth-' 60 ", heighL.' 60 n -/ ><,ldLv> ., .
src='.imgli1dbq:adWud",pngl.1lll.w1dth..'60.,heighr:|i..6.0!1,],]']]l></diVill.l.l..li
..,,::., , </figr.iref,. ,,.,... ..iiri.,r. :::::': : '
,.",.,,:,,..',):.' <QIEV1e
lypel"text/css"> ,._. ..,,,,,i... <a hief.rhadist..plry?iype*:lrtnSt{strong> Sunan
< l-- Abu Dawud iiong>-,, Sulaiman .bin' A1'g,si i ati;]. As*
< / s Ahp,t r.pe.wua
.sEyIe2 {font-famiLy: Forte;
font-size:2Opx; < / art ic 1e>
) </section>
.sEy1e3 {font-family: Scheherazade)
<see'tLon id* "articles">. hadits.php
<article id="articIe1"> <?php
<div class="arLicleBody cfear"> header ( 'Content-t).pe: text/htmf; charset=utf-8 ') ;
<figure>
<diw align="right'><img src="img/tirmidzi.png"
width:"60" height="60" /></div> ift$-cEr[hal]:*"1")
< / figure>
<a href=llhadist.php?t)&e:4 "><h5><strong> Sunan
At Turmudzi </strong>- Abu fsa Muhammad bin Isa bin Surah At Turmudzi
Spage = 1;
</n>></a> $Pre = 1;
</ div> Snext= $page+ l-;
< /article>
< / secE ion> el-se
<section id="artictes"> $page = $*cEr[hal];
<article id= "arLic1e1 "> Spre = $page - 1;
<div cl-ass= "articf eBody cf ear" >
$next= $page+ 1;
< t igure> l
<djv align="right"><img src=" img/nasai.png"
widrh="60" height='60" l></div> $con = mysql-connecl("Iocalhost", "root', ") -
</flgure> mysq-L_set_charset ('utfB' , Scon) ;
<a href="hadist.php?type=5"><h5><strong> Sunan mysql . seleit*dLr ( "db*arab" , $con) ;
An Nasa a <,/strong>- Ahmad bin Syu'aib Al Khurasany </h5></a>
</ dlv> tb_hadist
$tableName= " ";
/articfe>
<
Stargetpage = "hadist.php?typs='.S-GETIrype] ;
<,/secti on> gl-imit = 5;
<secLion id= "art icfes " >
<article id="artic1eI ">
<div class="artic IeBody cfear" >
$slages = 3;
"i3li"]r rnn=,, rishr " ><ims
$page * mysql-escape-string(g*GET['pase, ] ) ;
/ i bnu -ma j h
s r c = " i ms a
-" " i f t Spase) {
$start = ($page - 1) * $limit;
., ?:i'r"-::#;, : ::"^, :.,"" = : :;,.
: Lrons > sunan
= ] el-se {
Ibnu Majah </strong> Abu Abdullah Muhammad bin Yazid bin Abdul lah bin SsLarL = 0;
Majah Af Quzwaini </hs></a> <ud-Lv-.
]
art ic
</ l-e>
</section> $query = "SELECT * FRoM t.b-hadist where id=
' $-oer 1 t.yps 1'
$queryl : TSELECT * FROM tb_hadist where id=
'$*GErltypel'
<footer> <1-- Marking the footer section -*> $querys = "SELECT COUNT(*) as num FROM tb_hadist where
id='$_GETlt]pel ' ";
<div class= " f ine " ></div> if (isset(S-POSTtCaril ) and $-POSTIno*hadist] != "")
.: ',<p>Copyright 2011 * Android t
TEA},I .Biobses<lp> $queryjaram = " and $ p0STlberdasarkan] like
<l:1 lhqnge thq copyright notice --> ' B$_POSTIno-hadist] 3' ";
< / footer>
$start = 0;
r '.ii' </section> j
<11*. Clo$rinC.. the .#paSe section --> Squery = Squery. $queryJaram;
< !-: ,Ja*aScript Includes --> $queryl = $quer-y1.$qu6ryJaram.T order by number asc
,:,: LIMIT $start, $1imiE";
$guerys = gquerys. gquery3aram;
< /body>
</html>
.- ,-,.,,ifi$r; i;J;1i,,,,,,i,,' ,i,,iiii:,ii:i::" ,*:'r:,ff*1i1*;11''i;ffi..i.
,,.
;i;ji;$*il1-,**f',[*
'",;,,,i:"+::i'i: ,,,''i
,ffi,.,'1-1-
1.+l
1
I
ll$rasult = mysql--gueryl $querir) ;
''r" elseif (SLastpage > 5 + ($sbages tr,,2)) /l Enough..:pages to
hide a few?
$res = mysql-guery('SELECT * FROM tb-ikhtisar "); {
$rw = mysg!*feleh:-array ($..res) ; .i,' r.,,-// Beqri_nning only ni6. 16gsa,,.pages
'tf($page <'1 i {$stasds * 2)) i,,'
I
.:.:: ::::. ,.for ($count€r ..1; $ca&iitser < i'i4: +":...
$paginate.= "<a
href-'$tarEetpage*pig.e*2 1>21.14{>!) l. ; ' ,,r',,
'i. .
.'
,t,, ,. ii ..,..i. ,.
i.lass*..'disabled'>Previous<lspan>"; I )else{ ,
$Paginate'= "<a
hre f = ' $ targetpage&page= $counter '> $counter< / a> " ; )
/ / Pages
**:ffiilil;#ffiffii,i.I.i'],..,..,i,|ff+,.*....1'i,,!,,i,' ;;#;*:*;ffi
ittl+lf:tsii}l,.11ffi "liii:t\I#tr1:if""Yi :.,:::::::,:.,,:li:,+: t*iX,*+*:::;4if*ilSiFE$l:'Hfffr's'f1i,,1".i*,..
i:iiii+;i;
i;:.,:,.,.:;':,::::i;:r'
#fit;frffi;9,*;i"i'l'riir.dffi
.r]f- ' : !!!::!::.::.n:
T;i--,:ir,#Eiifft-ffi1.#
_::_" ',.ir|:.!'!i:::::::b:':iiiii:::iii:: -:i
i1.,,
+.i.., "-'q*i?1l[#tijli;+ii+,u,tt+r,,.i.ii|:** 'i**-:]}**ffi,. ,;.J,,,,,,r,ffi'0ffi"
eclio $fc,!(t.iri1.1*lnber,'llrl ; ?:?)' 7'. 'i 'r"rr': .:'rrrr'" : '::: :: ' display:blocki ,- ..
'..
... .11..<.6pan :i1asB*"c1ist "> font-family:'Scheherazade" ;
<.?PhF. :rr'. I .-rr: . arc : uril SchehalrazaddReg0?., tt f ) ;
.(
-{ line-height : itbrntal ;
echo($kata); font-weighL: normal;
echo(" "); f ont-varianE : norma1,.
$kata=sErtok(" "); lext-align: Just i fv;
)?>... whiLe-spaco : lrollrrnl ;
i$$g.xtt:ruiir$I}e$e+ :.,
,\:,::,1;1,:,,;l;1:111:,:1:;:'1
e3,aa
r{:l: r,iillllrii
$p$qle:,,,ir:r r[rhs]]rr',r'r,,,
$pre=gpage-1;
$next= $page+ 1;
</head>
<body onload='window.scrollTo(0, 1) ;'>
with the section tag -->
., ,l:::r.'1,,
': 'lllr,r:tl
:rir]ritiltiltiir{ ra,:iiiliiiiti]l.i.lLlilltrru,tltrtirr,,,ll
rllllrtliit]lr
;triil.iurlilj)ll,trlr,,,l,',,,.,ll,il
,.llll:l1li,rl,t.rt,rt,l.,','',.,
.ililrl.irli;iil .l,lr" r.. : '' :
,rlrrll.li;lrl}-lrr': .. r .'r-
$page = 1;
$prc e 1,;
'.'',<lheade,]...,ar1.*^,..-,-...
. tdiv class=:11ine"></div>
<div class="articleBody clear">
..:..u:;,$..5;;l1,,'1''*"*":$:ilI.:-,",
class="sLyfe1"><?php echo $row['content' ] ?><,/span></scrong><,/d.iv>
</ div>
<br>
<div cfass=,' Iine,, ></div>
. <spirn class= "meariing'! >"ArLinya I ::lepirn>
<div align;' justilyl> <span
clelss*"$eanlng" > <?php echo.'.'1.'. $row['meanins'] ?>
</ span><,/div>
</ div>
<footer> <l-- Marking the fboter section -->
BAGIAN 21
.i.<l__Changethecopyrightnot,ice*.>.
UPLOAD KE tnIARKET ANDROID
<,/ f oot.er>
</secEion> <!-- Closing the #page seclion -->
< lbody>
< thtmf >
<s't1rle tlt)et"text/c.ss"> .l
<!--
.sty1e1 {color: #CCCC00;
paddi ng: 2px 4px,'
.: I ,. display : block; I '
upk]sdaprr;eft]n
[I
High R$hlis Applicalion Ad{, a hiies apdcdron ftr: Hi0h Reslulioo Applialion lconi
512 \ 512
32 l,it PIJG tr JPEG
Muimumr
0.hsrelers (4000 rux)
1024 K6
PrmlionalGraphi( MarEo@tmalgaphrr Prm Graphicl Rmot Changes {English)
oPto,,a tqgd--l lup'qr{-.j i80w x 120h ,Learn Morql
?,1 hl P|,lG or JPEG ino alpha)
oil3u! t?-JOo na gomte my apdie*iof, ex.epi in Anded L,lskri and in ey Geogle.otrerJ online or nsbrle Promo Text {foqlish}
"artetif,g pose(ies. I sndeistedthd any changes lo ihis Fete,cflce mEytake $i*!.da',$ ls ta*e eflst.
Persiapkan gambar sesuai ukuran yang ditetapkan, gunakan aplikasi Selanjutnya penentuan tipe aplikasi apakah berbayar atau gratis serta
pengelola gambar seperti photoshop untuk mendesain dan menentukan penentuan negara-negara mana saja yang boleh untuk melakukan instalasi
ukuran prxel sesuai ketentuan yang diminta, ukuran file dan pixel gambar aplikasi nantinya seperti isian gambar berikut:
haruslah diperhatikan. Setelah tahap ini adalah untuk mengisi tentang
deskripsi aplikasi yang akan kitapub/uh diisian seperti gambar berikut:
Pri c ing F re E !'r'art to sell s*phca tler sf :el!j.-a i.,l*r. t3jlA,.it:Sli|l_{1;_q-r-,J! t I: i lt tl
m All Countries