ANDROID FOR MOBILE INTERNET APLICATION
SEMESTER VII (2 SKS/ 3 Jam/Minggu) Penyusun: Drs. Yoyok Heru P.I., MT NIP. 196807081994031002
JURUSAN TEKNIK ELEKTRO PROGRAM STUDI TEKNIK TELEKOMUNIKASI POLITEKNIK NEGERI MALANG
2013
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,
Penulis
YHPI -> hal : 1
Nopember 2013
DAFTAR ISI
LEMBAR PENGESAHAN KATA PENGANTAR DAFTAR ISI DAFTAR GAMBAR PENDAHULUAN BAB I ARSITEKTUR DAN STRUKTUR ANDROID I.1 Tujuan I.2 Teori Dasar I.2.1 Arsitektur Android I.2.2 Perangkat Lunak Yang Diperlukan I.3 Sekilas Instalasi Android BAB II MEMBUAT SEBUAH PROJECT II.1. Tujuan II.2. Teori Dasar II.2.1 WorkBench atau Lembar Kerja II.3 Latihan Membuat Aplikasi II.4. SOAL (UJI KEMAMPUAN) BAB III PENGGUNAAN BUTTON III.1. Tujuan III.2. Teori Dasar III.2.1 Perbedaan OnClickListener dengan Onclick Biasa pada Button III.2.2 OnClickListener() III.3. Latihan Program III.4. SOAL (UJI KEMAMPUAN), BAB IV CHECK BOX DAN RADIO BUTTON IV.1. Tujuan IV.2. Teori Dasar IV.2.1 CHECK BOX IV.2.2 Radio Group dan Button IV.3. LATIHAN PROGRAM IV.4. SOAL (UJI KEMAMPUAN) BAB V SPINER V.1. Tujuan V.2. Teori Dasar V.3. LATIHAN PROGRAM V.4. SOAL (UJI KEMAMPUAN) BAB VI BEKERJA DENGAN BEBERAPA LAYAR VI.1 Tujuan VI.2 Teori Dasar VI.3. LATIHAN PROGRAM VI.4. SOAL (UJI KEMAMPUAN) BAB VII GRAFIK KLASIK DI ANDROID VII.1. Tujuan VII.2. Teori Dasar VII.2.1 OPEN GL ES VII.2.2 TITIK, GARIS, DAN POLYGON VII.3. LATIHAN PROGRAM VII.3.1 Implementasi grafik pada bentuk klasik VII.4. SOAL (UJI KEMAMPUAN)
1 2 4 5 17 17 17 17 20 20 24 24 24 24 26 31 32 32 32 32 32 33 36 37 37 37 37 38 39 46 47 47 47 48 51 52 52 52 53 57 58 58 58 58 60 61 61 63
BAB VIII IMAGE ATAU CITRA
64
YHPI -> hal : 2
VIII.1. Tujuan VIII.2. Teori Dasar Fungsi VIII.2.1 Image VIII.2.2 Memanggil Image VIII.2.3 Menampilkan Image VIII.3. LATIHAN PROGRAM VIII.3.1 Menampilkan Gambar antena 65 VIII.3.2 Latihan Pemrosesan Citra VIII.4. SOAL (UJI KEMAMPUAN) BAB IX DATABASE SEDERHANA IX.1. Tujuan IX.2. Teori Dasar IX.3. LATIHAN PROGRAM IX.4. SOAL (UJI KEMAMPUAN) BAB X PROJECT DAN Presentasi DAFTAR PUSTAKA
YHPI -> hal : 3
64 64 64 64 65 65 67 72 73 73 73 74 78 79 81
DAFTAR GAMBAR Gambar 1. Wireless IP Gambar 2. Arsitektur Jaringan semua IP
7 8
Gambar 3. Hirarki Dari Jaringan Heterogen Yang Terintegrasi Gambar 1.1 Keterkaitan antara Industi, Developer, dan User Gambar 1.2. Integrasi, Extended, dan Replace Gambar 1.3 Android Layers Gambar 1.4. bahasa program yang menangani per Layer Gambar 1.5. Konfigurasi Workspace Gambar 1.6. Tampilan Awal Eclipse Gambar 1.7. Workbench, dari Eclipse Gambar 1.8. Kotak Dialog Tempat Menginstall Plug-in Pada Eclipse Gambar 1.9. Plug-in Repository Gambar 2.0 WorkBench atau Lembar kerja Gambar 2.1. Kotak Dialog Nama Project, Aplikasi, Paket,... Gambar 2.2. Seting Icon Aplikasi Gambar 2.3. Jendela Pengaturan Aktivitas Gambar 2.4 Dialog Activity Gambar 2.5. Lembar Kerja Gambar 2.6. Latihan Membuat Desain Gambar 3.1. GraphicLayout Activity Button1 Gambar 4.1. elemen CheckBox Gambar 4.2. GraphicLayout Contoh Penggunaan CheckBox Gambar 4.3. Desain Latihan Radio Button Gambar 5.1. Tampilan Spinner Gambar 5.2. Desain Penggunaan Komponen Spinner Gambar 6.1. Membuat Class Baru Gambar 6.2 Membuat Aplikasi Gambar 6.3. Nama Aktivitas Gambar 6.4. Desain Layar Utama Gambar 6.5 Membuat Screen baru “layar2.xml” Gambar 6.6. Desain screen layar2 Gambar 6.7. Menambah Script pada AndroidManifest Gambar 6.8. Membuat Class Baru “Layar1” Gambar 8.1 Desain Panggil Gambar Gambar 8.2. Desain Aplikasi project Gambar2
8 17 18 18 20 21 21 22 22 23 24 26 27 27 28 29 31 33 37 39 42 47 48 52 53 53 54 54 55 55 56 65 67
YHPI -> hal : 4
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 programprogram 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 : 5
No.
1
2
Generasi
0G
1G
3
2G
4
2.5G
5
2.75G
6
3G
7
3.5G
8
4G
Standar Push to Talk, Mobile Telephone System, Improved Mobile Telephone System, Advanced Mobile Telephone System (900 Mhz, In japan) Nordic Mobile Telephone (1rst cell phone in jerman), Advanced Mobile Phone System (analog mobile phone), Analog, Band frekuensi 800 MHz 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) General Packet Radio System, 56 – 114 Kbps, for :(SMS, MMS, WAP, Internet) CDMA2000, Enhanced Data rates for GSM Evolution (EDGE) or Enhanced GPRS (EGPRS) Wideband Code Division Multiple Access (WCDMA), Universal Mobile Telecommunication System, CDMA 2000, WiMAX (Worldwide Interoperability for Microwave Access) HSDPA (High-Speed Downlink Packet Access) : (1.8, 3.6, 7.2 and 14.4 Mbit/s) Ultra Mobile Broadband (UMB)
Kemampuan
radio sinyal bersifat analog, Pada frekuensi 800 Mhz & 400 Mhz, Dimulai dari Chicago, dikomersilkan 1983 radio sinyal bersifat digital, dimulai dari maret 1993, Menggunakan TDM (Time Division Multiplexing), Frekuensi 800 – 1900 Mhz, Dikenalnya GSM dan CDMA
digital high speed digital high speed
digital high speed
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 : 6
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 : 7
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 : 8
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 : 9
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 : 10
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 : 11
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 : 12
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 : 13
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. Perubahanperubahan 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 : 14
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 : 15
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 : 16
BAB I ARSITEKTUR DAN STRUKTUR ANDROID I.1 TUJUAN Tujuan latihan program pertemuan pertama ini adalah, 1. Mahasiswa mengenal struktur dan arsitektur android 2. Mahasiswa memahami komponen pendukung android untuk membuat aplikasi 3. Mahasiswa memahami cara install android I.2 TEORI DASAR I.2.1 Arsitektur Android Android merupakan software yang full stack sebagai operating system, middleware, aplikasi, dan IDE. Android juga full open dalam source dan ideologi, dengan user controll nya kita dapat membuat aplikasi yang sesuai, industri menyediakan fungsi-fungsi dalam library nya yang diperuntukkan pengembang dan user, Sehingga ada link antara user, pengembang, dan industri, ditunjukkan oleh gambar 1.1. dibawah:
Gambar 1.1 Keterkaitan antara Industi, Developer, dan User Keterkaitan yang saling menguntungkan antara industri, user, dan pengembang dapat dilihat pada tabel 1.1 dibawah: No. 1
Industri
Pengembang
User
Software Stack open source Pengembang tidak memer- Pengguna berbasis Linux Kernel 2.6
lukan ijin untuk otak-atik kontrol dari apa yang diaplikasi
2
Sumber
tersedia
perkumpulan
setelah Tidak
sekitar
eksperimenkan ada
45 disembunyikan
industri konsorsium (Open diistimewakan Handsets
mempunyai
yang User
dapat
mengontrol
atau apa yang telah diinstallnya pada
Alliance) framework API nya
mengadakan kesepakatan I 3
Setiap orang akan dapat Dapat mengintegrasi, mem- dapat memilih default atau membangun sistem citra
perluas, dan menumpuki, extended komponen yang ada
YHPI -> hal : 17
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 : 18
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 : 19
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 Android SDK Eclipse IDE Android ADT
-> -> -> ->
http://java.sun.com/javase/downloads/index.jsp http://developer.android.com/sdk/index.html www.eclipse.org/downloads https://dl-ssl.google.com/android/eclipse/
1.3 Sekilas Instalasi Android Untuk melakukan installasi Android siapkan perangkat lunak yang diperlukan seperti diberitahukan pada Sub Bab 1.2.2. kemudian lakukan langkah seperti di bawah ini, (perlu diketahui bahwa setiap proses installasi tidak harus sama persis, tergantung dari sumber yang dipunyai) : -
Usahakan semua requariment yang diperlukan diletakkan dalam satu folder misalnya (Android_Eclip)
-
Jalankan file “Java Development Kids.exe”, ikuti apa yang diminta dan lakukan sampai finish
-
Jalankan file “Eclipse.exe”, kemudian jika minta konfigurasi workspace seperti dibawah:
YHPI -> hal : 20
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 : 21
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 : 22
Gambar 1.9. Plug-in Repository Misalnya pada Name: tuliskan “Android ADT”, pada Location, tuliskan : https://dl-
ssl.google.com/android/eclipse/, Jangan lupa pada proses ini koneksikan komputer dengan internet jika tidak maka akan mengalami kegagalan. Kemudian akan muncul kotak dialog seperti di bawah ini,
Tekan select all, kemudian tekan Next, untuk proses installasi, kemudian jika minta License Agreement pilih accept dan tekan Finish. Akhirnya jika proses nya benar tidak ada yang terlewatkan maka terjadilah proses instalasi penambahan plug-in ADT. -
Proses berikutnya adalah mengkonfigurasi lokasi SDK, pada menu eclipse pilih menu window -> preference, kemudian pilih Android pada tab sebelah kiri, kemudian pilih Browse, dan pilih folder dimana file-file SDK berada.
-
Proses Installasi selesai, dan Eclipse siap digunakan untuk membuat project, running, dan compiling.
YHPI -> hal : 23
BAB II MEMBUAT SEBUAH PROJECT
II.1. TUJUAN Materi pertemuan ketiga dititik beratkan pada mendesain sebuah aplikasi melalui Project, adapun tujuan khusus dari Bab dua ini adalah, 1. Mahasiswa mampu menyiapkan lembar kerja dalam sebuah project 2. Mahasiswa mampu mengubah tulisan background lembar kerja 3. Mahasiswa mampu menjalankan program aplikasi. II.2. TEORI DASAR II.2.1. WorkBench atau Lembar Kerja Workbench atau lembar kerja Android dengan Eclipse seperti ditunjukkan oleh gambar 2. memberitahukan bahwa lembar tersebut mempunyai komplektisitas environment,
Gambar 2.0. WorkBench atau Lembar kerja Lembar Kerja Eclips terdiri dari beberapa komponen utama diantaranya adalah: a. Baris Menu, (File, Edit, Refactor,...) b. Baris ShorCut (
)
c. Jendela Packet Explorer :
YHPI -> hal : 24
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 : 25
II.3. Latihan Membuat Aplikasi Ada hal yang harus kita pahami bahwa mendesain sebuah aplikasi dalam android sama dengan membuat sebuah project, dimana environment dari project cukup banyak, sebagai latihan pertama buat project aplikasi dengan nama “Percobaan”, ikuti langkah berikut: (dengan menggunakan IDE Eclip ...., beda IDE agak sedikit berbeda, tetapi secara prinsip sama) -
Langkah 1, berisi tentang persiapan membuat sebuah aplikasi dengan nama “Percobaan” : File-> New -> Android Project Aplication, kemudian muncul box dialog seperti gambar 2.1. berikut
Gambar 2.1. Kotak Dialog Nama Project, Aplikasi, Paket,... Lakukan pengisian sebagai berikut: -
Application Name, isi dengan : Percobaan (Perlu diperhatikan huruf pertama harus huruf besar, alasan tanya pada pembimbing/pengajar....)
-
Secara otomatis Project Name dan Package Name terisi dengan nama sama dengan nama aplikasi, jangan lakukan perubahan apapun.
-
Build SDK pilih versi android sesuai dengan OS device yang diinginkan, dalam hal ini kita coba pilih : Android 2.1 (API 7)
-
Kemudian tekan , NEXT, maka akan muncul jendela seperti gambar 2.2. dibawah:
YHPI -> hal : 26
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 : 27
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 : 28
(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 : 29
-
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 : 30
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 : 31
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:
YHPI -> hal : 32
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”:
YHPI -> hal : 33
android:layout_width="fill_parent" android:layout_height="fill_parent" >
<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 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" />
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"
YHPI -> hal : 34
android:layout_alignBaseline="@+id/Hasil" android:layout_alignBottom="@+id/Hasil" android:layout_alignRight="@+id/textView2" android:onClick="@string/tekankali" android:text="Tekan Lihat Hasil" />
“Strings.xml”
<string <string <string <string <string
name="app_name">Latih1_b name="hello_world"> name="menu_settings">Settings name="title_activity_latih1_b">Latih1_b name="tekankali">kali
“Latih_2.java” package com.example.latih1_b; import import import import import import public
android.os.Bundle; android.app.Activity; android.view.Menu; android.view.View; android.widget.EditText; android.widget.TextView; class Latih1_b extends Activity { private EditText bil1; private EditText bil2; private TextView hsk; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_latih1_b); bil1=(EditText) findViewById(R.id.Isi1); bil2=(EditText) findViewById(R.id.isi2); hsk =(TextView) findViewById(R.id.Hasil); } public void kali (View v) { double a,b,hs; a = Double.parseDouble(bil1.getText().toString()); b = Double.parseDouble(bil2.getText().toString()); hs=a*b ; hsk.setText(String.valueOf(hs)); //hsk.setText(String.valueOf(hs));
}
}
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_latih1_b, menu); return true; }
YHPI -> hal : 35
III.4. SOAL (UJI KEMAMPUAN), 1. Buat Project dengan nama aplikasi “Tugas_3” dan nama activity sama “Tugas_3”, buat desain sama dengan contoh tetapi buat script nya dengan menggunakan onClickListener 2. Buat Project dengan nama aplikasi “Tugas_3” dan nama activity sama “Tugas_3”, buat desain sama dengan contoh ubahlah komponen button menjadi Imagebutton, dan buat script nya dengan menggunakan onClickListener maupun onClick klasik.
YHPI -> hal : 36
BAB IV CHECK BOX DAN RADIO BUTTON IV.1. TUJUAN Komponen check Box dan radio button adalah komponen yang disediakan untuk pilihan ganda atau pilihan tunggal, model dan bentuknya mirip dengan miliknya Delphi atau C++Builder. Adapun tujuan dari pertemuan ini adalah, 1. Mahasiswa mampu mendesain project menggunakan komponen check box dan radio button. 2. Mahasiswa mampu membuat script yang berkaitan dengan check box dan radio button. 3. Mahasiswa mampu mengimplementasikan komponen check box dan radio button pada project sederhana. 4. Mahasiswa mampu membedakan penggunaan RadioButton dan RadioGroup pada sebuah project.
IV.2. TEORI DASAR IV.2.1 CHECK BOX Checkbox sering juga disebut tickbox adalah elemen (Widget) dari GUI pada android yang mengijinkan user untuk melakukan pilihan dengan logika biner, artinya jika dicentang maka nilainya adalah true, jika tidak dicentang nilainya adalah false, bentuk dan penggunaannya hampir sama dengan pemrograman C++Builder atau delphi. Untuk melakukan pencentangan menggunakan mouse atau spacebar keyboard, bentuk dari checkbox adalah seperti gambar (4.1) di bawah ini:
Gambar 4.1. elemen CheckBox Nama Id default adalah : “@+id/checkBox1” Pada gambar 4.1. isi dari text adalah : “Paralael” data script dari elemen ini adalah sebagai berikut:
YHPI -> hal : 37
IV.2.2 Radio Group dan Button Radio button atau disebut juga option button yang terdapat pada Radio Group adalah elemen dari GUI, yang mengijinkan user memilih hanya satu pilihan, ada beberapa model link eksekusi diantaranya adalah: -
Menggunakan onClick, yang melingkan file *.xml dengan file program script java (*.java), link nya dapat dijelaskan berikut:
-
Lebih jelas lihat contoh/latihan program no. 2 ! Menggunakan OnClickListener, model ini mempunyai pengaturan hanya pada script java saja (*.java), yaitu: a. tambahkan statement OnClickListener pada class uatma, miaslnya :
public class Rad_btn extends Activity {………….. -> ubah menjadi public class Rad_btn extends Activity implements View.OnClickListener{………………………………..
b. tambahkan variabel untuk radiobutton pada type onclicklistener, seperti: rd1=(RadioButton) findViewById(R.id.radio0); rd1.setOnClickListener(this);
c. buat prosedur dengan nama onClick(View variabel){…………, seperti contoh di bawah:
-
public void onClick(View v){ switch(v.getId()){ case R.id.radio0 : if (rd1.isChecked()) Toast.makeText(this,"Anda Pilih Nomer 1",Toast.LENGTH_LONG).show(); break; case R.id.radio1 : if (rd2.isChecked()) Toast.makeText(this,"Anda Pilih Nomer 2",Toast.LENGTH_LONG).show(); break; } }
Berikutnya adalah model Item onclicklistener, yaitu pemberian statement berdasarkan komponen atau elemen nya.
YHPI -> hal : 38
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”:
YHPI -> hal : 39
android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="27dp" android:text="Input R1 : " android:textAppearance="?android:attr/textAppearanceMedium" /> <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 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 : 40
android:inputType="numberDecimal" android:ems="10" />
<strings.xml>
<string <string <string <string <string
name="app_name">Latih4_chkbox name="hello_world"> name="menu_settings">Settings name="tekan">hasil name="title_activity_latih4_chkbox">Latih4_chkbox
package com.example.latih4_chkbox; import import import import import import import import
android.os.Bundle; android.app.Activity; android.view.Menu; android.view.View; android.widget.EditText; android.widget.TextView; android.widget.CheckBox; android.widget.Toast;
public class Latih4_chkbox extends Activity { private EditText r1; private EditText r2; private CheckBox cek1; private CheckBox cek2; private TextView hs; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_latih4_chkbox); r1=(EditText) findViewById(R.id.editText1); r2=(EditText) findViewById(R.id.editText2); hs=(TextView) findViewById(R.id.textView3); cek1=(CheckBox) findViewById(R.id.checkBox1); cek2=(CheckBox) findViewById(R.id.checkBox2); hs.clearComposingText(); } public void hasil (View v){ double a,b,c; if (r1.getText().length()==0 || r2.getText().length()==0){ Toast.makeText(this, "R1 maupun R2 tidak boleh Kosong !", Toast.LENGTH_LONG).show(); return;
YHPI -> hal : 41
} a=Double.parseDouble(r1.getText().toString()); b=Double.parseDouble(r2.getText().toString()); c=0; if (((cek1.isChecked()==false) && (cek2.isChecked()==false)) || ((cek1.isChecked()) && (cek2.isChecked()))){ Toast.makeText(this, " Pilih Salah Satu Saja !", Toast.LENGTH_LONG).show(); return; }
}
}
if (cek1.isChecked()){ c=a+b; } else if (cek2.isChecked()){ c=1/a+1/b; c=1/c; } hs.setText(String.valueOf(c));
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_latih4_chkbox, menu); return true; }
Kemudian Running Program! 2. Buat desain dengan menggunakan komponen radio button dan radio group berikut, beri nama Aplikasi Latih4_rdbtn, dan nama aktivitas juga Latih4_rdbtn, desain seperti gambar (4.2) di bawah:
Gambar 4.3. Desain Latihan Radio Button
YHPI -> hal : 42
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: <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true"
YHPI -> hal : 43
android:layout_centerVertical="true" android:text="Hasil :" />
package com.example.latih4_rdbtn; import import import import import import import import import import
android.os.Bundle; android.app.Activity; android.view.Menu; android.view.View; android.view.View.OnClickListener; android.widget.Button; android.widget.EditText; android.widget.RadioGroup; android.widget.TextView; android.widget.Toast;
YHPI -> hal : 44
import android.widget.RadioButton; public class Latih4_rdbtn extends Activity { private RadioButton rb1; private RadioButton rb2; private RadioButton rb3; private RadioButton r1,r2,r3; private Button tekan; private TextView hasil; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_latih4_rdbtn); rb1=(RadioButton) findViewById(R.id.radioButton1); rb2=(RadioButton) findViewById(R.id.radioButton2); rb3=(RadioButton) findViewById(R.id.radioButton3); tekan=(Button) findViewById(R.id.button1); tekan.setOnClickListener(new klik()); hasil=(TextView) findViewById(R.id.textView3); // RadioGroup rg=(RadioGroup) findViewById(R.id.radioGroup1); r1=(RadioButton) findViewById(R.id.radio0); r2=(RadioButton) findViewById(R.id.radio1); r3=(RadioButton) findViewById(R.id.radio2); r1.setChecked(false); } class klik implements Button.OnClickListener{ String t1="",t2="",t3=""; public void onClick (View v){ if (rb1.isChecked()){ t1="Indonesia"; //return; } if (rb2.isChecked()){ t2="Malaysia"; //return; } if (rb3.isChecked()){ t3="Jepang"; //return; } hasil.setText("Negara Pilihan :" + t1+" "+t2+" "+t3); } } public void pilihgrp(View view){ switch(view.getId()){ case R.id.radio0 : if (r1.isChecked()){ Toast.makeText(this, "Bendera Indonesia : Merah Putih", Toast.LENGTH_LONG).show(); return; } break; case R.id.radio1: if (r2.isChecked()){
YHPI -> hal : 45
Toast.makeText(this, "Bendera Malaysia : Bulan Bintang", Toast.LENGTH_LONG).show(); return; } break; case R.id.radio2: if (r3.isChecked()){ Toast.makeText(this, "Bendera Jepang : Matahari Terbit", Toast.LENGTH_LONG).show(); return; } break; }
}
}
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_latih4_rdbtn, menu); return true; }
IV.4. SOAL (UJI KEMAMPUAN), Kerjakan setiap permasalahan dengan membuat desain yang indah, masingmasing 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 : 46
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 : 47
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:
YHPI -> hal : 48
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 /> <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"/>
<strings.xml>
YHPI -> hal : 49
<string name="app_name">spiner <string name="hello_world">Hello world! <string name="menu_settings">Settings <string name="title_activity_spiner1">MainActivity <string-array name="listing"> - Jumlah
- Kurang
- Kali
- Bagi
- Pangkat
package com.example.spiner; import import import import import import import import import import
android.os.Bundle; android.app.Activity; android.view.Menu; android.view.View; android.widget.EditText; android.widget.TextView; android.widget.Spinner; android.widget.Toast; android.app.AlertDialog; android.content.DialogInterface;
public class Spiner1Activity extends Activity { private EditText bl1,bl2; private Spinner spn1; private TextView has; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.spiner1); bl1=(EditText) findViewById(R.id.bil1); bl2=(EditText) findViewById(R.id.bil2); spn1=(Spinner) findViewById(R.id.pilihan); has=(TextView) findViewById(R.id.hasil); } public void proses(View view){ double a,b,hsl; if (bl1.getText().toString()==""){ Toast.makeText(this, "Bilangan gak boleh kosong", Toast.LENGTH_LONG).show(); return; } if (bl2.getText().toString()==""){ Toast.makeText(this, "Bilangan gak boleh kosong", Toast.LENGTH_LONG).show(); return; }
YHPI -> hal : 50
}
}
a = Double.parseDouble(bl1.getText().toString()); b = Double.parseDouble(bl2.getText().toString()); hsl=a + b; switch (spn1.getSelectedItemPosition()){ case 0: hsl = a + b; break; case 1: hsl = a - b; break; case 2: hsl = a * b; break; case 3: hsl = a / b; break; case 4: hsl = Math.pow(a, b); break; }
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.spiner1, menu); return true; }
V.4. SOAL (UJI KEMAMPUAN), Kerjakan setiap permasalahan dengan membuat desain yang indah, masingmasing simpan dengan nama aplikasi dan nama aktivitas sama ! 1. Ubah program latihan4_1 dan 4_2 kedalam bentuk spinner, desainlah formnya sesuai dengan yang anda inginkan, simpan file -> Latih5_1 dan Latih5_2
YHPI -> hal : 51
BAB VI BEKERJA DENGAN BEBERAPA LAYAR VI.1. TUJUAN Sebuah aplikasi bisa memiliki lebih dari satu layar, mirip halnya dengan pemrograman Delphi atau C++Builder satu project memiliki lebih dari form. Untuk membuat multi layar di dalam Android mempunyai cara yang khusus, sehingga tujuan dari Bab ini adalah: 1. Mahasiswa mampu mendesain project dengan multi layar. 2. Mahasiswa mampu membuat script yang melingkan antara layar satu dengan yang lainnya. 3. Mahasiswa mampu mengimplementasikan multi layar pada project sederhana.
VI.2. TEORI DASAR Dalam sebuah project biasanya mempunyali lebih dari satu scrren. Screen pada android dibuat di bawah activity, sehingga pembuatan multi screen juga melibatkan multi activity. Dalam activity dikemas dalam sebuah file XML, sehingga multi screen akan menyebabkan project memiliki lebih dari satu file XML. Screen berkaitan dengan layout atau form, jika kita membuat lebih dari satu layout, ada script yang harus dituliskan untuk menghubungkan antar layout agar layout tersebut saling mengenal, yang akirnya ada konektivitas antar scree. Berikut adalah tata cara membuat desain project dengan multiscreen: 1. Yang pertama b u a t
project,
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.
YHPI -> hal : 52
Untuk lebih jelas pelajari dan coba perhatikan latihan program di bawah ini. VI.3. LATIHAN PROGRAM, Pada sesi ini kita akan mendesain sebuah project dengan menggunakan dua layar atau “screen”. Dimana konsep dari desain ini ingin menunjukkan prinsip kerja dari project yang menggunakan 2 layar. Hasil dari program ini adalah default adalah layar1 aktif, untuk menuju aatau mengaktifkan layar2 tekan tombol butoon, demikian juga sebaliknya, ntuk itu ikuti langkah-langkah berikut: 1.
Buat Project baru dengan nama aplikasi adalah : Latih6_dualayar, seperti gambar 6.2. berikut:
Gambar 6.2 Membuat Aplikasi 2. Beri nama activity “Layar1” seperti di bawah ini,
Gambar 6.3. Nama Aktivitas Tekan tombol ok, dan lanjutkan sampai kita dapatkan layout utama.
YHPI -> hal : 53
3. Tambahkan widget atau komponen button, ubah text nya “Menuju layar 2”, tambahkan juga komponen TextView, ubah textnya “Ini Adalah Layar 1”, seperti pada gambar 6.4. berikut:
Gambar 6.4. Desain Layar Utama 4. Buat layout dengan nama “layar2.xml”, dengan cara seperti di bawah ini :
Gambar 6.5 Membuat Screen baru “layar2.xml” 5. Berikutnya adalah menambahkan komponen button dan textview pada screen layar2, dan ubahlah masing-masing text nya sesuai dengan gambar 6.6. berikut:
YHPI -> hal : 54
Gambar 6.6. Desain screen layar2 6. Pada file AndroidManifest.xml tambahkan script seperti yang ada dalam lingkaran gambar 6.5.:
Gambar 6.7. Menambah Script pada AndroidManifest Penambahan script ini berfungsi mengenalkan aktivitas, java, dan xml “layar2” yang dibuat pada tahap kedua. 7. Buat Class baru dengan nama “Layar1”, ikut cara seperti yang tampak pada Gambar 6.5. berikut:
YHPI -> hal : 55
Gambar 6.8. Membuat Class Baru “Layar1” 8. Berikutnya adalah tambahkan script pada file Layar1.java, sebagai berikut:
9. Dan juga tambahkan script pada file layar2.java, berikut:
YHPI -> hal : 56
10. Untuk menguji apakah desain aplikasi berjalan atau tidak silakan di running aplikasinya.
VI.4. SOAL (UJI KEMAMPUAN), Ubah program latihan4_1 dan 4_2 kedalam bentuk dua layar menjadi satu aplikasi, desainlah formnya sesuai dengan yang anda inginkan, simpan file -> Latih6_1.
YHPI -> hal : 57
BAB VII GRAFIK KLASIK DI ANDROID VII.1. TUJUAN Secara umum grafik pada pemrograman dibedakan menjadi dua yaitu grafik berbasis kurva dikenal dengan grafik klasik, dan grafik dengan obyek citra atau gambar. Tujuan dari BAB ini adalah, 1. Mahasiswa mengenal grafik klasik pada pemrograman android. 2. Mahasiswa mampu mendesain grafik klasik sederhana pada sebuah project aplikasi. 3. Mahasiswa mengenal operasi geometri dasar untuk diimplementasikan pada grafik klasik.
VII.2. TEORI DASAR VII.2.1. OPEN GL ES Framework Android mendukung OpenGL ES 1.0/1.1 dan OpenGL ES 2.0, dimana ES adalah sebuah singkatan dari
Embeded System, merupakan bagian dari OPENGL khusus yang
dirancang untuk perangkat embeded. OpenGl adalah bebas biaya dan lintas platform. Dimana API nya mempunyai full fungsi yang mendukung grafik 2D dan 3D, pada sistem embedednya, seperti perangkat mobile. OpenGL 1.X menggunakan arsitektur pipeline yang fix secara tradisional, dan menekankan pada percepatan hardware dari API. Yang menawarkan penambahan fungsi, kualitas gambar yang bagus dan performansi yang tinggi. OpenGL 2.X berfungsi dalam hal pemrograman hardware. Ini menekankan pada pemrograman grafik 3D dan mengijinkan user untuk membuat bayangan dan objek-object program. Dengan ES 2.x kita juga dapat menulis vertex. Dilain pihak OpenGL 2.X tidak suport pada transformasi fungsi fix dan fragmentasi pipeline yang OpenGL 1.X support. Pemanggilan fungsi glutInit, berguna untuk inisialisasi secara umum terhadap nilai-nilai yang ada pada library GLUT.
Untuk menginisialisasi modus display dilakukan dengan memanggil fungsi: glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) pada procedure myInit(); Fungsi tersebut meminta window yang bersifat double buffered, dengan warna RGB. Beberapa baris berikut ini adalah membuat window.
YHPI -> hal : 58
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 : 59
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); glVertex3f(2.0, 0.0, 4.0); glVertex3f(3.0, -4.0, -2.0); glEnd();
/* Ingin menggambar titik */ /* menyatakan sejumlah titik */ /* 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); glVertex3f(6.0, 4.0, 2.0); glVertex3f(2.0, -4.0, 3.3); glVertex3f(5.0, 8.0, 8.0); glVertex3f(-4.7, 5.0, -3.0); glVertex3f(0.0, 0.0, 0.0); glVertex3f(6.0, -1.0, -7.0); glEnd();
/* mulai menggambar garis */ /* garis pertama, pasangan glVertex */ /* garis ke dua */ /* garis ke tiga */
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 : 60
GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON.
: membentuk beberapa segitiga yang berpusat pada satu titik (seperti kipas) : tiap 4 glVertex membentuk segi empat : tiap 4 glVertex membentuk segi empat, dan semuanya saling menempel : 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 import import import import import import import
android.os.Bundle; android.app.Activity; android.view.Menu; android.widget.Button; android.view.View; android.view.View.OnClickListener; android.content.Context; android.opengl.GLSurfaceView;
public class Latih7_grafik_klasik extends Activity { private Button tekan; private GLSurfaceView grafik1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_latih7_grafik_klasik); tekan=(Button)findViewById(R.id.button1); grafik1 = new HelloESSurfaceView(this); setContentView(grafik1); } @Override protected void onPause() { super.onPause(); // The following call pauses the rendering thread. grafik1.onPause(); } @Override protected void onResume() { super.onResume(); // The following call resumes a paused rendering thread. grafik1.onResume(); }
YHPI -> hal : 61
class HelloESSurfaceView extends GLSurfaceView { public HelloESSurfaceView(Context context){ super(context); // Set the Renderer for drawing on the GLSurfaceView setRenderer(new segitiga()); } } @Override public boolean onCreateOptionsMenu(Menu menu) {
}
getMenuInflater().inflate(R.menu.activity_latih7_grafik_klasik, menu); return true; }
Kemudian buat class dengan nama “segitiga.java”, pada Src yang sama, ketikan script di bawah ini: <segitiga.java> package com.example.latih7_grafik_klasik; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.opengl.GLSurfaceView; public class segitiga implements GLSurfaceView.Renderer{ private FloatBuffer triangle; public void onSurfaceCreated(GL10 gl, EGLConfig config) { // Set the background frame color to blue gl.glClearColor(0.0f, 0.0f, 0.9f, 1.0f); // initialize the triangle vertex array initShapes(); // Enable use of vertex arrays gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); } public void onDrawFrame(GL10 gl) { // Redraw background color gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // Draw the triangle using green color gl.glColor4f(0.0f, 1.0f, 0.0f, 0.0f); gl.glVertexPointer(3, GL10.GL_FLOAT, 0, triangle); gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3); } public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); } private void initShapes(){ float vertices[] = { // (x, y, z) of triangle -0.6f, -0.5f, 0, 0.6f, -0.5f, 0, 0.0f, 0.5f, 0 }; // initialize vertex Buffer for triangle // argument=(# of coordinate values * 4 bytes per float) ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4); // use the device hardware’s native byte order vbb.order(ByteOrder.nativeOrder());
YHPI -> hal : 62
}
// 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 : 63
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
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 : 64
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”
YHPI -> hal : 65
Gambar 8.2. Coding gb1.XMLb 4. Ketikkan script untuk gb1.java berikut: package com.example.gb1; import import import import import
android.os.Bundle; android.app.Activity; android.view.Menu; android.view.View; android.widget.ImageView;
public class Gb1Activity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gb1); } public void tampil (View v){ ImageView gb1=(ImageView)findViewById(R.id.imageView1); gb1.setImageResource(R.drawable.ball_small); } @Override public boolean onCreateOptionsMenu(Menu menu) {
YHPI -> hal : 66
}
}
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:
YHPI -> hal : 67
android:layout_centerVertical="true" android:text="@string/hello_world" tools:context=".Gambar2Activity" /> <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"/>
5. Ketikkan script untuk string berikut: <string.xml> <string name="app_name">gambar2
YHPI -> hal : 68
<string <string <string <string <string <string <string
name="hello_world">Hello world! name="menu_settings">Settings name="title_activity_gambar2">gambar2 name="tekan">putar name="tekan2">pencahayaan name="tekan3">grey scale name="tekan4">Garis Tepi
6. Ketikkan coding berikut pada file java,
package com.example.gambar2;
import com.example.gambar2.R.id; import import import import import import import import import
android.os.Bundle; android.app.Activity; android.view.Menu; android.view.View; android.graphics.Bitmap; android.graphics.BitmapFactory; android.graphics.Color; android.widget.ImageView; android.graphics.Matrix;
public class Gambar2Activity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gambar2); } //=========================================================== public void putar(){ ImageView image; Bitmap bMap; Matrix matrix; //Get ImageView from layout xml file image = (ImageView) findViewById(R.id.imageView1); //Decode Image using Bitmap factory. bMap = BitmapFactory.decodeResource(getResources(), R.drawable.bapak); //Create object of new Matrix. matrix = new Matrix(); //set image rotation value to 45 degrees in matrix. matrix.postRotate(45); //matrix.postTranslate(400, 5); //Create bitmap with new values. Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), matrix, true);
}
//put rotated image in ImageView. image.setImageBitmap(bMapRotate);
YHPI -> hal : 69
public void tekan (View vew){ putar(); } //================================================================== public void cahaya(int cahayaofset){ ImageView image; Bitmap bMap; Matrix matrix;
//Get ImageView from layout xml file image = (ImageView) findViewById(R.id.imageView1); //Decode Image using Bitmap factory. bMap = BitmapFactory.decodeResource(getResources(), R.drawable.bapak); int lbr=bMap.getWidth(); int tg=bMap.getHeight(); int[] ttk=new int[lbr*tg]; bMap.getPixels(ttk, 0, lbr, 0, 0, lbr, tg); int indek=0; for(int y=0; y> 16) & 0xff; int g = (ttk[indek] >> 8) & 0xff; int b = ttk[indek]& 0xff; r = Math.max(0, Math.min(255, r+ cahayaofset)); g = Math.max(0, Math.min(255, g+ cahayaofset)); b = Math.max(0, Math.min(255, b+ cahayaofset)); ttk[indek++]=0xff000000|(r<<16)|(g<<8)|b; } } bMap=Bitmap.createBitmap(lbr, tg, Bitmap.Config.RGB_565); bMap.setPixels(ttk, 0, lbr, 0, 0, lbr, tg); image.setImageBitmap(bMap);
} public void tekan2 (View vew){ cahaya(50); } //======================================================== public void grey(){ ImageView image; Bitmap bMap; Matrix matrix;
//Get ImageView from layout xml file image = (ImageView) findViewById(R.id.imageView1); //Decode Image using Bitmap factory. bMap = BitmapFactory.decodeResource(getResources(), R.drawable.bapak); int lbr=bMap.getWidth(); int tg=bMap.getHeight(); int[] ttk=new int[lbr*tg]; bMap.getPixels(ttk, 0, lbr, 0, 0, lbr, tg);
YHPI -> hal : 70
int indek=0; for(int y=0; y> 16) & 0xff; int g0 = (ttk[indek] >> 8) & 0xff; int b0 = ttk[indek]& 0xff; int r = Math.round((r0+g0+b0)/3); int g = Math.round((r0+g0+b0)/3); int b = Math.round((r0+g0+b0)/3); ttk[indek++]=0xff000000|(r<<16)|(g<<8)|b; } } bMap=Bitmap.createBitmap(lbr, tg, Bitmap.Config.RGB_565); bMap.setPixels(ttk, 0, lbr, 0, 0, lbr, tg); image.setImageBitmap(bMap);
} public void tekan3 (View vew){ grey(); } //======================================================== public void tepi(){ ImageView image; Bitmap bMap,bMap1; Matrix matrix;
//Get ImageView from layout xml file image = (ImageView) findViewById(R.id.imageView1); //Decode Image using Bitmap factory. bMap = BitmapFactory.decodeResource(getResources(), R.drawable.bapak); bMap1 = BitmapFactory.decodeResource(getResources(), R.drawable.bapak); int lbr=bMap.getWidth(); int tg=bMap.getHeight(); bMap1=Bitmap.createBitmap(lbr, tg, Bitmap.Config.RGB_565); // int[] ttk=new int[lbr*tg]; // bMap.getPixels(ttk, 0, lbr, 0, 0, lbr, tg); int batas=25; for(int y=1; y
YHPI -> hal : 71
}
}
int s2=Math.abs(vp3-vp1); if (s1>=batas && vp1>=batas) { int warna = Color.rgb(255, 255, 255); bMap1.setPixel(x, y, warna); } if (s1>=batas && vp1>=batas) { int warna = Color.rgb(255, 255, 255); bMap1.setPixel(x-1, y, warna); } if (s2>=batas && vp1>=batas) { int warna = Color.rgb(255, 255, 255); bMap1.setPixel(x, y, warna); } if (s2>=batas && vp1>=batas) { int warna = Color.rgb(255, 255, 255); bMap1.setPixel(x, y-1, warna); }
image.setImageBitmap(bMap1); } public void tekan4 (View vew){ tepi(); } //======================================================== @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.gambar2, menu); return true; } }
VIII.4. SOAL (UJI KEMAMPUAN) Kerjakan setiap permasalahan dengan menuliskan strukur aplikasinya dan juga buat desain, tuliskan script masing masing element yang berkaitan simpan ke dalam SOAL8_1, dan SOAL8_2 1. Buat desain dengan menampilkan sebuah gambar apa saja, kemudian olah gambar tersebut, zooming, filter, dan contrast. 2. Fotolah suatu tempat kemudian simpan filenya dengan backgroud, dan foto pada tempat yang sama dengan meletakkan obyek, boleh sepeda motor, orang atau apa saja, kemudian simpan filenya dengan campuran. Kemudan lakukan pengolahan citra dengan memisahkan obyek dengan backgroundnya, sebagai petunjuk bisa gunakan metode XOR, atau substracting.
YHPI -> hal : 72
BAB IX DATABASE SEDERHANA IX.1. TUJUAN Pemrograman berorientasi objek merupakan paradigma pemrograman yang semua data dang fungsi dibungkus dalam kelas-kelas atau obyek-obyek. Tujuan dari BAB kesembilan ini adalah, 1. Mahasiswa mampu membandingkan pemrograman antara logika terstrukur dengan logika berorientasi obyek. 2. Mahasiswa mampu menyusun permasalahan dalam struktur dan kelas. 3. Mahasiswa mampu mendesain sebuah program dengan memanfaatkan struct dan class sebagai elemen OOP.
IX.2. TEORI DASAR Kita sebagai pengguna program
Android sangat beruntung karena Android menyediakan
sebuah database yang secara default yang sudah ada di dalam library Android, yaitu SQLite. Untuk keperluan operasi database pada smartphone atau tablet Android, SQLite sangat memadai karena ukurannya yang kecil, cepat dan ringan dalam hal sumber daya. Karena sifatnya sebagai embedded database, SQLite tidak memiliki server namun bentuknya adalah library yang akan dipanggil saat program dijalankan. Seperti halnya database pada umumnya, SQLite memiliki objek-objek seperti table, view dan index. Perintah-perintah SQL-nya pun sangat mirip seperti yang biasa digunakan yaitu SELECT, INSERT, UPDATE, DELETE dan sebagainya. Informasi mengenai SQLite dapat dibaca secara lengkap pada situs resminya di: dari http://www.sqlite.org, yaitu:
Pada umumnya aplikasi dengan embedded database tidak menyertakan database yang sudah berbentuk pada saat aplikasi itu diinstal pada perangkat. Jadi yang diinstal hanya programnya, sedangkan databasenya tidak ada sama sekali. Database akan dibuat pada saat aplikasi itu dijalankan pertama kali, yaitu program akan memeriksa apakah database ditemukan. Jika database tidak ditemukan maka serangkaian perintah SQL akan menjalankan perintah
YHPI -> hal : 73
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. 2. 3. 4. 5.
Jalankan program Eclipse dan buat sebuah Android Project baru. Buat Project dengan nama DBProject1 Gunakan Android 2.3 Berikan nama yang sama untuk beberapa file yang lain 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 : 74
============================================================== import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import ndroid.database.sqlite.SQLiteOpenHelper; import android.util.Log;
5. Ketikkan skrip berikut ini di dalam class DBAdapter. Perhatikan class ini mengandung sebuah constructor DBAdapter(Context) untuk menginisiasi class, kemudian method open dan close masing-masing untuk membuka dan menutup database. public class DbAdapter { private static final String TAG="DbAdapter"; private static final String DATABASE_NAME="books"; private static final int DATABASE_VERSION=1; private static final String TABLE_CREATE = "create table titles (_id integer primary key autoincrement, " + "isbn text not null, title text not null, " + "publisher text not null)"; private static final String TABLE_DROP = "DROP TABLE IF EXISTS titles"; private final Context context; private DatabaseHelper dbHelper; private SQLiteDatabase db; public DbAdapter(Context ctx) { this.context = ctx; dbHelper = new DatabaseHelper(this.context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context ctx) { super(ctx, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_CREATE); @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL(TABLE_DROP); onCreate(db); } } public DbAdapter open() throws SQLException { db = dbHelper.getWritableDatabase(); return this; } public void close() { dbHelper.close(); } }
6. Sampai tahap ini jalankan aplikasi tersebut untuk menguji-coba dengan cara klik-kanan nama pada projek di dalam Package Explorer, kemudian pilih Run As Android
YHPI -> hal : 75
Application.
7. Tunggu sejenak sampai emulator Android ditampilkan dan menjalankan aplikasi ini. Sepintas Anda tidak akan melihat sesuatu yang istimewa pada tampilan aplikasi tersebut, kecuali sebuah pesan yang muncul pada emulator. 8. Perhatikan potongan-potongan program berikut:
MainActivity.java
DBAdapter.java
DBAdapter db = new DBAdapter(this);
public DBAdapter(Context ctx) { this.context = ctx; dbHelper = new DatabaseHelper this.context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context ctx) { super(ctx, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_CREATE); } private static final String TABLE_CREATE = "create table titles (_id integer primary key autoincrement, " + "isbn text not null, title text not null, " + "publisher text not null)";
Saat MainActivity.java membuat objek DBAdapter dengan di dalam baris “DBAdapter db = new DBAdapter(this);” maka rangkaian pemanggilan baris-baris program lainnya akan dijalankan seperti diperlihatkan pada gambar di atas, seperti pembuatan objek DatabaseHelper dan pemanggilan method super, onCreate dan terakhir yang berujung pada dijalankannya method execSQL untuk membuat sebuah table bernama titles. Tanpa disadari sebuah file database bernama books dengan sebuah table titles di dalamnya telah terbentuk. Lalu sekarang bagaimana memastikan database ini telah terbentuk? Satu- satunya cara tentunya harus menemukan bahwa file database itu memang ada, bukan? a. Jalankan menu Window -> Open Perpective -> DDMS atau cukup meng-klik icon DDMS, perpective pada sudut kanan-atas layar.
YHPI -> hal : 76
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 : 77
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 perintahperintah 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 : 78
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 : 79
SELAMAT BEKERJA, BELAJAR DAN SEMOGA ALLAH SELALU MELIMPAHKAN ILMU YANG BERMANFAAT DUNIA DAN AKHIRAT KEPADA KITA SEMUA AMIN 99X
YHPI -> hal : 80
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
YHPI -> hal : 81