android book_by me

124
Complete Complete Complete Complete A Practical Reference Marlisa S | 7409040029 EEPIS-Electronic Engineering Polytechnic Institut of Surabaya

Upload: ferry-son

Post on 24-Oct-2014

282 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Android Book_by Me

CompleteCompleteCompleteComplete

A Practical Reference

Marlisa S | 7409040029

EEPIS-Electronic Engineering Polytechnic Institut of Surabaya

Page 2: Android Book_by Me

2

Kata Pengantar

Assalamualaikum Wr. Wb.

Segala puji syukur kami ucapkan atas ke hadirat Tuhan Yang

Maha Esa yang masih melimpahkan rahmat dan karunianya kepada

kita semua sehingga Modul Android ini dapat terselesaikan dengan

baik. Modul ini dimaksudkan dalam rangka pemenuhan penugasan

perkuliahan mata kuliah Pemrograman Lanjut-Android.

Kami mengucapkan terima kasih sebanyak-banyaknya

kepada pihak-pihak yang telah membantu kami selama proses

penyusunan modul ini berlangsung, sehingga modul ini dapat

terselesaikan dengan baik dan tepat waktu sesuai dengan waktu yang

ditentukan. Penulis menyadari bahwa masih banyak kekurangan dan

ketidaksempurnaan dari modul ini. Oleh karena itu sekiranya kami

mengharapkan kritik dan saran yang bersifat membangun demi

terwujudnya kesempurnaan dari modul ini.

Akhir kata dalam penyusunan modul ini kami sebagai

penulis berharap semoga modul ini nantinya dapat bermanfaat bagi

penulis sendiri maupun untuk pembaca pada umumnya.

Surabaya, 23 Juli 2011

Tim Penulis

Page 3: Android Book_by Me

3

Daftar isi

Kata Pengantar ........................................................................................... 2

Pendahuluan ............................................................................................... 4

User Interface Using XML Layouts .................................................... 14

Basic Widgets ........................................................................................... 23

SelectionWidgets .................................................................................... 30

Date,Time,Tabs ........................................................................................ 41

Drawer ........................................................................................................ 45

Hard & Soft Keyboard ........................................................................... 49

Menus .......................................................................................................... 63

Intents ......................................................................................................... 77

Preferences ............................................................................................... 86

File ................................................................................................................ 98

Fonts .......................................................................................................... 103

SQL Database .......................................................................................... 106

Location Based Services ..................................................................... 113

Project UAS .............................................................................................. 121

Page 4: Android Book_by Me

4

PENDAHULUAN

Android adalah sistem operasi untuk telepon seluler yang

berbasis Linux. Android menyediakan platform terbuka bagi para

pengembang buat menciptakan aplikasi mereka sendiri untuk

digunakan oleh bermacam peranti bergerak. Awalnya, Google Inc.

membeli Android Inc., pendatang baru yang membuat peranti lunak

untuk ponsel. Kemudian untuk mengembangkan Android, dibentuklah

Open Handset Alliance, konsorsium dari 34 perusahaan peranti keras,

peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel,

Motorola, Qualcomm, T-Mobile, dan Nvidia.

Pada saat perilisan perdana Android, 5

November 2007, Android bersama Open Handset Alliance

menyatakan mendukung pengembangan standar terbuka pada

perangkat seluler. Di lain pihak, Google merilis kode–kode Android di

bawah lisensi Apache, sebuah lisensi perangkat lunak dan standar

terbuka perangkat seluler. Di dunia ini terdapat dua jenis

distributor sistem operasi Android. Pertama yang mendapat

dukungan penuh dari Google atau Google Mail Services (GMS) dan

kedua adalah yang benar–benar bebas distribusinya tanpa dukungan

langsung Google atau dikenal sebagai Open Handset Distribution

(OHD).

Android versi 1.1

Pada 9 Maret 2009, Google merilis Android versi 1.1.

Android versi ini dilengkapi dengan pembaruan estetis pada aplikasi,

jam alarm, voice search (pencarian suara), pengiriman pesan dengan

Gmail, dan pemberitahuan email.

Android versi 1.5 (Cupcake)

Pada pertengahan Mei 2009, Google kembali merilis

telepon seluler dengan menggunakan Android dan SDK (Software

Development Kit) dengan versi 1.5 (Cupcake). Penambahan fitur

dalam seluler versi ini yakni kemampuan merekam dan menonton

video dengan modus kamera, mengunggah video ke Youtube dan

gambar ke Picasa langsung dari telepon, dukungan Bluetooth A2DP,

kemampuan terhubung secara otomatis ke headset Bluetooth,

animasi layar, dan keyboard pada layar yang dapat disesuaikan

dengan sistem.

Android versi 1.6 (Donut)

Donut (versi 1.6) dirilis pada September dengan

menampilkan proses pencarian yang lebih baik dibanding

Page 5: Android Book_by Me

5

sebelumnya, penggunaan baterai indikator dan kontrol applet VPN.

Fitur lainnya adalah galeri yang memungkinkan pengguna untuk

memilih foto yang akan dihapus; kamera, camcorder dan galeri yang

dintegrasikan; CDMA / EVDO, 802.1x, VPN, Gestures, dan Text-to-

speech engine; kemampuan dial kontak; teknologi text to change

speech (tidak tersedia pada semua ponsel; pengadaan resolusi VWGA.

Android versi 2.0/2.1 (Eclair)

3 Desember 2009 kembali diluncurkan ponsel Android

dengan versi 2.0/2.1 (Eclair), perubahan yang dilakukan adalah

pengoptimalan hardware, peningkatan Google Maps 3.1.2, perubahan

UI dengan browser baru dan dukungan HTML5, daftar kontak yang

baru, dukungan flash untuk kamera 3,2 MP, digital Zoom, dan

Bluetooth 2.1.

Aplikasi terkenal yang diubah ke dalam sistem operasi

Android adalah Shazam, Backgrounds, dan WeatherBug. Sistem

operasi Android dalam situs Internet juga dianggap penting untuk

menciptakan aplikasi Android asli, contohnya oleh MySpace dan

Facebook.

Android versi 2.2 (Froyo: Frozen Yoghurt)

Pada 20 Mei 2010, Android versi 2.2 (Froyo) diluncurkan.

Perubahan-perubahan umumnya terhadap versi-versi sebelumnya

antara lain dukungan Adobe Flash 10.1, kecepatan kinerja dan aplikasi

2 sampai 5 kali lebih cepat, intergrasi V8 JavaScript engine yang

dipakai Google Chrome yang mempercepat kemampuan rendering

pada browser, pemasangan aplikasi dalam SD Card, kemampuan WiFi

Hotspot portabel, dan kemampuan auto update dalam aplikasi

Android Market.

Android versi 2.3 (Gingerbread)

Pada 6 Desember 2010, Android versi 2.3 (Gingerbread)

diluncurkan. Perubahan-perubahan umum yang didapat dari Android

versi ini antara lain peningkatan kemampuan permainan (gaming),

peningkatan fungsi copy paste, layar antar muka (User Interface)

didesain ulang, dukungan format video VP8 dan WebM, efek audio

baru (reverb, equalization, headphone virtualization, dan bass boost),

dukungan kemampuan Near Field Communication (NFC), dan

dukungan jumlah kamera yang lebih dari satu.

Android versi 3.0 (Honeycomb)

Android Honeycomb dirancang khusus untuk tablet.

Android versi ini mendukung ukuran layar yang lebih besar. User

Page 6: Android Book_by Me

6

Interface pada Honeycomb juga berbeda karena sudah didesain untuk

tablet. Honeycomb juga mendukung multi prosesor dan juga

akselerasi perangkat keras (hardware) untuk grafis.

Android versi 3.1

Android 3.1 adalah merilis platform tambahan yang banyak

menyempurnakan fitur yang diperkenalkan pada Android 3.0. Ini

didasarkan pada UI tablet-dioptimalkan sama dan fitur yang

ditawarkan di Android 3.0 dan menambahkan beberapa kemampuan

baru bagi pengguna dan pengembang. Fitur-fitur yang ditambahkan

antara lain Open Accessory API untuk interaksi yang kaya dengan

peripherals, USB host API, Input from mice, joysticks, and gamepads,

Resizable Home screen widgets, MTP API for integrating with external

cameras, RTP API.

Gb 1.1 Tampilan home screen pada Android emulator

Download dan Instalasi

Sebelum memulai Android, sebaiknya komputer telah

terinstal Java Development Kit (JDK) sebagai pendukung.

Jika telah terinstal, yang perlu disiapkan adalah instalasi

eclipse-java-galileo-SR2-win32, ADT-0.9.9 serta android-sdk-windows.

Page 7: Android Book_by Me

7

Selesai mendownload, saatnya instalasi. Letakan hasil

download tersebut pada satu folder eclipse. Pastikan features dan

plugins pada ADT digandakan ke dalam masing – masing features dan

plugins pada folder eclipse.

Gb 1.2 Folder – folder android

Kemudian jalankan aplikasi eclipse, akan ada tampilan awal muncul

seperti ini

Page 8: Android Book_by Me

8

Sekali eclipse dijalankan terdapat default penyimpanan workspace

yang akan digunakan unuk menyimpan project – project. Kita dapat

menggantinya dengan menekan tombol browse.

Disarankan untuk melakukan pengecekan folder penyimpanan

project, supaya menghindari kesalahan folder yang dilacak. Jadi

kejelasan tempat penyimpanan project kita, akan sangat membantu

dalam pencarian. Setelah memastikan folder tersebut, tekan OK.

Dalam poin ini, download dan aplikasi eclipse telah selesai namun

sebelum memulai project baru, terdapat instalasi yang harus kita

lakukan, yaitu instalasi SDK.

Instalasi SDK

Setelah masuk ke dalam aplikasi eclipse, pilih Windows – Android SDK

and AVD Manager.

Terdapat tampilan seperti berikut, klik New untuk membuat AVD

(Android Virtual Devices).

Page 9: Android Book_by Me

9

Kemudian isikan nama, target tipe android yang akan digunakan saat

melaunch emulator. Ukuran AVD dengan standard 1024 MB. Setelah

ok, klik create AVD.

Setelah selesai, akan ada tampilan gambar berikut, kemudian klik start

untuk memulainya dan launch.

Page 10: Android Book_by Me

10

Membuat Project Android Baru

Buat project baru, klik File – New – Android Project , seperti pada

gambar

Page 11: Android Book_by Me

11

� Project name – nama dari project yang akan dibuat.

� Package name – nama package. Nama tersebut akan

digunakan dalam Java files. Ketentuannya menggunakan

nama domain company, seperti com.april dsb.

� Activity name – nama activity dari aplikasi android. In

Android, think of an activity as a screen containing some

actions, hence the name "activity"

� Application name – nama yang ditampilkan dalam User

Interface (UI) pada saat emulator android dijalankan.

Page 12: Android Book_by Me

12

� Open the HelloAndroid.java file, located inside HelloAndroid

> src > com.example.helloandroid)

