Download - 96664937 Android Book by Me
CompleteCompleteCompleteComplete
A Practical Reference
Marlisa S | 7409040029
EEPIS-Electronic Engineering Polytechnic Institut of Surabaya
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
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
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
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
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.
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
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).
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.
10
Membuat Project Android Baru
Buat project baru, klik File – New – Android Project , seperti pada
gambar
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.
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.
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>
14
User Interface Using
XML Layouts
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) {
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.
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:
18
Berikutnya anda dapat menjalankan program xml sederhana tersebut
dengan hasil sebagai berikut:
Penggunaan Tabel Layout
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"
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:
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.
22
# 120px, pengukurannya pada sumbu x seperti pada gambar, diukur
dari sebelah kiri.
# ukuran 32px berada pada sumbu y dengan pengukuran mulai dari
atas.
23
Basic Widgets
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
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.
26
Contoh script main.xml yang menggunakan CheckBox, seperti berikut:
Pada source code java, perhatikan event handler checkBox
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.
28
source code java
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
30
Selection
Widgets
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
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
33
Penggunaan spinner sama dengan drop down selector. Fungsi spinner
dan ListView hampir sama namun ListView memiliki ruang yang lebih
kecil.
34
source code java
#ArrayAdapter pada spinner digunakan sebagai tampungan kalimat
string. Agar layout pilihan spinner dapat terlihat naik, turun
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.
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.
37
source code java
38
Penggunaan Galeri Widget
Galeri widget ini dapat ditampilkan dengan menggeser ke
kanan maupun ke kiri
39
source code java
40
41
Date,
Time,
Tabs
42
43
source code java
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.
45
Drawer
46
47
48
49
Hard & Soft Keyboard
50
51
52
53
54
55
56
source code java
57
Project Pizza
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"
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"
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);
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";
}
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();
}
}
}
});
}
}
63
Menus
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"
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())
{
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
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
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
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;
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)
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"
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"
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;
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
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");
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
77
Intents
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).
79
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"
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));
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
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.
84
source code java
85
86
Preferences
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
88
89
source code java
90
Preferences 2
91
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;
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
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
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;
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()
{
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
98
File
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"
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
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"
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>
103
Fonts
104
Fonts
105
106
SQL Database
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.
108
source code java
109
110
111
112
113
Location Based Services
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.
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>
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
117
118
Main Activity: MyGpsService
119
GeoCoding: From Street-Address to Coordinate
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
121
Project UAS
Dizka-Marlisa
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
123
Klik kata:
File yang ddibutuhkan :
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.