Upload
ester-melinda
View
191
Download
35
Embed Size (px)
DESCRIPTION
Modul Mobile Programming
Citation preview
Modul Mobile Programming
1
Modul 1
Pengenalan Mobile Programing
Tujuan :
1. Mahasiswa dapat memahami dan mengetahui lebih dalam tentang
mobile programing.
2. Mahasiswa dapat mengetahui sistem operasi apa saja yang
digunakan pada perangkat mobile.
3. Mahasiswa mampu memahami dan mengetahui bagaimana mobile
programing bekerja dengan komponen eksternal.
Tugas pendahuluan :
1. Apa yang dimaksud sistem operasi ?
2. Sistem operasi apa saja pada handphone?
DASAR TEORI
1. Sistem operasi mobile
Sistem operasi perangkat mobile (bahasa Inggris: mobile operating system,
disingkat Mobile OS) adalah suatu sistem operasi yang mengontrol sistem dan
kinerja pada barang elektronik yang mobile, mirip dengan fungsi Windows,Mac OS
X, dan Linux pada Desktop PC atau Laptop/Notebook tetapi lebih sederhana.
Biasanya penggunaannya hadir di ponsel pintar, PDA, tablet komputer, dan PMP.
Pada tahun 1993 dirilis smartphone yang pertama, “IBM Simon” yang
memiliki fitur layar sentuh, email serta PDA. Selang 3 tahun kemudian, tahun
1996 Palm Pilot 1000 memperkenalkan personal digital assistant (PDA) untuk
pertama kalinya dengan sistem operasi Palm OS. Masih dalam tahun yang sama PC
Handled untuk pertama kalinya diperkenalkan dengan sistemWindows CE. 4 tahun
Modul Mobile Programming
2
kemudian, tahun 2000 Symbian menjadi sistem operasi mobile modern pertama
pada smartphone yang diluncurkan oleh Ericsson R380.
Tahun 2002, Microsoft pertama Windows CE (Pocket PC) pada smartphone .
Masih pada tahun 2002, Blackberry merilis smartphone pertamanya. 3 tahun
kemudian, tahun 2005 Nokia memperkenalkan Maemo OS pada tablet internet
pertama Nokia N770. Lalu tahun 2007, Apple iPhone dengan iOS diperkenalkan
sebagai iPhone “mobile phone” dan “internet communicator”. Setahun kemudian,
tahun 2008 OHA yang dibentuk oleh Google merilis Android 1.0 dengan HTC
Dream (T-Mobile G1) sebagai ponselAndroid yang pertama.
Sistem operasi yang umum saat ini:
Android dari Google Inc. (open source, Apache)
Sistem operasi yang berbasis linux dan banyak digunakan oleh para
pembuat/pabrikan telepon genggam sekarang ini (Samsung, HTC,
Motorola, Sony Ericsson, LG, Huawei, dll). Android OS adalah sebuah
sistem operasi mobile yang diperuntukan bagi smartphone dan komputer
tablet. Android OS yang bebasis linux kernel ini dikembangkan oleh
Open Handset Alliance dibawah bendera Google. Pengembangkan
aplikasi-aplikasi Android dan menguploadnya di Android Market,
dengan tujuan aplikasi-aplikasi tersebut dapat didownload oleh para
pengguna smartphone android. Dalam empat tahun terakhir (rilis tahun
2008) Android berhasil merilis versi terbaru mulai dari : Cupcake, Donut,
Eclair, Froyo, Gingerbread, Honeycomb , Ice Cream Sandwich, jelly
beam dan yang terbaru adalah kitkat
BlackBerry OS dari RIM (closed source, proprietary)
BlackBerry menggunakan BlackBerry OS sebagai sistem operasinya.
BlackBerry OS, dikembangkan oleh Reseach in Motion (RIM), untuk
BlackBerry, perusahaan telekomunikasi asal Kanada ini. Diawal
kemunculannya BlackBerry booming dengan layanan push-email dan
Modul Mobile Programming
3
sebagai smartphone yang sukses dipasaran. Versi terakhir dari
BlackBerry OS adalah BlackBerry OS 7.
iOS dari Apple Inc. (closed source, proprietary)
iOS adalah sistem operasi mobile milik Apple yang dikembangkan dan
hanya diaplikasikan untuk perangkat Apple Inc seperti iPhone, iPod
Touch, iPad dan Apple TV. iOS memiliki lebih dari 500.000 aplikasi di
App Store dengan angka penjualan perangkat smartphone terbaik di
dunia pada tahun 2011 disusul Google Android dan Nokia Symbian. iOS
menjadi “leading” bagi sistem operasi mobile yang lain dengan
mengusung interface multitouch yang bisa digeser (slider), ditekan
(switch), dan tombol. Perangkat Apple masih menjadi nomor satu dalam
hal teknologi dan angka penjualan di dunia. Produk smartphone Apple
yang terbaru adalah iPhone 5 dan iOS7 adalah versi terbaru.
Symbian OS dari the Symbian Foundation (open public license)
Symbian terdiri dari beberapa mobile OS yang tidak saling mendukung
secara penuh; S60 3rd edition, S60 5th edition, S80, UIQ, MOAP, dan
Symbian^3/Anna. Symbian OS adalah sebuah Operating System yang
digunakan untuk operasi standar ponsel dengan perangkat smartphone.
Symbian OS menetapkan persyaratan bahwa sistem operasi ini hanya
dapat digunakan oleh ponsel dengan fitur 2.5G dan 3G.
Windows Phone dari Microsoft (closed source, proprietary)
Windows Mobile merupakan sistem operasi mobile yang dikembangkan
oleh Microsoft, produk Mobile Windows seperti Sagem myS-7, O2
Xphone dll. Sistem operasi yang berhasil dikembangkan dan
diaplikasikan mulai dari Pocket PC 2000 hingga Windows Mobile versi
6.5.5. Meskipun ada beberapa kelebihan seperti fitur GPS, dapat
menonton televisi, mobile blog, mobile database namun kelemahan dari
Modul Mobile Programming
4
Windows Mobile adalah minim developer independen. Karena pihak
Microsoft yang menerapkan peraturan bahwa Windows Mobile bersifat
tertutup. Hal ini tidak menguntungkan bagi pasar Windows Mobile
karena produk mereka yang minim developer berakibat pada minimnya
aplikasi-aplikasi yang dapat dikembangkan. Sehingga Windows Mobile
kalah bersaing dengan smartphone lain, terutama bagi vendor yang
menerapkan sistem terbuka bagi developer manapun yang bersedia
mengembangkan sebuah sistem operasi, seperti Andorid.
2. Arsitektur mobile programing
Google sebagai pencipta Android yang kemudian diasuh oleh Open
Handset Alliance mengibaratkan Android sebagai sebuah tumpukan software.
Setiap lapisan dari tumpukan ini menghimpun beberapa program yang
mendukung fungsi-fungsi spesifik dari sistem operasi. Tumpukan paling
bawah adalah kernel. Google menggunakan kernel Linux versi 2.6 untuk
membangun Android, yang mencakup memory management, security setting,
power management, dan beberapa driver hardware. Bertempat di level yang
sama dengan library adalah lapisan runtime yang mencakup serangkaian inti
library Java. Dengannya, para programmer dapat mengembangkan aplikasi
untuk Android menggunakan bahasa pemrograman Java. Lapisan selanjutnya
adalah application framework, yang mencakup program untuk mengatur
fungs i- fungsi dasar smartphone.
Modul Mobile Programming
5
Gambar 4. Arsitektur Android
1. Linux Kernel
Android dibangun di atas kernel Linux 2.6. Namun secara
keseluruhan android bukanlah linux, karena dalam android tidak terdapat
paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem
operasi terbuka yang handal dalam manajemen memori dan proses. Oleh
karenanya pada android hanya terdapat beberapa servis yang diperlukan
seperti keamanan, manajemen memori, manajemen proses, jaringan dan
driver. Kernel linux menyediakan driver layar, kamera, keypad, WiFi, Flash
Memory, audio, dan IPC (Interprocess Communication) untuk mengatur
aplikasi dan lubang keamanan.
2. Libraries
Android menggunakan beberapa paket pustaka yang terdapat pada
C/C++ dengan standar Berkeley Software Distribution (BSD) hanya setengah
Modul Mobile Programming
6
dari yang aslinya untuk tertanam pada kernel Linux. Beberapa pustaka
diantaranya:
• Media Library untuk memutar dan merekam berbagai macam format audio
dan video.
• Surface Manager untuk mengatur hak akses layer dari berbagai aplikasi.
• Graphic Library termasuk didalamnya SGL dan OpenGL, untuk tampilan
2D dan 3D.
• SQLite untuk mengatur relasi database yang digunakan pada aplikasi.
• SSl dan WebKit untuk browser dan keamanan internet.
3. Android Runtime
Pada android tertanam paket pustaka inti yang menyediakan sebagian besar
fungsi android. Inilah yang membedakan Android dibandingkan dengan sistem
operasi lain yang juga mengimplementasikan Linux. Android Runtime
merupakan mesin virtual yang membuat aplikasi android menjadi lebih tangguh
dengan paket pustaka yang telah ada. Dalam Android Runtime terdapat 2 bagian
utama, diantaranya:
4. Application Framework
Kerangka aplikasi menyediakan kelas-kelas yang dapat digunakan untuk
mengembangkan aplikasi android. Selain itu, juga menyediakan abstraksi generik
untuk mengakses perangkat, serta mengatur tampilan user interface dan sumber
daya aplikasi. Bagian terpenting dalam kerangka aplikasi android adalah sebagai
berikut [Hello Android 2nd Edition]:
1. Activity Manager, berfungsi untuk mengontrol siklus hidup aplikasi dan
menjaga keadaan ”Backstack“ untuk navigasi penggunaan.
2. Content Providers, berfungsi untuk merangkum data yang memungkinkan
digunakan oleh aplikasi lainnya, seperti daftar nama.
3. Resuource Manager, untuk mengatur sumber daya yang ada dalam program.
Serta menyediakan akses sumber daya diluar kode program, seperti karakter,
grafik, dan file layout.
Modul Mobile Programming
7
4. Location Manager, berfungsi untuk memberikan informasi detail mengenai
lokasi perangkat android berada.
5. Notification Manager, mencakup berbagai macam peringatan seperti, pesan
masuk, janji, dan lain sebagainya yang akan ditampilkan pada status bar.
5. Application Layer
Puncak dari diagram arsitektur android adalah lapisan aplikasi dan widget.
Lapisan aplikasi merupakan lapisan yang paling tampak pada pengguna ketika
menjalankan program. Pengguna hanya akan melihat program ketika digunakan
tanpa mengetahui proses yang terjadi dibalik lapisan aplikasi. Lapisan ini
berjalan dalam Android runtime dengan menggunakan kelas dan service yang
tersedia pada framework aplikasi. Lapisan aplikasi android sangat berbeda
dibandingkan dengan sistem operasi lainnya. Pada android semua aplikasi, baik
aplikasi inti (native) maupun aplikasi pihak ketiga berjalan diatas lapisan
aplikasi dengan menggunakan pustaka API (Application Programming Interface)
yang sama.
Modul Mobile Programming
8
Modul II
Dasar implementasi mobile programing
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami dasar-dasar mobile
programming
2. Mahasiswa mampu melakukan instalasi dan konfigurasi SDK
3. Mahasiswa mampu menggunakan ADT & Eclipse sebagai dasar
pengembangan Program berbasis android
Pokok bahasan :
1. Instalasi dan Konfigurasi SDK
2. Dasar Penggunaan ADT & Eclipse
3. XML (eXtensible Markup Language)
1. XML (eXtensible Markup Language)
XML kependekan dari eXtensible Markup Language, dikembangkan
mulai tahun 1996 dan mendapatkan pengakuan dari W3C pada bulan Februari
1998. Teknologi yang digunakan pada XML sebenarnya bukan teknologi baru,
tapi merupakan turunan dari SGML yang telah dikembangkan pada awal 80-an
dan telah banyak digunakan pada dokumentasi teknis proyek-proyek berskala
besar. Ketika HTML dikembangkan pada tahun 1990, para penggagas XML
mengadopsi bagian paling penting pada SGML dan dengan berpedoman pada
pengembangan HTML menghasilkan markup language yang tidak kalah
hebatnya dengan SGML.
Seperti halnya HTML, XML juga menggunakan elemen yang ditandai
dengan tag pembuka (diawali dengan ‘<’ dan diakhiri dengan ‘>’), tag
penutup(diawali dengan ‘</ ‘diakhiri ‘>’) dan atribut elemen(parameter yang
dinyatakan dalam tag pembuka misal <form name=”isidata”>). Hanya bedanya,
HTML medefinisikan dari awal tag dan atribut yang dipakai didalamnya,
sedangkan pada XML kita bisa menggunakan tag dan atribut sesuai kehendak
Modul Mobile Programming
9
kita. Pada eclipse XML biasanya digunaka untuk mengatur layout pada layar
gadget.
2. Instalasi dan Konfigurasi SDK
SDK merupakan kependekan dari Software Development Kit. Android SDK
adalah perangkat lunak yang digunakan dalam pengembangan aplikasi pada android.
Sebelum itu kita harus menginstall eclipse yaitu sebuah IDE (Intergratied
Development Environment) untuk mengembangan perangkat lunak dan dapat
dijalankan di semua platform. Berikut adalah sifat dari eclipse :
Multi –platform : Target sisitem operasi Eclipse adalah Microsoft
Windows,Linux,solaris,AIK,HP-UX dan Mac OS.
Multi-language : Eclipse dikembangkan dengan bahasa pemrograman java,
namun eclipse mendukung pengembangan aplikasi berbasis lainnya, seperti
C/C++,Cobol,Python,Perl,PHP.
Multi-role : Selain sebagai IDE untuk pengembangan aplikasi , eclipse
pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat
lunak,seperti dokumentasi,test perangkat lunak.
Eclipse selalu dilengkapi dengan JDT(Java Development Tools), yaitu sebuah
plugin yang memebuat Eclipse dapat dipakai untuk mengembangkan program
java,serta dilengkapi dengan PDE(Plugin Development Environment) yang bisa
dipaki untuk membuat plugin baru. Ada beberapa versi eclipse yang sudah release ,
pada modul praaktikum ini menggunakan versi dengan kode nama Juno. File bisa
didownload di http://www.mediafire.com/download/owef6j4gc35e3ig/adt-bundle-
windows-x86-20130717.zip .format file Zip. Pastikan PC anda sudah terinstal JDK
(Java development Kit). Setelah download selesai berikut adalah cara
mengkonfigurasi eclipse. Jika di komputer belum terinstal java, maka lakukan
intalasi terlebih dahulu. Beriku langkah:
Modul Mobile Programming
10
1. Install jdk yang ada dalam folder.
2. Tampilan Aplikasi Java Klik Next .
3. Merupakan directory dimana java terinstall-Klik Next
Modul Mobile Programming
11
4. Selanjutnya klik install dan tunggu proses selesai.
5. Setelah selesai mengintall,masuk ke Control Panel\All Control Panel
Items\System. Pilih Advenced System Setting, pilih Environment Variabel
6. Masukan directory instalasi java ke System variabel – Path-seperti gambar lalu ok.
Modul Mobile Programming
12
Java Development kit sudah terinstall kemudian mengkonfigurasi eclipse dan
kelengkapan dalam membuat project.
1. Pilih folder eclipse. Eclipse tidak memerlukan wizard instalasi . Dalam folder
eclipse akan ditemukan eclipse.exe, cukup pilih file tersebut
Modul Mobile Programming
13
2. Akan Tampil Workspace Launcher, merupakan dimana project akan tersimpan,
anda bisa langsung memilih Ok.
3. Berikut adalah tampilan awal aplikasi eclipse, anda bisa pilih New adaroid
Aplication.
4. Berikut tampilan awal dalam membuat project. Saya coba membuat Apliction
Name Latihan1. Pada kolom Package Name.example dihapus sehingga seperti
gambar, klik next.
Modul Mobile Programming
14
5. Dalam eclipse anda bisa membuat icon project yang akan dibuat .
6. Berikutnya adalah membuat activity
7. Dalam activity anda bisamerubah nama activitynya, jika sudah pilih finish.
Modul Mobile Programming
15
8. Proses pembuatan project sudah selesai berukut adalah area kerja dari eclipse.
Terdapat Hellow word yang secara ototmatis akan muncul
Project eclipse sudah selesai di buat namun belum bisa berjalan / running. Untuk cara
running program ada beberapa kelengkapan yang harus dipenuhi.
1. Instalasi SDK manager, pilih gambar logo SDK pada ruang kerja eclipse.
2. Akan tampil sdk yang sudah dan belum terinstal. Dalam hal ini saya sudah
menginstal package yang diperlukan untuk menjalankan project yang akan dibuat.
Modul Mobile Programming
16
Jika ingin melengkapi anda bisa langsung memilih Instal Package dan
memerlukan koneksi internet.
3. Membuat AVD untuk menjalankan project. Pilih icon pada gambar.
4. Berikut tampilan AVD , karena belum ada maka kita buat , pilih new
5. Berikan nama AVD1, pada device bisa pilih sesuai keinginan, lalu tekan ok.
Modul Mobile Programming
17
6. Kembali ke tampilan avd , kini sudah terdapat satu avd, pilih avd tersebut dan
start. Memerlukan banyak waktu untukmemebuka avd, tunggu proses hingga
selesai
Modul Mobile Programming
18
3. Dasar penggunaan ADT & Eclipse
Pada sebuah proyek memiliki banyak komponen yang bisa dilihat di
bagian Package Explorer. Berikut adalah penjelasan bebebrapa komponen:
Modul Mobile Programming
19
1. Folder src adalah folder terdapat nama proyek dan dibawahnya ada
file java untuk menuliskan source code yang menjelaskan logic dari
android anda.Di dalam folder ini ada file java yang vital dan berperan
penting yaitu MainActivity.java.
2. Folder gen adalah folder yang belum akan anda temukan jika baru
membuat aplikasi. Ketika script aplikasi itu anda compile, maka
folder gen akan mencul. Terdapat file-file java salah satunya R.java
yang fungsinya mengatur apapun yang terlihat dilayar gadget.
3. Folder android merupakan folder yang menunjukan versi android
proyek dan berisi sejumlah library agr program bisa berjalan di
sistem operasi android yang ditentukan.
4. Folder assets adalah folder yang digunakan untuk menyimpan aset –
aset yang mungkin anda butuhkan dalam aplikasi. Sebagai contoh
aset bisa berupa file XML atau database yang mungkin diperlukan
agar aplikasi bisa berfungsi dengan baik.
Modul Mobile Programming
20
5. Folder res juga disebut resources yang digunakan untuk menyimpan
file yang pasti digunakan oleh aplikasi. Contoh adalah gambar,foto
dan suara.dalam file ini ada beberapa folder untuk menyimpan file
yaitu:
Drawable berisi file – file bitmap yang mendukung aspek
grafis pada aplikasi.
Drawable-xhdpi sama dengan folder drawable, hanya saja
digunakan untuk menyimpan file foto dengan resolusi sangat
tinggi.XHDPI sendiri adalah extra high density screens yang
cocok digunakaan pada tablet berukuran besar.
Drawable –hdpi menyimpan file dengan kualitas yang tinggi
namun masih dibawah xhdpi.
Drawable –mdpi adalah medium density screens yang
menyimpan file foto dengan kualitas menengah.
Drawable – ldpi adalah low density screens yang menyimpan
file foto dengan kulaitas menengah.
Layout meenyimpan file XML untuk mengatur layout tata
letak didalam layar gadget.
Menu menyimpan file XML yang mengatur menu - menu di
dalam aplikasi.
Values menyimpan file XML yang mengandung nilai –nilai
sederhana seperti string,integer,dan warna. Di dalam folder ini
hanya terdapat file Array.xml, Color.xml, Dimens.xml,
String.xml, Styles.xml.
Layar kerja pada eclipse :
Res – layout- main_activity.xml –graphical layout
Modul Mobile Programming
21
Res – layout- main_activity.xml –graphical layout
Hasil dari project diatas setelah dirun. Cara running program klik kanan pada nama
project di package project – pilih RunAs Android Aplication- pilih avd yang sudah
dibuat AVD1:
Modul Mobile Programming
22
Modul Mobile Programming
23
Modul III
Implementasi mobile programing
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami dasar-dasar
mobile programming
2. Mahasiswa mampu memahami kode program dasar untuk
membangun program berbasis android.
Pokok bahasan :
1. Dasar coding menggunakan XML dan Membangun Code
Program
- Variabel
- Percabangan (Decision)
- Perulangan (Looping)
2. Konsep Dasar Antarmuka pada Mobile Programming
- Widget
- Layout
1. Konsep Dasar Antarmuka pada Mobile Programing
A. Widget
Komponen user interface pada eclipe ini disebut widget. Beberapa
widget dasar adalah: TextView, Button, Image, EditText, CheckBox,
RadioButton, ListView. Setiap widget memiliki property atau atribut
yang mengatur bagaimana widget itu ditampilkan, seperti tinggi dan
lebar widget. Property ini dapat diset melalui xml layout, property editor
atau melalui program. Beberapa widget memiliki beberapa event yang
ter-trigger berdasarkan aksi dari pengguna, misalnya event click pada
button. Berikut adalah contoh pengaplikasian widget. Untuk
menampilkan cukup drag icon ke layar kerja.
Modul Mobile Programming
24
1) TextView digunakan untuk menampilkan label teks. View ini
sudah kita gunakan Beberapa contoh property dari TextView
adalah android:textSize, android:textStyle, android:textColor.
Contoh:
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/belajar"
android:textColor="#00ff00"
android:textStyle="italic"/>
Bila dijalankan maka hasilnya
2) Button merupakan turunan dari TextView sehingga yang berlaku
di textView juga berlaku di button. Contoh :
Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Modul Mobile Programming
25
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="98dp"
android:text="@string/button" />
Maka Hasilnya
3) Image view adalah widget yang digunakan untuk menampilkan image. Image
yang akan ditampilkan dalam button diletakkan di direktori /res sesuai dengan
resolusinya. Jadi untuk hasil yang maksimal, untuk setiap image yang akan
anda gunakan harus disediakan 4 image untuk setiap resolusi (mdpi sampai
dengan xxhdpi). Hal ini untuk mencegah gambar yang digunakan terlihat
pecah atau terlalu kecil pada device dengan resolusi berbeda. Pada folder res
sudah terdapat image android. Sebagai contoh kita tampilkan gambar
tersebut. Drag image view kelayar kerja.
Contoh penerapan pada main.xml
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
Modul Mobile Programming
26
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/textView1"
android:layout_marginRight="14dp"
android:src="@drawable/ic_launcher" />
setelah dijalankan
4) EditText digunakan untuk menerima input dari pengguna. Pada palette telah
disediakan berbagai jenis EditText, silahkan dicoba satu persatu dan
perhatikan XML yang dihasilkan. sebagai contoh adlah sebagai berikut
EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/imageView1"
android:ems="10" >
setelah dijlankan anda dapat menginput texs di dalamnya
Modul Mobile Programming
27
5) RadioButton hanya satu pilihan yang boleh aktif (mutual exclusive) di dalam
satu group yang disebut radioGroup. Sedangkan User dapat memilih lebih
dari satu pilihan dengan checkbox. Pada palette, Checkbox ada di bagian
FormWidgets.
Contoh script
<CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/radioButton1" android:layout_alignBottom="@+id/radioButton1" android:layout_alignRight="@+id/imageView1" android:layout_marginRight="33dp" android:text="@string/cek1" /> <CheckBox android:id="@+id/checkBox2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/radioButton2" android:layout_alignBottom="@+id/radioButton2" android:layout_alignLeft="@+id/checkBox1" android:text="@string/cek2" /> <RadioButton android:id="@+id/radioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="22dp" android:text="@string/android" /> <RadioButton
Modul Mobile Programming
28
android:id="@+id/radioButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/radioButton1" android:text="@string/IoS" />
Dari keseluruhan hasilnya adalah
B. Layout
Kategori komponen pertama adalah layout. Komponen - komponen di
kategori ini menentukan struktur visual untuk antarmuka pengguna, seperti
Uluntuk activity atau widget. Mendeklarasikan layout di XML
jugamemeudahkan anda memvisualisaikan struktur dari antar muka. Berikut
adalah contoh dari Linier Layout Horizontal dengan menambah kan 3
button pada layar kerja.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin"
Modul Mobile Programming
29
android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 2" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 3" /> </LinearLayout>
Berikut hasilnya . untuk Linier Layout vertical hanya perlu mengganti android:orientation="vertical"
Relative layout memungkinkan anda menentukan letak komponen secara
relatif dengan komponen lainyya. Layout ini merupakan paling flexible yang
memungkinkan meletakan kompnen sesuai keinginan. Di relative layout biasa
menggunakan, above, below, left, right untuk mengatur isi komponen. Sebagai
contoh adalah memasukan 2 button.
Beberapa atribut yang mengatur posisi widget di relative layout adalah:
Modul Mobile Programming
30
Android:layout_above
Android:layout_below
Android:layout_toLeftOf
Android:layout_toRightOf.
Seperti contoh berikut :
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="37dp" android:layout_marginTop="50dp" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button1" android:layout_marginTop="22dp" android:layout_toRightOf="@+id/button1"
android:text="Button" />
Gambar 5.31 Tampilan relative layout
Untuk layout_width dan layout_height ada dua pilihan: match_parent (view
berusaha sebesar parent) dan wrap_content (view hanya berusaha sebesar content
yang berada di dalamnya). Sedangkan padding menyatakan jarak antara pinggir layar
Modul Mobile Programming
31
dengan komponen. Perhatikan penggunaan atribut layout_toRightOf yang
menyatakan bahwa button2 berada disebelah kanan button1.
Untuk mengatur posisi ada tambahan lima atribut: android: layout_alignTop,
android:layout_alignBottom,android:layout_alignLeft, android:layout_alignBaseline.
2. Dasar coding menggunakan XML dan Membangun Code Program
1. Variabel
Pada pemrograman eclipse pendeklarasian variabel sama seperti pada java.
Variabel pada java adalah satuan dasar penyimpanan dalam program. Cara
pendeklarasian variabel
tipe namaVariabel; //untuk
mendeklarasikan
sebuah variabel
tipe namaVariabel1,variabel2,... //untuk
mendeklarasikan
beberapa variabel
contoh :
int X;
NB : int merupakan tipedata dari variabel, X merupakan Nama variabel
Latihan program
1. Buatlah project baru dengan nama Variabel
2. Inputkan EditText, TextView, Dan Button. Berikut adalah main.xml
Modul Mobile Programming
32
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context=".MainActivity" > <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="20dp"android:layout_marginTop="36dp" android:text="INPUT 1" />
<EditText android:id="@+id/input1"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/textView1" android:layout_marginLeft="17dp" android:layout_toRightOf="@+id/textView1" android:ems="10" /> <TextView android:id="@+id/hasil" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/btnHitung" android:layout_below="@+id/input1" android:layout_marginTop="108dp" android:text="hasil" android:textStyle="bold"/> <EditText android:id="@+id/input2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/input1" android:layout_below="@+id/input1"
android:layout_marginTop="37dp" android:ems="10" > <requestFocus />
</EditText>
<TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/input2" android:layout_toLeftOf="@+id/input1" android:text="INPUT 2" /> <Button android:id="@+id/btnReset" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/input2"
Modul Mobile Programming
33
android:layout_below="@+id/hasil" android:layout_marginRight="16dp"
android:layout_marginTop="54dp" android:text="RESET" /> <Button android:id="@+id/btnHitung"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/btnReset" android:layout_alignBottom="@+id/btnReset" android:layout_alignLeft="@+id/textView2"android:text="HITUNG" />
</RelativeLayout>
3. Pada Activitymain.java ketikan coding berikut
import com.variabel.R.id;
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button;
import android.widget.EditText; import android.widget.TextView;
public class MainActivity extends Activity {
EditText input1, input2; TextView hasil; Button tampil,reset; int x, y, hitung; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // meng-import widget ke variabel, dengan menemukan id pada widget input1=(EditText) findViewById(R.id.input1); input2=(EditText) findViewById(R.id.input2); hasil=(TextView) findViewById(R.id.tampilHasil); tampil =(Button)findViewById(R.id.btnHitung); reset=(Button)findViewById(R.id.btnReset); // membuat button bekerja saat di klik tampil.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // mem-parse nilai integer ke string karena inputan berupa string
Modul Mobile Programming
34
x = Integer.parseInt(((EditText) input1).getText().toString()); y = Integer.parseInt(((EditText) input2).getText().toString()); hitung = x + y; hasil.setText("Hasil"+"="+hitung); } }); // mereset inputan dan hasilnya reset.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { input1.setText(""); input2.setText(""); hasil.setText(""); } }); }
Berikut hasilnya setelah dinput dan direset.
2. Percabangan
a) Percabangan if
Buatlah prject baru beri nama percabangan
Berikut adalah main xml
Modul Mobile Programming
35
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <EditText android:id="@+id/editText1"android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="102dp" android:ems="10" > <requestFocus /> </EditText> <TextView android:id="@+id/textView1"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/editText1" android:layout_alignParentLeft="true"android:layout_marginBottom="50dp" android:layout_marginLeft="16dp"android:text="Masukan Nilai" /> <Button android:id="@+id/button1"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/editText1"android:layout_marginTop="24dp" android:text="Grade" /> <TextView android:id="@+id/textView2"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_alignRight="@+id/button1" android:layout_below="@+id/button1"android:layout_marginTop="55dp" android:text=" " />
</RelativeLayout>
Pada Main Activity.java
import android.os.Bundle; import android.app.Activity;
Modul Mobile Programming
36
import android.view.Menu; import android.view.View; import android.widget.TextView; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { // membuat variabel TextView hasil; Button tampil; EditText input; int nilai, hasil1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hasil=(TextView)findViewById(R.id.textView2); tampil=(Button) findViewById(R.id.button1); input=(EditText) findViewById(R.id.editText1); // memeberi action pada button ketoka ditekan tampil.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // memeparse variabel nilai nilai = Integer.parseInt(((EditText) input).getText().toString()); if (nilai > 85) hasil.setText("Grade A !"); else if (nilai > 75 ) hasil.setText("Grade B !"); else if (nilai > 65 ) hasil.setText("Grade C !"); else if (nilai > 55 ) hasil.setText("Grade D !"); else{ hasil.setText("Grade E !");} } }); }; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
Modul Mobile Programming
37
getMenuInflater().inflate(R.menu.main, menu); return true; } }
Bila dijalankan akan seperti berikut
b) Percabangan switch case
Buatlah project baru, beri nama percabangan2
Berikut adalah main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1"android:layout_width="wrap_content" android:layout_height="wrap_content"android:text="masukan angka 1 -6" />
Modul Mobile Programming
38
<EditText android:id="@+id/editText1"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_below="@+id/textView1" android:layout_marginTop="22dp"android:layout_toRightOf="@+id/textView1" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/button1"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/editText1"android:text="HASIL" /> <TextView android:id="@+id/textView2"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_below="@+id/button1" android:layout_marginLeft="24dp"android:layout_marginTop="24dp" android:layout_toRightOf="@+id/button1"android:textSize="18pt" android:text="" /> </RelativeLayout>
Pada mainAvtivity .java
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { TextView hasil; EditText input; Button tampil; int nilai; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hasil=(TextView) findViewById(R.id.textView2); input=(EditText) findViewById(R.id.editText1); tampil=(Button) findViewById(R.id.button1);
Modul Mobile Programming
39
tampil.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) {
// mem-parse bilangan integer nilai = Integer.parseInt(((EditText) input).getText().toString()); switch (nilai) { case 1 : hasil.setText(" Hari Senin"); break; case 2 : hasil.setText("Hari Selasa"); break; case 3 : hasil.setText("Hari Rabu"); break; case 4 : hasil.setText(" Hari Kamis"); break; case 5 : hasil.setText("Hari Jumat"); break; case 6 : hasil.setText("Hari Sabtu"); break; default : hasil.setText("Hari Minggu "); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }
}
Berikut adalah hasilnya
Modul Mobile Programming
40
3. Perulangan
a) Perulangan menggunakan for
Buat project baru , beri nama perulangan
Berikut adalh main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1"android:layout_width="wrap_content" android:layout_height="wrap_content"android:text="INPUT NILAI AKHIR" /> <EditText android:id="@+id/editText1"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1"android:layout_marginLeft="30dp" android:layout_marginTop="18dp"android:ems="10" > <requestFocus />
Modul Mobile Programming
41
</EditText> <Button android:id="@+id/button1"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/editText1"android:layout_marginTop="20dp" android:text="HITUNG" /> <TextView android:id="@+id/textView2"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_below="@+id/button1" android:layout_marginTop="82dp"android:layout_toRightOf="@+id/button1" android:text=" " /> </RelativeLayout>
Pada main.java
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.EditText; public class MainActivity extends Activity { TextView hasil; EditText input; Button tampil; int nilai; String cetak; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hasil=(TextView) findViewById(R.id.textView2); input= (EditText) findViewById(R.id.editText1); tampil=(Button) findViewById(R.id.button1); tampil.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { cetak=""; nilai = Integer.parseInt(((EditText) input).getText().toString()); for (int i = 1; i <=nilai; i++) { if ( i % 2==0) {
Modul Mobile Programming
42
cetak=cetak+" "+Integer.toString(i); } hasil.setText(cetak); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu); return true; } }
Berikut adalah hasilnya
b) Perulangan while
Buat project baru , beri nama perulangn2. Pada perulangan while buat
project sama dengan perulangan for, kita cukup ganti syntak perulanganya.
Bila pada for hasil yang ditampilkan adalah genap, maka pada while kita
tampilkan bilangn ganjil. Berikut adalah syntak dari perulangan while.
Kitamulai dari action button
tampil.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { cetak=""; nilai = Integer.parseInt(((EditText) input).getText().toString());
Modul Mobile Programming
43
int i = 1; while (i <=nilai) { if ( i % 2==1) { cetak=cetak+" "+Integer.toString(i); } i++; hasil.setText(cetak); } }
});
Bila dijalankan akan seperti berikut
Modul Mobile Programming
44
Modul IV
Activity dan Intent
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami dasar-dasar mobile
programming
2. Mahasiswa mengetahui Activity dan Intent
3. Mahasiswa mampu membangun program menggunakan activity intent
Pokok bahasan :
1. Dasar teori
2. Latihan Project activity
1. Dasar Teori
Activity adalah jendela yang berisi user interface antara pengguna dengan
aplikasi. Pada saat layar interface terlihat oleh pengguna pada saat itulah activity
melakukan sebuah proses walaupun tersembunyi. Setiap proses yang dilakukan
activity dinamakan dengan siklus activity.
Pada dasarnya activity memiliki empat keadaan yaitu :
1. Active ,jika activity berada pada posisi atas stack
2. Pause , jika activitytidak dibutuhkan pada suatu saat tertentu, tetapi
activity itu masih ada, ketika activity baru yang ditangani oleh sistem
activity yang lama disebut pause dan masih ada di memory.
3. Stopped , jika activity tidak dipakai dan digantikan oleh activity lain,
activity yang di stop tidak akan pernah dipanggil lagi dan memory pun
tidak menyimpan ifo activity ini.
4. Restart , jika activity pause atau stop dalam waktu sasaat kemudian
dilakukan restart activity tersebut akan kembali ke keadan awal.
Modul Mobile Programming
45
Intent merupakan bagian activity yang fungsinya menjalankan aplikasi yang
berbeda agar dapat bekerja secara bersamaan. Intent adalah bagian dari activity yang
memeiliki konsep sebagai perangkat yang dapat mengaktivkan activity dari aplikasi
yang berbeda untuk dapat bekerja secara bersamaan seolah activity tersebut dimiliki
oleh satu aplikasi. Syntak intent
IntentNamaIntent = new Intent(getApplicationContext(),ClassTujuan.class);
StartActivity(NamaIntent);
Contoh penerapan activity menggunakan intent(switching activity)
1) Buat project baru beri nama LatihanActivity. Kemudian buat activity baru
dengan cara berikut. Klik new – other
5. Pilih Android Activity – Next, pada layar berikutnya pilih
BlankActivity
Modul Mobile Programming
46
6. Pada layar ini kita menentukan nama dari activity yang akan dibuat.
Beri nama Activity 2. Lalu finish.
7. Pada package explorer akan ada activity baru yang anda buat.
Modul Mobile Programming
47
8. Setelah membuat activity , sekarang kita akan buat code dari programnya
9. Buat layout main_activity seperti berikut. Tambahakan text view dan
button. Pada button id ganti dengan nama next.
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="screen 1"
android:textSize="18pt" />
<Button android:id="@+id/next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignRight="@+id/textView1"
android:layout_marginBottom="59dp" android:text="Next" />
10. Buat layout activity_activity2 seperti berikut. Ganti button id dengan
nama back.
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Screen 2" android:textSize="18pt" />
<Button android:id="@+id/back"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1"
Modul Mobile Programming
48
android:layout_alignParentBottom="true" android:layout_marginBottom="50dp" android:text="Back" />
11. Berikut adalah code dari MainActivity.
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.content.Intent; import android.widget.Button;
public class MainActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Button btnNext = (Button) findViewById(R.id.next);
btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) {
// berikut adalah deklasi intent Intent i= new Intent (getApplicationContext(),Activity2.class); //mengaktifkan intent untuk memanggil activity kedua
startActivity(i);
} }); }
Atau bisa dengan code
12. Berikut adalah code dari Activity2.
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.content.Intent; import android.widget.Button;
public class Activity2 extends Activity { @Override
Modul Mobile Programming
49
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activity2); Button btnBack=(Button)findViewById(R.id.back); btnBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) {
finish(); } }); }
Atau bisa dengan code
13. Kemudian jalankan program.
Modul Mobile Programming
50
Modul V
Grafik 2 Dimensi
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami dasar-dasar
menggunakan canvas pada eclipse android.
2. Mahasiswa mampu membuat tampilan grafik 2d pada eclipse android.
Pokok bahasan :
1. Menggambar grafik 2d di canvas pada eclipse
2. Menulis texs di canvas
Pada modul ini akan membahas penggunaan canvas pada eclipse.Canvas,
sesuai namanya adalah tempat untuk menggambar bentuk 2D. Dengan canvas, kita
dapat menggambar bentuk (lingkaran, kotak, garis, titik), menggambar text dan
melakukan operasi translate, scale, rotate. Paint digunakan untuk menyimpan style,
warna dan informasi lainnya yang dibutuhkan untuk menggambar.
Class Color digunakan untuk merepresentasikan warna. Android
menggunakan 4 angka untuk alpha, red, green dan blue (RGB) dengan masing-
masing rentang nilai 0 sd 255. Alpha digunakan menyatakan transparansi: alpha 0
artinya transparan 100% .
cat.setColor(Color.argb(75, 255, 0, 0)); //alphpa,reg,gree,blue
Berikut adalah penerapan:
1. Buat project baru Grafik2d.
2. Tambahakan class ViewGrafik.
3. Pada class ViewGrafik .java tambahakan code berikut
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Paint.Style; import android.graphics.Typeface;
Modul Mobile Programming
51
import android.view.View; public class ViewGrafik extends View { // RectF batas Layar (kiri,atas,bawah,kanan) private RectF kotak1 = new RectF(100,100,300,200);// kiri,atas,kanan,bawah
private RectF kotak2 = new RectF(200,25,300,75); private RectF kotak3 = new RectF(300,210,400,300); private RectF oval = new RectF(100,200,200,300);//oval akan mengikuti rect
private RectF oval2 = new RectF(100,320,200,400); Paint cat= new Paint(); protected void onDraw(Canvas c) { //gambar kotak cat.setColor(Color.argb(200, 247, 4, 4)); //alpha transparasi warna,red,green,blue
c.drawRect(kotak1,cat); //gambar lingkaran cat.setColor(Color.BLUE); c.drawCircle(60,60, 40, cat); //kiri, atas,radius //gambar kotak dengan ujung tumpul c.drawRoundRect(kotak2, 10, 10, cat); //memanggil lokasi kotak2,kiri‐radius oval, kanan radius oval
//ukuran sebuah lingkaran adlah 360 derajat // derajat dihitung dari derajat awal ditentukan ,lengkungan akan mengikuti rect oval
//paramater ke 4 jika true garis penutup melewati titik pusat //berikut dimulai dari 30 derajat, sepanjang 120 derajat c.drawArc(oval, 30, 120, true,cat); cat.setColor(Color.YELLOW); //jika parameter ke‐4 false maka garis akan melewati //ujung ke ujung tanpa harus ke titik pusat //menyebabkan efek spt stengah lingkaran c.drawArc(oval2, 180, 180, false,cat); //gambar garis cat.setColor(Color.RED); c.drawLine(50,400,400,400,cat); //kiri,atas,kanan,bawah //gambar kotak kosong cat.setColor(Color.CYAN); cat.setStyle(Style.STROKE); cat.setStrokeWidth(5); c.drawRect(kotak3,cat); //gambar titik secara acak jika program direfreshmaka posisi akan berubah
cat.setColor(Color.BLACK);
Modul Mobile Programming
52
for (int i=0;i<10;i++) { c.drawPoint( (float) Math.random()*500, (float)Math.random()*500, cat);
} //Menggunakan tulisan cat.setColor(Color.RED); //diisi dalam maupun outline cat.setStyle(Style.FILL_AND_STROKE); cat.setStrokeWidth(2); cat.setTextSize(35); c.drawText("Hello World", 10, 500, cat); //menggunakan font cat.setTypeface(Typeface.create(Typeface.SERIF,Typeface.BOLD_ITALIC));
c.drawText("font serif italic_bold", 10, 550, cat); } public ViewGrafik(Context context) { super(context); // TODO Auto-generated constructor stub } }
4. Pada mainActivity.java tambahkan code berikut untuk menampikan dari
class grapic view
Berikut adalah hasilnya
Modul Mobile Programming
53
Method drawText dapat digunakan untuk menambahkan teks di canvas, sedangkan Path
dan
drawTextOnPath dapat digunakan untuk menggambar teks yang mengikuti jalur tertentu.
Untuk jelasnya berikut adalah contohnya:
1. Buat project baru beri nama GrafikPath
2. Tambahakan class ViewPath
3. Pada class ViewPath.java tambahakan code berikut.
import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.view.View; public class ViewPath extends View{ Paint cat= new Paint(); private Path path = new Path(); protected void onDraw(Canvas c) { path.moveTo(10,85); path.lineTo(250,150); path.lineTo(350,300); cat.setTextSize(25); //0,0 artinya tidak ada jarak antara tulisan dgn path (offset) c.drawTextOnPath("penerapan path ", path, 0, 0, cat); // gambar tulisan melingkar //kosongkan path
Modul Mobile Programming
54
path.reset(); //x,y,radius dan berlawan jarumjam (CCW) path.addCircle(250, 250, 50, Path.Direction.CCW); c.drawTextOnPath("ini mengikuti lingkaran", path, 0, 0, cat); } public ViewPath(Context context) { super(context); // TODO Auto-generated constructor stub } }
4. Pada mainAvtivity tamabahakan
5. Bila dijalankan
Selenjutnya kita akan membuat app yang akan menggambar kotak ditempat
pengguna menyentuh layar. Buat project baru dan tambahkan class beri nama
GraphicsView.
Berikut adalah isi dari kelas tersebut import android.content.Context;
Modul Mobile Programming
55
import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; public class GrapicView extends View { public GrapicView(Context context) { super(context); } public float posx=-1; public float posy=-1; private int offset=25; private Paint cat = new Paint(); @Override protected void onDraw(Canvas c) { //clear screen cat.setColor(Color.BLACK); c.drawRect(0,0,c.getWidth(),c.getHeight(),cat); //gambar kotak diposisi yang disentuh if (posx!=-1) { cat.setColor(Color.YELLOW); c.drawRect(posx-offset,posy-offset,posy+offset,posx+offset,cat); } } } Pada main.java ketikan coding berikut import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class MainActivity extends Activity implements OnTouchListener { private GrapicView gv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gv=new GrapicView (this); gv.setOnTouchListener(this); setContentView(gv); } @Override public boolean onCreateOptionsMenu(Menu menu) {
Modul Mobile Programming
56
getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: //jari menyentuh layar //passing posisi ke graphicsview gv.posx = event.getX(); gv.posy = event.getY(); gv.invalidate(); //draw ulang break; case MotionEvent.ACTION_MOVE: //bergerak break; case MotionEvent.ACTION_UP: //diangkat break; case MotionEvent.ACTION_CANCEL: //batal break; default: break; } return true; } }
Bila dijalankan maka akan tampil seperti berikut
Modul Mobile Programming
57
MODUL VI
Sensor Proximity dan Accelometer
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami sensor yang ada
pada android.
2. Mahasiswa mampu membuat program penerapan sensorpada android
Pokok bahasan :
1. Dasar teori
2. Contoh program sensor android
1. Dasar teori
Sensor Proximity adalah sensor yang di gunakan untuk mendeteksi
keberadaan suatu objek tanpa kontak fisik. Manfaat dari proximity sensor
salah satunya untuk mematikan layar secara otomatis pada saat menelpon.
Pada smartphone android sensor ini apabila smartphone di dekatkan
pada telinga saat menelpon maka lampu layar dari smartphone akan mati
secara otomatis. Jadi sensor ini sangat penting untuk menghemat baterai saat
pemakaian telepon.
Sensor Accelerometer adalah merupakan salah satu fitur yang di
tanam pada smartphone android yang biasanya berfungsi untuk menentukan
Modul Mobile Programming
58
derajat kemiringan dari smartphone. Pada dasarnya fungsi sensor ini untuk
mengubah tampilan layar dari posisi landscape menjadi potrait ataupun
sebaliknya, sehingga tampilan menu dan aplikasi yang ada di smartphone
akan menyesuaikan posisi dari smartphone.salah satu contoh yang sering
menggunakan sensor ini adalah aplikasi game, misal game dalam balapan
mobil sehingga kita cukup memiringkan smartphone saat belok ke kanan atau
ke kiri.
2. Contoh penerapan sensor proxymity
1. Buatlah project baru , beri nama SensorProximity
2. Buat dua gambar seperti berikut
3. Tempatkan gambar tersebut di directory file project ,
SensorProximity/res/drawable-mdpi
4. Pada main.xml tambahkan imageview.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="157dp" android:src="@drawable/jauh" />
Modul Mobile Programming
59
</RelativeLayout>
5. Pada mainActivity.java berikut adalah codenya
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.widget.ImageView; public class MainActivity extends Activity implements
SensorEventListener { private SensorManager sensormanager; private Sensor sensor; ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
sensormanager=(SensorManager)getSystemService(SENSOR_SERVICE); sensor=sensormanager.getDefaultSensor(Sensor.TYPE_PROXIMITY); image=(ImageView)findViewById(R.id.imageView1); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } protected void onResume(){ super.onResume(); sensormanager.registerListener(this, sensor, sensormanager.SENSOR_DELAY_NORMAL); } protected void onPause(){ super.onPause(); sensormanager.unregisterListener(this); } public void onAccuracyChanged(Sensor sensor,int accuracy){ }
Modul Mobile Programming
60
public void onSensorChanged(SensorEvent event){ if(event.values[0]==0){ image.setImageResource(R.drawable.dekat); }else{ image.setImageResource(R.drawable.jauh); } } }
6. Untuk menjalankan project ini diperlukan akses ke hardware dari device,
maka dari itu menjalankan program sebaiknya langsung pada device.
Tampilan awal adalah jauh, jika sensor di tutup maka akantampil dekat.
3. Penerapan sensor accelometer
Berikut contoh accelometer yang menampilkan kordinat 3 sumbu axis accelometer,
yaitu sumbu X,Y,Z seperti gambar berikut:
Modul Mobile Programming
61
1. Buat project baru beri nama SensorAcelo
2. Pada main.xml buat seperti berikut.
<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="25dp" android:layout_marginTop="89dp" android:text="X Kordinat :" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_centerVertical="true" android:text="Z Kordinat :" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView3" android:layout_alignLeft="@+id/textView1" android:layout_marginBottom="36dp" android:text="Y Kordinat :" /> <TextView android:id="@+id/xkoor"
Modul Mobile Programming
62
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/textView1" android:layout_marginLeft="46dp" android:layout_toRightOf="@+id/textView1" android:text="TextView" /> <TextView android:id="@+id/ykoor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_alignLeft="@+id/xkoor" android:text="TextView" /> <TextView android:id="@+id/zkoor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/ykoor" android:layout_centerVertical="true" android:text="TextView" />
</RelativeLayout>
Gambar coding diatas
3. Berikutnya pada mainactivity.java
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.hardware.Sensor; // memanggil funsi API sensor di android
Modul Mobile Programming
63
import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.widget.TextView; public class MainActivity extends Activity implements SensorEventListener { private SensorManager sensorManager; TextView xCoor; // deklarasikan X axis objek TextView yCoor; // deklarasikan Y axis objek TextView zCoor; // deklarasikan Z axis objek @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xCoor=(TextView)findViewById(R.id.xkoor); // buat X axis objek yCoor=(TextView)findViewById(R.id.ykoor); // buat Y axis objek zCoor=(TextView)findViewById(R.id.zkoor); // buat Z axis objek sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
// menambahkan listener. Listener untuk class ini adalah accelerometer
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), // fungsi api yang dipakai untuk perubahan screen orientation SensorManager.SENSOR_DELAY_NORMAL); } @Override public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onAccuracyChanged(Sensor sensor,int accuracy){ } @Override public void onSensorChanged(SensorEvent event){ // cek jenis sensor if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
Modul Mobile Programming
64
//jika menggunakan tipe data float atau double hasil koordinat akan lebih spesifik.
int x=(int) event.values[0]; int y=(int) event.values[1]; int z=(int) event.values[2]; xCoor.setText("X: "+x); yCoor.setText("Y: "+y); zCoor.setText("Z: "+z); } } }
4. Jalankan program pada device,jika pada posisi rata maka hasilnya adalah
Modul Mobile Programming
65
MODUL VII
Data Base
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami database pada
android.
2. Mahasiswa mampu memahami kode program dasar untuk
membangun program berbasis android.
Pokok bahasan :
1. Database SqlLite.
2. Penerapan database pada android.
1. Dasar teori
Pada modul bagian ini kita akan membahas fasilitas untuk membuat database
pada android yang dikenal dengan SQLite. SQLite adalah salah satu software
embeddedyang sangat populer,kombinasi SQl interface dan penggunaan
memory yang sedikit.SQLite termasuk dalam android runtime ,sehingga
setiap versi dari android dapat membuat database dengan SQLite. Dalam
sisitem android memiliki beberapa teknik untuk menyimpan data. Teknik
yang umum digunakan adlah:
1. Shared Preferences yaitu menyimpan data beberapa nilai dalam
bentuk groups key yang dikenal deng preferences
2. Files yaitu menyimpan data dalam file , dapat berupa menulis ke
file atau membaca file.
3. SQLite Databases yaitu menyimpan data dalam bentuk database.
4. Content Providers yaitu menyimpan data dalam bentuk content
providers service.
Jika kita menggunakan Sqlite kitaharus mengcreate database ,
mendefenisikan tabel dan inisialisai data. Kelas SQLiteOpenHelper
menggunakan 3 metode dalam membuat dan membuka data yaitu:
1. Constuctor , menyediakan representasi versi dari database dan
skema databasse yang digunakan.
2. Oncreate,mnyediakan SQLiteDatabase object yang kita gunakan
dalam defenisi tabel dan inisialisai data.
Modul Mobile Programming
66
3. Onupgrade, menyediakan fasilitas konversi database dari database
versi lama ke database versi terbaru.
Pada database SQLite kita juga mengenal query data dan cursor. Query
berfungsi mengembalikan objeck cursor. Cursor adalah hasil dari query,yaitu
satu baris (record)ndari hasil query. Dengan cursor, Android bisa melakukan
buffer hasil query dengan efisien karena tidak perlu load data ke memory.
Cursor menyediakan method get*(), misalnya cursor.getCount(). Selain
method get ada beberapa method pada cursor yaitu:
1. MoveToFirst() : Memindahkan cursor ke baris pertama dari hasil
query.
2. MoveToNext() : Memindahkan cursor ke baris selanjutnya
3. MoveToPrevious() : Memindahkan cursor ke baris sebelumnya
4. MoveToPosition() : Memindahkan cursor ke baris yang ditentukan.
2. Penerapan database android
Contoh program ini terdiri dari dua bagian, yaitu program yang
menampilkan sebuah form pengisian data dimana pengguna bisa memasukkan
data kemudian menyimpannya di dalam database.
1. Buat project baru beri nama DatabaseSQLite.
2. Buat baru layout beri nama Add.xml seperti berikut:
Berikut adalah codenya (Perhatikan idnya) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:text="Nama" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <EditText android:text="" android:id="@+id/edAddNama" android:layout_width="100dp" android:layout_height="wrap_content"> </EditText> <TextView android:text="Nim" android:layout_width="wrap_content" android:layout_height="wrap_content">
Modul Mobile Programming
67
</TextView> <EditText android:text="" android:id="@+id/edAddNim" android:layout_width="100dp" android:layout_height="wrap_content"> </EditText> <TextView android:text="KotaAsal" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <EditText android:text="" android:id="@+id/edAddAsal" android:layout_width="100dp" android:layout_height="wrap_content"> </EditText> <Button android:text="Simpan" android:id="@+id/btnAddSimpan" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> </LinearLayout>
3. Buat baru layout xml, Beri nama edit berikut adalalah
codenya
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:text="Nama" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <EditText android:text="" android:id="@+id/edEditNama" android:layout_width="100dp" android:layout_height="wrap_content"> </EditText> <TextView android:text="Nim" android:layout_width="wrap_content" android:layout_height="wrap_content">
Modul Mobile Programming
68
</TextView> <EditText android:text="" android:id="@+id/edEditNim" android:layout_width="100dp" android:layout_height="wrap_content"> </EditText> <TextView android:text="KotaAsal" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <EditText android:text="" android:id="@+id/edEditAsal" android:layout_width="100dp" android:layout_height="wrap_content"> </EditText> <Button android:text="Simpan" android:id="@+id/btnEditSimpan" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> </LinearLayout>
4. Pada main.xml isikan kode berikut: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Database SQLite" /> <ListView android:id="@+id/ListView01" android:layout_width="match_parent" android:layout_height="wrap_content"></ListView> </LinearLayout>
5. Setelah selesai membuat layoutnya kini mengisi sode untuk
menjalankannya. Buat class baru beri nama SQLHelper.java isikan
code berikutt. Code ini membuat databse dan tabel.
import android.content.Context;
Modul Mobile Programming
69
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class SQLHelper extends SQLiteOpenHelper{ private static final String DATABASE_NAME = "db.db"; private static final int DATABASE_VERSION = 1; public SQLHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { String sql = "create table kota( id integer primary key autoincrement, nama text null, " +"nim text null, asal text null);"; Log.d("Data", "onCreate: " + sql); db.execSQL(sql); sql = "INSERT INTO kota (id, nama, nim, asal) VALUES (1, 'Yoga', '111', 'jkt');"; db.execSQL(sql); sql = "INSERT INTO kota (id, nama, nim, asal) VALUES (2, 'Sukarta', '333', 'dps');"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub }
}
6. Tambahkan class baru lagi dan beri nama EditActivity dan isikan
code berikut:
import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText;
Modul Mobile Programming
70
import android.widget.ListView; import android.widget.Toast; public class EditActivity extends Activity { protected Cursor cursor; SQLHelper dbHelper; Button btnEditSimpan; EditText edEditNama; EditText edEditNim; EditText edEditKota; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit); dbHelper = new SQLHelper(this); edEditNama = (EditText) findViewById(R.id.edEditNama); edEditNim = (EditText) findViewById(R.id.edEditNim); edEditKota = (EditText) findViewById(R.id.edEditAsal); SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM kota WHERE nama = '" + getIntent().getStringExtra("nama") + "'",null);
cursor.moveToFirst(); if (cursor.getCount()>0) { cursor.moveToPosition(0); edEditNama.setText(cursor.getString(1).toString()); edEditNim.setText(cursor.getString(2).toString()); edEditAsal.setText(cursor.getString(3).toString()); } btnEditSimpan = (Button) findViewById(R.id.btnEditSimpan); // daftarkan even onClick pada btnSimpan btnEditSimpan.setOnClickListener(new Button.OnClickListener() {
@Override public void onClick(View arg0) { // TODO Auto-generated method stub SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("update kota SET nama='" + edEditNama.getText().toString()+"', " +"nim='"+ edEditNim.getText().toString() +"', " +"asal='" + edEditAsal.getText().toString() + "' WHERE " + " nama = '" + getIntent().getStringExtra("nama") + "'"); Toast.makeText(getApplicationContext(), "Berhasil", Toast.LENGTH_LONG).show(); MainActivity.ma.RefreshList(); finish(); }
Modul Mobile Programming
71
}); } }
7. Tambahkan lagi class baru dengan nama AddActivity berikut adalah
kode nya:
import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; public class AddActivity extends Activity { protected Cursor cursor; SQLHelper dbHelper; Button btnAddSimpan; EditText edAddNama; EditText edAddNim; EditText edAddKota; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add); dbHelper = new SQLHelper(this); edAddNama = (EditText) findViewById(R.id.edAddNama); edAddNim = (EditText) findViewById(R.id.edAddNim); edAddKota = (EditText) findViewById(R.id.edAddAsal); btnAddSimpan = (Button) findViewById(R.id.btnAddSimpan); // daftarkan even onClick pada btnSimpan btnAddSimpan.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub SQLiteDatabase db = dbHelper.getWritableDatabase();
Modul Mobile Programming
72
db.execSQL("insert into kota(nama, nim, asal) values('" + edAddNama.getText().toString()+"','"+ edAddNim.getText().toString() +"','" + edAddAsal.getText().toString() + "')"); Toast.makeText(getApplicationContext(), "Berhasil", Toast.LENGTH_LONG).show(); MainActivity.ma.RefreshList(); finish(); } }); } }
8. Pada main activity.java ketikan kode berikut
import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends Activity { String[] daftar; ListView ListView01; Menu menu; protected Cursor cursor; SQLHelper dbHelper; public static MainActivity ma; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ma = this; dbHelper = new SQLHelper(this); RefreshList();
Modul Mobile Programming
73
} public void RefreshList() { SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM kota",null); daftar = new String[cursor.getCount()]; cursor.moveToFirst(); for (int cc=0; cc < cursor.getCount(); cc++) { cursor.moveToPosition(cc); daftar[cc] = cursor.getString(1).toString(); } ListView01 = (ListView)findViewById(R.id.ListView01); ListView01.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, daftar)); ListView01.setSelected(true); ListView01.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { final String selection = daftar[arg2]; final CharSequence[] dialogitem = {"Edit", "Delete"}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("Pilih ?"); builder.setItems(dialogitem, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { switch(item){ case 0 : Intent i = new Intent(getApplicationContext(), EditActivity.class); i.putExtra("nama", selection); startActivity(i); break; case 1 : SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("delete from kota where nama = '"+selection+"'"); RefreshList(); break; } }
Modul Mobile Programming
74
}); builder.create().show(); }}); ((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalidated(); } @Override public boolean onCreateOptionsMenu(Menu menu) { this.menu = menu; menu.add(0, 1, 0, "Tambah").setIcon(android.R.drawable.btn_plus); menu.add(0, 2, 0, "Refresh").setIcon(android.R.drawable.ic_menu_rotate); menu.add(0, 3, 0, "Exit").setIcon(android.R.drawable.ic_menu_close_clear_cancel); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: Intent i = new Intent(MainActivity.this, AddActivity.class); startActivity(i); return true; case 2: RefreshList(); return true; case 3: finish(); return true; } return false; } }
Setelah selesai jalankan programnya. Akan tampil data inputan pertama yang diabuat
yaitu nama yoga dan sukarta.
Modul Mobile Programming
75
Klik menu pada device untuk tambah , maka akan muncul seperti berikut:
Kemudian klik simpan, dan database bertambah.