package com.example.helloandroid;

import android.app.Activity;

import android.os.Bundle;

public class HelloAndroid extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Kumpulan

source

code

Code java

untuk

activity

pada UI

Generated

kode java

file untuk

manajeme

n resource

source file.

Kumpulan

resources

aplikasi

non code

Images

Layout

activity File

generated-

build file

yang

digunakan

oleh eclipse

dan ADT

plugins,

sehingga

tidak

dimodifikasi

pusat

pengaturan

aplikasi

yang dibuat.

Page 13: Android Book_by Me

13

}

}

� Bagian paling dasar dari aplikasi android adalah activity.

� Sebuah activity menampilkan UI dari aplikasi android,

berupa widgets seperti buttons, labels, text boxes, dll.

� Ketika activity dijalankan. sebuah onCreate() yang

merupakan event handler dipanggil.

� The activity loads its UI from the XML file named main.xml.

This is represented by the constant named R.layout.main

(generated automatically by the Eclipse as you save your

project).

� If you examine the main.xml file located in the res/layout

folder

Secara default, main.xml berisi scipt ini:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/re

s/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="@string/hello"

/>

</LinearLayout>

Page 14: Android Book_by Me

14

User Interface Using

XML Layouts

Page 15: Android Book_by Me

15

Tampilan User Interface (UI) dari aplikasi eclipse mengandung

beberapa widget seperti buttons, labels, textbox dan lain - lain.

Biasanya mendefinisikan UI menggunakan sebuah XML file (misalnya,

main.xml yang berada di lokasi res/layout folder).

contoh sederhana penggunaan file xml

Praktikum 1.1

Penggunaan widget button

>> Layout activity pada file main.xml, ubah seperti berikut ini:

<?xml version="1.0" encoding="utf-8"?>

<Button android:text=""

android:id="@+id/Button01"

android:layout_width="fill_par

ent"

android:layout_height="fill_pa

rent">

</Button>

# fill_parent merupakan tampilan layout

penuh. Jika width tampilan button maka

memanjang, jika height tampilan button

melebar. Kedua layout height dan weight

merupakan fill_parent sehingga menjadi

seperti gambar di samping #

source code java

package com.april;

import android.app.Activity;

import java.util.Date;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class cobapril extends Activity {

Button btn;

@Override

public void onCreate(Bundle savedInstanceState) {

Page 16: Android Book_by Me

16

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

btn= (Button)findViewById(R.id.Button01);

btn.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

updateTime();

}

});

}

private void updateTime(){

btn.setText(new Date().toString());

}

}

# Deklarasi variabel btn dari widget Button.

# EditText (atau textBox) widget merupakan extension dari TextView

yang mengijinkan get dan set text untuk update.

# findViewById merupakan sebuah fungsi untuk mencari resource

widget menggunakan Id pada layout main.xml.

# R.id.Button01 merupakan cara untuk mengakses resource yang

memiliki id Button01 pada Layout yang secara default dialiaskan

sebagai R.

# updateTime() memanggil fungsi tersebut dengan memanggil setText

untuk tanggal berupa string ke button dengan nama variabel btn.

Views dan Views Group

View merupakan representasi dari komponen User Interface. View

berada di area screen dan responsible dengan drawing serta event

handling.

Beberapa view dapat dikelompokan menjadi viewgroups. Contoh dari

viewgroups antara lain frame layout, linear layout dll. Sebuah

viewgroup berasal dari dasar class android.view.viewgroup.

Page 17: Android Book_by Me

17

Android supports the following ViewGroups:

„ LinearLayout

„ AbsoluteLayout

„ TableLayout

„ RelativeLayout

„ FrameLayout

„ ScrollView

Penggunaan Linear Layout

Linear Layout merupakan salah satu bentuk Layout pada Android.

Dengan menggunakan dasar Layout ini maka dasar aplikasi kita akan

bersifat statis/fixed sehingga tidak bisa digerakkan/scroll.

Komponen untuk menerima inputan, maka yang digunakan adalah

EditText. Sebenarnya ada cara lain namun untuk dasar kita akan

menggunakan EditText. Adapun script untuk membuatnya adalah

sebagai berikut:

Karena penempatan layout pada XML sifatnya tersusun dari

atas ke bawah, maka letakkan dua buah EditText pada Linear Layout

layer kedua baris pertama dan dua buah Button pada Linear Layout

layer kedua baris kedua. Linear Layout layer pertama merupakan

Layout pertama yang dipasang. Maka ubahlah code pada main.xml

seperti di bawah ini:

Page 18: Android Book_by Me

18

Berikutnya anda dapat menjalankan program xml sederhana tersebut

dengan hasil sebagai berikut:

Penggunaan Tabel Layout

Page 19: Android Book_by Me

19

Tabel Layout yang mengatur peletakan child views element dalam

baris dan kolom, namun tidak ditampilkan garis kolom dan barisnya.

Komponen TextView sendiri merupakan komponen yang akan

menampilkan text. Untuk contoh kali ini, teks telah diinputkan

langsnug pada main.xml. Berikut contoh untuk menghasilkan tulisan

pada baris pertama:

Untuk baris kedua, sebagai berikut:

# android:gravity untuk mengatur letak textview tersebut rata kanan.

Untuk padding besar kecilnya lapisan textview yang dibuat.

