Anda di halaman 1dari 82

ANDROID FOR MOBILE INTERNET APLICATION

SEMESTER VII
(2 SKS/ 3 Jam/Minggu)
Penyusun:
Drs. Yoyok Heru P.I., MT
NIP. 196807081994031002
JURUSAN TEKNIK ELEKTRO
PROGRAM STUDI TEKNIK TELEKOMUNIKASI
POLITEKNIK NEGERI MALANG
2013
YHPI -> hal : 1
KATA PENGANTAR
Segala puji dan syukur disampaikan kepada Allah SWT, atas limpahan rahmat, karunia
dan cahaya petunjuk-Nya yang tiada tara, sehingga buku ANDROID FOR MOBILE
INTERNET APLICATION untuk matakuliah Mobile Internet Aplication di Program Studi
Jaringan Teknik Digital Telekomunikasi POLINEMA. Buku ini sebenarnya hanya dipakai untuk
kalangan internal POLINEMA, namun apabila ada dari saudara kita di luar POLINEMA yang
berminat menggunakan buku ini, dengan senang hati kami persilahkan. Sholawat dan salam
semoga tetap terkunjuk pada junjungan Nabi Agung Muhammad SAW, keluarga, sahabat,
thabiit, dan thabiin, dengan ghirroh perjuangan yang tinggi dan keikhlasan yang mendalam
dalam memberantas kebodohan dan menegakkan kebenaran di muka bumi ini.
Buku ajar ini dimaksudkan untuk membantu dan memfasilitasi peserta didik dalam
mempelajari mobile internet khususnya menggunakan android. Salah satu faktor yang
menentukan keberhasilan sebuah pembelajaran di kelas adalah buku ajar oleh karena itu
keberadaan dan pemberdayaan buku ini menjadi penting dan merupakan salah satu rujukan
dalam menempuh matakuliah pemrograman computer. Sistem yang ditekankan dalam buku ini
lebih ditekankan pada proses latihan dasar dalam membuat program, dengan tujuan
membangkitkan daya nalar dan logika Mahasiswa.
Penulis berharap semoga buku ini dapat bermanfaat bagi mahasiswa program studi T.
Telekomunikasi yang menempuh matakuliah mobile internet aplication maupun semua
pembaca buku ini. Terimaksih bagi siapa saja yang sudi memberikan saran dan kritik atas
penulisan buku ini, karena kami yakin bahwa masih banyak kekurangan alam penuisan buku
ini.
Malang, Nopember 2013
Penulis
YHPI -> hal : 2
DAFTAR ISI
LEMBAR PENGESAHAN
KATA PENGANTAR 1
DAFTAR ISI 2
DAFTAR GAMBAR 4
PENDAHULUAN 5
BAB I ARSITEKTUR DAN STRUKTUR ANDROID 17
I.1 Tujuan 17
I.2 Teori Dasar 17
I.2.1 Arsitektur Android 17
I.2.2 Perangkat Lunak Yang Diperlukan 20
I.3 Sekilas Instalasi Android 20
BAB II MEMBUAT SEBUAH PROJECT 24
II.1. Tujuan 24
II.2. Teori Dasar 24
II.2.1 WorkBench atau Lembar Kerja 24
II.3 Latihan Membuat Aplikasi 26
II.4. SOAL (UJI KEMAMPUAN) 31
BAB III PENGGUNAAN BUTTON 32
III.1. Tujuan 32
III.2. Teori Dasar 32
III.2.1 Perbedaan OnClickListener dengan Onclick Biasa pada Button 32
III.2.2 OnClickListener() 32
III.3. Latihan Program 33
III.4. SOAL (UJI KEMAMPUAN), 36
BAB IV CHECK BOX DAN RADIO BUTTON 37
IV.1. Tujuan 37
IV.2. Teori Dasar 37
IV.2.1 CHECK BOX 37
IV.2.2 Radio Group dan Button 38
IV.3. LATIHAN PROGRAM 39
IV.4. SOAL (UJI KEMAMPUAN) 46
BAB V SPINER 47
V.1. Tujuan 47
V.2. Teori Dasar 47
V.3. LATIHAN PROGRAM 48
V.4. SOAL (UJI KEMAMPUAN) 51
BAB VI BEKERJA DENGAN BEBERAPA LAYAR 52
VI.1 Tujuan 52
VI.2 Teori Dasar 52
VI.3. LATIHAN PROGRAM 53
VI.4. SOAL (UJI KEMAMPUAN) 57
BAB VII GRAFIK KLASIK DI ANDROID 58
VII.1. Tujuan 58
VII.2. Teori Dasar 58
VII.2.1 OPEN GL ES 58
VII.2.2 TITIK, GARIS, DAN POLYGON 60
VII.3. LATIHAN PROGRAM 61
VII.3.1 Implementasi grafik pada bentuk klasik 61
VII.4. SOAL (UJI KEMAMPUAN) 63
BAB VIII IMAGE ATAU CITRA 64
YHPI -> hal : 3
VIII.1. Tujuan 64
VIII.2. Teori Dasar Fungsi 64
VIII.2.1 Image 64
VIII.2.2 Memanggil Image 64
VIII.2.3 Menampilkan Image 65
VIII.3. LATIHAN PROGRAM 65
VIII.3.1 Menampilkan Gambar antena 65
VIII.3.2 Latihan Pemrosesan Citra 67
VIII.4. SOAL (UJI KEMAMPUAN) 72
BAB IX DATABASE SEDERHANA 73
IX.1. Tujuan 73
IX.2. Teori Dasar 73
IX.3. LATIHAN PROGRAM 74
IX.4. SOAL (UJI KEMAMPUAN) 78
BAB X PROJECT DAN Presentasi 79
DAFTAR PUSTAKA 81
YHPI -> hal : 4
DAFTAR GAMBAR
Gambar 1. Wireless IP 7
Gambar 2. Arsitektur Jaringan semua IP 8
Gambar 3. Hirarki Dari Jaringan Heterogen Yang Terintegrasi 8
Gambar 1.1 Keterkaitan antara Industi, Developer, dan User 17
Gambar 1.2. Integrasi, Extended, dan Replace 18
Gambar 1.3 Android Layers 18
Gambar 1.4. bahasa program yang menangani per Layer 20
Gambar 1.5. Konfigurasi Workspace 21
Gambar 1.6. Tampilan Awal Eclipse 21
Gambar 1.7. Workbench, dari Eclipse 22
Gambar 1.8. Kotak Dialog Tempat Menginstall Plug-in Pada Eclipse 22
Gambar 1.9. Plug-in Repository 23
Gambar 2.0 WorkBench atau Lembar kerja 24
Gambar 2.1. Kotak Dialog Nama Project, Aplikasi, Paket,... 26
Gambar 2.2. Seting Icon Aplikasi 27
Gambar 2.3. Jendela Pengaturan Aktivitas 27
Gambar 2.4 Dialog Activity 28
Gambar 2.5. Lembar Kerja 29
Gambar 2.6. Latihan Membuat Desain 31
Gambar 3.1. GraphicLayout Activity Button1 33
Gambar 4.1. elemen CheckBox 37
Gambar 4.2. GraphicLayout Contoh Penggunaan CheckBox 39
Gambar 4.3. Desain Latihan Radio Button 42
Gambar 5.1. Tampilan Spinner 47
Gambar 5.2. Desain Penggunaan Komponen Spinner 48
Gambar 6.1. Membuat Class Baru 52
Gambar 6.2 Membuat Aplikasi 53
Gambar 6.3. Nama Aktivitas 53
Gambar 6.4. Desain Layar Utama 54
Gambar 6.5 Membuat Screen baru layar2.xml 54
Gambar 6.6. Desain screen layar2 55
Gambar 6.7. Menambah Script pada AndroidManifest 55
Gambar 6.8. Membuat Class Baru Layar1 56
Gambar 8.1 Desain Panggil Gambar 65
Gambar 8.2. Desain Aplikasi project Gambar2 67
YHPI -> hal : 5
PENDAHULUAN
Konsep Teknologi Mobile dan Mobile Internet
Ada dua istilah yang mirip tetapi mempunyai konsep perbedaan yang mendasar yaitu
The Internet on Mobile dan The Mobile Internet. Pada kedua istilah ini mempunyai
kesamaan requirement, yaitu sama-sama menggunakan media wireless. The Internet on
Mobile di artikan bahwa semua bentuk yang berkaitan dengan internet seperti program-
program aplikasi under web, browsing, e-mail, dan yang lainnya berada pada mobile device
(mobile phone, blackbery, tablet,), dan dapat diakses melalui mobile device. The Mobile
Internet di artikan bahwa internet bisa diakses secara mobile, tidak terbatas pada mobile
device saja, sebagai contoh dekstop atau laptop yang menggunakan broadband modem
(Indosat, XL, Telkom cell,) dimana aksesnya dapat dilakukan dengan cara mobile.
Buku tentang The Mobile Internet menyebutkan bahwa mobile internet mempunyai
potensi perkembangan yang sangat pesat, hal ini dibuktikan dalam sejarah pemakian mobile
internet di Afrika, Amerika, Australia, dan Asia. Akhir-akhir ini masyarakat di Afrika lebih banyak
mempunyai mobile phones ketimbang komputer atau sambungan internet yang menggunakan
kabel, akhirnya lebih banyak sambungan internet yang diakses melalui mobile phone dari pada
sambungan internet kabel. ITU melaporkan bahwa selama kuartal ke tiga (tiga bulan terakhir)
tahun 2009 jumlah rakyat Afrika yang mengakses internet melalui sambungan mobile phone
lebih banyak ketimbang jumlah masyarakat yang mengakses internet melalui sambungan
kabel.
Ada sebuah istilah yang sangat terkenal dan sering digunakan yaitu Mobile
Computing, istilah ini menggambarkan penggunaan aplikasi pada piranti yang berukuran kecil,
portable, serta dukungan komunikasi dengan nirkabel. Dalam hal ini piranti yang termasuk
mobile computing adalah: laptop dengan sambungan internet nirkabel, mobile phone, tablet,
wearable computer, PDA dengan bloetooth atau IRDA.
Tabel 1 di bawah ini menunjukkan perkembangan teknologi mobile phone:
YHPI -> hal : 6
No. Generasi Standar Kemampuan
1 0G
Push to Talk, Mobile Telephone
System, Improved Mobile Telephone
System, Advanced Mobile Telephone
System (900 Mhz, In japan)
2 1G
Nordic Mobile Telephone (1rst cell
phone in jerman), Advanced Mobile
Phone System (analog mobile phone),
Analog, Band frekuensi 800 MHz
radio sinyal bersifat analog,
Pada frekuensi 800 Mhz & 400
Mhz, Dimulai dari Chicago,
dikomersilkan 1983
3 2G
Digital System, Global System for
Mobile communications (GSM:
originally from Groupe Spcial Mobile,
The most standard cell phone, SMS),
Integrated Digital Enhanced Network
(iDEN): (Developed by Motorola, Uses
Time Division Multiple Access), Digital
AMPS, code division multiple access
(CDMAone), Menggunakan frek: (800,
900, 1800, 1900 MHz)
radio sinyal bersifat digital,
dimulai dari maret 1993,
Menggunakan TDM (Time
Division Multiplexing), Frekuensi
800 1900 Mhz, Dikenalnya
GSM dan CDMA
4 2.5G
General Packet Radio System, 56
114 Kbps, for :(SMS, MMS, WAP,
Internet)
digital high speed
5 2.75G
CDMA2000, Enhanced Data rates for
GSM Evolution (EDGE) or Enhanced
GPRS (EGPRS)
digital high speed
6 3G
Wideband Code Division Multiple
Access (WCDMA), Universal Mobile
Telecommunication System, CDMA
2000, WiMAX (Worldwide
Interoperability for Microwave Access)
digital high speed
7 3.5G
HSDPA (High-Speed Downlink Packet
Access) : (1.8, 3.6, 7.2 and 14.4
Mbit/s)
8 4G Ultra Mobile Broadband (UMB) IPv6, voice, digital high speed
Konsep Wireless IP
Konsep dasar dari wireless IP adalah pertemuan yang kuat dari layer interworking
jaringan dan konektivitas tanpa batas dengan atau tanpa mobilitas dalam sebuah jaringan
yang heterogen dengan ketentuan konektivitas tanpa batas melalui subdomain jaringan.
Kombinasi yang terbaik antara teknologi wireless dan IP telah membawa era teknologi wireless
IP. Wireless IP akan diperoleh cost-effective, kualitas yang bagus, layanan multimedia berbasis
IP, dan voice melalui IP. Gambar (1) menunjukkan jaringan wireless IP.
YHPI -> hal : 7
Gambar 1. Wireless IP
Operator dan vendor telah menyadari bahwa ada keuntungan ekonomi yang besar dengan
memultiplexing semua jenis traffic melalui jaringan packet switched bukan melalui jaringan
circuit switched, hal ini di dukung oleh core network dan radio access network dunia, dengan
membangun infrastruktur yang didasarkan pada standar generasi 3G.
Arsitektur baru akan memerlukan jaringan cerdas yang didasarkan pada sebuah paradigma
bahwa setiap user menggunakan mobile internet, sehingga jaringan harus mampu membawa
semua jenis traffic, akhirnya jaringan sangat membutuhkan QoS yang sangat bagus, selain
kemampuan layanan yang handal.
IP telah muncul sebagai pemersatu protokol layer jaringan yang bekerja melalui layer
link dan layer fisik yang heterogen. Upaya yang dilakukan untuk memastikan bahwa QoS,
signaling, routing, manajemen sumber daya, mobilitas, dan fungsi keamanan dan fitur yang
disediakan pada layer IP dan di atas dan dipetakan sesuai dengan lapisan bawah sehingga
menjadi konsisten dan bermakna end-to-end. Gambar (2) menunjukkan arsitektur semua IP
dimana aksesnya melalui sebuah jenis teknologi nirkabel yang cerdas yang berada pada
access dan backbone utama yang menyediakan paket transport. Fungsi-fungsi khusus,
feature-feature, dan kemampuan dari jaringan dan layanan akan didukung oleh server-server
khusus yang potensial.
YHPI -> hal : 8
Gambar 2. Arsitektur Jaringan semua IP
Kebanyakan akses jaringan wireless saat ini adalah point-to-point, jaringan inti dan
backbone kebanyakan adalah bertipe mesh. Tipe point-to-point mempunyai kerugian
konektivitas tidak handal, dan distribusi traffic yang tidak balance yang menghasilkan
pemanfaatan yang rendah dari sumber-sumber jaringan. Sangat jelas bahwa topologi mesh
untuk jangka panjang menjadi disukai, dan batas-batas buatan akses jaringan radio (RAN) dan
jaringan inti (CN) akan dihilangkan, gambar (3) menunjukkan hirarki dari jaringan heterogen
yang terintegrasi,
Gambar 3. Hirarki Dari Jaringan Heterogen Yang Terintegrasi
YHPI -> hal : 9
Distribusi jaringan flat saat ini exist saat ini pada jaringan backbone, yang akan di teruskan
pada saluran koneksi pemakai melalui wireless. Peningkatan akses jaringan heterogen akan
terus bertambah, lapisan IP yang akan mengintegrasikan layer secara bersama akan
membutuhkan kesepakatan dengan topologi-topologi akses yang berbeda, dari topolodi mesh
ke point-to-point, dari bandwith dedicated ke shared bandwith, dan dari servis layanan yang
terbaik yang menggaransi QoS nya melalui teknologi link layer yang berbeda.
Operating System
Secara umum pengertian dari sistem operasi adalah suatu interface berupa software
yang menjadi perantara antara user dan device yang digunakan untuk mengontrol/memanage
device maupun aplikasi di dalamnya. Bukan hanya komputer yang mempunyai system operasi,
mobile device (ponsel, tablet, BB,) juga punya sistem operasi. Seperti halnya sistem operasi
pada komputer, sistem operasi mobile adalah software utama yang melakukan menejemen
dan kontrol terhadap hardware secara langsung serta manajemen dan mengotrol software
aplikasi sehingga aplikasi tersebut dapat bekerja. Sehingga suatu system operasi mobile
(mobile operating system) akan bertanggung jawab dalam mengoperasikan berbagai fungsi
dan fitur yang tersedia dalam perangkat mobile tersebut seperti, schedulling task, keyboard,
WAP, email, text message, sinkronisasi dengan aplikasi dan perangkat lain, memutar musik,
camera, dan mengontrol fitur-fitur lainnya, dibawah ini beberapa contoh sistem operasi pada
mobile phone:
1. Sistem Operasi Windows Mobile.
Windows Mobile adalah sistem operasi seluler yang ditawarkan oleh Microsoft, OS
windows mobile biasanya hanya digunakan pada ponsel jenis PDA .Versi terbaru yang
sedang dikembangkan Microsoft adalah Photon, yang didasarkan pada Windows
Embedded CE 6.0 dan diharapkan dapat mengintegrasikan versi smartphone dan
Pocket PC. Keunggulan windows mobile adalah :
- Mempunyai kompatibilitas yang tinggi terhadap aplikasi dan fiture yang berbasis
windows, termasuk dengan jenis komputer yang beroperating sistem windows.
- Windows Mobile menawarkan berbagai fitur unggulan seperti Mobile Blog, GPS,
menonton televisi, serta Mobile Database.
YHPI -> hal : 10
Kelemahan Windows Mobile adalah bersifat tertutup sehingga sulit bagi software
developer independen untuk menciptakan aplikasi-aplikasi baru.
2. Sistem Operasi Palm.
Palm adalah pesaing utama dari sistem operasi Windows Mobile di awal tahun 2000-an
lalu. Palm juga merupakan pelopor sistem operasi yang handal digunakan oleh sebuah
ponsel pintar. Keunggulan OS Palm adalah tidak memerlukan banyak memory untuk
dapat menjalankannya dengan baik. Dengan kapasitas sebesar 16 MB misalnya sudah
cukup untuk menyuntikkan berbagai fungsi aplikasi tambahan
3. Sistem Operasi Symbian.
Symbian adalah sistem operasi yang dikembangkan oleh Symbian Ltd. yang dirancang
untuk peralatan bergerak mobile. OS Symbian yang didirikan sejak tahun 1998 dulunya
digunakan oleh Nokia dan hingga saat ini telah digunakan oleh banyak Vendor
Smartphone. Symbian telah mengalami perkembangan yg sangat cepat dan hingga
sekarang tetap banyak digunakan sebagai OS kategori Smartphone. Symbian
merupakan perusahaan independen hasil kolaborasi vendor2 raksasa pd masa itu
yakni Ericsson, Nokia, Motorola, dan Psion. Nokia sebagai pemegang saham terbesar
dengan angka 47,9 persen.
4. Sistem Operasi Java.
OS Java biasanya diterapkan pada jenis yang telah polyponik namun kelas monoponik
pun juga telah tersedia. Biasanya terdapat pada ponsel tipe lama, namun tipe baru
sekalipun saat ini biasanya juga telah mendukung untuk fitur ini. Harga untuk ponsel
jenis ini lebih terjangkau. Java sebagai middleware yang diperkenalkan pada ponsel,
memberikan jawaban yang cukup memuaskan. Dengan adanya Java, seseorang dapat
membuat aplikasi bermodalkan komputer dan sebuah aplikasi notepad. Sayangnya,
kemampuan Java sebagai middleware mengakibatkan terbatasnya feature hardware
ponsel yang dapat diakses oleh sebuah aplikasi berbasis Java.
5. Sistem Operasi Android.
Android adalah sistem operasi terkini sebuah ponsel besutan perusahaan raksasa
Google. Sistem operasi ini sudah mulai digunakan oleh vendor terkemuka dibidang
PDA berlayar sentuh yaitu HTC diikuti oleh vendor lokal IMO yang barangkali ingin
mencoba sedikit peruntungannya. Mengandalkan berbagai fitur milik Google yang saat
ini menjadi ancaman bagi perusahaan lainnya sekelas Microsoft dan Yahoo. Android
berusaha mencuri perhatian melalui Maps, Search hingga browsernya yang diklaim
jauh lebih ringkas dan cepat. Perkembangan OS android sangat pesat, karena sistem
operasi ini bersifat open sehingga para developer mudah untuk otak-atik dan
mengimplentasikan hasil eksperimennya.
6. Sistem Operasi Linux
YHPI -> hal : 11
Linux adalah salah satu sistem operasi yang kerap digunakan oleh vendor Motorola.
Baik dalam seri ROKR maupun seri PDA layar sentuh mereka. Namun keterbatasan
dukungan fungsi aplikasi tambahan dan user interface yang kurang familiar
menyebabkan sistem operasi ini timbul tenggelam dalam dunia ponsel.
OS Linux telah memasuki dunia OS sejak lama tapi digunakan untuk Smartphone
hanya sejak tahun 2003, hingga kini Smartphone yang menggunakan OS Linux dan
menjadi terkenal hanya dengan brand Motorola saja. Tapi sebenarnya ada banyak
Vendor ponsel yang sedang mengembangkan ponsel atau PDA dan Smartphone
berbasis Linux, karena OS Linux untuk smartphone masih baru maka sebenarnya
belum banyak pihak ketiga yang ikut mengembangkan programnya. Hal ini sedikit
membuat kata Smartphone kurang cocok untuk ponsel yang memiliki dukungan
ataupun berbasisLinux.
7. Sistem Operasi BlackBerry.
Perusahan telekomunikasi asal Canada, Reserch in Motion (RIM), mengembangkan
perangkat komunikasi bergerak. Awalnya produk mereka adalah memproduksi layanan
penyeranta (Pager) dua arah, namun dalam perkembangannya perusahaan ini
membuat terobosan baru dengan menciptakan pearangkat Blackberry yang terkenal
dengan layanan push-email, dan sekarang blackberry berubah menjadi smartphone
yang memiliki berbagai fungsi seperti, GPS, internet mobile, serta dapat mengakses
Wi-FI. RIM sebagai developer untuk sistem operasi blackberry telah mengeluarkan
sistem operasi baru dengan salah satu aplikasi yang tertanam didalamnya adalah
Document to Go versi trial buatan DataViz, suatu aplikasi yang memiliki fungsi
officeseperti Word to Go, Presenter to Go yang otomatis memiliki Sheet to Go sebagai
aplikasi Spreadsheet.
8. Sistem Operasi Maemo.
Pernah dengar OS Maemo? Maemo adalah sebuah sistem operasi terbaru dari sebuah
vendor besar Nokia yang digunakan oleh device terbatas Internet Tablet yaitu seri
N770, N800, N810 dan N900. Sistem operasi ini lebih mengkhusus diperuntukkan bagi
mereka yang lebih mengutamakan aktifitas internetan dan browsing ketimbang voice
atau komunikasi. Tak heran dalam setiap rilis devicenya, Nokia selalu mengutamakan
resolusi layar yang besar dan lebar lengkap dengan layar sentuh plus keypad
QWERTY dalam bentuk slide.
SEJARAH DAN ALASAN PENGGUNAAN ANDROID
Android Inc, adalah sebuah perusahaan software kecil yang didirikan pada bulan
Oktober 2003 di Palo Alto, California, USA. Didirikan oleh beberapa senior di beberapa
YHPI -> hal : 12
perusahaan yang berbasis IT & Communication; Andy Rubin, Rich Miner, Nick Sears dan Chris
White. Menurut Rubin, Android Inc didirikan untuk mewujudkan mobile device yang lebih peka
terhadap lokasi dan preferensi pemilik. Dengan kata lain, Android Inc, ingin mewujudkan
mobile device yang lebih mengerti pemiliknya. Sejarah Android dimulai dari sini. Konsep yang
dimiliki Android Inc, ternyata menggugah minat raksasa Google untuk memilikinya. Pada bulan
Agustus 2005, akhirnya Android Inc diakuisisi oleh Google Inc. Seluruh sahamnya dibeli oleh
Google. Nilai pembelian Android Inc ini oleh google tidak ada release pastinya. Tetapi banyak
yang memperkirakan nilai pembelian Android Inc oleh Google adalah sebesar USD 50 juta.
Saat itu banyak yang berspekulasi, bahwa akuisisi ini adalah langkah awal yang dilakukan
Google untuk masuk ke pasar mobile phone. Sejarah android Andy Rubin, Rich Miner, Nick
Sears dan Chris White tetap di Android Inc yang dibeli Google, sehingga akhirnya mereka
semua menjadi bagian dari raksasa Google dan sejarah android. Saat itulah mereka mulai
menggunakan platfor linux untuk membuat sistem operasi bagi mobile phone.
Sejarah Android dan Open Handset Alliance
Pada bulan nopember 2007, terbentuklan Open Handset Alliance yang merupakan konsorsium
dari beberapa perusahaan : Broadcom Corporation, Google, HTC, Intel, LG, Marvell
Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile
dan Texas Instruments. Mereka sepakat untuk membuat open standart bagi mobile phone.
Pada hari yang sama, mereka mengumumkan produk pertama mereka, yaitu Android yang
berbasis Linux kernel versi 2.6. Bulan Desember 2008, bergabunglah 14 perusahaan lainnya
yaitu : ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd,
PacketVideo, Softbank, Sony Ericsson, Toshiba Corp dan Vodafone Group Plc. Hal ini
merupakan langkah besar dalam sejarah Android untuk menjadi pemimpin dalam sistem
operasi untuk mobile phone.
Berikut ini tahapan peluncuran sistem operasi Android yang diciptakan Google:
Android versi 1.1
Pada 9 Februari 2009, Google merilis Android versi 1.1. Android versi ini dilengkapi
dengan pembaruan estetis pada aplikasi, jam alarm, voice search (pencarian suara),
YHPI -> hal : 13
pengiriman pesan dengan Gmail, pemutar Youtube, mendukung Wifi juga Bluetooth,
dan pemberitahuan email.
Android Versi 1.5 (Cupcake)
Pada 30 April 2009, Google kembali merilis telepon seluler dengan menggunakan
Android dan SDK (Software Development Kit) dengan versi 1.5 (Cupcake). Terdapat
beberapa pembaruan termasuk juga penambahan beberapa fitur dalam versi ini, yakni
kemampuan merekam dan menonton video, mengunggah video ke Youtube dan
gambar ke Picasa langsung dari telepon, dukungan Bluetooth A2DP, kemampuan
terhubung secara otomatis ke headset Bluetooth, animasi layar pada saat perpindahan
anatar layar, rotasi layar secara otomatis, kemampuan copy paste pada saat di browser
internet, dan keyboard pada layar yang dapat disesuaikan dengan sistem, juga
kemampuan keyboard dalam memprediksi kata-kata.
Android Versi 1.6 (Donut)
Donut (versi 1.6) dirilis pada 15 September 2009 dengan menampilkan proses
pencarian yang lebih baik dibanding sebelumnya, penggunaan baterai indikator dan
kontrol applet VPN. Fitur lainnya adalah integrasi antara galeri dengan kamera dengan
camcorder, mendukung CDMA / EVDO - VPN, indikator pemakaian baterai,
kemampuan dial kontak, teknologi text to change speech (tidak tersedia pada semua
ponsel), pengadaan resolusi VWGA.
Android Versi 2.0 (Eclair)
Pada 26 Oktober 2009 kembali diluncurkan ponsel Android dengan versi 2.0/2.1
(Eclair), perubahan yang dilakukan adalah kemampuan turn by turn pada google
maps, kemampuan sync untuk email dan contact, live wallpapers, peningkatan
kecepatan hardware, browser mendukung HTML5, fitur kamera diperbaruhi,
mendukung berbagai ukuran serta pixel layar, dan mendukung Bluetooth 2.1.
Android Versi 2.2 (Froyo: Frozen Yoghurt)
Pada 20 Mei 2010, Android versi 2.2 (Froyo) diluncurkan. Perubahan-perubahan
umumnya terhadap versi-versi sebelumnya antara lain dukungan Adobe Flash 10.1,
YHPI -> hal : 14
kecepatan kinerja dan aplikasi 2 sampai 5 kali lebih cepat, intergrasi V8 JavaScript
engine yang dipakai Google Chrome yang mempercepat kemampuan rendering pada
browser, pemasangan aplikasi dalam SD Card, kemampuan WiFi Hotspot portabel, dan
kemampuan auto update dalam aplikasi Android Market.
Android Versi 2.3 (Gingerbread)
Pada 6 Desember 2010, Android versi 2.3 (Gingerbread) diluncurkan. Perubahan-
perubahan umum yang didapat dari Android versi ini antara lain pada home screen
dapat dipasang shortcuts, mendukung portable wifi hotspot, kemampuan disable
jaringan internet lewat smartphone, mendukung adobe flash, peningkatan kemampuan
permainan (gaming), layar antar muka (User Interface) didesain ulang, download
manager baru, dukungan format video VP8 dan WebM, efek audio baru (reverb,
equalization, headphone virtualization, dan bass boost), dukungan kemampuan Near
Field Communication (NFC), dan dukungan jumlah kamera yang lebih dari satu.
Android Versi 3.0 (Honeycomb)
Pada tanggal 22 Februari 2011, Android Honeycomb dirancang khusus untuk tablet.
Android versi ini mendukung ukuran layar yang lebih besar. User Interface pada
Honeycomb juga berbeda karena sudah didesain untuk tablet. Honeycomb juga
mendukung multi prosesor dan juga akselerasi perangkat keras (hardware) untuk
grafis. Tablet pertama yang dibuat dengan menjalankan Honeycomb adalah Motorola
Xoom. Adapun fitur yang diperbaruhi, seperti kemampuan multitasking yang
disederhanakan, home screen yang dapat diubah sesuka hati, peningkatan kinerja
hardware, dapat meng-enkripsi semua data pemakai, dan masih banyak lagi.
Android versi 4.0 (Ice Cream Sandwich)
Diumumkan pada tanggal 19 Oktober 2011, membawa fitur Honeycomb untuk
smartphone dan menambahkan fitur baru termasuk membuka kunci dengan
pengenalan wajah, jaringan data pemantauan penggunaan dan kontrol, terpadu kontak
jaringan sosial, perangkat tambahan fotografi, mencari email secara offline, aplikasi
dapat diakses langsung lewat lock screen, dapat menjalankan aplikasi browser google
YHPI -> hal : 15
chrome, dapat menutup aplikasi yang ada di background, kemampuan memberikan
peringatan pemakaian data yang melewati batas, dan berbagi informasi dengan
menggunakan NFC.
Android Versi 4.1 (Jelly Bean)
Google mengumumkan peluncuran Android versi 4.1 (Jelly Bean) pada tanggal 27 June
2012, dengan membawa beberapa kelebihan diantaranya: Peningkatan beberapa
fungsi dan performa dari User Interface, peningkatan performa tersebut termasuk
"Project Butter", dimana semakin meningkatnya performa responsifitas dari android
tersebut, maka akan lebih ringan juga halus dalam pengoperasiannya. Juga khusus
untuk Tablet akan memiliki kelebihan Dual Boot. Dimana tablet pertama yang
memakainya adalah Nexus 7, yang diluncurkan pada tanggal 13 Juli 2012.
Android Versi 4.2 (Jelly Bean)
Google pada awalnya berencana untuk mengumumkan Jelly Bean 4.2 pada sebuah
acara di New York pada tanggal 29 October 2012, akan tetapi terpaksa ditunda akibat
Badai Sandy. Pada akhirnya pihak Google mengganti rencana Live Event dengan
hanya Press Release, dengan membawa "A new flavor of Jelly Bean". Perangkat
pertama yang Android 4.2 adalah LG Nexus 4 dan Samsung Nexus 10, yang mana
diluncurkan pada tanggal 13 November 2012. Pada versi ini ada beberapa peningkatan
fitur, seperti notifikasi pada waktu download, dimana akan diketahui berapa lama waktu
perkiraan untuk download tersebut selesai. Juga akan ada nada baru untuk wireless
charging dan low battery. Animasi pada galeri akan lebih cepat loading nya.
Android Versi 5.0 (Key Liem Pie)
Android 5.0 adalah suksesor dari Android 4.x (Jelly Bean), yang secara umum
dirumorkan dengan nama Key Lime Pie, meskipun belum ada pernyataan resmi
mengenai hal ini. Pada February 2013, dokumen yang bocor dari pabrik semikonduktor
(Qualcomm) menyatakan bahwa Key Lime Pie akan diluncurkan pada kuartal kedua
tahun 2013. Kemungkinan akan membawa peningkatan seperti pengintegrasian social
media, built in video chat, dll.
YHPI -> hal : 16
Sejarah keberadaan android dan perkembangannya menggambarkan betapa pesat minat
masyarakat terhadap device yang berbasis android, sehingga muncul beberapa alasan
penggunaan android pada matakuliah ini, diantaranya adalah:
1. Sangat memasyarakat
2. Pengembangan dari JAVA yang basisnya adalah C++, yang diajarkan pada semester
sebelumnya.
3. Open source
4. Library nya sangat kaya, sehingga untuk eksperimen tentang pengolahan citra, data
base, komunikasi data, pemrosesan sinyal, dan yang lain mahasiswa tidak mengalami
kesulitan
YHPI -> hal : 17
BAB I
ARSITEKTUR DAN STRUKTUR ANDROID
I.1 TUJUAN
Tujuan latihan program pertemuan pertama ini adalah,
1. Mahasiswa mengenal struktur dan arsitektur android
2. Mahasiswa memahami komponen pendukung android untuk membuat aplikasi
3. Mahasiswa memahami cara install android
I.2 TEORI DASAR
I.2.1 Arsitektur Android
Android merupakan software yang full stack sebagai operating system, middleware,
aplikasi, dan IDE. Android juga full open dalam source dan ideologi, dengan user controll nya
kita dapat membuat aplikasi yang sesuai, industri menyediakan fungsi-fungsi dalam library nya
yang diperuntukkan pengembang dan user, Sehingga ada link antara user, pengembang, dan
industri, ditunjukkan oleh gambar 1.1. dibawah:
Gambar 1.1 Keterkaitan antara Industi, Developer, dan User
Keterkaitan yang saling menguntungkan antara industri, user, dan pengembang dapat dilihat
pada tabel 1.1 dibawah:
No. Industri Pengembang User
1 Software Stack open source
berbasis Linux Kernel 2.6
Pengembang tidak memer-
lukan ijin untuk otak-atik
aplikasi
Pengguna mempunyai
kontrol dari apa yang di-
eksperimenkan
2 Sumber tersedia setelah
perkumpulan sekitar 45
industri konsorsium (Open
Handsets Alliance)
mengadakan kesepakatan I
Tidak ada yang
disembunyikan atau
diistimewakan pada
framework API nya
User dapat mengontrol
apa yang telah diinstallnya
3 Setiap orang akan dapat
membangun sistem citra
Dapat mengintegrasi, mem-
perluas, dan menumpuki,
komponen yang ada
dapat memilih default atau
extended
YHPI -> hal : 18
Yang dimaksud dengan integrasi, extend, dan menumpuki diperlihatkan seperti gambar 1.2
dibawah:
Gambar 1.2. Integrasi, Extended, dan Replace
Inti dari system service android adalah Linux versi 2.6, karena satu-satunya kernel yang
digunakan oleh android adalah kernelnya Linux, gambar 1.3 menunjukkan layer yang ada pada
android:
Gambar 1.3 Android Layers
YHPI -> hal : 19
Gambar 1.3 menunjukkan bahwa system core layanan android menggunakan kernel linux,
sehingga untuk interface antara I/O port, I/O device, dan Mobile Device yang menangani
adalah Kernel Linux. Untuk RunTime ada dua komponen utama yaitu Core Libraries yang
sekarang dipegang langsung oleh Google; didalam core library ini terdapat fungsi-fungsi
dengan bahasa java, dan Dalvic Virtual Machine yang berfungsi sebagai emulator dari device
mobile yang di tuju, dimana DVM bertugas sebagai emulator yang memvirtualkan hasil running
dari program aplikasi sebelum aplikasi tersebut di running di device mobile. DVM dasar
licensinya adalah Java , registernya berbasis VM, eksekusi file dalam bentuk format (*.dex)
diksekusi oleh Dalvik, yang merupakan hasil konversi classes menjadi format .dex oleh DX
tool.
Layer Libraries terdiri dari beberapa komponen diantaranya adalah:
- Libc : library c standar
- SSL : Layer pengaman socket
- SGL : mesin image 2 dimensi
- Open GL/ES : mesin image 2 dimensi
- Media Frame Work : bagian inti dari android multimedia
- SQLite : Database yang diembededkan
- WebKit : Kernel dari web browser
- Free Type : Bitmap dan vektor
- Surface Manager : menangani masalah window yang berbeda untuk
aplikasi yang berbeda juga.
Layer Aplication FrameWork, fungsi dari komponen diantaranya adalah:
- Apps tanpa batas
- Mempunyai kesamaan masing-masing apps
- Mudah untuk mengembededkan web browser
- Bisa paralel running
Layer Aplikasi, merupakan lapisan yang menangani semua masalah aplikasi (email, web,)
Secara detail berkaitan dengan bahasa maka dapat dijelaskan seperti gambar 1.4.
YHPI -> hal : 20
Gambar 1.4. bahasa program yang menangani per Layer
1.2.2 Perangkat Lunak Yang Diperlukan
Ada dua ADT (Android Developer Tool) yaitu Eclip dan Net Bean, ke dua developers
tersebut saling punya kelebihan dan kelemahan. Menurut hemat penulis eclip mempunyai
beberapa kemudahan yang ditawarkan bagi pemula, termasuk mahasiswa sebagai pemula
pengguna android. Perangkat lunak developer yang di perlukan adalah :
Java JDK -> http://java.sun.com/javase/downloads/index.jsp
Android SDK -> http://developer.android.com/sdk/index.html
Eclipse IDE -> www.eclipse.org/downloads
Android ADT -> https://dl-ssl.google.com/android/eclipse/
1.3 Sekilas Instalasi Android
Untuk melakukan installasi Android siapkan perangkat lunak yang diperlukan seperti
diberitahukan pada Sub Bab 1.2.2. kemudian lakukan langkah seperti di bawah ini, (perlu
diketahui bahwa setiap proses installasi tidak harus sama persis, tergantung dari sumber yang
dipunyai) :
- Usahakan semua requariment yang diperlukan diletakkan dalam satu folder
misalnya (Android_Eclip)
- Jalankan file Java Development Kids.exe, ikuti apa yang diminta dan lakukan
sampai finish
- Jalankan file Eclipse.exe, kemudian jika minta konfigurasi workspace seperti
dibawah:
YHPI -> hal : 21
Gambar 1.5. Konfigurasi Workspace
- Setelah itu muncullah tampilan awal dari Eclip seperti gambar 1.6. di bawah:
Gambar 1.6. Tampilan Awal Eclipse
- Kemudian Click pada icon untuk menuju workbench, seperti gambar 1.7. di bawah:
YHPI -> hal : 22
Gambar 1.7. Workbench, dari Eclipse
Gambar 1.7. ini merupakan tempat kerja untuk membuat atau mendesai sebuah
aplikasi project, tetapi tempat kerja ini masih belum siap, untuk itu ikuti langkah
berikutnya.
- Mengkonfigurasi ADT, syarat untuk mengkonfigurasi ADT, adalah eclipse harus
sudah running, dalam kondisi workbench siap.
Masuklah menu Help -> Install New Software, kemudian muncul kotak dialog
seperti gambar 1.8. berikut:
Gambar 1.8. Kotak Dialog Tempat Menginstall Plug-in Pada Eclipse
Kemudian klik , untuk menambahkan plug-in,muncul kotak dialog
YHPI -> hal : 23
Gambar 1.9. Plug-in Repository
Misalnya pada Name: tuliskan Android ADT, pada Location, tuliskan : https://dl-
ssl.google.com /android/eclipse/,
Jangan lupa pada proses ini koneksikan komputer dengan internet jika tidak maka
akan mengalami kegagalan.
Kemudian akan muncul kotak dialog seperti di bawah ini,
Tekan select all, kemudian tekan Next, untuk proses installasi, kemudian jika minta
License Agreement pilih accept dan tekan Finish.
Akhirnya jika proses nya benar tidak ada yang terlewatkan maka terjadilah proses
instalasi penambahan plug-in ADT.
- Proses berikutnya adalah mengkonfigurasi lokasi SDK, pada menu eclipse pilih
menu window -> preference, kemudian pilih Android pada tab sebelah kiri,
kemudian pilih Browse, dan pilih folder dimana file-file SDK berada.
- Proses Installasi selesai, dan Eclipse siap digunakan untuk membuat project,
running, dan compiling.
YHPI -> hal : 24
BAB II
MEMBUAT SEBUAH PROJECT
II.1. TUJUAN
Materi pertemuan ketiga dititik beratkan pada mendesain sebuah aplikasi melalui Project,
adapun tujuan khusus dari Bab dua ini adalah,
1. Mahasiswa mampu menyiapkan lembar kerja dalam sebuah project
2. Mahasiswa mampu mengubah tulisan background lembar kerja
3. Mahasiswa mampu menjalankan program aplikasi.
II.2. TEORI DASAR
II.2.1. WorkBench atau Lembar Kerja
Workbench atau lembar kerja Android dengan Eclipse seperti ditunjukkan oleh gambar
2. memberitahukan bahwa lembar tersebut mempunyai komplektisitas environment,
Gambar 2.0. WorkBench atau Lembar kerja
Lembar Kerja Eclips terdiri dari beberapa komponen utama diantaranya adalah:
a. Baris Menu, (File, Edit, Refactor,...)
b. Baris ShorCut ( )
c. Jendela Packet Explorer :
YHPI -> hal : 25
d. Lembar Kerja atau lembar aktivitas, yang terdiri dari beberapa bagian:
- Pallete atau dalam program Delphi/C++Builder disebut komponen
- ShortCut
- Aktivitas, yang terdiri dari GUI atau sering disebut form untuk delphi atau
C++Builder, UI atau sering disebut lembar coding.
e. Jendela Task List
f. Jendela OutLine yang terdiri dari Relative layout dan properties; ini mirip dengan
jendela Object Inspector pada delphi atau C++Builder
YHPI -> hal : 26
II.3. Latihan Membuat Aplikasi
Ada hal yang harus kita pahami bahwa mendesain sebuah aplikasi dalam android sama
dengan membuat sebuah project, dimana environment dari project cukup banyak, sebagai
latihan pertama buat project aplikasi dengan nama Percobaan, ikuti langkah berikut: (dengan
menggunakan IDE Eclip ...., beda IDE agak sedikit berbeda, tetapi secara prinsip sama)
- Langkah 1, berisi tentang persiapan membuat sebuah aplikasi dengan nama
Percobaan :
File-> New -> Android Project Aplication, kemudian muncul box dialog seperti
gambar 2.1. berikut
Gambar 2.1. Kotak Dialog Nama Project, Aplikasi, Paket,...
Lakukan pengisian sebagai berikut:
- Application Name, isi dengan : Percobaan (Perlu diperhatikan huruf pertama
harus huruf besar, alasan tanya pada pembimbing/pengajar....)
- Secara otomatis Project Name dan Package Name terisi dengan nama sama
dengan nama aplikasi, jangan lakukan perubahan apapun.
- Build SDK pilih versi android sesuai dengan OS device yang diinginkan, dalam
hal ini kita coba pilih : Android 2.1 (API 7)
- Kemudian tekan , NEXT, maka akan muncul jendela seperti gambar 2.2.
dibawah:
YHPI -> hal : 27
Gambar 2.2. Seting Icon Aplikasi
Gambar 2.2. diperlukan untuk seting Icon dari aplikasi yang kita inginkan, untuk
latihan pertama ini tidak perlu dilakukan perubahan apapun, (Silakan tanya pada
pengajar untuk mengetahui lebih detail) , berikutnya tekan NEXT
- Berikutnya muncul window aktivitas, seperti gambar 2.3., untuk sementara tidak
perlu lakukan apapun, (Untuk lebih detail tanyakan ke pengajar)
Gambar 2.3. Jendela Pengaturan Aktivitas
YHPI -> hal : 28
Sementara tidak perlu melakukan perubahan apapun, kemudian tekan NEXT
- Berikutnya akan muncul kotak dialog seperti pada gambar 2.4. berikut:
Gambar 2.4 Dialog Activity
Isi Activity Name dengan Percobaan, dan yang lainnya akan mengikuti, tempak
seperti gambar 2.4. di atas
- Persiapan membuat aplikasi sudah selesai, dan muncullah lembar yang
disediakan oleh Eclip dalam bentuk yang sangat kompleks tampak seperti
gambar 2.5., keterangan per item pelajari Teori,
(a) (b)
YHPI -> hal : 29
(c) (d)
Gambar 2.5. Lembar Kerja
Gambar 2.5.(a) menunjukkan bahwa project dengan aktivitas
activity_percobaan.xml sedang aktiv dan siap untuk di edit, running, dan yang
lain; (b) menunjukkan struktur dari project Percobaan; (c) menunjukkan bahwa
lembar kerja eklip (GDI) terdapat dua jenis, pertama adalah desain grafik, mirip
dengan bentuk form program delphi maupun program c++ builder; sedangkan
bentuk kedua adalah tempat menuliskan code, atau script dari program, mirip
dengan unit pada delphi atau c++ builder; (d) merupakan bentuk desain grafik.
- Langkah II:
Ubah background Hello Word ! menjadi Latihan Android Pertama langkahnya
adalah:
a. Klik 2X folder values pada Packect Exlporer aplikasi Percobaan,
b. Pada folder Strings.xml click 2X, sehingga muncul lembar coding seperti
berikut:
Tulisan Hello Android ! ganti dengan Latihan Android Pertama, sehingga
menjadi :
c. Running Program, usahakan AVDM (Android Virtual Device Manager) terus
dalam keadaan on; bila terjadi tanyakan pada Pengajar yang mendampingi.
YHPI -> hal : 30
- Langkah III :
a. Membuat Palet Text, ada beberapa jenis text, TextView, Large, Medium, dan
small. Kita coba buat beberapa model seperti di bawah ini:
b. Kemudian tampilan kita ganti TextView->Tulisan Normal; Large Text ->Tulisan
Besar; Medium Text -> Tulisan Sedang; Small Text -> Tulisan Kecil
Caranya adalah : Klik 2x TextView, sehingga muncul script:
c. Ubah tulisan pada TextView di menjadi Tulisan Normal,
d. Lakukan semua Text sesuai dengan langkah b.
e. Sehingga desain menjadi seprti berikut,
f. Coba running program
YHPI -> hal : 31
II.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap soal di bawah ini simpan dengan nama Aplikasi Latihan_1, dan
nama activity Latihan_1
1. Buat desain activity seperti di bawah gambar (2.6) ini
Gambar 2.6. Latihan Membuat Desain
YHPI -> hal : 32
BAB III
PENGGUNAAN BUTTON
II.1. TUJUAN
Materi pertemuan ketiga dititik beratkan optimalisasi penggunaan pallet widget Button, adapun
tujuan latihan program pertemuan kedua ini adalah,
1. Mahasiswa mampu menggunakan widget button dengan model OnClick
2. Mahasiswa mampu menggunakan widget button dengan model OnClickListener
III.2. TEORI DASAR
III.2.1. Perbedaan OnClickListener dengan Onclick Biasa pada Button
Pallet button yang disediakan pada Widget ada beberapa macam yaitu : button, small
button, dan togle button. Penggunaan antara button dan tgle button agak sedikit berbeda.
Eksekusi Button bisa menggunakan onclick klasik dan onclicklistener. Tujuannya sama
sedangkan implementasinya yang berbeda.
III.2.2. OnClickListener()
Event ini disebut juga event listener, Suatu event yang berfungsi menangkap kejadian yang
berhubungan dengan user. misalnya user menekan tombol(SetOnClick). Event ini sangat
berkaitan dengan event handler, setelah user melakukan suatu kejadian, misalnya menekan
tombol, maka apakah langkah selanjutnya yang dilakukan ?? itulah yang dinamakan event
Handle.
Contoh : tombol button di tekan memunculkan hasil perkalian antara input1 dan input2, seperti
pada latihan dibawah.
Nama ID button adalah button1, setOnclick adalah klik, maka coding yang berkaitan
adalah :
tekan=(Button)findViewById(R.id.button1);
tekan.setOnClickListener(new klik());
class klik implements Button.OnClickListener{
public void onClick (View v){
int b1 = Integer.parseInt(bil1.getText().toString());
int b2 = Integer.parseInt(bil2.getText().toString());
int hsl = b1 * b2;
hs.setText(String.valueOf(hsl));
}
}
OnClick()
Event ini disebut event klasik, dimana sistem kerjanya adalah, tombol button di klik maka
variabel onclik akan mengeksekusi nama variabel pada strings.xml, kemudian value dari
variable strings.xml dianggap sebuah function yang mengeksekusi proses fungsi tersebut,
prosesnya dapat di gambarkan sebagai berikut:
YHPI -> hal : 33
III.3. LATIHAN PROGRAM,
Buat Desain dengan nama Aplikasi Latih_2, dan nama aktivitas juga Latih_2, desain seperti
gambar (3.1) di bawah:
Gambar 3.1. GraphicLayout Activity Button1
Kemudian edit Id dari masing-masing komponen berikut, (Perhatikan huruf besar dan kesilnya):
EditText1 -> Isi1
EditText2 -> isi2
TextView3 -> Hasil
dan ketikan source code dibawah sesuaikan dengan nama file, tempat, dan foldernya:
Activity_Latih_2.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
YHPI -> hal : 34
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/Hasil"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".Latih1_b" />
<EditText
android:id="@+id/Isi1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginTop="14dp"
android:layout_toRightOf="@+id/TextView01"
android:ems="12"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/TextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Isi1"
android:layout_alignBottom="@+id/Isi1"
android:layout_alignParentLeft="true"
android:text="Bilangan Pertama"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/isi2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/Isi1"
android:layout_marginTop="26dp"
android:layout_toRightOf="@+id/textView2"
android:ems="12"
android:inputType="numberDecimal" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/isi2"
android:layout_alignBottom="@+id/isi2"
android:layout_alignParentLeft="true"
android:text="Bilangan Kedua"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
YHPI -> hal : 35
android:layout_alignBaseline="@+id/Hasil"
android:layout_alignBottom="@+id/Hasil"
android:layout_alignRight="@+id/textView2"
android:onClick="@string/tekankali"
android:text="Tekan Lihat Hasil" />
</RelativeLayout>
Strings.xml
<resources>
<string name="app_name">Latih1_b</string>
<string name="hello_world"> </string>
<string name="menu_settings">Settings</string>
<string name="title_activity_latih1_b">Latih1_b </string>
<string name="tekankali">kali</string>
</resources>
Latih_2.java
package com.example.latih1_b;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class Latih1_b extends Activity {
private EditText bil1;
private EditText bil2;
private TextView hsk;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_latih1_b);
bil1=(EditText) findViewById(R.id.Isi1);
bil2=(EditText) findViewById(R.id.isi2);
hsk =(TextView) findViewById(R.id.Hasil);
}
public void kali (View v) {
double a,b,hs;
a = Double.parseDouble(bil1.getText().toString());
b = Double.parseDouble(bil2.getText().toString());
hs=a*b ;
hsk.setText(String.valueOf(hs));
//hsk.setText(String.valueOf(hs));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_latih1_b, menu);
return true;
}
}
YHPI -> hal : 36
III.4. SOAL (UJI KEMAMPUAN),
1. Buat Project dengan nama aplikasi Tugas_3 dan nama activity sama
Tugas_3, buat desain sama dengan contoh tetapi buat script nya dengan
menggunakan onClickListener
2. Buat Project dengan nama aplikasi Tugas_3 dan nama activity sama
Tugas_3, buat desain sama dengan contoh ubahlah komponen button menjadi
Imagebutton, dan buat script nya dengan menggunakan onClickListener
maupun onClick klasik.
YHPI -> hal : 37
BAB IV
CHECK BOX DAN RADIO BUTTON
IV.1. TUJUAN
Komponen check Box dan radio button adalah komponen yang disediakan untuk pilihan ganda
atau pilihan tunggal, model dan bentuknya mirip dengan miliknya Delphi atau C++Builder.
Adapun tujuan dari pertemuan ini adalah,
1. Mahasiswa mampu mendesain project menggunakan komponen check box dan radio
button.
2. Mahasiswa mampu membuat script yang berkaitan dengan check box dan radio button.
3. Mahasiswa mampu mengimplementasikan komponen check box dan radio button pada
project sederhana.
4. Mahasiswa mampu membedakan penggunaan RadioButton dan RadioGroup pada
sebuah project.
IV.2. TEORI DASAR
IV.2.1 CHECK BOX
Checkbox sering juga disebut tickbox adalah elemen (Widget) dari GUI pada android
yang mengijinkan user untuk melakukan pilihan dengan logika biner, artinya jika dicentang
maka nilainya adalah true, jika tidak dicentang nilainya adalah false, bentuk dan
penggunaannya hampir sama dengan pemrograman C++Builder atau delphi. Untuk melakukan
pencentangan menggunakan mouse atau spacebar keyboard, bentuk dari checkbox adalah
seperti gambar (4.1) di bawah ini:
Gambar 4.1. elemen CheckBox
Nama Id default adalah : @+id/checkBox1
Pada gambar 4.1. isi dari text adalah : Paralael
data script dari elemen ini adalah sebagai berikut:
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2"
android:layout_marginTop="14dp"
android:text="Paralel" />
YHPI -> hal : 38
IV.2.2 Radio Group dan Button
Radio button atau disebut juga option button yang terdapat pada Radio Group adalah
elemen dari GUI, yang mengijinkan user memilih hanya satu pilihan, ada beberapa model link
eksekusi diantaranya adalah:
- Menggunakan onClick, yang melingkan file *.xml dengan file program script java
(*.java), link nya dapat dijelaskan berikut:
Lebih jelas lihat contoh/latihan program no. 2 !
- Menggunakan OnClickListener, model ini mempunyai pengaturan hanya pada
script java saja (*.java), yaitu:
a. tambahkan statement OnClickListener pada class uatma, miaslnya :
public class Rad_btn extends Activity {.. -> ubah menjadi
public class Rad_btn extends Activity implements
View.OnClickListener{..
b. tambahkan variabel untuk radiobutton pada type onclicklistener, seperti:
rd1=(RadioButton) findViewById(R.id.radio0);
rd1.setOnClickListener(this);
c. buat prosedur dengan nama onClick(View variabel){, seperti contoh di
bawah:
public void onClick(View v){
switch(v.getId()){
case R.id.radio0 :
if (rd1.isChecked())
Toast.makeText(this,"Anda Pilih Nomer 1",Toast.LENGTH_LONG).show();
break;
case R.id.radio1 :
if (rd2.isChecked())
Toast.makeText(this,"Anda Pilih Nomer 2",Toast.LENGTH_LONG).show();
break;
}
}
- Berikutnya adalah model Item onclicklistener, yaitu pemberian statement
berdasarkan komponen atau elemen nya.
YHPI -> hal : 39
IV.3. LATIHAN PROGRAM,
1. Buat Desain project CheckBox berikut, dengan nama Aplikasi Latih_4_chkbox, dan
nama aktivitas juga Latih_4_1chkbox, desain seperti gambar (4.1) di bawah:
Gambar 4.2. GraphicLayout Contoh Penggunaan CheckBox
Ubah nama Id, dengan nama sesuai dengan script / coding yang dituliskan di bawah ini,
dan letakkan masing-masing script sesuai dengan nama file, folder, dan aktivitas yang
sesuai:
activity_latih4_chkbox.xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".Latih4_chkbox" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
YHPI -> hal : 40
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="27dp"
android:text="Input R1 : "
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginTop="20dp"
android:text="Input R2 : "
android:textAppearance="?android:attr/textAppearanceMedium" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2"
android:layout_marginTop="14dp"
android:text="Paralel" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/checkBox1"
android:text="Seri" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView3"
android:layout_alignParentLeft="true"
android:onClick="@string/tekan"
android:text="Nilai R Pengganti" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_alignParentRight="true"
android:inputType="numberDecimal"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/textView2"
YHPI -> hal : 41
android:inputType="numberDecimal"
android:ems="10" />
<TextView
android:id="@+id/pengganti"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView3"
android:layout_toRightOf="@+id/textView3"
android:text=" "
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
<strings.xml>
<resources>
<string name="app_name">Latih4_chkbox</string>
<string name="hello_world"> </string>
<string name="menu_settings">Settings</string>
<string name="tekan">hasil</string>
<string name="title_activity_latih4_chkbox">Latih4_chkbox</string>
</resources>
<Latih4_chkbox.java>
package com.example.latih4_chkbox;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.CheckBox;
import android.widget.Toast;
public class Latih4_chkbox extends Activity {
private EditText r1;
private EditText r2;
private CheckBox cek1;
private CheckBox cek2;
private TextView hs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_latih4_chkbox);
r1=(EditText) findViewById(R.id.editText1);
r2=(EditText) findViewById(R.id.editText2);
hs=(TextView) findViewById(R.id.textView3);
cek1=(CheckBox) findViewById(R.id.checkBox1);
cek2=(CheckBox) findViewById(R.id.checkBox2);
hs.clearComposingText();
}
public void hasil (View v){
double a,b,c;
if (r1.getText().length()==0 || r2.getText().length()==0){
Toast.makeText(this, "R1 maupun R2 tidak boleh Kosong !",
Toast.LENGTH_LONG).show();
return;
YHPI -> hal : 42
}
a=Double.parseDouble(r1.getText().toString());
b=Double.parseDouble(r2.getText().toString());
c=0;
if (((cek1.isChecked()==false) && (cek2.isChecked()==false)) ||
((cek1.isChecked()) && (cek2.isChecked()))){
Toast.makeText(this, " Pilih Salah Satu Saja !",
Toast.LENGTH_LONG).show();
return;
}
if (cek1.isChecked()){
c=a+b;
} else
if (cek2.isChecked()){
c=1/a+1/b;
c=1/c;
}
hs.setText(String.valueOf(c));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_latih4_chkbox, menu);
return true;
}
}
Kemudian Running Program!
2. Buat desain dengan menggunakan komponen radio button dan radio group berikut, beri
nama Aplikasi Latih4_rdbtn, dan nama aktivitas juga Latih4_rdbtn, desain seperti
gambar (4.2) di bawah:
Gambar 4.3. Desain Latihan Radio Button
YHPI -> hal : 43
Ubah nama Id, dengan nama sesuai dengan script / coding yang dituliskan di bawah ini,
dan letakkan masing-masing script sesuai dengan nama file, folder, dan aktivitas yang
sesuai:
<activity_Latih4_rdbtn.xml>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".Latih4_rdbtn" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="15dp"
android:layout_marginTop="22dp"
android:text="Pilih Negara :"
android:textAppearance="?android:attr/textAppearanceMedium" />
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="19dp"
android:text="Indonesia" />
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/radioButton1"
android:layout_below="@+id/radioButton1"
android:text="Malaysia" />
<RadioButton
android:id="@+id/radioButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/radioButton2"
android:layout_below="@+id/radioButton2"
android:text="Jepang" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
YHPI -> hal : 44
android:layout_centerVertical="true"
android:text="Hasil :" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button1"
android:layout_marginTop="22dp"
android:text="Pilih Salah Satu"
android:textAppearance="?android:attr/textAppearanceMedium" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView2"
android:layout_marginLeft="22dp"
android:layout_toRightOf="@+id/textView1" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:onClick="pilihgrp"
android:text="Indonesia" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="pilihgrp"
android:text="Malaysia" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="pilihgrp"
android:text="Jepang" />
</RadioGroup>
</RelativeLayout>
<Latih4_rdbtn.java>
package com.example.latih4_rdbtn;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
YHPI -> hal : 45
import android.widget.RadioButton;
public class Latih4_rdbtn extends Activity {
private RadioButton rb1;
private RadioButton rb2;
private RadioButton rb3;
private RadioButton r1,r2,r3;
private Button tekan;
private TextView hasil;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_latih4_rdbtn);
rb1=(RadioButton) findViewById(R.id.radioButton1);
rb2=(RadioButton) findViewById(R.id.radioButton2);
rb3=(RadioButton) findViewById(R.id.radioButton3);
tekan=(Button) findViewById(R.id.button1);
tekan.setOnClickListener(new klik());
hasil=(TextView) findViewById(R.id.textView3);
// RadioGroup rg=(RadioGroup) findViewById(R.id.radioGroup1);
r1=(RadioButton) findViewById(R.id.radio0);
r2=(RadioButton) findViewById(R.id.radio1);
r3=(RadioButton) findViewById(R.id.radio2);
r1.setChecked(false);
}
class klik implements Button.OnClickListener{
String t1="",t2="",t3="";
public void onClick (View v){
if (rb1.isChecked()){
t1="Indonesia";
//return;
}
if (rb2.isChecked()){
t2="Malaysia";
//return;
}
if (rb3.isChecked()){
t3="Jepang";
//return;
}
hasil.setText("Negara Pilihan :" + t1+" "+t2+" "+t3);
}
}
public void pilihgrp(View view){
switch(view.getId()){
case R.id.radio0 :
if (r1.isChecked()){
Toast.makeText(this, "Bendera Indonesia : Merah Putih",
Toast.LENGTH_LONG).show();
return;
}
break;
case R.id.radio1:
if (r2.isChecked()){
YHPI -> hal : 46
Toast.makeText(this, "Bendera Malaysia : Bulan Bintang",
Toast.LENGTH_LONG).show();
return;
}
break;
case R.id.radio2:
if (r3.isChecked()){
Toast.makeText(this, "Bendera Jepang : Matahari Terbit",
Toast.LENGTH_LONG).show();
return;
}
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_latih4_rdbtn, menu);
return true;
}
}
IV.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap permasalahan dengan membuat desain yang indah, masing-
masing simpan dengan nama aplikasi dan nama aktivitas sama !
1. Buat desain sebuah project dengan memasukkan komponen checkbox untuk pilihan
ganda ->sifat sinyal analog, dan komponen RadioGroup untuk pilihan tunggal ->Agama.
Gunakan sembarang data dan tidak ada output, simpan file Soal4_1
2. Buat desain dengan input nilai angka, nama, jurusan, dan output nilai huruf dan
keterangan.
Nama : Input biasa
Jurusan : gunakan radiobutton
Nilai angka : guanakan GroupRadio (80< Nilai <= 100) -> output nilai huruf A
(75< Nilai <= 80) -> output nilai huruf B+
(65< Nilai <= 75) -> output nilai huruf B
(50< Nilai <= 65) -> output nilai huruf C+
(40< Nilai <= 50) -> output nilai huruf C
(Nilai <=40) output nilai huruf D
Output keterangan Lulus untuk nilai A,B+,B,C+, dan C dan Gagal untuk D.
Simpan file Soal4_2
YHPI -> hal : 47
BAB V
SPINER
V.1. TUJUAN
Komponen Spinner yang disediakan oleh android merupakan komponen yang penggunaannya
mirip dengan komponen combobox pada program C++Builder maupun Delphi. Adapun tujuan
dari pertemuan ini adalah,
1. Mahasiswa mampu mendesain project menggunakan komponen Spinner.
2. Mahasiswa mampu membuat script yang berkaitan dengan komponen Spinner.
3. Mahasiswa mampu mengimplementasikan komponen Spinner pada project sederhana.
V.2. TEORI DASAR
Spinner menyediakan cara cepat untuk memilih sebuah nilai dari beberapa pilihan
dasar yang disediakan, nilai yang tampil pada pallet spiner adalah nilai yang dipilih terbaru oleh
user. Menu bentuk drop down akan muncul jika komponen spinner di sentuh, sebagai contoh
adalah :
Gambar 5.1. Tampilan Spinner
Kita juga dapat menambah atau mengubah bentuk tampilan pada script object spinner, seperti
berikut:
<Spinner
android:id="@+id/planets_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
Dan isi dari spinner dapat diperoleh dari menambahkan String-Array, untuk lebih jelas silakan
perhatikan lihat contoh berikut,
YHPI -> hal : 48
V.3. LATIHAN PROGRAM,
1. Buat desain dengan menggunakan komponen Spinner berikut, beri nama Aplikasi
Latih5_spin, dan nama aktivitas juga Latih5_spin, desain seperti gambar (5.2) di bawah:
Gambar 5.2. Desain Penggunaan Komponen Spinner
Ubah nama Id, dengan nama sesuai dengan script / coding yang dituliskan di bawah ini,
dan letakkan masing-masing script sesuai dengan nama file, folder, dan aktivitas yang
sesuai:
<activity_Latih5_spin.xml>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#22cccaaa" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".Spiner1Activity" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="23dp"
android:text="Bil. Pertama"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
YHPI -> hal : 49
android:layout_marginTop="28dp"
android:text="Bil. Kedua"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/bil1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_alignLeft="@+id/textView3"
android:layout_marginLeft="26dp"
android:inputType="numberDecimal"
android:ems="10" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/hasil"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView3"
android:layout_toLeftOf="@+id/editText2"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge" />
<Spinner
android:id="@+id/pilihan"
android:entries="@array/listing"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/hasil"
android:layout_alignParentLeft="true"
android:layout_marginBottom="32dp" />
<EditText
android:id="@+id/bil2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/bil1"
android:inputType="numberDecimal"
android:layout_alignParentRight="true"
android:ems="10" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/pilihan"
android:layout_alignBottom="@+id/pilihan"
android:layout_alignLeft="@+id/bil2"
android:text="Processing"
android:onClick="proses"/>
</RelativeLayout>
<strings.xml>
<resources>
YHPI -> hal : 50
<string name="app_name">spiner</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_spiner1">MainActivity</string>
<string-array name="listing">
<item>Jumlah</item>
<item>Kurang</item>
<item>Kali</item>
<item>Bagi</item>
<item>Pangkat</item>
</string-array>
</resources>
<Latih5_spinActivity.java>
package com.example.spiner;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Spinner;
import android.widget.Toast;
import android.app.AlertDialog;
import android.content.DialogInterface;
public class Spiner1Activity extends Activity {
private EditText bl1,bl2;
private Spinner spn1;
private TextView has;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spiner1);
bl1=(EditText) findViewById(R.id.bil1);
bl2=(EditText) findViewById(R.id.bil2);
spn1=(Spinner) findViewById(R.id.pilihan);
has=(TextView) findViewById(R.id.hasil);
}
public void proses(View view){
double a,b,hsl;
if (bl1.getText().toString()==""){
Toast.makeText(this, "Bilangan gak boleh kosong",
Toast.LENGTH_LONG).show();
return;
}
if (bl2.getText().toString()==""){
Toast.makeText(this, "Bilangan gak boleh kosong",
Toast.LENGTH_LONG).show();
return;
}
YHPI -> hal : 51
a = Double.parseDouble(bl1.getText().toString());
b = Double.parseDouble(bl2.getText().toString());
hsl=a + b;
switch (spn1.getSelectedItemPosition()){
case 0:
hsl = a + b;
break;
case 1:
hsl = a - b;
break;
case 2:
hsl = a * b;
break;
case 3:
hsl = a / b;
break;
case 4:
hsl = Math.pow(a, b);
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.spiner1, menu);
return true;
}
}
V.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap permasalahan dengan membuat desain yang indah, masing-
masing simpan dengan nama aplikasi dan nama aktivitas sama !
1. Ubah program latihan4_1 dan 4_2 kedalam bentuk spinner, desainlah formnya sesuai
dengan yang anda inginkan, simpan file -> Latih5_1 dan Latih5_2
YHPI -> hal : 52
BAB VI
BEKERJA DENGAN BEBERAPA LAYAR
VI.1. TUJUAN
Sebuah aplikasi bisa memiliki lebih dari satu layar, mirip halnya dengan pemrograman Delphi
atau C++Builder satu project memiliki lebih dari form. Untuk membuat multi layar di dalam
Android mempunyai cara yang khusus, sehingga tujuan dari Bab ini adalah:
1. Mahasiswa mampu mendesain project dengan multi layar.
2. Mahasiswa mampu membuat script yang melingkan antara layar satu dengan yang
lainnya.
3. Mahasiswa mampu mengimplementasikan multi layar pada project sederhana.
VI.2. TEORI DASAR
Dalam sebuah project biasanya mempunyali lebih dari satu scrren. Screen pada
android dibuat di bawah activity, sehingga pembuatan multi screen juga melibatkan
multi activity. Dalam activity dikemas dalam sebuah file XML, sehingga multi screen
akan menyebabkan project memiliki lebih dari satu file XML. Screen berkaitan
dengan layout atau form, jika kita membuat lebih dari satu layout, ada script yang
harus dituliskan untuk menghubungkan antar layout agar layout tersebut saling
mengenal, yang akirnya ada konektivitas antar scree. Berikut adalah tata cara
membuat desain project dengan multiscreen:
1. Yang pertama buat pr oj ect , lakukan pembuatan halaman utama
seper t i bi asa dengan menuliskan nama activity seperti sebelumnya;
2. Buat Class baru dengan nama lain, dengan cara buka jendela Package,
kemudia buka src -> com.example, kemudian klik kanan new->class,
seperti gambar 6.1. berikut:
Gambar 6.1. Membuat Class Baru
3. Hubungkan antara class pada halaman utama dengan class kedua, dengan
mengisi script pada file AndroidManifest.xml
4. Isi script masing-masing class script java sesuai dengan keperluan.
YHPI -> hal : 53
Untuk lebih jelas pelajari dan coba perhatikan latihan program di bawah ini.
VI.3. LATIHAN PROGRAM,
Pada sesi ini kita akan mendesain sebuah project dengan menggunakan dua layar atau
screen. Dimana konsep dari desain ini ingin menunjukkan prinsip kerja dari project yang
menggunakan 2 layar. Hasil dari program ini adalah default adalah layar1 aktif, untuk menuju
aatau mengaktifkan layar2 tekan tombol butoon, demikian juga sebaliknya, ntuk itu ikuti
langkah-langkah berikut:
1. Buat Project baru dengan nama aplikasi adalah : Latih6_dualayar, seperti gambar 6.2.
berikut:
Gambar 6.2 Membuat Aplikasi
2. Beri nama activity Layar1 seperti di bawah ini,
Gambar 6.3. Nama Aktivitas
Tekan tombol ok, dan lanjutkan sampai kita dapatkan layout utama.
YHPI -> hal : 54
3. Tambahkan widget atau komponen button, ubah text nya Menuju layar 2, tambahkan
juga komponen TextView, ubah textnya Ini Adalah Layar 1, seperti pada gambar 6.4.
berikut:
Gambar 6.4. Desain Layar Utama
4. Buat layout dengan nama layar2.xml, dengan cara seperti di bawah ini :
Gambar 6.5 Membuat Screen baru layar2.xml
5. Berikutnya adalah menambahkan komponen button dan textview pada screen layar2, dan
ubahlah masing-masing text nya sesuai dengan gambar 6.6. berikut:
YHPI -> hal : 55
Gambar 6.6. Desain screen layar2
6. Pada file AndroidManifest.xml tambahkan script seperti yang ada dalam lingkaran gambar
6.5.:
Gambar 6.7. Menambah Script pada AndroidManifest
Penambahan script ini berfungsi mengenalkan aktivitas, java, dan xml layar2 yang
dibuat pada tahap kedua.
7. Buat Class baru dengan nama Layar1, ikut cara seperti yang tampak pada Gambar 6.5.
berikut:
YHPI -> hal : 56
Gambar 6.8. Membuat Class Baru Layar1
8. Berikutnya adalah tambahkan script pada file Layar1.java, sebagai berikut:
9. Dan juga tambahkan script pada file layar2.java, berikut:
YHPI -> hal : 57
10. Untuk menguji apakah desain aplikasi berjalan atau tidak silakan di running aplikasinya.
VI.4. SOAL (UJI KEMAMPUAN),
Ubah program latihan4_1 dan 4_2 kedalam bentuk dua layar menjadi satu aplikasi, desainlah
formnya sesuai dengan yang anda inginkan, simpan file -> Latih6_1.
YHPI -> hal : 58
BAB VII
GRAFIK KLASIK DI ANDROID
VII.1. TUJUAN
Secara umum grafik pada pemrograman dibedakan menjadi dua yaitu grafik berbasis kurva
dikenal dengan grafik klasik, dan grafik dengan obyek citra atau gambar. Tujuan dari BAB ini
adalah,
1. Mahasiswa mengenal grafik klasik pada pemrograman android.
2. Mahasiswa mampu mendesain grafik klasik sederhana pada sebuah project aplikasi.
3. Mahasiswa mengenal operasi geometri dasar untuk diimplementasikan pada grafik
klasik.
VII.2. TEORI DASAR
VII.2.1. OPEN GL ES
Framework Android mendukung OpenGL ES 1.0/1.1 dan OpenGL ES 2.0, dimana ES adalah
sebuah singkatan dari Embeded System, merupakan bagian dari OPENGL khusus yang
dirancang untuk perangkat embeded. OpenGl adalah bebas biaya dan lintas platform. Dimana
API nya mempunyai full fungsi yang mendukung grafik 2D dan 3D, pada sistem embedednya,
seperti perangkat mobile. OpenGL 1.X menggunakan arsitektur pipeline yang fix secara
tradisional, dan menekankan pada percepatan hardware dari API. Yang menawarkan
penambahan fungsi, kualitas gambar yang bagus dan performansi yang tinggi. OpenGL 2.X
berfungsi dalam hal pemrograman hardware. Ini menekankan pada pemrograman grafik 3D
dan mengijinkan user untuk membuat bayangan dan objek-object program. Dengan ES 2.x kita
juga dapat menulis vertex. Dilain pihak OpenGL 2.X tidak suport pada transformasi fungsi fix
dan fragmentasi pipeline yang OpenGL 1.X support.
Pemanggilan fungsi glutInit, berguna untuk inisialisasi secara umum terhadap nilai-nilai yang
ada pada library GLUT.
Untuk menginisialisasi modus display dilakukan dengan memanggil fungsi:
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) pada procedure myInit();
Fungsi tersebut meminta window yang bersifat double buffered, dengan warna RGB. Beberapa
baris berikut ini adalah membuat window.
YHPI -> hal : 59
Seperti yang kita lihat, GLUT langsung membuat window tanpa memerlukan macam-macam
syarat.
fungsi glOrtho digunakan untuk membuat kotak tempat obyek yang sedang digambar.
Berikut ini adalah fungsi-fungsi aplikasi yang kita buat :
glutDisplayFunc(display);
glutMainLoop();
Fungsi pertama digunakan untuk mengubah pandangan dengan menggunakan GLUT.
Selanjutnya dipanggil fungsi glutMainLoop() , yaitu digunakan untuk menjalankan program.
Semua fungsi sebelumnya akan berpengaruh setelah fungsi ini dieksekusi.
Fungsi aplikasi untuk menampilkan kotak di dalam window adalah sebagai berikut :
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-5.0, 5.0, 5.0, -5.0);
glutSwapBuffers();
}
Pertama-tama dipanggil fungsi glClear dengan parameter GL_COLOR_BUFFER_BIT. Fungsi
ini akan menghapus window dan memberi warna yang telah kita definisikan sebelumnya
dengan menggunakan glClearColor. Selanjutnya menggambar segiempat yang kita inginkan
dengan menggunakan fungsi glRectf.
Suatu fungsi memiliki beberapa macam prototipe. Contohnya fungsi glColor, memiliki beberapa
prototipe berikut ini :
glColor3f(float, float, float);
glColor4f(float, float, float, float);
glColor3d(double, double, double);
glColor3i(int, int, int);
etc, etc, etc.
Fungsi-fungsi tersebut memiliki bagian-bagian:
gl Color 3 f
YHPI -> hal : 60
Walaupun ada fungsi yang memiliki beberapa macam versi, sebaiknya dipilih versi yang
menggunakan bilangan float. Karena dalam OpenGL semua nilai yang digunakan secara
internal akan dikembalikan dalam bentuk float point.
VII.2.2. TITIK, GARIS, DAN POLYGON
OpenGL menggunakan sistem koordinat Cartesius, sumbu datar sebagai sumbu x, sumbu
tegak sebagai sumbu y, dan sumbu z nya adalah mendekat atau menjauh. Sumbu z positif
selalu menuju ke arah kita, sebaliknya sumbu z negatif selalu menjauh dari kita. Dengan
menggunakan sistem ini kita dapat menyatakan titik dalam ruang tiga dimensi, yang disebut
juga vertex, dengan tiga sumbu koordinat x, y, dan z. Sebagai contoh :
(0,0,0) pusat sistem koordinat
(2,0,4) dua unit ke kanan, 4 unit menuju kita, dan sumbu y pada pusat
(3,-4,-2) 3 unit ke kanan, 4 unit ke bawah, dan 2 unit menjauh dari kita
Untuk menyatakan titik tersebut OpenGL menyediakan fungsi glVertex yang didahului dan
diakhiri dengan glBegin dan glEnd:
glBegin(GL_POINTS); /* Ingin menggambar titik */
glVertex3f(2.0, 0.0, 4.0); /* menyatakan sejumlah titik */
glVertex3f(3.0, -4.0, -2.0);
glEnd(); /* Akhir dari menggambar titik */
Fungsi glBegin memberitahu kepada OpenGL bahwa kita akan mulai menggambar sekaligus
menyatakan apa yang akan digambar, yaitu dengan memberikan parameter GL_POINTS.
Fungsi glEnd menyatakan pembuatan gambar diakhiri. Dengan menggunakan OpenGL,
menggambar pada bidang 3D sangat fleksibel, misalnya akan menggambar suatu garis, maka
pada glBegin diberi parameter GL_LINES. Dengan ini pasangan-pasangan glVertex akan
membentuk garis. Bila glVertex tidak memiliki pasangan maka perintah tersebut diabaikan
(tidak akan menggambar titik)
glBegin(GL_LINES); /* mulai menggambar garis */
glVertex3f(6.0, 4.0, 2.0); /* garis pertama, pasangan glVertex */
glVertex3f(2.0, -4.0, 3.3);
glVertex3f(5.0, 8.0, 8.0); /* garis ke dua */
glVertex3f(-4.7, 5.0, -3.0);
glVertex3f(0.0, 0.0, 0.0); /* garis ke tiga */
glVertex3f(6.0, -1.0, -7.0);
glEnd();
Untuk menggambar suatu bangun, OpenGL memiliki 6 macam bangun primitif, yaitu :
GL_TRIANGLES : setiap 3 glVertex membentuk segitiga, dan tiap segitiga saling
lepas.
GL_TRIANGLE_STRIP : setiap 3 glVertex membentuk segitiga, dan semua segitiga
saling terkait
YHPI -> hal : 61
GL_TRIANGLE_FAN : membentuk beberapa segitiga yang berpusat pada satu titik
(seperti kipas)
GL_QUADS : tiap 4 glVertex membentuk segi empat
GL_QUAD_STRIP : tiap 4 glVertex membentuk segi empat, dan semuanya saling
menempel
GL_POLYGON. : n glVertex akan membentuk bidang bersisi n
VII.3. LATIHAN PROGRAM,
Buat aplikasi Project dengan nama Latih7_grafik_klasik, demikian juga dengan nama
aktivitas, paket, dan yang linnya gunakan nama yang sama. Latihan VII.3.1 ini merupakan
implementasi grafik klasik dengan bentuk segitiga, dan melibaatkan 2 class. Gunakan virtual
manager gunakan minimal API 10
VII.3.1 Implementasi grafik pada bentuk klasik
Lanjutkan dengan mengedit source code pada file Latih7_grafik_klasik.java pada
Latih7_grafik_klasik -> Src -> Com.example.latih7_grafik_klasik ->
Latih7_grafik_klasik.java,
< Latih7_grafik_klasik.java>
package com.example.latih7_grafik_klasik;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Context;
import android.opengl.GLSurfaceView;
public class Latih7_grafik_klasik extends Activity {
private Button tekan;
private GLSurfaceView grafik1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_latih7_grafik_klasik);
tekan=(Button)findViewById(R.id.button1);
grafik1 = new HelloESSurfaceView(this);
setContentView(grafik1);
}
@Override
protected void onPause() {
super.onPause();
// The following call pauses the rendering thread.
grafik1.onPause();
}
@Override
protected void onResume() {
super.onResume();
// The following call resumes a paused rendering thread.
grafik1.onResume();
}
YHPI -> hal : 62
class HelloESSurfaceView extends GLSurfaceView {
public HelloESSurfaceView(Context context){
super(context);
// Set the Renderer for drawing on the GLSurfaceView
setRenderer(new segitiga());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_latih7_grafik_klasik,
menu);
return true;
}
}
Kemudian buat class dengan nama segitiga.java, pada Src yang sama, ketikan script
di bawah ini:
<segitiga.java>
package com.example.latih7_grafik_klasik;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView;
public class segitiga implements GLSurfaceView.Renderer{
private FloatBuffer triangle;
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// Set the background frame color to blue
gl.glClearColor(0.0f, 0.0f, 0.9f, 1.0f);
// initialize the triangle vertex array
initShapes();
// Enable use of vertex arrays
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
}
public void onDrawFrame(GL10 gl) {
// Redraw background color
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// Draw the triangle using green color
gl.glColor4f(0.0f, 1.0f, 0.0f, 0.0f);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, triangle);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
}
private void initShapes(){
float vertices[] = {
// (x, y, z) of triangle
-0.6f, -0.5f, 0,
0.6f, -0.5f, 0,
0.0f, 0.5f, 0
};
// initialize vertex Buffer for triangle
// argument=(# of coordinate values * 4 bytes per float)
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
// use the device hardwares native byte order
vbb.order(ByteOrder.nativeOrder());
YHPI -> hal : 63
// create a floating point buffer from the ByteBuffer
triangle = vbb.asFloatBuffer();
// add the coordinates to the FloatBuffer
triangle.put(vertices);
// set the buffer to read the first vertex coordinates
triangle.position(0);
}
}
VII.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap permasalahan dengan menuliskan source code yang
dibutuhkan, masing-masing simpan dengan nama file SOAL7_1, SOAL7_2, dan
SOAL7_3.
1. Ubahlah latihan dengan merubah bentuk segitiga yang lain.
2. Buat bentuk polygon 5, dan 6 sisi.
3. Kembangkan ke dalam bentuk lingkaran.
YHPI -> hal : 64
BAB VIII
IMAGE ATAU CITRA
VIII.1. TUJUAN
Menampilkan, memodifikai, mengatur, dan analisa citra merupakan bagian dari pemrosesan
citra, dan pemrosesan citra merupakan bagian dari grafik. Grafik dalam ilmu pemrograman
dibedakan menjadi grafik klasik dan grafik moderen, klasik berkaitan dengan kurva dan
moderen berkaitan dengan citra atau gambar dengan berbagai format seperti BMP, JPG, GIF,
dan yang lain. Tujuan dari BAB kedelapan ini adalah,
1. Mahasiswa mampu mengenal citra yang diimplementasikan ke dalam android
2. Mahasiswa mampu mendesain project untuk memanggil, mengedit, menampilkan dan
menyembunyikan citra.
3. Mahasiswa mampu melakukan pengolahan citra sederhana di dalam android.
VIII.2. TEORI DASAR
VIII.2.1 Image
Android secara umum mendukung 3 jenis format gambar, yaitu PNG, JPG, dan GIF. Gambar
yang di simpan dalam folder res/layout/drawable, secara otomatis akan dikenal oleh android.
Untuk SDK Android versi 1.6 terdapat beberapa direktori drawable, untuk keperluan resolusi
layar yang berbeda-beda. Ada resolusi low, medium, dan high; nama-nama direktorinya
adalah drawable-mdpi, drawable-hdpi, dan drawable-ldpi. Android juga mengijinkan kita untuk
membuat citra pada DPI yang berbeda untuk menambah penampilan pada aplikasi kita.
Semua nama file harus menggunakan huruf kecil, dan bisa terdiri dari huruh, angka dan garis
bawah.
VIII.2.2 Memanggil Image
Komponen layout untuk menampilkan citra adalah elemen utama yang digunakan untuk
menampilkan gambar di dalam android. Silakan coba copy kan gambar ke dalam
res/layout/drawable-mdpi, dan usahakan ada file gambar yang bernama test kemudian
tuliskan script sederhana ini ke dalam project anda
<ImageView
android:id="@+id/test_image"
android:src="@drawable/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
Kemudian tambahkan script sederhana ini ke dalam file <*.java> anda,
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView image = (ImageView) findViewById(R.id.test_image);
YHPI -> hal : 65
Kemudian coba running project anda, anda akan mendapatkan bahwa gambar tidak langsung
tampil tetapi dlam proses memanggil gambar.
VIII.2.3. Menampilkan Image
Mengubah citra yang dilakukan dengan menggunakan bantuan komponen object ImageView
untuk memanggil sekalian menampilkan citra, sehingga citra lama yang tampil di screen akan
ganti dengan citra yang di set seperti di bawah ini:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView image = (ImageView) findViewById(R.id.test_image);
image.setImageResource(R.drawable.test2);
VIII.3. LATIHAN PROGRAM :
Pada Bab ini kita akan mencoba melakukan latihan untuk memanggil, menampilkan,
memutar, dan melakukan deteksi tepi. Yang perlua anda persiapkan adalah mengkopikan citra
sembarang ke dalam folder yang diminta dalam script, dan ubah namanya sesuai dengan yang
diminta dalam script.
VIII.3.1. Menampilkan Gambar antena, untuk itu copykan gambar antena pada src ->
drawable, file antena1; kemudian juga kopikan file ball_small pada direktori
yang sama, kemudian ikuti langkah berikut:
1. Buat aplikasi dengan nama gb1, dan nama yang untuk yang lain.
2. Buat desain seperti di bawah ini:
Gambar 8.1 Desain Panggil Gambar
3. Tambahkan script yang ada dalam lingkaran berikut, pada file gb1.XML
<gb1.xml>
YHPI -> hal : 66
Gambar 8.2. Coding gb1.XMLb
4. Ketikkan script untuk gb1.java berikut:
<g1Activity.java>
package com.example.gb1;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
public class Gb1Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gb1);
}
public void tampil (View v){
ImageView gb1=(ImageView)findViewById(R.id.imageView1);
gb1.setImageResource(R.drawable.ball_small);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
YHPI -> hal : 67
getMenuInflater().inflate(R.menu.gb1, menu);
return true;
}
}
VIII.3.2. Latihan Pemrosesan Citra Putar, Brightness, Grey Scale, dan deteksi tepi. Ikuti
langkah berikut ini:
1. Buat aplikasi project dengan nama Gambar2, dan berikan nama yang sama untuk
semua file.
2. Copykan file gambar atau foto pada folder src->drawable dan ubah namanya menjadi
bapak.
3. Buat desain seperti di bawah ini:
Gambar 8.2. Desain Aplikasi project Gambar2
4. Ketikan script berikut:
<gambar2.xml>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
YHPI -> hal : 68
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".Gambar2Activity" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/bapak" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginLeft="23dp"
android:layout_marginTop="54dp"
android:onClick="tekan"
android:text="Putar" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignRight="@+id/imageView1"
android:onClick="tekan2"
android:text="Brightness" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button2"
android:layout_marginLeft="18dp"
android:layout_toRightOf="@+id/textView1"
android:text="Grey Scale"
android:onClick="tekan3"/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="37dp"
android:text="Bagian Tepi"
android:onClick="tekan4"/>
</RelativeLayout>
5. Ketikkan script untuk string berikut:
<string.xml>
<resources>
<string name="app_name">gambar2</string>
YHPI -> hal : 69
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_gambar2">gambar2</string>
<string name="tekan">putar</string>
<string name="tekan2">pencahayaan</string>
<string name="tekan3">grey scale</string>
<string name="tekan4">Garis Tepi</string>
</resources>
6. Ketikkan coding berikut pada file java,
<Gambar2Activity.java>
package com.example.gambar2;
import com.example.gambar2.R.id;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.widget.ImageView;
import android.graphics.Matrix;
public class Gambar2Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gambar2);
}
//===========================================================
public void putar(){
ImageView image;
Bitmap bMap;
Matrix matrix;
//Get ImageView from layout xml file
image = (ImageView) findViewById(R.id.imageView1);
//Decode Image using Bitmap factory.
bMap = BitmapFactory.decodeResource(getResources(),
R.drawable.bapak);
//Create object of new Matrix.
matrix = new Matrix();
//set image rotation value to 45 degrees in matrix.
matrix.postRotate(45);
//matrix.postTranslate(400, 5);
//Create bitmap with new values.
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0,
bMap.getWidth(), bMap.getHeight(), matrix, true);
//put rotated image in ImageView.
image.setImageBitmap(bMapRotate);
}
YHPI -> hal : 70
public void tekan (View vew){
putar();
}
//==================================================================
public void cahaya(int cahayaofset){
ImageView image;
Bitmap bMap;
Matrix matrix;
//Get ImageView from layout xml file
image = (ImageView) findViewById(R.id.imageView1);
//Decode Image using Bitmap factory.
bMap = BitmapFactory.decodeResource(getResources(),
R.drawable.bapak);
int lbr=bMap.getWidth();
int tg=bMap.getHeight();
int[] ttk=new int[lbr*tg];
bMap.getPixels(ttk, 0, lbr, 0, 0, lbr, tg);
int indek=0;
for(int y=0; y<tg; y++){
for (int x=0; x<lbr; x++){
int r = (ttk[indek]>> 16) & 0xff;
int g = (ttk[indek] >> 8) & 0xff;
int b = ttk[indek]& 0xff;
r = Math.max(0, Math.min(255, r+ cahayaofset));
g = Math.max(0, Math.min(255, g+ cahayaofset));
b = Math.max(0, Math.min(255, b+ cahayaofset));
ttk[indek++]=0xff000000|(r<<16)|(g<<8)|b;
}
}
bMap=Bitmap.createBitmap(lbr, tg, Bitmap.Config.RGB_565);
bMap.setPixels(ttk, 0, lbr, 0, 0, lbr, tg);
image.setImageBitmap(bMap);
}
public void tekan2 (View vew){
cahaya(50);
}
//========================================================
public void grey(){
ImageView image;
Bitmap bMap;
Matrix matrix;
//Get ImageView from layout xml file
image = (ImageView) findViewById(R.id.imageView1);
//Decode Image using Bitmap factory.
bMap = BitmapFactory.decodeResource(getResources(),
R.drawable.bapak);
int lbr=bMap.getWidth();
int tg=bMap.getHeight();
int[] ttk=new int[lbr*tg];
bMap.getPixels(ttk, 0, lbr, 0, 0, lbr, tg);
YHPI -> hal : 71
int indek=0;
for(int y=0; y<tg; y++){
for (int x=0; x<lbr; x++){
int r0 = (ttk[indek]>> 16) & 0xff;
int g0 = (ttk[indek] >> 8) & 0xff;
int b0 = ttk[indek]& 0xff;
int r = Math.round((r0+g0+b0)/3);
int g = Math.round((r0+g0+b0)/3);
int b = Math.round((r0+g0+b0)/3);
ttk[indek++]=0xff000000|(r<<16)|(g<<8)|b;
}
}
bMap=Bitmap.createBitmap(lbr, tg, Bitmap.Config.RGB_565);
bMap.setPixels(ttk, 0, lbr, 0, 0, lbr, tg);
image.setImageBitmap(bMap);
}
public void tekan3 (View vew){
grey();
}
//========================================================
public void tepi(){
ImageView image;
Bitmap bMap,bMap1;
Matrix matrix;
//Get ImageView from layout xml file
image = (ImageView) findViewById(R.id.imageView1);
//Decode Image using Bitmap factory.
bMap = BitmapFactory.decodeResource(getResources(),
R.drawable.bapak);
bMap1 = BitmapFactory.decodeResource(getResources(),
R.drawable.bapak);
int lbr=bMap.getWidth();
int tg=bMap.getHeight();
bMap1=Bitmap.createBitmap(lbr, tg, Bitmap.Config.RGB_565);
// int[] ttk=new int[lbr*tg];
// bMap.getPixels(ttk, 0, lbr, 0, 0, lbr, tg);
int batas=25;
for(int y=1; y<tg; y++){
for (int x=1; x<lbr; x++){
int titik=bMap.getPixel(x, y);
int r0 = Color.red(titik);
int g0 = Color.green(titik);
int b0 = Color.blue(titik);
int vp1 = Math.round((r0+g0+b0)/3);
titik=bMap.getPixel(x-1, y);
r0 = Color.red(titik);
g0 = Color.green(titik);
b0 = Color.blue(titik);
int vp2 = Math.round((r0+g0+b0)/3);
titik=bMap.getPixel(x, y-1);
r0 = Color.red(titik);
g0 = Color.green(titik);
b0 = Color.blue(titik);
int vp3 = Math.round((r0+g0+b0)/3);
int s1=Math.abs(vp2-vp1);
YHPI -> hal : 72
int s2=Math.abs(vp3-vp1);
if (s1>=batas && vp1>=batas)
{ int warna = Color.rgb(255, 255, 255);
bMap1.setPixel(x, y, warna);
}
if (s1>=batas && vp1>=batas)
{ int warna = Color.rgb(255, 255, 255);
bMap1.setPixel(x-1, y, warna);
}
if (s2>=batas && vp1>=batas)
{ int warna = Color.rgb(255, 255, 255);
bMap1.setPixel(x, y, warna);
}
if (s2>=batas && vp1>=batas)
{ int warna = Color.rgb(255, 255, 255);
bMap1.setPixel(x, y-1, warna);
}
}
}
image.setImageBitmap(bMap1);
}
public void tekan4 (View vew){
tepi();
}
//========================================================
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.gambar2, menu);
return true;
}
}
VIII.4. SOAL (UJI KEMAMPUAN)
Kerjakan setiap permasalahan dengan menuliskan strukur aplikasinya dan juga
buat desain, tuliskan script masing masing element yang berkaitan simpan ke
dalam SOAL8_1, dan SOAL8_2
1. Buat desain dengan menampilkan sebuah gambar apa saja, kemudian olah gambar
tersebut, zooming, filter, dan contrast.
2. Fotolah suatu tempat kemudian simpan filenya dengan backgroud, dan foto pada tempat
yang sama dengan meletakkan obyek, boleh sepeda motor, orang atau apa saja, kemudian
simpan filenya dengan campuran. Kemudan lakukan pengolahan citra dengan memisahkan
obyek dengan backgroundnya, sebagai petunjuk bisa gunakan metode XOR, atau
substracting.
YHPI -> hal : 73
BAB IX
DATABASE SEDERHANA
IX.1. TUJUAN
Pemrograman berorientasi objek merupakan paradigma pemrograman yang semua data dang
fungsi dibungkus dalam kelas-kelas atau obyek-obyek. Tujuan dari BAB kesembilan ini
adalah,
1. Mahasiswa mampu membandingkan pemrograman antara logika terstrukur dengan
logika berorientasi obyek.
2. Mahasiswa mampu menyusun permasalahan dalam struktur dan kelas.
3. Mahasiswa mampu mendesain sebuah program dengan memanfaatkan struct dan
class sebagai elemen OOP.
IX.2. TEORI DASAR
Kita sebagai pengguna program Android sangat beruntung karena Android menyediakan
sebuah database yang secara default yang sudah ada di dalam library Android, yaitu SQLite.
Untuk keperluan operasi database pada smartphone atau tablet Android, SQLite sangat
memadai karena ukurannya yang kecil, cepat dan ringan dalam hal sumber daya. Karena
sifatnya sebagai embedded database, SQLite tidak memiliki server namun bentuknya adalah
library yang akan dipanggil saat program dijalankan. Seperti halnya database pada umumnya,
SQLite memiliki objek-objek seperti table, view dan index. Perintah-perintah SQL-nya pun
sangat mirip seperti yang biasa digunakan yaitu SELECT, INSERT, UPDATE, DELETE dan
sebagainya. Informasi mengenai SQLite dapat dibaca secara lengkap pada situs resminya di:
dari http://www.sqlite.org, yaitu:
Pada umumnya aplikasi dengan embedded database tidak menyertakan database yang sudah
berbentuk pada saat aplikasi itu diinstal pada perangkat. Jadi yang diinstal hanya programnya,
sedangkan databasenya tidak ada sama sekali. Database akan dibuat pada saat aplikasi itu
dijalankan pertama kali, yaitu program akan memeriksa apakah database ditemukan. Jika
database tidak ditemukan maka serangkaian perintah SQL akan menjalankan perintah
YHPI -> hal : 74
CREATE yang akan membentuk file database diikuti dengan table-table di dalamnya.
Tentunya programmer harus membuat sendiri perintah SQL tersebut secara spesifik
tergantung struktur data di dalam aplikasi yang dibuatnya. Ini adalah teknik yang biasanya
digunakan programmer dalam membuat sebuah aplikasi dengan embedded database dimana
ia tidak menyertakan file database di dalam paket instalasi aplikasi.
IX.3. LATIHAN PROGRAM :
Membuat Database sederhana, yaitu create, append,...., dan yang lainnya
IX.3.1. Pada Tahap ini kita membuat database sederhana, untuk itu ikuti langkah-langkah
berikut ini:
1. Jalankan program Eclipse dan buat sebuah Android Project baru.
2. Buat Project dengan nama DBProject1
3. Gunakan Android 2.3
4. Berikan nama yang sama untuk beberapa file yang lain
5. Tambahkan sebuah class baru dan beri nama DBAdapter.
Tekan Finish untuk melanjutkan.
Tambahkan perintah import berikut ini pada program header DBAdapter.java.
4. Perhatikan beberapa library SQLite yang akan digunakan disebutkan di situ.
YHPI -> hal : 75
==============================================================
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import ndroid.database.sqlite.SQLiteOpenHelper; import
android.util.Log;
5. Ketikkan skrip berikut ini di dalam class DBAdapter. Perhatikan class ini mengandung
sebuah constructor DBAdapter(Context) untuk menginisiasi class, kemudian method
open dan close masing-masing untuk membuka dan menutup database.
public class DbAdapter {
private static final String TAG="DbAdapter"; private static final
String DATABASE_NAME="books"; private static final int
DATABASE_VERSION=1;
private static final String TABLE_CREATE = "create table titles (_id
integer
primary key autoincrement, "
+ "isbn text not null, title text not null, "
+ "publisher text not null)";
private static final String TABLE_DROP = "DROP TABLE IF EXISTS
titles";
private final Context context; private DatabaseHelper dbHelper;
private SQLiteDatabase db;
public DbAdapter(Context ctx) {
this.context = ctx;
dbHelper = new DatabaseHelper(this.context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context ctx) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) { Log.w(TAG, "Upgrading database from version " +
oldVersion + " to " + newVersion
+ ", which will destroy all old data");
db.execSQL(TABLE_DROP);
onCreate(db);
}
}
public DbAdapter open() throws
SQLException { db =
dbHelper.getWritableDatabase();
return this; }
public void close() {
dbHelper.close();
}
}
6. Sampai tahap ini jalankan aplikasi tersebut untuk menguji-coba dengan cara klik-kanan
nama pada projek di dalam Package Explorer, kemudian pilih Run As Android
YHPI -> hal : 76
Application.
7. Tunggu sejenak sampai emulator Android ditampilkan dan menjalankan aplikasi ini.
Sepintas Anda tidak akan melihat sesuatu yang istimewa pada tampilan aplikasi
tersebut, kecuali sebuah pesan yang muncul pada emulator.
8. Perhatikan potongan-potongan program berikut:
MainActivity.java DBAdapter.java
DBAdapter db = new DBAdapter(this); public DBAdapter(Context ctx) {
this.context = ctx;
dbHelper = new DatabaseHelper this.context);
}
private static class DatabaseHelper extends
SQLiteOpenHelper {
DatabaseHelper(Context ctx) {
super(ctx, DATABASE_NAME, null,
DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
}
private static final String TABLE_CREATE =
"create table titles (_id integer primary key
autoincrement, "
+ "isbn text not null, title text not null, "
+ "publisher text not null)";
Saat MainActivity.java membuat objek DBAdapter dengan di dalam baris DBAdapter db
= new DBAdapter(this); maka rangkaian pemanggilan baris-baris program lainnya akan
dijalankan seperti diperlihatkan pada gambar di atas, seperti pembuatan objek
DatabaseHelper dan pemanggilan method super, onCreate dan terakhir yang berujung
pada dijalankannya method execSQL untuk membuat sebuah table bernama titles.
Tanpa disadari sebuah file database bernama books dengan sebuah table titles di
dalamnya telah terbentuk. Lalu sekarang bagaimana memastikan database ini telah
terbentuk? Satu- satunya cara tentunya harus menemukan bahwa file database itu
memang ada, bukan?
a. Jalankan menu Window -> Open Perpective -> DDMS atau cukup meng-klik icon
DDMS, perpective pada sudut kanan-atas layar.
YHPI -> hal : 77
b. Pada tab File Explorer, buka folder data -> data.
c. Cari nama package dari projek ini (pada contoh ini adalah net.houseoflife.dbsample),
kemudian buka foldernya hingga ditemukan folder databases dan sebuah file
database di dalamnya. Itu adalah file database SQLite yang dibentuk oleh aplikasi
tersebut.
File database SQLite yang tampak pada File Explorer perlu dibuka untuk memastikan
sebuah table telah terbentuk di dalamnya. Database itu tidak dapat langsung dibuka di dalam
Eclipse tetapi harus dibuka menggunakan sebuah program yang bernama SQLite Manager.
Program ini akan dijelaskan kemudian, tetapi untuk saat ini file database ini harus dibawa
keluar dari emulator agar bisa diakses dari komputer lokal.
1. Pastikan file database disorot/dipilih pada File Explorer, kemudian klik icon dengan
tulisan Pull a file fromthe device pada sudut kanan-atas layar.
YHPI -> hal : 78
2. Simpan file tersebut pada komputer lokal
SQLite Manager adalah sebuah program yang sangat membantu programmer dalam
mengelola database SQLite seperti membuat table, index dan menjalankan perintah-
perintah SQL. Program ini sangat mudah digunakan dan betul-betul bermanfaat untuk
berbagai keperluan praktis. Satu hal lagi yang tidak kalah pentingnya: program ini gratis
IX.4. SOAL(UJI KEMAMPUAN)
Buat Database Sederhana dengan menggunakan SQL LITE SOAL9_1, dan
SOAL9_2
1. Buat program untuk mengisi data dan menampilkan data biodata.
2. Buat program dengan membuat desain reseler, transaksi penjualan (kasir) sederhana.
YHPI -> hal : 79
BAB X
(PERTEMUAN INI)
s.d.
(PERTEMUAN KELIMA BELAS)
Presentasi
Implementasikan Materi bab I s.d. XII kemudian desailah sebuah project,
dimana masing-masing mahasiswa wajib membuat project, kemudian
dikumpulkan dan di presentasikan!
Setiap Pertemuan Siswa wajib menunjukkan kemajuan project yang
dikerjakan, jika tidak ada kemajuan maka siswa diberi hukuman
YHPI -> hal : 80
SELAMAT BEKERJA, BELAJAR DAN SEMOGA ALLAH
SELALU MELIMPAHKAN ILMU YANG BERMANFAAT
DUNIA DAN AKHIRAT KEPADA KITA SEMUA
AMIN 99X
YHPI -> hal : 81
DAFTAR PUSTAKA
Dimarzio,J.F,2008, Android A Programers Guide, MC Graw Hill, New York Chicago San
Francisco Lisbon London Madrid City.
Huang, Jim, 2011, Android Graphics, Oxlab Developer & Co-Founder.
Merier, Reto, 2009, Android Aplication Development, Wiley Publishing, Inc, United States of
America.
Djunaedi, Feri, 2011, Menggunakan Database di Android