buku ajar mobile internet Android untuk siswa.unlocked.doc
-
Upload
dimas-argasaputra -
Category
Documents
-
view
28 -
download
2
Transcript of buku ajar mobile internet Android untuk siswa.unlocked.doc
ANDROID FOR MOBILE INTERNET APLICATION
SEMESTER VII
(2 SKS/ 3 Jam/Minggu)
Penyusun:
Drs. Yoyok Heru P.I., MT NIP. 196807081994031002
JURUSAN TEKNIK ELEKTROPROGRAM STUDI TEKNIK TELEKOMUNIKASI
POLITEKNIK NEGERI MALANG2013
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 PENGESAHANKATA PENGANTAR 1DAFTAR ISI 2DAFTAR GAMBAR 4PENDAHULUAN 5BAB I ARSITEKTUR DAN STRUKTUR ANDROID 17
I.1 Tujuan 17I.2 Teori Dasar 17I.2.1 Arsitektur Android 17I.2.2 Perangkat Lunak Yang Diperlukan 20I.3 Sekilas Instalasi Android 20
BAB II MEMBUAT SEBUAH PROJECT 24II.1. Tujuan 24II.2. Teori Dasar 24II.2.1 WorkBench atau Lembar Kerja 24II.3 Latihan Membuat Aplikasi 26II.4. SOAL (UJI KEMAMPUAN) 31
BAB III PENGGUNAAN BUTTON 32III.1. Tujuan 32III.2. Teori Dasar 32III.2.1 Perbedaan OnClickListener dengan Onclick Biasa pada Button 32III.2.2 OnClickListener() 32III.3. Latihan Program 33III.4. SOAL (UJI KEMAMPUAN), 36
BAB IV CHECK BOX DAN RADIO BUTTON 37IV.1. Tujuan 37IV.2. Teori Dasar 37IV.2.1 CHECK BOX 37IV.2.2 Radio Group dan Button 38IV.3. LATIHAN PROGRAM 39IV.4. SOAL (UJI KEMAMPUAN) 46
BAB V SPINER 47V.1. Tujuan 47V.2. Teori Dasar 47V.3. LATIHAN PROGRAM 48V.4. SOAL (UJI KEMAMPUAN) 51
BAB VI BEKERJA DENGAN BEBERAPA LAYAR 52VI.1 Tujuan 52VI.2 Teori Dasar 52VI.3. LATIHAN PROGRAM 53VI.4. SOAL (UJI KEMAMPUAN) 57
BAB VII GRAFIK KLASIK DI ANDROID 58VII.1. Tujuan 58VII.2. Teori Dasar 58VII.2.1 OPEN GL ES 58VII.2.2 TITIK, GARIS, DAN POLYGON 60VII.3. LATIHAN PROGRAM 61VII.3.1 Implementasi grafik pada bentuk klasik 61VII.4. SOAL (UJI KEMAMPUAN) 63
BAB VIII IMAGE ATAU CITRA 64
YHPI -> hal : 3
VIII.1. Tujuan 64VIII.2. Teori Dasar Fungsi 64VIII.2.1 Image 64VIII.2.2 Memanggil Image 64VIII.2.3 Menampilkan Image 65VIII.3. LATIHAN PROGRAM 65VIII.3.1 Menampilkan Gambar antena 65VIII.3.2 Latihan Pemrosesan Citra 67VIII.4. SOAL (UJI KEMAMPUAN) 72
BAB IX DATABASE SEDERHANA 73IX.1. Tujuan 73IX.2. Teori Dasar 73IX.3. LATIHAN PROGRAM 74IX.4. SOAL (UJI KEMAMPUAN) 78
BAB X PROJECT DAN Presentasi 79DAFTAR PUSTAKA 81
YHPI -> hal : 4
DAFTAR GAMBAR
Gambar 1. Wireless IP 7Gambar 2. Arsitektur Jaringan semua IP 8
Gambar 3. Hirarki Dari Jaringan Heterogen Yang Terintegrasi 8Gambar 1.1 Keterkaitan antara Industi, Developer, dan User 17Gambar 1.2. Integrasi, Extended, dan Replace 18Gambar 1.3 Android Layers 18Gambar 1.4. bahasa program yang menangani per Layer 20Gambar 1.5. Konfigurasi Workspace 21Gambar 1.6. Tampilan Awal Eclipse 21Gambar 1.7. Workbench, dari Eclipse 22Gambar 1.8. Kotak Dialog Tempat Menginstall Plug-in Pada Eclipse 22Gambar 1.9. Plug-in Repository 23Gambar 2.0 WorkBench atau Lembar kerja 24Gambar 2.1. Kotak Dialog Nama Project, Aplikasi, Paket,... 26Gambar 2.2. Seting Icon Aplikasi 27Gambar 2.3. Jendela Pengaturan Aktivitas 27Gambar 2.4 Dialog Activity 28Gambar 2.5. Lembar Kerja 29Gambar 2.6. Latihan Membuat Desain 31Gambar 3.1. GraphicLayout Activity Button1 33Gambar 4.1. elemen CheckBox 37Gambar 4.2. GraphicLayout Contoh Penggunaan CheckBox 39Gambar 4.3. Desain Latihan Radio Button 42Gambar 5.1. Tampilan Spinner 47Gambar 5.2. Desain Penggunaan Komponen Spinner 48Gambar 6.1. Membuat Class Baru 52Gambar 6.2 Membuat Aplikasi 53Gambar 6.3. Nama Aktivitas 53Gambar 6.4. Desain Layar Utama 54Gambar 6.5 Membuat Screen baru “layar2.xml” 54Gambar 6.6. Desain screen layar2 55Gambar 6.7. Menambah Script pada AndroidManifest 55Gambar 6.8. Membuat Class Baru “Layar1” 56Gambar 8.1 Desain Panggil Gambar 65Gambar 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 TelephoneSystem, Improved Mobile TelephoneSystem, Advanced Mobile TelephoneSystem (900 Mhz, In japan)
2 1G
Nordic Mobile Telephone (1rst cell phone in jerman), Advanced MobilePhone System (analog mobile phone), Analog, Band frekuensi 800 MHz
radio sinyal bersifat analog, Pada frekuensi 800 Mhz & 400Mhz, Dimulai dari Chicago, dikomersilkan 1983
3 2G
Digital System, Global System for Mobile communications (GSM: originally from Groupe Spécial 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), Frekuensi800 – 1900 Mhz, DikenalnyaGSM dan CDMA
4 2.5GGeneral Packet Radio System, 56 –114 Kbps, for :(SMS, MMS, WAP, Internet)
digital high speed
5 2.75GCDMA2000, Enhanced Data rates forGSM Evolution (EDGE) or EnhancedGPRS (EGPRS)
digital high speed
6 3G
Wideband Code Division Multiple Access (WCDMA), Universal Mobile Telecommunication System, CDMA2000, WiMAX (WorldwideInteroperability for Microwave Access)
digital high speed
7 3.5GHSDPA (High-Speed Downlink PacketAccess) : (1.8, 3.6, 7.2 and 14.4Mbit/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 : 1010
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 : 1111
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 : 1212
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 : 1313
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 : 1414
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 : 1515
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 : 1616
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 : 1717
BAB IARSITEKTUR 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 : 1818
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 : 1919
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 : 2020
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 -> h tt p : / /j a v a . su n . c o m / j a v ase / do w n l oads / i nde x .j sp Android SDK -> h tt p : / / de v e l ope r. and r o i d . co m / s d k / i nde x . h t m l Eclipse IDE -> ww w . ec l i pse . o r g / do w n l oads Android ADT -> h tt p s : / / dl - ss l. g o o g l e . c o m / and r o i d / ec li pse/
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 : 2121
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 : 2222
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 : 2323
Gambar 1.9. Plug-in Repository
Misalnya pada Name: tuliskan “Android ADT”, pada Location, tuliskan : h t t p s :// d l -
s s l . g o o g l e . c o m / a nd r o i d / e c li p s e / ,
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 : 2424
BAB IIMEMBUAT 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 : 2525
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 : 2626
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, j a ngan 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 : 2727
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 : 2828
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 : 2929
(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 : 3030
- 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 : 3131
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 : 3232
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());
}}
OnClick()
int hsl = b1 * b2;hs.setText(String.valueOf(hsl));
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:
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"
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"
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;
@Overridepublic 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 ));
}
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_latih1_b, menu);return true;
}}
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.
BAB IVCHECK 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 : “ @ + i d /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" />
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 dibawah:
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.
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 : 4040
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 : 4141
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;
@Overridepublic 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 : 4242
} 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;
} elseif (cek2.isChecked()){
c=1/a+1/b;c=1/c;
}hs.setText(String.valueOf(c));
}
@Overridepublic 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 : 4343
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 : 4444
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.OnClickListene r ;import android.widget.Button;import android.widget.EditTex t ; import android.widget.RadioGrou p ; import android.widget.TextView; import android.widget.Toast;
YHPI -> hal : 4545
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;
@Overridepublic 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 r g =(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 : 4646
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;
}}
@Overridepublic 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 : 4747
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 : 4848
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 : 4949
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 : 5050
<string name="app_name">spine r </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>Kuran g </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.AlertDialo g ;import android.content.DialogInterface ;
public class Spiner1Activity extends Activity {private EditText bl1,bl2; private Spinner spn1; private TextView has;
@Overridepublic 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 : 5151
a = Double.parseDouble(bl1.getText().toString()); b = Double.parseDouble(bl2.getText().toString()); hsl=a + b;switch (spn1.getSelectedItemPosition()){case 0:
case 1:
case 2:
case 3:
case 4:
}}
hsl = a + b;break;
hsl = a - b;break;
hsl = a * b;break;
hsl = a / b;break;
hsl = Math.pow(a, b);break;
@Overridepublic 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
BAB VIBEKERJA 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 b u a t p r o j e c t , lakukan pembuatan halaman
utama s e p e r t i b i a s a 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.
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.
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:
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:
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:
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.
BAB VIIGRAFIK 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.
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 : 6060
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 : 6161
GL_TRIANGLE_FAN : membentuk beberapa segitiga yang berpusat pada satu titik(seperti kipas)
GL_QUADS : tiap 4 glVertex membentuk segi empatGL_QUAD_STRIP : tiap 4 glVertex membentuk segi empat, dan semuanya saling
menempelGL_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.Vie w ;import android.view.View.OnClickListene r ;import android.content.Context;import android.opengl.GLSurfaceView;
public class Latih7_grafik_klasik extends Activity {private Button teka n ;private GLSurfaceView grafik1;@Overridepublic 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);
}@Overrideprotected void onPause() {super.onPause();// The following call pauses the rendering thread. grafik1.onPause();}@Overrideprotected void onResume() {super.onResume();// The following call resumes a paused rendering thread. grafik1.onResume();}
YHPI -> hal : 6262
class HelloESSurfaceView extends GLSurfaceView { public HelloESSurfaceView(Context context){ super(context);// Set the Renderer for drawing on the GLSurfaceView setRenderer(new segitiga());}}
@Overridepublic 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 arraysgl.glEnableClientState(GL10.GL_VERTEX_ARRAY);}public void onDrawFrame(GL10 gl) {// Redraw background colorgl.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 hardware’s native byte ordervbb.order(ByteOrder.nativeOrder());
YHPI -> hal : 6363
// 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 : 6464
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 : 6565
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 : 6666
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 {
@Overridepublic 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);
}
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {
YHPI -> hal : 6767
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 : 6868
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 : 6969
<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 {
@Overridepublic 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 fileimage = (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 : 7070
public void tekan (View vew){putar();
}//==================================================================
public void cahaya(int cahayaofset){ImageView image; Bitmap bMap; Matrix matri x ;
//Get ImageView from layout xml fileimage = (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 matri x ;
//Get ImageView from layout xml fileimage = (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 : 7171
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 matri x ;
//Get ImageView from layout xml fileimage = (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(tt k , 0, lb r , 0, 0, lb r , t g );
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 : 7272
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();}
//========================================================@Overridepublic 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 : 7373
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 h tt p:/ / w ww.s q lite . o r g , y aitu:
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 : 7474
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 DBProject13. Gunakan Android 2.34. Berikan nama yang sama untuk beberapa file yang lain5. 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 : 7575
==============================================================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 finalString DATABASE_NAME="books"; private static final intDATABASE_VERSION=1;private static final String TABLE_CREATE = "create table titles (_id integerprimary key autoincrement, "+ "isbn text not null, title text not null, "+ "publisher text not null)";private static final String TABLE_DROP = "DROP TABLE IF EXISTStitles";
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);}
@Overridepublic void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
@Overridepublic 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 : 7676
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 extendsSQLiteOpenHelper {
DatabaseHelper(Context ctx) {super(ctx, DATABASE_NAME, null,
DATABASE_VERSION);}
@Overridepublic 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 : 7777
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 from the device” pada sudut kanan-atas layar.
YHPI -> hal : 7878
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 : 7979
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 : 8080
SELAMAT BEKERJA, BELAJAR DAN SEMOGA ALLAH SELALU MELIMPAHKAN ILMU YANG BERMANFAAT
DUNIA DAN AKHIRAT KEPADA KITA SEMUAAMIN 99X
YHPI -> hal : 8181
DAFTAR PUSTAKA
Dimarzio,J.F,2008, Android A Programer’s 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