Pada script main.xml, susunan komponennya seperti ini:

<?xml version="1.0" encoding="utf-8"?>

<TableLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:stretchColumns="*">

<TableRow>

<TextView android:text= "open .."

android:padding= "3dip"/>

<TextView android:text= "ctrl-o"

android:gravity="right"

android:padding="3dip"/>

</TableRow>

<TableRow>

<TextView android:text= "save as .."

android:padding= "3dip"/>

<TextView android:text= "ctrl-shift-s"

Page 20: Android Book_by Me

20

android:gravity="right"

android:padding="3dip"/>

</TableRow>

</TableLayout>

Jika dijalankan pada android project, hasilnya sebagai berikut:

Penggunaan Relative Layout

Relative Layout merupakan peletakan layout child dengan posisi

relatif dari parent / siblings elements (penggunaan id @).

Susunan script main.xml dengan menggunakan relative layout,

sebagai berikut:

Page 21: Android Book_by Me

21

# Penggunaan relative layout dengan memanggil id (@nama_id) dari

widget yang akan diatur.

# EditText yang digunakan untuk meanpung teks yang diketik, diatur

letaknya dengan penggunaan

android:layout_below="@id/TextView01”. Berarti TextView dipanggil

untuk diletakan di atas EditText.

# id Button01 memiliki android:layout_alignParentRight="true”,

berarti Button01 yang berupa OK, memiliki aturan rata kanan dan

berada di bawah EditText, berdasarkan

android:layout_below="@id/EditText01".Diberi jarak 10px untuk

widget yang akan diletakan di sebelah kiri Button OK.

# id Button02 yang berupa Button Cancel, memanggil id Button01

untuk peletakan di sebelah kiri.

android:layout_toLeftOf="@id/Button01".

Hasil dari code main.xml adalah sebagai berikut

Penggunaan Absolut Layout

Absolute Layout memungkinkan kita untuk menentukan posisi X dan Y

dari childrennya.

Page 22: Android Book_by Me

22

# 120px, pengukurannya pada sumbu x seperti pada gambar, diukur

dari sebelah kiri.

# ukuran 32px berada pada sumbu y dengan pengukuran mulai dari

atas.

Page 23: Android Book_by Me

23

Basic Widgets

Page 24: Android Book_by Me

24

Penggunaan Single Button

Dalam bab ini, kita mulai menggunakan secara rinci script

MainActivity.java.

# android:hint="First Last Name" merupakan teks (petunjuk) yang

transparan pada EditTeks jika dimasukan suatu teks, hint tersebut

hilang.

source code java

Page 25: Android Book_by Me

25

# onClick merupakan suatu event yang terjadi setelah Button diklik.

# TextView dengan nama txtUserName melakukan pengesetan teks

melalui getText().toString(); dengan menampilkan teksnya.

# Jika string yang dimasukan di editText dicocokan pada textView

merupakan April Fatmasari, maka teks pada TextView diset menjadi

("OK, please wait .. ").

# Toast merupakan tampilan suatu pesan dengan cepat, berupa

"Bienvenido".

>> Jika di-run, maka tampilan pada emulatornya adalah

Penggunaan CheckBox

Checkbox merupakan widget salah satu tipe Button yang mempunyai

dua status yaitu checked dan unchecked yang memberi pilihan check

jika CheckBox tersebut dibuat group.

Page 26: Android Book_by Me

26

Contoh script main.xml yang menggunakan CheckBox, seperti berikut:

Pada source code java, perhatikan event handler checkBox

Page 27: Android Book_by Me

27

# Pada fungsi onClick, mengandung maksud, jika ChekBox01 berupa

ckCream dipilih, maka string yang ditampilkan adalah “ cream”.

# Jika CheckBox berupa Sugar dipilih, maka ditampung string berupa “

sugar”.

#Kemudian string tesebut ditampilkan dalam suatu pesan cepat

melaui Toast.

Hasil yang ditampilkan pada emulator

Penggunaan RadioButon dan CheckButton

User Interfae menggunakan dapat menggunakan

RadioButton dan CheckButton secara bersamaan. Untuk contoh di

bawah ini, digunakan kumpulan RadioButton yaitu RadioGrup dengan

2 buah CheckButton.

Penggunaan RadioGrup hanya bisa memilih satu saja

sedangkan jika tidak digrup dapat memilih lebih dari satu.

Page 28: Android Book_by Me

28

source code java

Page 29: Android Book_by Me

29

# Toast untuk menampilkan pesan singkat seperti pada gambar. Pesan

– pesan tersebut akan tampil jika memilih salah satu radio button

atau checkbutton.

Pemilihan

CheckButton

dan CheckBox

Page 30: Android Book_by Me

30

Selection

Widgets

Page 31: Android Book_by Me

31

RadioButton dan CheckButton cocok untuk digunakan suatu

kumpulan pilihan yang tidak banyak. Jika pilihan sangat banyak dapat

menggunakan widget berupa listbox, combobox, drop-down list dan

sebagainya.

Android memiliki framework data adapter yang

memberikan interface umum untuk pilihan baik berupa static array

maupun isi database.

Selection views – merupakan widget untuk menampilkan

daftar pilihan yang menggunakan adapter sebagai penyuplai pilihan.

Penggunaan Simple List

Page 32: Android Book_by Me

32

source code java

# setListAdapter digunakan untuk penggunaan semacam arraylist

yang berisi array items bertipe String.

# Pada fungsi onListItemClick untuk menampilkan pesan saat diklik

pada position array items.

Penggunaan Spinner

Page 33: Android Book_by Me

33

Penggunaan spinner sama dengan drop down selector. Fungsi spinner

dan ListView hampir sama namun ListView memiliki ruang yang lebih

kecil.

Page 34: Android Book_by Me

34

source code java

#ArrayAdapter pada spinner digunakan sebagai tampungan kalimat

string. Agar layout pilihan spinner dapat terlihat naik, turun

Page 35: Android Book_by Me

35

pengaturannya ada di dalam setDropDownViewResource,

pemanggilannya melalui spin.

#Pada gambar terlihat pilihan kita adalah silly dengan checkbutton

yang kita pilih berwarna hijau, penjelasan tersebut berdasarkan fungsi

onItemSelected. Tulisan yang muncul pada textview merah berdasar

salah satu posisi array yang kita pilih dalam array item, misal: “silly”.

Penggunaan GridView

GridView merupakan Viewgroup yang menampilkan item – item

dalam dua dimensi grid yang dapat discroll.

Page 36: Android Book_by Me

36

source code java

#GridView juga menampung string dalam bentuk array sehingga

menggunakan ArrayAdapter. Fungsi onItemClick merupakan pilihan

kata yang ditampilkan TextView seperti pada gambar.

Selection Widget 2

Penggunaan AutoCompleteTextView

Ketika user mengetikkan kata, teks berfungsi sebagai filter

prefix kemudian membandingkan input teks dengan daftar kata yang

paling mendekati. Daftar pilihan ditampilkan seperti Spinner.

Page 37: Android Book_by Me

37

source code java

Page 38: Android Book_by Me

38

Penggunaan Galeri Widget

Galeri widget ini dapat ditampilkan dengan menggeser ke

kanan maupun ke kiri

Page 39: Android Book_by Me

39

source code java

Page 40: Android Book_by Me

40

Page 41: Android Book_by Me

41

Date,

Time,

Tabs

Page 42: Android Book_by Me

42

Page 43: Android Book_by Me

43

source code java

Page 44: Android Book_by Me

44

# Widgets DatePicker dan TimePicker terdapat dalam android untuk

membantu user memasukan tanggal dan waktu.

#Widgets datePicker dan dialogs DatePickerDialog untuk mengatur

tanggal yang dipilih mulai dari tahun, bulan dan hari.

Page 45: Android Book_by Me

45

Drawer

Page 46: Android Book_by Me

46

Page 47: Android Book_by Me

47

Page 48: Android Book_by Me

48

Page 49: Android Book_by Me

49

Hard & Soft Keyboard

Page 50: Android Book_by Me

50

Page 51: Android Book_by Me

51

Page 52: Android Book_by Me

52

Page 53: Android Book_by Me

53

Page 54: Android Book_by Me

54

