75
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

Embed Size (px)

DESCRIPTION

Modul Mobile Programming

Citation preview

Page 1: Modul Mobile Programming

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

Page 2: Modul Mobile Programming

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

Page 3: Modul Mobile Programming

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

Page 4: Modul Mobile Programming

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.

Page 5: Modul Mobile Programming

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

Page 6: Modul Mobile Programming

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.

Page 7: Modul Mobile Programming

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.

Page 8: Modul Mobile Programming

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

Page 9: Modul Mobile Programming

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:

Page 10: Modul Mobile Programming

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

Page 11: Modul Mobile Programming

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.

Page 12: Modul Mobile Programming

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

Page 13: Modul Mobile Programming

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.

Page 14: Modul Mobile Programming

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.

Page 15: Modul Mobile Programming

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.

Page 16: Modul Mobile Programming

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.

Page 17: Modul Mobile Programming

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

Page 18: Modul Mobile Programming

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:

Page 19: Modul Mobile Programming

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.

Page 20: Modul Mobile Programming

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

Page 21: Modul Mobile Programming

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:

Page 22: Modul Mobile Programming

Modul Mobile Programming

22

Page 23: Modul Mobile Programming

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.

Page 24: Modul Mobile Programming

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"

Page 25: Modul Mobile Programming

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"

Page 26: Modul Mobile Programming

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

Page 27: Modul Mobile Programming

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

Page 28: Modul Mobile Programming

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"

Page 29: Modul Mobile Programming

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:

Page 30: Modul Mobile Programming

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

Page 31: Modul Mobile Programming

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

Page 32: Modul Mobile Programming

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"

Page 33: Modul Mobile Programming

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

Page 34: Modul Mobile Programming

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

Page 35: Modul Mobile Programming

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;

Page 36: Modul Mobile Programming

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.

Page 37: Modul Mobile Programming

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

Page 38: Modul Mobile Programming

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

Page 39: Modul Mobile Programming

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

Page 40: Modul Mobile Programming

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

Page 41: Modul Mobile Programming

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) {

Page 42: Modul Mobile Programming

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

Page 43: Modul Mobile Programming

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

Page 44: Modul Mobile Programming

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.

Page 45: Modul Mobile Programming

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

Page 46: Modul Mobile Programming

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.

Page 47: Modul Mobile Programming

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"

Page 48: Modul Mobile Programming

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

Page 49: Modul Mobile Programming

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.

Page 50: Modul Mobile Programming

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;

Page 51: Modul Mobile Programming

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

Page 52: Modul Mobile Programming

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

Page 53: Modul Mobile Programming

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

Page 54: Modul Mobile Programming

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;

Page 55: Modul Mobile Programming

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) {

Page 56: Modul Mobile Programming

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

Page 57: Modul Mobile Programming

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

Page 58: Modul Mobile Programming

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

Page 59: Modul Mobile Programming

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){ }

Page 60: Modul Mobile Programming

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:

Page 61: Modul Mobile Programming

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"

Page 62: Modul Mobile Programming

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

Page 63: Modul Mobile Programming

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){

Page 64: Modul Mobile Programming

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

Page 65: Modul Mobile Programming

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.

Page 66: Modul Mobile Programming

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

Page 67: Modul Mobile Programming

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

Page 68: Modul Mobile Programming

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;

Page 69: Modul Mobile Programming

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;

Page 70: Modul Mobile Programming

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

Page 71: Modul Mobile Programming

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

Page 72: Modul Mobile Programming

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

Page 73: Modul Mobile Programming

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

Page 74: Modul Mobile Programming

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.

Page 75: Modul Mobile Programming

Modul Mobile Programming

75

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

Kemudian klik simpan, dan database bertambah.