Anda di halaman 1dari 75

Modul Mobile Programming

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
1

Modul Mobile Programming

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
2

Modul Mobile Programming

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
3

Modul Mobile Programming

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

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
5

Modul Mobile Programming

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.
6

Modul Mobile Programming

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

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
8

Modul Mobile Programming

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-bundlewindows-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:
9

Modul Mobile Programming

1. Install jdk yang ada dalam folder.

2. Tampilan Aplikasi Java Klik Next .

3. Merupakan directory dimana java terinstall-Klik Next

10

Modul Mobile Programming

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.
11

Modul Mobile Programming

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

12

Modul Mobile Programming

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.

13

Modul Mobile Programming

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.
14

Modul Mobile Programming

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.
15

Modul Mobile Programming

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.

16

Modul Mobile Programming

6. Kembali ke tampilan avd , kini sudah terdapat satu avd, pilih avd tersebut dan
start. Memerlukan banyak waktu untukmemebuka avd, tunggu proses hingga
selesai

17

Modul Mobile Programming

3. Dasar penggunaan ADT & Eclipse


Pada sebuah proyek memiliki banyak komponen yang bisa dilihat di
bagian Package Explorer. Berikut adalah penjelasan bebebrapa komponen:

18

Modul Mobile Programming

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.
19

Modul Mobile Programming

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

20

Modul Mobile Programming

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:

21

Modul Mobile Programming

22

Modul Mobile Programming

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

2.

1.

Variabel

Percabangan (Decision)

Perulangan (Looping)

Konsep Dasar Antarmuka pada Mobile Programming


-

Widget

Layout

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.
23

Modul Mobile Programming

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"
24

Modul Mobile Programming

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"
25

Modul Mobile Programming

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

26

Modul Mobile Programming

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

27

Modul Mobile Programming

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"

28

Modul Mobile Programming

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:
29

Modul Mobile Programming

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
30

Modul Mobile Programming

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;
mendeklarasikan

//untuk

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

31

Modul Mobile Programming

<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"

32

Modul Mobile Programming

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
import
import
import
import
import
import

android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.widget.Button;
android.widget.EditText;
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

33

Modul Mobile Programming

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


34

Modul Mobile Programming

<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/textVie
w1"
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/button
1"
android:layout_below="@+id/button1"android:layout_marginTop="55dp"
android:text=" " />
</RelativeLayout>

Pada Main Activity.java

import android.os.Bundle;
import android.app.Activity;

35

Modul Mobile Programming

import
import
import
import
import

android.view.Menu;
android.view.View;
android.widget.TextView;
android.widget.Button;
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.

36

Modul Mobile Programming

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"
/>

37

Modul Mobile Programming

<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/textVie
w1"
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>

import
import
import
import
import
import
import

Pada mainAvtivity .java

android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.widget.Button;
android.widget.EditText;
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);

38

Modul Mobile Programming

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

39

Modul Mobile Programming

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/textVie
w1"
android:layout_below="@+id/textView1"android:layout_marginLeft="30dp"
android:layout_marginTop="18dp"android:ems="10" >
<requestFocus />

40

Modul Mobile Programming

</EditText>
<Button
android:id="@+id/button1"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_alignLeft="@+id/textVie
w1"
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>

import
import
import
import
import
import
import

Pada main.java
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.widget.Button;
android.widget.TextView;
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) {

41

Modul Mobile Programming

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());

42

Modul Mobile Programming

int i = 1;
while (i <=nilai) {
if ( i % 2==1) {
cetak=cetak+"
"+Integer.toString(i);
}
i++;
hasil.setText(cetak);
}
}
});

Bila dijalankan akan seperti berikut

43

Modul Mobile Programming

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.
44

Modul Mobile Programming

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

BlankActivity

45

Next,

pada

layar

berikutnya

pilih

Modul Mobile Programming

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.

46

Modul Mobile Programming

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"

47

Modul Mobile Programming

android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp"
android:text="Back" />

11. Berikut adalah code dari MainActivity.


import
import
import
import
import
import

android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.content.Intent;
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
import
import
import
import
import

android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.content.Intent;
android.widget.Button;

public class Activity2 extends Activity {


@Override

48

Modul Mobile Programming

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.

49

Modul Mobile Programming

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 masingmasing 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
import
import
import
import
import
import

android.content.Context;
android.graphics.Canvas;
android.graphics.Color;
android.graphics.Paint;
android.graphics.RectF;
android.graphics.Paint.Style;
android.graphics.Typeface;

50

Modul Mobile Programming

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,kiriradius 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 ke4 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);

51

Modul Mobile Programming

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

52

Modul Mobile Programming

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.
import
import
import
import
import

Pada class ViewPath.java tambahakan code berikut.


android.content.Context;
android.graphics.Canvas;
android.graphics.Paint;
android.graphics.Path;
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

53

Modul Mobile Programming

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;

54

Modul Mobile Programming

import
import
import
import

android.graphics.Canvas;
android.graphics.Color;
android.graphics.Paint;
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) {

55

Modul Mobile Programming

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

56

Modul Mobile Programming

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
57

Modul Mobile Programming

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" />

58

Modul Mobile Programming

</RelativeLayout>

5.

Pada mainActivity.java berikut adalah codenya

import
import
import
import
import
import
import
import

android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.hardware.Sensor;
android.hardware.SensorEvent;
android.hardware.SensorEventListener;
android.hardware.SensorManager;
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){
}

59

Modul Mobile Programming

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:

60

Modul Mobile Programming

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"

61

Modul Mobile Programming

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
import
import
import

android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.hardware.Sensor; // memanggil funsi API sensor di android

62

Modul Mobile Programming

import
import
import
import

android.hardware.SensorEvent;
android.hardware.SensorEventListener;
android.hardware.SensorManager;
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){

63

Modul Mobile Programming

//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

64

Modul Mobile Programming

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.
65

Modul Mobile Programming

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">

66

Modul Mobile Programming

</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">

67

Modul Mobile Programming

</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;

68

Modul Mobile Programming

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
import
import
import
import
import
import
import
import
import

android.app.Activity;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.ArrayAdapter;
android.widget.Button;
android.widget.EditText;

69

Modul Mobile Programming

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();
}

70

Modul Mobile Programming

});
}
}

7. Tambahkan lagi class baru dengan nama AddActivity berikut adalah


kode nya:
import android.app.Activity;
import
import
import
import
import
import
import
import
import
import
import

android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.ArrayAdapter;
android.widget.Button;
android.widget.EditText;
android.widget.ListView;
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();

71

Modul Mobile Programming

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
import
import
import
import
import
import
import
import
import
import
import
import
import

android.app.Activity;
android.app.AlertDialog;
android.content.DialogInterface;
android.content.Intent;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.AdapterView;
android.widget.ArrayAdapter;
android.widget.ListView;
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();

72

Modul Mobile Programming

}
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;
}
}

73

Modul Mobile Programming

});
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.

74

Modul Mobile Programming

Klik menu pada device untuk tambah , maka akan muncul seperti berikut:

Kemudian klik simpan, dan database bertambah.

75

Anda mungkin juga menyukai