Page 55: Android Book_by Me

55

Page 56: Android Book_by Me

56

source code java

Page 57: Android Book_by Me

57

Project Pizza

Page 58: Android Book_by Me

58

XML layout <?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"

android:background = "#FFCC00"

>

<EditText

android:id="@+id/Customer"

android:hint="Enter your name"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:inputType="textCapWords"

android:nextFocusDown="@+id/Phone">

</EditText>

<EditText

android:id="@+id/Phone"

android:hint="Enter your phone number"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:inputType="phone">

</EditText>

<RadioGroup

android:id="@+id/Flavour"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

>

<RadioButton

android:id="@+id/nonflav"

android:text="None"

android:textColor = "#003300"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:checked="true">

</RadioButton>

<RadioButton

android:id="@+id/cheesflav"

android:text="Cheese"

android:textColor = "#003300"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</RadioButton>

<RadioButton

android:id="@+id/doubleflav"

android:text="Double Cheese"

android:textColor = "#003300"

Page 59: Android Book_by Me

59

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</RadioButton>

</RadioGroup>

<RadioGroup

android:id="@+id/Shape"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<RadioButton

android:id="@+id/round"

android:text="Round"

android:textColor = "#003300"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</RadioButton>

<RadioButton

android:id="@+id/square"

android:text="Square"

android:textColor = "#003300"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:checked="true">

</RadioButton>

</RadioGroup>

<CheckBox

android:id="@+id/Pepperoni"

android:text="Pepperoni"

android:textColor = "#003300"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</CheckBox>

<CheckBox

android:id="@+id/Mushroom"

android:text="Mushroom"

android:textColor = "#003300"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:checked="true">

</CheckBox>

<CheckBox

android:id="@+id/Veggie"

android:text="Veggies"

android:textColor = "#003300"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</CheckBox>

<CheckBox

android:id="@+id/Chicken"

Page 60: Android Book_by Me

60

android:text="Chicken"

android:textColor = "#003300"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</CheckBox>

<Button

android:id="@+id/OK"

android:text="SMS - Place your order"

android:textColor = "#CC0000"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</Button>

</LinearLayout>

Android Activity

package assignment.pizza;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.EditText;

import android.widget.RadioButton;

import android.widget.Toast;

public class pizzamania extends Activity {

/** Called when the activity is first created. */

EditText name;

EditText phone;

Button OK;

RadioButton none;

RadioButton cheese;

RadioButton doublecheese;

RadioButton round;

RadioButton square;

CheckBox pepper;

CheckBox mush;

CheckBox veggie;

CheckBox chick;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

name = (EditText)findViewById(R.id.Customer);

Page 61: Android Book_by Me

61

phone = (EditText)findViewById(R.id.Phone);

OK = (Button)findViewById(R.id.OK);

none = (RadioButton)findViewById(R.id.nonflav);

cheese = (RadioButton)findViewById(R.id.cheesflav);

doublecheese = (RadioButton)findViewById(R.id.doubleflav);

round = (RadioButton)findViewById(R.id.round);

square = (RadioButton)findViewById(R.id.square);

pepper = (CheckBox)findViewById(R.id.Pepperoni);

mush = (CheckBox)findViewById(R.id.Mushroom);

veggie = (CheckBox)findViewById(R.id.Veggie);

chick = (CheckBox)findViewById(R.id.Chicken);

OK.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

String info = "";

if (name.length()== 0 || phone.length()==0){

Toast.makeText(getApplicationContext(), "Name and Phone are require",

Toast.LENGTH_SHORT).show();

}

else{

info = info + "Customer\t : " + name.getText().toString()+ ", " +

phone.getText().toString();

info += "\nFlavour\t\t :";

if(cheese.isChecked()){

info += " Cheese";

}

else if(doublecheese.isChecked()){

info += " Double Cheese";

}

else{

info += " Original";

}

info += "\nShape\t\t\t :";

if(square.isChecked()){

info += " Square";

}

else{

info += " Round";

}

info += "\nTopping\t\t : \n";

if(pepper.isChecked()== true || mush.isChecked()== true ||

veggie.isChecked() == true || chick.isChecked()== true){

if (pepper.isChecked()){

info += " - Pepperoni\n";

}

Page 62: Android Book_by Me

62

if (mush.isChecked()){

info += " - Mushroom\n";

}

if (veggie.isChecked()){

info += " - Veggies\n";

}

if (chick.isChecked()){

info += " - Chicken\n";

}

Toast.makeText(getApplicationContext(), info, Toast.LENGTH_SHORT).show();

}

else {

Toast.makeText(getApplicationContext(), "Choose Topping First!",

Toast.LENGTH_SHORT).show();

}

}

}

});

}

}

Page 63: Android Book_by Me

63

Menus

Page 64: Android Book_by Me

64

Menus 1

Menu mengekspos fungsi aplikasi tanpa mengkonsumsi ruang

'banyak' tampilan

Android menyediakan dua jenis menu dikenal sebagai:

Pilihan menu dan menu konteks.

1. Menu pilihan dipicu dengan menekan tombol Menu pada

perangkat keras, sementara

2. Menu konteks adalah dibesarkan oleh tekan dan tahan pada widget

yang berhubungan dengan menu.

Context Menu

XML <LinearLayout android:id="@+id/LinearLayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical">

<EditText android:layout_height="wrap_content"

android:id="@+id/etMessage1"

android:text="Hello world"

android:layout_width="fill_parent"

android:layout_margin="5dp" />

<EditText android:layout_height="wrap_content"

android:id="@+id/etMessage2"

Page 65: Android Book_by Me

65

android:text="Hello mundo"

android:layout_width="fill_parent"

android:layout_margin="5dp" />

<TextView android:id="@+id/TextView01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Press the Menu key, or \nLong-press text-boxes"

android:layout_gravity="center"/>

</LinearLayout>

Listing Program

import android.app.Activity;

import android.os.Bundle;

import android.text.Html;

import android.text.Spanned;

import android.view.ContextMenu;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ContextMenu.ContextMenuInfo;

import android.widget.EditText;

public class Demo extends Activity {

EditText etMessage1;

EditText etMessage2;

Integer[] arrayPointSize= {10, 20, 30, 40, 50};

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

etMessage1= (EditText)findViewById(R.id.etMessage1);

etMessage2= (EditText)findViewById(R.id.etMessage2);

registerForContextMenu(etMessage1);

registerForContextMenu(etMessage2);

}

public boolean onCreateOptionsMenu(Menu menu) {

populateMyFirstMenu(menu);

return super.onCreateOptionsMenu(menu);

}

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo)

{

super.onCreateContextMenu(menu, v, menuInfo);

if(v.getId() == etMessage1.getId())

populateMyFirstMenu(menu);

if(v.getId() == etMessage2.getId())

{

Page 66: Android Book_by Me

66

populateMySecondMenu(menu);

}

}

private void populateMyFirstMenu(Menu menu)

{

int groupId= 0;

int order= 0;

menu.add(groupId, 1, 1, "10 points");

menu.add(groupId, 2, 2, "20 points");

menu.add(groupId, 3, 3, "30 points");

menu.add(groupId, 4, 4, "40 points");

menu.add(groupId, 5, 5, "50 points");

menu.add(groupId, 6, 8, "Red text");

menu.add(groupId, 7, 7, "Green Text");

menu.add(groupId, 8, 6, "Blue text");

}

private void populateMySecondMenu(Menu menu)

{

int groupId= 0; int order= 0;

menu.add(groupId, 9, 1, "Bold");

menu.add(groupId, 10, 2, "Italic");

menu.add(groupId, 11, 3, "Normal");

}

public boolean onContextItemSelected(MenuItem item)

{

return(applyMenuOption(item));

}

@Override

public boolean onOptionsItemSelected(MenuItem item)

{

return(applyMenuOption(item));

}

