Anda di halaman 1dari 124

Complete

A Practical Reference

Marlisa S | 7409040029 EEPIS-Electronic Engineering Polytechnic Institut of Surabaya

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

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

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 kodekode 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 benarbenar 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

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

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.

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

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

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.

Membuat Project Android Baru Buat project baru, klik File New Android Project , seperti pada gambar

10

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.

11

Kumpulan source code

Code java untuk activity pada UI Generated kode java file untuk manajeme n resource source file. Images

Kumpulan resources aplikasi non code

Layout activity

pusat pengaturan aplikasi yang dibuat.

File generatedbuild file yang digunakan oleh eclipse dan ADT plugins, sehingga tidak dimodifikasi

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

12

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

13

User Interface Using XML Layouts

14

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

15

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.

16

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:

17

Berikutnya anda dapat menjalankan program xml sederhana tersebut dengan hasil sebagai berikut:

Penggunaan Tabel Layout

18

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"

19

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:

20

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

21

# 120px, pengukurannya pada sumbu x seperti pada gambar, diukur dari sebelah kiri. # ukuran 32px berada pada sumbu y dengan pengukuran mulai dari atas.

22

Basic Widgets

23

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

24

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

25

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

Pada source code java, perhatikan event handler checkBox

26

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

27

source code java

28

Pemilihan CheckButton dan CheckBox

# Toast untuk menampilkan pesan singkat seperti pada gambar. Pesan pesan tersebut akan tampil jika memilih salah satu radio button atau checkbutton.

29

Selection Widgets

30

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

31

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

32

Penggunaan spinner sama dengan drop down selector. Fungsi spinner dan ListView hampir sama namun ListView memiliki ruang yang lebih kecil.

33

source code java

#ArrayAdapter pada spinner digunakan sebagai tampungan kalimat string. Agar layout pilihan spinner dapat terlihat naik, turun

34

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.

35

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.

36

source code java

37

Penggunaan Galeri Widget Galeri widget ini dapat ditampilkan dengan menggeser ke kanan maupun ke kiri

38

source code java

39

40

Date, Time, Tabs

41

42

source code java

43

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

44

Drawer

45

46

47

48

Hard & Soft Keyboard

49

50

51

52

53

54

55

source code java

56

Project Pizza

57

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"

58

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"

59

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

60

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

61

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

62

Menus

63

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"

64

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

65

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

66

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

67

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

68

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;

69

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)

70

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"

71

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"

72

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;

>

73

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 devices keyboard-keypad

74

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

75

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

76

Intents

77

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

78

79

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"

80

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

81

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

82

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.

83

source code java

84

85

Preferences

86

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

87

88

source code java

89

Preferences 2

90

91

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;

92

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

93

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

94

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;

95

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

96

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

97

File

98

File Data anda pilihan penyimpanan adalah sebagai berikut: 1. Shared PreferencesStore primitif swasta dalam pasangan kuncinilai. 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"

99

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

100

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"

101

android:text="3. Read SD File" /> <Button android:id="@+id/btnClose" android:layout_width="141px" android:layout_height="43px" android:text="4. Close" /> </LinearLayout>

102

Fonts

103

Fonts

104

105

SQL Database

106

SQL Database 1. SQLite mengimplementasikan sebagian besar standar SQL92 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.

107

source code java

108

109

110

111

112

Location Based Services

113

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.

114

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>

115

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

116

117

Main Activity: MyGpsService

118

GeoCoding: From Street-Address to Coordinate

119

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

120

Project UAS Dizka-Marlisa

121

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:

122

Klik kata:

File yang ddibutuhkan :

123

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.

124