private boolean applyMenuOption(MenuItem item){

int menuItemId= item.getItemId(); // 1, 2, 3, ...11

String strMsg2 = etMessage2.getText().toString();

if(menuItemId<= 5)

{

int newPointSize=

arrayPointSize[menuItemId-1];

etMessage1.setTextSize(newPointSize);

etMessage2.setTextSize(newPointSize);

}

else

{

// either change color on text1 or

style on text2

if(menuItemId== 6)

etMessage1.setTextColor(0xffff0000); // red

Page 67: Android Book_by Me

67

else if(menuItemId== 7)

etMessage1.setTextColor(0xff00ff00); // green

else if(menuItemId== 8)

etMessage1.setTextColor(0xff0000ff); // blue

else if(menuItemId== 9)

etMessage2.setText(beautify(strMsg2, "BOLD")); //bold

else if(menuItemId== 10)

etMessage2.setText(beautify(strMsg2, "ITALIC")); //italic

else if(menuItemId== 11)

etMessage2.setText(beautify(strMsg2, "NORMAL")); //normal

}

return false;

}

private Spanned beautify (String originalText, String selectedStyle)

{

Spanned answer = null;

if(selectedStyle.equals("BOLD"))

answer = Html.fromHtml("<b>"+ originalText+"</b");

else if(selectedStyle.equals("ITALIC"))

answer = Html.fromHtml("<i>"+ originalText+"</i>");

else if(selectedStyle.equals("NORMAL"))

answer = Html.fromHtml("<normal>"+

originalText+"</normal");

return answer;

} //beautify

}

Output

Page 68: Android Book_by Me

68

Option/Context Menu

XML <LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<EditText

android:id="@+id/msg1"

android:text="Hello World"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_margin = "5dp">

</EditText>

<EditText

android:id="@+id/msg2"

android:text="Hola Mundo"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_margin = "5dp">

</EditText>

<TextView

android:text="Press the MENU key, or \nHold text-

boxes"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center" />

</LinearLayout>

Listing Program

import android.app.Activity;

import android.os.Bundle;

import android.text.Html;

import android.text.Spanned;

import android.view.ContextMenu;

import android.view.Menu;

import android.view.MenuItem;

import android.view.SubMenu;

import android.view.View;

import android.view.ContextMenu.ContextMenuInfo;

import android.widget.EditText;

public class Opt2 extends Activity {

EditText msg1;

EditText msg2;

Integer[] arrayPointSize = {10, 20, 30, 40, 50};

@Override

Page 69: Android Book_by Me

69

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

msg1 = (EditText)findViewById(R.id.msg1);

msg2 = (EditText)findViewById(R.id.msg2);

registerForContextMenu(msg1);

registerForContextMenu(msg2);

}

@Override

public boolean onCreateOptionsMenu(Menu menu){

populateMyFirstMenu(menu);

return super.onCreateOptionsMenu(menu);

}

@Override

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo){

super.onCreateContextMenu(menu, v, menuInfo);

if (v.getId() == msg1.getId())

populateMyFirstMenu(menu);

if (v.getId() == msg2.getId())

populateMySecondMenu(menu);

}

private void populateMyFirstMenu(Menu menu) {

int groupId = 0;

MenuItem item1 = menu.add(groupId, 1, 1, "10 points");

MenuItem item2 = menu.add(groupId, 2, 2, "20 points");

MenuItem item3 = menu.add(groupId, 3, 3, "30 points");

MenuItem item4 = menu.add(groupId, 4, 4, "40 points");

MenuItem item6 = menu.add(groupId, 6, 8, "Red text");

MenuItem item7 = menu.add(groupId, 7, 7, "Green

text");

MenuItem item8 = menu.add(groupId, 8, 6, "Blue text");

item1.setIcon(R.drawable.icon);

item2.setIcon(R.drawable.icon);

item3.setIcon(R.drawable.icon);

item4.setIcon(R.drawable.icon);

item1.setShortcut('1', '1');

item2.setShortcut('2', '2');

item3.setShortcut('3', '3');

item4.setShortcut('4', '4');

int smGroupId = 0;

Page 70: Android Book_by Me

70

int smItemId = 5;

int smOrder = 5;

SubMenu mySubMenu =

menu.addSubMenu(smGroupId, smItemId, smOrder, "Sub-Menu");

mySubMenu.setHeaderIcon(R.drawable.icon);

mySubMenu.setIcon(R.drawable.icon);

MenuItem sub1 = mySubMenu.add(smGroupId, 5, 1,

"Sub Menu 5-1");

MenuItem sub2 = mySubMenu.add(smGroupId, 5, 2,

"Sub Menu 5-2");

MenuItem sub3 = mySubMenu.add(smGroupId, 5, 3,

"Sub Menu 5-3");

}

private void populateMySecondMenu(ContextMenu menu) {

int groupId = 0;

menu.add(groupId, 9, 1, "Bold");

menu.add(groupId, 10, 2, "Italic");

menu.add(groupId, 11, 3, "Normal");

}

@Override

public boolean onContextItemSelected(MenuItem item){

return(applyMenuOption(item));

}

@Override

public boolean onOptionsItemSelected(MenuItem item){

return(applyMenuOption(item));

}

private boolean applyMenuOption(MenuItem item) {

int menuItemId= item.getItemId();

String strMsg2 = msg2.getText().toString();

if(menuItemId <= 5) {

int newPointSize=

arrayPointSize[menuItemId-1];

msg1.setTextSize(newPointSize);

msg2.setTextSize(newPointSize);

}

else if (menuItemId == 5)

msg1.setText("You have selected :\n" +

item.getTitle()+ " Id : " + menuItemId);

else if(menuItemId== 6)

msg1.setTextColor(0xffff0000);

else if(menuItemId== 7)

msg1.setTextColor(0xff00ff00);

else if(menuItemId== 8)

Page 71: Android Book_by Me

71

msg1.setTextColor(0xff0000ff);

else if(menuItemId== 9)

msg2.setText(beautify(strMsg2, "BOLD"));

else if(menuItemId== 10)

msg2.setText(beautify(strMsg2, "ITALIC"));

else if(menuItemId== 11)

msg2.setText(beautify(strMsg2, "NORMAL"));

return false;

}

private Spanned beautify(String originalText, String selectedStyle) {

Spanned answer = null;

if(selectedStyle.equals("BOLD"))

answer = Html.fromHtml("<b>" + originalText

+ "</b");

else if(selectedStyle.equals("ITALIC"))

answer = Html.fromHtml("<i>" + originalText

+ "</i>");

else if(selectedStyle.equals("NORMAL"))

answer = Html.fromHtml("<normal>" +

originalText + "</normal");

return answer;

Output

Menus 2

Another App Using Menus that include Icons & Text

XML

<TableLayout

android:id="@+id/myTableLayout"

android:layout_width="fill_parent"

Page 72: Android Book_by Me

72

android:layout_height="fill_parent"

android:orientation="vertical"

android:stretchColumns ="1,2,3"

xmlns:android="http://schemas.android.com/apk/res/android"

>

<TableRow

android:id="@+id/tableRow1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

>

<TextView

android:id="@+id/text0"

android:layout_width="fill_parent"

android:layout_height="100px"

android:background="#ff006666"

android:text="TextView"

android:layout_span="3"

>

</TextView>

</TableRow>

<TableRow

android:id="@+id/tableRow2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

>

<RelativeLayout

android:id="@+id/myRelativeLayout"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

<EditText

android:id="@+id/text1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:hint="Type something..."

android:textSize="18sp"

android:layout_alignTop="@+id/myRadioGroup"

android:layout_alignBottom="@+id/myRadioGroup"

android:layout_toRightOf="@+id/myRadioGroup"

android:padding="10px"

android:paddingLeft="20px">

</EditText>

<RadioGroup

android:id="@+id/myRadioGroup"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

Page 73: Android Book_by Me

73

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true" >

<RadioButton

android:id="@+id/radio1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Radio1">

</RadioButton>

<RadioButton

android:id="@+id/radio2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Radio2"dx>

</RadioButton>

</RadioGroup>

</RelativeLayout>

</TableRow>

<TableRow

android:id="@+id/tableRow3"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#ffff9900"

android:orientation="vertical"

android:layout_weight="2"

>

<ListView

android:id="@+id/list1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:isScrollContainer="true">

</ListView>

</TableRow>

</TableLayout>

Listing Program

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

import android.view.ContextMenu;

import android.view.Menu;

import android.view.MenuItem;

import android.view.SubMenu;

import android.view.View;

import android.view.ContextMenu.ContextMenuInfo;

import android.widget.ArrayAdapter;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.RadioButton;

import android.widget.TextView;

Page 74: Android Book_by Me

74

public class Opt3 extends Activity

{

TextView text0;

EditText text1;

RadioButton radio1;

RadioButton radio2;

ListView list1;

ArrayList<String> arrOptions;

ArrayAdapter<String> adaOptions;

final int PICK1 = Menu.FIRST;

final int PICK2 = Menu.FIRST + 1;

final int PICK3 = Menu.FIRST + 2;

final int PICK4 = Menu.FIRST + 3;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

text0 = (TextView)findViewById(R.id.text0);

text1 = (EditText)findViewById(R.id.text1);

radio1 =(RadioButton)findViewById(R.id.radio1);

radio2 =(RadioButton)findViewById(R.id.radio2);

list1 = (ListView)findViewById(R.id.list1);

arrOptions = new ArrayList<String>();

adaOptions = new ArrayAdapter<String>(

this, R.layout.main1, arrOptions);

list1.setAdapter(adaOptions);

registerForContextMenu(list1);

registerForContextMenu(text1);

}

@Override

public boolean onCreateOptionsMenu(Menu menu)

{

super.onCreateOptionsMenu(menu);

MenuItem item1 = menu.add(0, PICK1, Menu.NONE, "Option

UNO");

MenuItem item2 = menu.add(0, PICK2, Menu.NONE, "Option

DOS");

MenuItem item3 = menu.add(0, PICK3, Menu.NONE, "Option

TRES");

MenuItem item4 = menu.add(1, PICK4, Menu.NONE, "Option

CUATRO");

//set icons

item1.setIcon(R.drawable.icon);

item2.setIcon(R.drawable.icon);

item3.setIcon(R.drawable.icon);

item4.setIcon(R.drawable.icon);

//shortcuts using device’s keyboard-keypad

Page 75: Android Book_by Me

75

item1.setShortcut('1', 'u');

item2.setShortcut('2', 'd');

item3.setShortcut('3', 't');

item4.setShortcut('4', 'c');

SubMenu mySubMenu5 = menu.addSubMenu(0, 0, Menu.NONE,

"Sub-Menu-CINCO");

mySubMenu5.setHeaderIcon(R.drawable.icon);

mySubMenu5.setIcon(R.drawable.icon);

MenuItem sub51 = mySubMenu5.add(0,0,Menu.NONE,"Sub

Menu 5-1");

MenuItem sub52 = mySubMenu5.add(0,0,Menu.NONE,"Sub

Menu 5-2");

MenuItem sub53 = mySubMenu5.add(0,0,Menu.NONE,"Sub

Menu 5-3");

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item)

{

try

{

super.onOptionsItemSelected(item);

int itemID = item.getItemId();

//title to display is taken from current menu item

String msg= item.getTitle().toString();

//add selection to historical array and show in listview

arrOptions.add(msg);

adaOptions.notifyDataSetChanged();

//values in the green TextView box include:

msg += "\n" + "radio1: " +

Boolean.toString(radio1.isChecked());

msg += "\n" + "radio2: " +

Boolean.toString(radio2.isChecked());

msg += "\n" + "Text: " + text1.getText();

text0.setText("Menu: " + msg);

}

catch (Exception e)

{

text0.setText(e.getMessage());

}

return false;

}

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo)

{

super.onCreateContextMenu(menu, v, menuInfo);

//add a couple of options to the context menu

menu.setHeaderTitle("Select Special Action");

Page 76: Android Book_by Me

76

menu.add(0, PICK1, Menu.NONE, "Option-1 UNO special");

menu.add(0, PICK2, Menu.NONE, "Option-2 DOS special");

}

@Override

public boolean onContextItemSelected(MenuItem item)

{

super.onContextItemSelected(item);

String msg = item.getTitle().toString();

text0.setText(msg);

arrOptions.add(msg);

adaOptions.notifyDataSetChanged();

return false;

}

}

Output

Page 77: Android Book_by Me

77

Intents

Page 78: Android Book_by Me

78

Intents

Android Activity

Sebuah aplikasi Android dapat mencakup sejumlah activity :

• Suatu activity menggunakan metode setContentView (...) untuk

mengekspos (biasanya) UI tunggal dari mana sejumlah tindakan bisa

dilakukan.

• Kegiatan yang independen satu sama lain, namun mereka biasanya

bekerja sama pertukaran data dan tindakan.

• Biasanya, salah satu kegiatan yang ditetapkan sebagai yang pertama

(utama) yang harus disajikan kepada pengguna saat aplikasi

diluncurkan.

• Pindah dari satu aktivitas ke aktivitas lainnya dilakukan dengan

menanyakan kegiatan saat ini untuk menjalankan suatu niat.

• Kegiatan berinteraksi satu sama lain dalam mode asynchronous.

Argumen utama dari sebuah Intent adalah:

1. Action built-in untuk dilakukan, seperti ACTION_VIEW,

ACTION_EDIT, ACTION_MAIN, ... atau yang dibuat pengguna-aktivitas

2. Data data primer untuk beroperasi pada, seperti nomor telepon

untuk dipanggil (dinyatakan sebagai Uri a).

Page 79: Android Book_by Me

79

Page 80: Android Book_by Me

80

Complete Example

XML

<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:id="@+id/label1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#ff0000cc"

android:text="This is Activity1"

android:textStyle="bold"

android:textSize="20sp" />

<EditText

android:id="@+id/text1"

android:layout_width="fill_parent"

android:layout_height="54px"

android:text="tel:555-1234"

Page 81: Android Book_by Me

81

android:textSize="18sp" />

<Button

android:id="@+id/btnCallActivity2"

android:layout_width="149px"

android:layout_height="wrap_content"

android:text="Make Phone Call"

android:textStyle="bold" />

</LinearLayout>

Listing Program

import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

public class intents1 extends Activity {

TextView label1;

EditText text1;

Button btnCallActivity2;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

try {

setContentView(R.layout.main);

label1 = (TextView)findViewById(R.id.label1);

text1 = (EditText)findViewById(R.id.text1);

btnCallActivity2 = (Button)findViewById(R.id.btnCallActivity2);

btnCallActivity2.setOnClickListener(new ClickHandler());

}

catch (Exception e) {

Toast.makeText(getBaseContext(), e.getMessage(),

Toast.LENGTH_LONG).show();

}

}

private class ClickHandler implements OnClickListener {

public void onClick(View v) {

try {

String myData = text1.getText().toString();

Intent myActivity2 = new

Intent(Intent.ACTION_DIAL,

Uri.parse(myData));

Page 82: Android Book_by Me

82

startActivity(myActivity2);

}

catch (Exception e) {

Toast.makeText(getBaseContext(),

e.getMessage(),

Toast.LENGTH_LONG).show();

}

}

}

}

Output

Intents 2

Android Intents

Kegiatan biasanya menyajikan antarmuka pengguna tunggal visual

dari mana nomor dari

tindakan dapat dilakukan.

Pindah dari satu aktivitas ke aktivitas lainnya dilakukan dengan

memiliki aktivitas saat memulai yang berikutnya melalui maksud

disebut.

Android Bundles

Bahasa pemrograman yang paling mendukung gagasan metode

panggilan-IPC dengan argumen yang mengalir birectionally dari

pemanggil dengan metode dipanggil.

Dalam android isu aktivitas memanggil doa untuk aktivitas lain

Page 83: Android Book_by Me

83

menggunakan objek Intent.

Khususnya di Android, penelepon tidak berhenti menunggu kegiatan

dipanggil untuk kembali hasil. Sebaliknya sebuah listeningmethod

[onActivityResult (...)] harus digunakan.

Android Bundles

Biasanya ekspresi IPC daftar parameter aktual, dan daftar parameter

formal digunakan untuk ditunjuk tanda tangan dari argumen

particpating, dan data ini disuplai.

Alih-alih menggunakan daftar parameter formal yang tradisional /

aktual, Android bergantung pada konsep Intents untuk mendirikan

Inter-processcommunication. Maksud opsional membawa daftar

nama yang sebenarnya atau bundel untuk pertukaran data.

Page 84: Android Book_by Me

84

source code java

Page 85: Android Book_by Me

85

Page 86: Android Book_by Me

86

Preferences

Page 87: Android Book_by Me

87

Preferences

Android menyediakan empat mekanisme berikut untuk menyimpan

dan mengambil data:

1. preferensi,

2. file,

3. Database, dan

4. Jaringan.

Preferences merupakan mekanisme ringan Android untuk

menyimpan dan mengambil pasangan kunci-nilai tipe data primitif

(Peta juga disebut, dan Array asosiatif.

Biasanya digunakan untuk menyimpan informasi negara dan data

bersama antara kegiatan beberapa aplikasi.

Pada setiap value> entri <key kuncinya adalah string dan nilai harus

menjadi tipe data primitif.

Preferensi mirip dengan Kumpulan namun mereka yang gigih

sementara Bundel tidak.

Using Preferences API calls

Anda memiliki pilihan untuk memilih API tiga Preferensi suatu:

1. getPreferences () dari dalam Kegiatan Anda, untuk mengakses

preferensi aktivitas spesifik

2. getSharedPreferences () dari dalam Aktivitas Anda untuk

mengakses aplikasi-tingkat preferensi

3. getDefaultSharedPreferences (), pada PreferencesManager, untuk

mendapatkan preferensi bersama yang bekerja di konser dengan

kerangka preferensi keseluruhan Android

Page 88: Android Book_by Me

88

Page 89: Android Book_by Me

89

source code java

Page 90: Android Book_by Me

90

Preferences 2

Page 91: Android Book_by Me

91

Page 92: Android Book_by Me

92

Example 2

XML

<LinearLayout android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/LinLayout1Vertical"

android:orientation="vertical" >

<LinearLayout android:layout_height="wrap_content"

android:id="@+id/LinLayout2Horizontal"

android:layout_width="fill_parent" >

<Button android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/btnPrefSimple"

android:text="Pref Simple UI" />

<Button android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/btnPrefFancy"

android:text="Pref Fancy UI" />

</LinearLayout>

<TextView android:layout_height="wrap_content"

android:layout_width="fill_parent"

android:background="#ff006666"

android:id="@+id/txtCaption1"

android:text="This is some sample text"/>

</LinearLayout>

Listing Program

import android.app.Activity;

import android.os.Bundle;

Page 93: Android Book_by Me

93

import java.util.Date;

import android.content.SharedPreferences;

import android.graphics.Color;

import android.graphics.Typeface;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

public class tujuhduapreferen extends Activity implements OnClickListener

{

Button btnSimplePref;

Button btnFancyPref;

TextView txtCaption1;

Boolean fancyPrefChosen = false;

View myLayout1Vertical;

final int mode = Activity.MODE_PRIVATE;

final String MYPREFS = "MyPreferences_001";

SharedPreferences mySharedPreferences;

SharedPreferences.Editor myEditor;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

myLayout1Vertical = (View)findViewById(R.id.LinLayout1Vertical);

txtCaption1 = (TextView) findViewById(R.id.txtCaption1);

txtCaption1.setText("This is a sample line \n“"

+ "suggesting the way the UI looks \n"

+ "after you choose your preference");

mySharedPreferences = getSharedPreferences(MYPREFS, 0);

myEditor = mySharedPreferences.edit();

if (mySharedPreferences != null

&& mySharedPreferences.contains("backColor"))

{

applySavedPreferences();

}

else

{

Toast.makeText(getApplicationContext(),

"No Preferences found", 1).show();

}

btnSimplePref = (Button) findViewById(R.id.btnPrefSimple);

btnSimplePref.setOnClickListener(this);

btnFancyPref = (Button) findViewById(R.id.btnPrefFancy);

btnFancyPref.setOnClickListener(this);

}

@Override

Page 94: Android Book_by Me

94

public void onClick(View v)

{

myEditor.clear();

if (v.getId() == btnSimplePref.getId())

{

myEditor.putInt("backColor", Color.BLACK);// black background

myEditor.putInt("textSize", 12); // humble small font

}

else

{

myEditor.putInt("backColor", Color.BLUE); // fancy blue

myEditor.putInt("textSize", 20); // fancy big

myEditor.putString("textStyle", "bold"); // fancy bold

myEditor.putInt("layoutColor", Color.GREEN);//fancy gree

}

myEditor.commit();

applySavedPreferences();

}

protected void onPause()

{

myEditor.putString("DateLastExecution", new Date().toLocaleString());

myEditor.commit();

super.onPause();

}

public void applySavedPreferences() {

// extract the <key/value> pairs, use default param for missing data

int backColor = mySharedPreferences.getInt("backColor",Color.BLACK);

int textSize = mySharedPreferences.getInt("textSize", 12);

String texStyle = mySharedPreferences.getString("textStyle", "normal");

int layoutColor = mySharedPreferences.getInt("layoutColor",Color.DKGRAY);

String msg = "color " + backColor + "\n"+ "size " + textSize + "\n"

+ "style " + textStyle;Toast.makeText(getApplicationContext(), msg, 1).show();

txtCaption1.setBackgroundColor(backColor);txtCaption1.setTextSize(textSize);i

f (textStyle.compareTo("normal")==0)

{

txtCaption1.setTypeface(Typeface.SERIF,Typeface.NORMAL);

}

else

{

txtCaption1.setTypeface(Typeface.SERIF,Typeface.BOLD);

}

myLayout1Vertical.setBackgroundColor(layoutColor);}}

Output

Page 95: Android Book_by Me

95

Example 3

XML

<LinearLayout android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/LinLayout1"

android:background="#ff0000ff"

android:orientation="vertical" >

<TextView android:layout_height="wrap_content"

android:layout_width="fill_parent"

android:id="@+id/captionBox"

android:text="SharePreferences Container: Customer Data"

android:layout_margin="5px"

android:textStyle="bold">

</TextView>

<EditText android:layout_height="wrap_content"

android:id="@+id/txtPref"

android:layout_width="fill_parent"

android:layout_margin="10px">

</EditText>

</LinearLayout>

Listing Program

import java.sql.Date;

import android.app.Activity;

import android.os.Bundle;

import android.content.SharedPreferences;

import android.widget.*;

public class PreferentDemoPreferent2 extends Activity {

private static final String MYPREFS = "MySharedPreferences001";

String custName = "n.a.";

int custAge = 0;

float custCredit = 0;

Page 96: Android Book_by Me

96

long custNumber = 0;

String custDateLastCall;

TextView captionBox;

EditText txtPref;

final int mode = Activity.MODE_PRIVATE;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

txtPref = (EditText)findViewById(R.id.txtPref);

captionBox = (TextView) findViewById(R.id.captionBox);

captionBox.setText("SharedPreference Container: \n\n"+

"we are working on customer Macarena \n" +

"fake an interruption, press 'Back Button' \n" +

"re-execute the application.");

int mode = Activity.MODE_PRIVATE;

SharedPreferences mySharedPreferences =

getSharedPreferences(MYPREFS, mode);

if (mySharedPreferences != null &&

mySharedPreferences.contains("custName"))

{

showSavedPreferences();

}

else

{

txtPref.setText("nada");

}

}

@Override

protected void onPause() {

savePreferences();

super.onPause();

}

protected void savePreferences()

{

SharedPreferences mySharedPreferences =

getSharedPreferences(MYPREFS, mode);

SharedPreferences.Editor myEditor = mySharedPreferences.edit();

myEditor.putString("custName", "Maria Macarena");

myEditor.putInt("custAge", 21);

myEditor.putFloat("custCredit", 1500000.00F);

myEditor.putLong("custNumber", 9876543210L);

myEditor.putString("custDateLastCall", new

Date(custNumber).toLocaleString());

myEditor.commit();

}//savePreferences

public void showSavedPreferences()

{

Page 97: Android Book_by Me

97

SharedPreferences mySharedPreferences =

getSharedPreferences(MYPREFS, mode);

custName =

mySharedPreferences.getString("custName", "defNameValue");

custAge = mySharedPreferences.getInt("custAge", 18);

custCredit = mySharedPreferences.getFloat("custCredit",

1000.00F);

custNumber =

mySharedPreferences.getLong("custNumber", 1L);

custDateLastCall =

mySharedPreferences.getString("custDateLastCall",new

Date(mode).toLocaleString());

String msg = "name: " + custName + "\nAge: " + custAge

+

"\nCredit: " + custCredit +

"\nLastCall: " + custDateLastCall;

txtPref.setText(msg);

}}

Output

Page 98: Android Book_by Me

98

File

Page 99: Android Book_by Me

99

File

Data anda pilihan penyimpanan adalah sebagai berikut:

1. Shared PreferencesStore primitif swasta dalam pasangan kunci-

nilai.

2. Internal StorageStore data pribadi pada memori perangkat.

3. Eksternal StorageStore data publik pada penyimpanan eksternal

bersama.

4. SQLiteDatabasesStore data terstruktur dalam database pribadi.

5. Network ConnectionStore data pada web dengan server jaringan

Anda sendiri.

Example 2

XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<Button android:id="@+id/close"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Close" />

<EditText

android:id="@+id/editor"

Page 100: Android Book_by Me

100

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:singleLine="false"

android:gravity="top"

/>

</LinearLayout>

Listing Program

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

public class files extends Activity {

private final static String NOTES="notes.txt";

private EditText editor;

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

editor=(EditText)findViewById(R.id.editor);

Button btn=(Button)findViewById(R.id.close);

btn.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

finish();

}

});

}

}

Output

Page 101: Android Book_by Me

101

Example 3

XML

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/widget28"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#ff0000ff"

android:orientation="vertical"

>

<EditText

android:id="@+id/txtData"

android:layout_width="fill_parent"

android:layout_height="180px"

android:text="Enter some data here ..."

android:textSize="18sp" />

<Button

android:id="@+id/btnWriteSDFile"

android:layout_width="143px"

android:layout_height="44px"

android:text="1. Write SD File" />

<Button

android:id="@+id/btnClearScreen"

android:layout_width="141px"

android:layout_height="42px"

android:text="2. Clear Screen" />

<Button

android:id="@+id/btnReadSDFile"

android:layout_width="140px"

android:layout_height="42px"

Page 102: Android Book_by Me

102

android:text="3. Read SD File" />

<Button

android:id="@+id/btnClose"

android:layout_width="141px"

android:layout_height="43px"

android:text="4. Close" />

</LinearLayout>

Page 103: Android Book_by Me

103

Fonts

Page 104: Android Book_by Me

104

Fonts

Page 105: Android Book_by Me

105

Page 106: Android Book_by Me

106

SQL Database

Page 107: Android Book_by Me

107

SQL Database

1. SQLite mengimplementasikan sebagian besar standar SQL-

92 untuk SQL.

2. Hal ini memiliki dukungan parsial untuk memicu dan

memungkinkan query yang paling kompleks (kecuali dibuat untuk

bergabung luar).

3. SQLite tidak menerapkan batasan integritas referensial

melalui model kendala kunci asing.

4. SQLite menggunakan model data yang mengetik santai.

5. Alih-alih menetapkan jenis untuk seluruh kolom, jenis

ditugaskan untuk nilai-nilai individu. Hal ini mirip dengan tipe

Variant dalam Visual Basic.

6. Oleh karena itu memungkinkan untuk memasukkan string

ke kolom numerik dan sebagainya.

Page 108: Android Book_by Me

108

source code java

Page 109: Android Book_by Me

109

Page 110: Android Book_by Me

110

Page 111: Android Book_by Me

111

Page 112: Android Book_by Me

112

Page 113: Android Book_by Me

113

Location Based Services

Page 114: Android Book_by Me

114

Location Based Services

Pengenalan

Sebuah layanan berbasis lokasi (LBS) adalah penyebaran sistem

informasi yang dapat diakses oleh perangkat mobile melalui jaringan

selular. Hal ini didorong oleh kemampuan sistem untuk mendeteksi

posisi geografis dari perangkat mobile.

Lokasi Layanan Berbasis digunakan dalam berbagai situasi, seperti

komersial,

hiburan,

darurat,

kesehatan,

bekerja,

kehidupan pribadi, dll

Contoh:

- Cari bank terdekat, restoran, pompa bensin, hotel, lapangan golf,

rumah sakit, kantor polisi, dll

- Memberikan informasi transportasi tentang bagaimana untuk pergi

dari 'sini' ke 'sana'.

- Jaringan sosial adalah digunakan untuk menemukan dan mencapai

acara, teman-teman dan anggota keluarga.

Contoh - Mendapatkan Lokasi dari GPS.

Dalam contoh ini kami meminta dan menampilkan GPSservices lintang

dan bujur pada UI. Selain itu kami memberikan SMS dengan informasi

ini.

Catatan:

1. Amati chip GPS adalah bukan sebuah perangkat sinkron yang akan

segera merespon panggilan "memberi saya pembacaan GPS".

2. Dalam rangka untuk merancang sebuah solusi yang baik yang

memperhitungkan potensi penundaan dalam memperoleh data lokasi

kita menempatkan UI dalam kegiatan utama dan permintaan untuk

panggilan lokasi dalam layanan latar belakang.

3. Ingat layanan berjalan dalam ruang proses yang sama seperti

kegiatan utama, oleh karena itu demi respon kita harus menempatkan

logika untuk permintaan data lokasi di thread paralel terpisah.

Page 115: Android Book_by Me

115

4. Sebuah benang (seperti sebuah Kegiatan) membutuhkan kehadiran

Loopercontrol untuk mengelola pengiriman pesan IPC. Ini berarti dan

Looper.loopmethods Looper.prepareand tambahan sekitar

locationUpdatemethod.

Layout

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

android:id="@+id/widget32"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

xmlns:android="http://schemas.android.com/apk/res/android"

>

<EditText

android:id="@+id/txtMsg"

android:layout_width="fill_parent"

android:layout_height="120px"

android:textSize="12sp"

>

</EditText>

<Button

android:id="@+id/btnStopService"

android:layout_width="151px"

android:layout_height="wrap_content"

android:text="Stop Service"

>

</Button>

</LinearLayout>

Page 116: Android Book_by Me

116

Manifest

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="cis493.mappinggps"

android:versionCode="1"

android:versionName="1.0">

<application

android:icon="@drawable/icon"

android:label="@string/app_name"

android:debuggable="true" >

<activity android:name=".MyGPS"

android:label="@string/app_name">

<intent-filter>

<action

android:name="android.intent.action.MAIN" />

<category

android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<service

android:name="MyGpsService">

</service>

</application>

<uses-sdkandroid:minSdkVersion="2" />

<uses-permission android:name="android.permission.SEND_SMS"

/>

<uses-permission

android:name="android.permission.ACCESS_FINE_LOCATION" />

</manifest>

Main Activity : MyGPS

Page 117: Android Book_by Me

117

Page 118: Android Book_by Me

118

Main Activity: MyGpsService

Page 119: Android Book_by Me

119

GeoCoding: From Street-Address to Coordinate

Page 120: Android Book_by Me

120

Geocodergc= new Geocoder(this);

List<Address> lstFoundAddresses=

gc.getFromLocationName(txtStreetAddress, 5);

Geocodergc= new Geocoder(context, Locale.US);

List<Address> streets = gc.getFromLocation(latitude, longitude, 1);

Project

Page 121: Android Book_by Me

121

Project UAS

Dizka-Marlisa

Page 122: Android Book_by Me

122

Project UAS ini adalah mengenai membuat sebuah tools learning

English berupa sebuah activity yang dapat berpindah dari dictionary

ke notes atau sebaliknya.

Fokus utama project ini yaitu penggunaan intent dan content

provider.

Menu awal:

Pilih Notes:

List notes :

Pilih dictionary:

Project UAS ini adalah mengenai membuat sebuah tools learning

English berupa sebuah activity yang dapat berpindah dari dictionary

Page 123: Android Book_by Me

123

Klik kata:

File yang ddibutuhkan :

Page 124: Android Book_by Me

124

Android is a fun, light-weight mobile device development framework. Its various feature drive us to explore and create interesting stuff, like GPS, Bluetooth chat, map, and many more. And, this book is brought to you who begin a life with Android.