BUKU PETUNJUK PRAKTIKUM PEMROGRAMAN LANJUT
Oleh: Rizky Yuniar Hakkun Tita Karlita
TEKNIK INFORMATIKA DEPARTEMEN TEKNIK INFORMATIKA DAN KOMPUTER POLITEKNIK ELEKTRONIKA NEGERI SURABAYA 2013 1
KATA PENGANTAR Dengan mengucapkan syukur Alhamdulillah kehadirat Allah SWT atas segala limpahan rahmat dan hidayah-Nya, sehingga penyusun dapat menyelesaikan buku petunjuk Praktikum yang berjudul : “Praktikum Pemrograman Lanjut” dengan baik. Buku petunjuk workshop ini disusun sebagai pedoman khususnya bagi mahasiswa di Jurusan Teknik Informatika, Politeknik Elektronika Negeri Surabaya, dalam memberikan pengenalan, pemahaman serta mengasah kemampuan dalam pemrograman khususnya berbasis Android yang mana sudah menjadi kewajiban untuk mengenal teknologi informasi saat ini. Diharapkan para mahasiswa nantinya bisa lebih terampil dan memahami segala bentuk teknologi informasi saat ini. Bagimanapun penyusun telah berusaha membuat buku ini dengan sebaikbaiknya, namun tidak ada kesempurnaan dalam sebuah karya manusia. Penyusun menyadari masih banyak kekurangan dalam penyusunan buku ini. Untuk itu pula segala masukan, kritik dan saran dari pembaca dapat menjadikan acuan bagi penyusun dalam penyempurnaan dan pembuatan buku berikutnya. Tiada untaian kata yang dapat penyusun sampaikan selain panjatkan doa, semoga Allah SWT selalu membuka hati kita dengan cahaya-NYA dan mengajarkan ilmu-NYA kepada kita, serta menghindarkan kita dari ilmu yang tidak bermanfaat.
Surabaya, November 2013
Penyusun
i
DAFTAR ISI KATA PENGANTAR .............................................................................................. i DAFTAR ISI ........................................................................................................... ii DAFTAR GAMBAR ............................................................................................. vii 1
Praktikum 1 : Setting SDK dan Emulator Android ........................................ 1 1.1 Tujuan ...................................................................................................... 1 1.2 Tugas Pendahuluan .................................................................................. 1 1.3 Percobaan ................................................................................................ 1 1.3.1 Percobaan 1 : Instalasi SDK Android pada Eclipse. ......................... 2 1.3.2 Percobaan 2 : Konfigurasi Plugin pada Eclipse ................................ 5 1.3.3 Percobaan 3 : Android Virtual Device (AVD) pada SDK ................ 7 1.3.4 Percobaan 4 : Update Android SDK Manager .................................. 8 1.4 Laporan Resmi....................................................................................... 11
2
Praktikum 2 : Siklus Hidup Aplikasi ............................................................ 12 2.1 Tujuan .................................................................................................... 12 2.2 Tugas Pendahuluan ................................................................................ 12 2.3 Percobaan .............................................................................................. 12 2.3.1 Percobaan 1: Memahami siklus hidup Activity ............................... 12 2.4 Laporan Resmi....................................................................................... 16
3
Praktikum 3: XML Layout dan Basic Widget .............................................. 17 3.1.1 Tujuan .............................................................................................. 17 3.1.2 Tugas Pendahuluan .......................................................................... 17 3.1.3 Percobaan ........................................................................................ 17 3.1.4 Percobaan 2: Mengaplikasikan Layout (Linear Layout) ................. 19 3.1.5 Percobaan 3 : Mengenal Basic Widget ............................................ 21
4
Praktikum 4: Selection Widget ..................................................................... 26 4.1 Tujuan .................................................................................................... 26 4.2 Tugas Pendahuluan ................................................................................ 26 4.3 Percobaan .............................................................................................. 26 4.3.1 Percobaan 1: Menggunakan List View............................................ 26 ii
4.3.2 Percobaan 2: Menggunakan Spin Control ....................................... 29 4.3.3 Percobaan 3: Menggunakan Grid View .......................................... 32 4.3.4 Percobaan 4: Menggunakan AutoCompleteTextView .................... 34 4.3.5 Percobaan 5: Menggunakan Customized List ................................. 37 4.3.6 Percobaan 6: Membuat Date and Time Selection Widget............... 41 4.3.7 Percobaan 7: Membuat Tabhost ...................................................... 42 5
Praktikum 5: Option dan Context Menu ....................................................... 46 5.1 Tujuan .................................................................................................... 46 5.2 Tugas Pendahuluan ................................................................................ 46 5.3 Percobaan .............................................................................................. 46 5.3.1 Percobaan 1: Menggunakan Option dan Context Menu.................. 46 5.3.2 Percobaan 2: Menggunakan Option dan Context Menu (lanjut) ..... 51
6
Praktikum 6: WebKit .................................................................................... 55 6.1 Tujuan .................................................................................................... 55 6.2 Tugas Pendahuluan ................................................................................ 55 6.3 Percobaan .............................................................................................. 55 6.3.1 Percobaan 1: Membuat Hello World dengan Webkit...................... 55 6.3.2 Percobaan 2: Menampilkan Data Waktu dengan Webkit................ 57 6.3.3 Percobaan 3: Melakukan Browsing Internet dengan Webkit .......... 59
7
Praktikun 7: Intent 1 - Implisit ...................................................................... 62 7.1 Tujuan .................................................................................................... 62 7.2 Tugas Pendahuluan ................................................................................ 62 7.3 Percobaan .............................................................................................. 62 7.3.1 Percobaan 1: Memantau Baterai dengan BroadcastReceiver .......... 62 7.3.2 Percobaan 2: Membuat Intent Pemanggilan Telepon ...................... 65 7.3.3 Percobaan 3: Membuat Implisit Intent (lanjut) ............................... 68
8
Praktikum 8 : Intent 2 - Eksplisit .................................................................. 74 8.1 Tujuan .................................................................................................... 74 8.2 Tugas Pendahuluan ................................................................................ 74 8.3 Percobaan .............................................................................................. 74 8.3.1 Percobaan 1: Membuat Intent Explisit dari Dua Buah Activity ...... 74 8.3.2 Percobaan 2: Membuat Contoh Aplikasi BMI (Body Mass Index) 79 iii
8.3.3 Percobaan 3: Membuat Contoh Kurs Dollar ke Rupiah .................. 85 8.3.4 Percobaan 4: Mengirimkan SMS dengan Intent .............................. 92 9
Praktikum 9: Preference................................................................................ 97 9.1 Tujuan .................................................................................................... 97 9.2 Tugas Pendahuluan ................................................................................ 97 9.3 Percobaan .............................................................................................. 97 9.3.1 Percobaan 1: Menyimpan data dengan SharedPreference Object ... 97 9.3.2 Percobaan 2: Saving/Retrieving a SharedPreference Object holding
UI user choices ...................................................................................................... 101 9.3.3 Percobaan 3: Saving / Retrieving a SharedPreference Object containing ‘business’ data ..................................................................................... 105 9.4 Laporan Resmi..................................................................................... 110 10
Praktikum 10: Files ..................................................................................... 111 10.1
Tujuan .............................................................................................. 111
10.2
Tugas Pendahuluan .......................................................................... 111
10.3
Percobaan ......................................................................................... 111
10.3.1 Percobaan 1: Penyimpanan data pada Internal Storage ............... 111 10.3.2 Percobaan 2: Membaca Resource File ........................................ 116 10.3.3 Percobaan 3: Membaca atau menulis Internal File...................... 118 10.3.4 Percobaan 4: Membaca atau menulis pada memori SD Card ..... 121 10.4 11
Laporan Resmi ................................................................................. 125
Praktikum 11: Databases ............................................................................ 126 11.1
Tujuan .............................................................................................. 126
11.2
Tugas Pendahuluan .......................................................................... 126
11.3
Percobaan ......................................................................................... 126
11.3.1 Percobaan 1 : Membuat table dan insert field pada Android ...... 126 11.3.2 Percobaan 2 : Membuat database dengan SQLHelper ................ 132 11.3.3 Percobaan 3 : Membuat database dengan ContentService .......... 140 11.3.4 Percobaan 4 : Membuat database dengan Book .......................... 147 11.4 12
Laporan Resmi ................................................................................. 153
Praktikum 12: Internet Feeders ................................................................... 154 12.1
Tujuan .............................................................................................. 154 iv
13
12.2
Tugas Pendahuluan .......................................................................... 154
12.3
Percobaan ......................................................................................... 154
a.
Percobaan 1: Menampilkan RSS Feed NPR .................................... 154
12.4
Laporan Resmi ................................................................................. 163
Praktikum 13: Intent Filter ......................................................................... 164 13.1
Tujuan .............................................................................................. 164
13.2
Tugas Pendahuluan .......................................................................... 164
13.3
Percobaan ......................................................................................... 164
13.3.1 Percobaan 1: Dial Number dengan Intent Filter .......................... 164 13.3.2 Percobaan 2 : Dial Number dengan Intent Filter ......................... 167 13.4 14
Laporan Resmi ................................................................................. 173
Praktikum 14: Location Service ................................................................. 174 14.1
Tujuan .............................................................................................. 174
14.2
Tugas Pendahuluan .......................................................................... 174
14.3
Percobaan ......................................................................................... 174
14.3.1 Percobaan 1 : Menampilkan StreetView .................................... 174 14.3.2 Percobaan 2 : Menampilkan Street View dengan KeyEvent....... 176 14.4 15
Laporan Resmi ................................................................................. 179
Praktikum 15: MapViews 1 ........................................................................ 180 15.1
Tujuan .............................................................................................. 180
15.2
Tugas Pendahuluan .......................................................................... 180
15.3
Percobaan ......................................................................................... 180
15.3.1 Percobaan 1: Menampilkan Google Maps .................................. 180 15.4
Percobaan 2: Menampilkan Zoom Control pada Map ..................... 182
15.4.1 Percobaan 3 : Merubah View pada Map ..................................... 184 15.5 16
Laporan Resmi ................................................................................. 186
Praktikum 16: MapViews 2 ........................................................................ 187 16.1
Tujuan .............................................................................................. 187
16.2
Tugas Pendahuluan .......................................................................... 187
16.3
Percobaan ......................................................................................... 187
16.3.1 Percobaan 1: Menampilkan Location Data ................................. 187 16.3.2 Percobaan 2: Membuat MapView Overlays................................ 193 v
16.4
Laporan Resmi ................................................................................. 196
DAFTAR PUSTAKA .......................................................................................... 197
vi
DAFTAR GAMBAR Gambar 1.1 Jendela pembuka Eclipse .............................................................................. 2 Gambar 1.2 Jendela Software Update and Add-ons ......................................................... 3 Gambar 1.3 Jendela New Update Site............................................................................... 3 Gambar 1.4 List baru pada jendela Update site to visit .................................................... 4 Gambar 1.5 Kotak dialog Instal ........................................................................................ 4 Gambar 1.6 Kotak dialog Review License ........................................................................ 5 Gambar 1.7 Kotak Dialog Preferences ............................................................................. 6 Gambar 1.8 Environment Variables ................................................................................. 6 Gambar 1.9 Setting Path ................................................................................................... 7 Gambar 1.10 Jendela Android SDK and AVD Manager .................................................. 7 Gambar 1.11 Dialog Create New AVD ............................................................................ 8 Gambar 1.12 Jendela Android SDK Manager .................................................................. 9 Gambar 1.13 Menambahkan level API pada Android SDK Manager ............................ 10 Gambar 1.14 Seting Proxy pada Android SDK Manager ............................................... 10 Gambar 2.1 Android Project Activities ........................................................................... 13 Gambar 2.2 Jendela LogCat ............................................................................................ 15 Gambar 3.1 Contoh Tampilan Relative Layout .............................................................. 18 Gambar 3.2 Contoh Tampilan Linear Layout ................................................................. 20 Gambar 3.3 Contoh Tampilan Linear Layout ................................................................. 20 Gambar 3.4 Contoh Tampilan Linear Layout ................................................................. 24 Gambar 3.5 Tampilan Berbagai Macam Toast Hasil Pemberian Event pada Beberapa Basic Widget ................................................................................................................... 25 Gambar 4.1. Contoh Tampilan List View ....................................................................... 28 Gambar 4.2. Contoh Tampilan List View setelah Klik Opsi “Really” ........................... 29 Gambar 4.3 Contoh Tampilan Spin Control ................................................................... 31 Gambar 4.4 Contoh Tampilan Spin Control setelah Klik Spin Control dan setelah Memilih Opsi Tertentu .................................................................................................... 31 Gambar 4.5 Contoh Tampilan Menggunakan Grid View ............................................... 33 Gambar 4.6 Contoh Tampilan Menggunakan Grid View setelah klik “this” ................. 34 Gambar 4.7. Contoh Tampilan Selection Widget ........................................................... 36 vii
Gambar 4.8 Contoh Tampilan AutoCompleteTextView ................................................ 37 Gambar 4.9 Contoh Tampilan AutoCompleteTextView ................................................ 38 Gambar 4.10 Contoh Tampilan Custumized List ........................................................... 40 Gambar 4.11 Tampilan Date and Time Selection Widget .............................................. 42 Gambar 4.12 Tampilan TabWidget................................................................................. 45 Gambar 5.1 Tampilan Option dan Context Menu ........................................................... 50 Gambar 5.2 Contoh Tampilan Menu .............................................................................. 50 Gambar 5.3 Contoh Tampilan Awal Menu ..................................................................... 52 Gambar 5.4 Tampilan pilhan menu ................................................................................. 52 Gambar 5.5 Tampilan Setelah pilihan menu ................................................................... 53 Gambar 5.6 Tampilan Submenu ..................................................................................... 53 Gambar 5.7 Tampilan setelah pilihan menu ................................................................... 54 Gambar 6.1 Tampilan Awal Browser ............................................................................. 56 Gambar 6.2 Tampilan Browser dengan waktu ................................................................ 59 Gambar 6.3 Tampilan Browser ....................................................................................... 61 Gambar 7.1 Tampilan informasi Battery ........................................................................ 64 Gambar 7.2 Tampilan Panggilan Telpon ........................................................................ 67 Gambar 7.3 Tampilan Phone Call ................................................................................... 68 Gambar 7.4 Tampilan pilihan ......................................................................................... 72 Gambar 7.5 Contoh Tampilan Setiap Pilihan ................................................................. 73 Gambar 8.1 Tampilan Main Activity .............................................................................. 78 Gambar 8.2 Tampilan Child Activity.............................................................................. 78 Gambar 8.3 Tampilan Awal BMI ................................................................................... 84 Gambar 8.4 Tampilan Perhitungan BMI ......................................................................... 85 Gambar 8.5 Tampilan Awal Konversi Mata Uang ......................................................... 91 Gambar 8.6 Tampilan Perhitungan Konversi Mata Uang ............................................... 91 Gambar 8.7 Tampilan Akhir Konversi Mata Uang ......................................................... 92 Gambar 8.8 Tampilan Send SMS dengan Intent ............................................................. 96 Gambar 8.9 Tampilan Hasil Kirim SMS......................................................................... 96 Gambar 9.1 Contoh Tampilan ....................................................................................... 101 Gambar 9.2 Simple UI .................................................................................................. 105 Gambar 9.3 Default Text............................................................................................... 109 viii
Gambar 9.4 Text dari SharedPreference ....................................................................... 109 Gambar 9.5 DDMS File Explorer ................................................................................. 110 Gambar 9.6 Menggunakan Browser Untuk membaca file ............................................ 110 Gambar 10.1 Project Baru ............................................................................................. 112 Gambar 10.2 Input Text View ...................................................................................... 115 Gambar 10.3 File pada resource.................................................................................... 116 Gambar 10.4 Hasil Teks Yang Disimpan ..................................................................... 121 Gambar 10.5 DDMS file explorer ................................................................................. 121 Gambar 10.6 Hasil Aplikasi .......................................................................................... 125 Gambar 11.1 Tampilan Awal ........................................................................................ 131 Gambar 11.2 Tampilan SQLite Admin ......................................................................... 132 Gambar 11.3 Tampilan Hasil ........................................................................................ 140 Gambar 11.4 Tampilan Hasil ........................................................................................ 147 Gambar 11.5 Tampilan Hasil ........................................................................................ 152 Gambar 12.1 Tampilan Awal ........................................................................................ 162 Gambar 12.2 Tampilan Ketika Dipilih Salah Satu Berita ............................................. 163 Gambar 13.1 Tampilan Awal ........................................................................................ 166 Gambar 13.2 Tampilan ketika aksi telpon dial ............................................................. 167 Gambar 13.3 Tampilan No Dial .................................................................................... 171 Gambar 13.4 Tampilan ketika mendial telpon .............................................................. 171 Gambar 13.5 Telpon dial dilakukan .............................................................................. 172 Gambar 13.6 Tampilan jika SMS dipilih ...................................................................... 172 Gambar 13.7 Tampilan browser pencarian ................................................................... 173 Gambar 14.1 Tampilan Peta .......................................................................................... 176 Gambar 14.2 Tampilan Peta dengan Street View ......................................................... 178 Gambar 14.3 Tampilan pilhan street view atau tidak ................................................... 179 Gambar 15.1 Tampilan Mapview ................................................................................. 182 Gambar 15.2 Tampilan Map denga Zoom Control ....................................................... 183 Gambar 15.3 Merubah View pada Map ...................................................................... 185 Gambar 16.1 Menampilkan Location Data ................................................................... 192 Gambar 16.2 Membuat MapView Overlays ................................................................. 196
ix
Praktikum 1 Setting SDK dan Emulator Android 1
Praktikum 1 : Setting SDK dan Emulator Android
1.1 Tujuan Tujuan pembelajaran bab Setting SDK dan Emulator Android meliputi: 1. Memahami cara menginstal dan mensetting SDK Android pada Eclipse 2. Memahami cara membuat dan menggunakan emulator Android
1.2 Tugas Pendahuluan 1. Download Java SE yang ada pada www.oracle.com/technetwork/java/javase/downloads/ 2. Download Eclipse IDE yang ada pada www.eclipse.org/downloads/ 3. Persiapkan Eclipse IDE dan Java Runtime Library pada Komputer. 4. Pelajari penggunaan Eclipse IDE 5. Download Android SDK Starter yang ada pada http://developer.android.com. 6. Download
Android
Developer
Tools
(ADT)
Bundle
yang
ada
pada
http://developer.android.com.
1.3 Percobaan Percobaan 1 dan 2 adalah kegiatan menginstal Android dengan cara perbagian yang memiliki urutan kegiatan mengekstrak Eclipse IDE dan menambahkan serta mengkonfigurasi plugin Android SDK pada Eclipse. Cara kedua untuk mendapatkan lingkungan kerja Android adalah dengan cara menginstal Android Developer Tools 1
(ADT) Bundle. Dengan sekali langkah menginstal Android Developer Tools (ADT) Bundle maka sudah tidak diperlukan lagi kegiatan
mengekstrak Eclipse IDE dan
menambahkan serta mengkonfigurasi plugin Android SDK. Sekarang sudah tersedia Android Developer Tools (ADT) Bundle, sekali download sudah langsung dipunyai Eclipse IDE dan Android SDK, jadi tidak perlu lagi download Eclipse secara terpisah baru kemudian download Android SDK.
1.3.1 Percobaan 1 : Instalasi SDK Android pada Eclipse. Download dan install SDK dilakukan apabila programmer belum memiliki atau memasang plugin SDK Android pada Eclipse, untuk melakukan download dan install berikut cara download dan Install SDK Android : Ekstrak Eclipse dan simpan pada suatu folder, selanjutnya buka aplikasi Eclipse. Klik Help > Software Update > Find and Install, sebagaimana dapat dilihat pada Gambar P1.1.
Gambar 1.1 Jendela pembuka Eclipse
Pada jendela Software Update atau Update Install, pada Eclipse versi Galileo terdapat dua pilihan option radio button anda pilih atau klik pada “Search or New Features to Install” sedangkan pada versi Gany Mayde akan muncul pilihan “Manage Sites” dan “Add Sites, kemudian pilih Add Sites untuk membuat Sites atau source baru” seperti pada Gambar P1.2. 2
Sedangakan untuk versi Galileo akan tampil dialog install, untuk mendownload Android plugin anda klik pada bagian tombol new remote site.
Gambar 1.2 Jendela Software Update and Add-ons
Pada tampilan berikutnya terdapat sebuah jendela dialog untuk mengisikan Field URL
dengan
https://dl-ssl.google.com/android/eclipse/.
Atau
anda
dapat
mendownload file ADT dan memanggilnya menggunakan menu “Archive”. yang Kemudian klik OK, Untuk lebih jelasnya lihat Gambar P1.3.
Gambar 1.3 Jendela New Update Site
Selanjutnya pada jendela available software terdapat list baru dengan berupa site baru dengan nama Android Plugin. Untuk lebih jelasnya lihat Gambar P1.4.
3
Gambar 1.4 List baru pada jendela Update site to visit
Berikan cek list pada Android Plugin kemudian klik install Kemudian akan tampil jendela Install, pada jendela ini berikan cheklist pada item yang dibutuhkan Android, seperti pada Gambar P1.5.
Gambar 1.5 Kotak dialog Instal
Selanjutnya akan tampil kotak dialog license agreement, klik “I accept the term of the license agrements” kemudian klik tombol finish, lihat Gambar P1.6.
4
Gambar 1.6 Kotak dialog Review License
Setelah selesai instalasi plugin, selanjutnya anda akan masuk pada pembahasan konfigurasi plugin.
1.3.2 Percobaan 2 : Konfigurasi Plugin pada Eclipse Setelah anda selesai memasukkan atau memasang plugin pada Eclipse, anda mendapatkan pemberitahuan dan anda diminta untuk melakukan restart aplikasi Eclipse. Jika tidak ada pemberitahuan maka lakukan restart aplikasi segera. Melakukan restart akan membuat aplikasi Eclipse diberikan kesempatan untuk melakukan inisialisasi dan meyakinkan bahwa program tersebut telah mendapat pemasangan plugin Android. Plugin Android untuk Eclipse di konfigurasi melalui jendela preferences Eclipse. Tahapan melakukan konfigurasi adalah sebagai berikut : Pada layar utama tampilan jendela Eclipse pilih menu bar Window > Preferences. Selanjutnya tampil jendela Preferences, klik Android pada menu sebelah kiri, kemudian pada sebelah kanan klik browse, lihat Gambar P1.7. Pada tahap ini Eclipse mencari lokasi SDK untuk menjalankan emulator sebagai media aplikasi Android yang akan dibuat, kemudian klik apply. Pada tahap terakhir pada setingan SDK, yaitu pada PATH statement. Jika anda menggunakan windows lakukan langkah berikut : klik kanan pada my computer, plilh properties untuk membuka kotak dialog pada system properties, kemudian klik pada advance tab.
5
Klik pada environment variables untuk menampilkan jendela environment variables, seperti terlihat pada Gambar P1.8, anda bisa mengedit PATH statement.
Gambar 1.7 Kotak Dialog Preferences
Gambar 1.8 Environment Variables
Pada bagian bawah System Variables, cari dan temukan variable PATH kemudian klik ganda.
6
Pada kotak dialog Edit System Variables, masukkan lokasi Android SDK lalu klik OK untuk menerapkannya seperti pada Gambar P1.9. Dan klik OK lagi pada jendela Environment Variables.
Gambar 1.9 Setting Path
1.3.3 Percobaan 3 : Android Virtual Device (AVD) pada SDK Agar emulator yang telah di-setting dapat digunakan ketika aplikasi dijalankan dibutuhkan sebuah Virtual Device pada SDK Android. Unuk membuat AVD ini kita dapat membuat melalui Eclipse, maupun langsung membuka folder SDK tersebut dan menjalankan SDK Setup. Untuk langkah-langkah selanjutnya adalah sebagai berikut : Setelah “Android and AVD Manager” tampil, anda dapat memilih Virtual Devices. Seperti pada P1.10.
Gambar 1.10 Jendela Android SDK and AVD Manager
Kemudian untuk membuat AVD baru, dapat dipilih button “New”. Selanjutnya akan tampil Dialog Create New AVD seperti pada Gambar P1.11. 7
Gambar 1.11 Dialog Create New AVD
Selanjutnya, anda dapat memberikan nama AVD, memilih target API-Android yang tersedia dan filed lainnya, setelah itu klik “Create AVD”. Maka Android Virtual Device pun telah dapat digunakan oleh Eclipse.
1.3.4 Percobaan 4 : Update Android SDK Manager Setelah selesai menginstal Android biasanya secara otomatis akan tersedia minimal satu level API yang sudah siap digunakan dalam membuat aplikasi Android. Untuk mengecek level API apa saja yang telah tersedia dalam sistem pilih menu Window > Android SDK Manager dan akan didapatkan tampilan seperti pada Gambar P1.12. Jumlah dan detail level API milik anda kemungkinan akan berbeda dengan Gambar P1.12 karena hal ini sangat tergantung dengan level API berapa saja yang telah anda tambahkan.
8
Gambar 1.12 Jendela Android SDK Manager
Jika anda ingin menambahkan level API maka breakdown versi yang ingin ditambahkan serta berikan tanda check pada checkbox yang disediakan sebagaimana bisa dilihat pada Gambar 2.13. Tampak pada gambar tersebut akan diinstal API 16. Sebelum proses instal dijalankan pastikan bahwa seting koneksi internet telah dilakukan bila anda menggunakan proxy tertentu dengan cara klik Tools > Options sebagaimana bisa dilihat pada Gambar 2.14. Selanjutnya cari dan klik tombol Install packages untuk memulai proses instal.
9
Gambar 1.13 Menambahkan level API pada Android SDK Manager
Gambar 1.14 Seting Proxy pada Android SDK Manager
10
1.4 Laporan Resmi Buat laporan resmi mengenai langkah – langkah instalasi Android pada computer Anda, capture langkah demi langkah sesuai dengan petunjuk dari percobaan diatas.
11
Praktikum 2 Siklus Hidup Aplikasi 2
Praktikum 2 : Siklus Hidup Aplikasi
2.1 Tujuan 1.
Memahami siklus hidup Activity.
2.
Mengetahui dan memahami berbagai method yang terlibat dalam siklus hidup Activity.
2.2 Tugas Pendahuluan 1.
Apakah yang dimaksud dengan siklus hidup aplikasi?
2.
Sebutkan dan jelaskan siklus hidup activity?
3.
Sebut dan jelaskan method-method yang berperan selama siklus hidup activity!
2.3 Percobaan 2.3.1 Percobaan 1: Memahami siklus hidup Activity Langkah 1: Buat project Android baru di Eclipse dengan nama Activities seperti pada Gambar P2.1
Gambar 2.1 Android Project Activities
Langkah 2: Lakukan modifikasi pada file MainActivity.java berdasarkan kode dibawah ini
package com.example.lyfecycle;
import android.app.Activity; import android.os.Bundle; import android.util.Log;
public class MainActivity extends Activity { String tag = "Events";
/** Called when the activity is first created. */ @Override 13
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(tag, "In the onCreate() event"); }
public void onStart(){ super.onStart(); Log.d(tag, "In the onStart() event"); }
public void onRestart(){ super.onRestart(); Log.d(tag, "In the onRestart() event"); }
public void onResume(){ super.onResume(); Log.d(tag, "In the onResume() event"); }
public void onPause(){ super.onPause(); Log.d(tag, "In the onPause() event"); }
public void onStop(){ super.onStop(); Log.d(tag, "In the onStop() event"); 14
}
public void onDestroy(){ super.onDestroy(); Log.d(tag, "In the onDestroy() event"); } }
Langkah 3: Tekan F11 untuk men-debug aplikasi pada emulator Android Langkah 4: Ketika Activity berjalan, maka akan terlihat jendela LogCat seperti berikut
Gambar 2.2 Jendela LogCat
Langkah 5: Ketika menekan tombol Home pada emulator Android, lihat pada jendela Logcat dan pesan berikut akan muncul
15
Langkah 6: Tekan Tombol Home kembali dan pilih icon aplikasi yang anda buat tadi kembali (nama project ini Activities), lihat jendela Logcat kembali dan pesan berikut akan muncul :
Langkah 7: Tekan tombol Phone pada Emulator sehingga activity akan sembunyi di belakang layar. Lihat jendela LogCat dan pesan ini akan muncul :
Langkah 8: Perhatikan bahwa event OnDestroy() tidak pernah dipanggil, menandakan bahwa activity tetap berada pada memory. Tekan tombol Back, activity akan muncul kembali, dan lihat kembali jendela LogCat :
2.4 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas.
16
Praktikum 3 XML Layout dan Basic Widget 3
Praktikum 3: XML Layout dan Basic Widget
3.1.1 Tujuan Tujuan praktikum bab ini adalah: 1.
Memahami berbagai macam variasi dari XML Layout.
2.
Memahami pembuatan penggunaan dari Basic Widget.
3.
Mengetahui beberapa atribut yang dimiliki XML Layout dan Basic Widget.
3.1.2 Tugas Pendahuluan 1.
Pelajari XML Layout dan Basic Widget Android!
2.
Sebutkan dan jelaskan berbagai macam XML Layout
3.
Sebutkan dan jelaskan berbagai macam Basic Widget
3.1.3 Percobaan 3.1.3.1 Percobaan 1: Mengaplikasikan Layout (Relative Layout dan Frame Layout) Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
android:layout_alignLeft="@+id/lblComments" android:layout_below="@+id/lblComments" android:layout_centerHorizontal="true" >
Langkah 3: Tambahkan statement huruf tebal pada MainActivity.java Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P3.1.
Gambar 3.1 Contoh Tampilan Relative Layout
18
3.1.4 Percobaan 2: Mengaplikasikan Layout (Linear Layout) Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
<EditText android:id="@+id/txtusr" android:width="200px" /> <EditText android:id="@+id/txtpass" android:password="true"/> <Button android:padding="20px" android:id="@+id/btnSign" android:text="Sign In" />
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P3.2. Langkah 6 : Isikan edit text yang tersedia, maka akan muncul virtual keyboard seperti pada Gambar P3.3.
19
Gambar 3.2 Contoh Tampilan Linear Layout
Gambar 3.3 Contoh Tampilan Linear Layout
20
3.1.5 Percobaan 3 : Mengenal Basic Widget Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
<Button android:id="@+id/btnSave" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Save" /> <Button android:id="@+id/btnOpen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Open" /> <EditText android:id="@+id/txtName" android:layout_width="fill_parent" android:layout_height="wrap_content" />
21
Langkah 3: Buatlah Class MainActivity.java sebagai berikut : package com.ai.widget; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.Toast; import android.widget.ToggleButton; public class BasicWidgetActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //‐‐‐Button view‐‐‐ Button btnOpen = (Button) findViewById(R.id.btnOpen); btnOpen.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { DisplayToast("You have click the Open button"); } }); //‐‐‐Button view‐‐‐ Button btnSave = (Button) findViewById(R.id.btnSave); btnSave.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { DisplayToast("You have click the Save Button"); } }); //‐‐‐CheckBox‐‐‐ CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutoSave);
22
checkBox.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (((CheckBox)v).isChecked()) DisplayToast("Chekbox is checked"); else DisplayToast("Checkbox is unchecked"); } }); //‐‐‐RadioButton‐‐‐ RadioGroup radioGroup = (RadioGroup)findViewById(R.id.rdGp1); radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto‐generated method stub RadioButton rb1 = (RadioButton)findViewById(R.id.rdb1); if (rb1.isChecked()) { DisplayToast("Option 1 is checked"); } else{ DisplayToast("Option 2 is checked"); } } }); //‐‐‐ToggleButton‐‐‐ ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle1); toggleButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (((ToggleButton)v).isChecked()) DisplayToast("Toggle button is On"); else DisplayToast("Toggle button is Off"); } }); } private void DisplayToast(String msg) { Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show(); } }
Langkah 4 :Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P3.4. 23
Gambar 3.4 Contoh Tampilan Linear Layout
Langkah 6 : Lakukan action pada masing-masing widget, maka akan muncul toast message seperti pada Gambar P3.5.
24
Gambar 3.5 Tampilan Berbagai Macam Toast Hasil Pemberian Event pada Beberapa Basic Widget
25
Praktikum 4 Selection Widget 4
Praktikum 4: Selection Widget
4.1 Tujuan 1.
Memahami penggunaan dari Selection Widget
2.
Mengetahui berbagai macam atribut pada Selection Widget
3.
Memahami konsep data adapter dalam Selection Widget
4.2 Tugas Pendahuluan 1.
Apakah yang dimaksud dengan Selection Widget Android
2.
Sebutkan dan jelaskan beberapa macam selection Widget
3.
Bagaimana konsep penggunaan data adapter dalam Selection Widget
4.3 Percobaan 4.3.1 Percobaan 1: Menggunakan List View Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
26
android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff0000cc" android:textStyle="bold" />
Langkah 3 : Pada SimpleList.java ketikkan kode berikut ini : package com.example.simplelist; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class SimpleList extends ListActivity{ TextView selection; String[] items= { "this", "is", "a", "really", "really2", "really3","really4", "really5", "silly", "list"}; //next time try an empty list such as: //String[] items = {}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple_list); setListAdapter(new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, items)); selection=(TextView)findViewById(R.id.selection); } @Override
27
protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); String text = " position:"+ position + " "+ items[position];selection.setText(text); } }
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P4.1.
Gambar 4.1. Contoh Tampilan List View
Langkah 5: Kemudian coba klik opsi yang ada, maka akan muncul output seperti pada Gambar P4.2. Pada gambar tersebut tampak bahwa setelah klik opsi “really” dan muncul tulisan position: 3 really
28
Gambar 4.2. Contoh Tampilan List View setelah Klik Opsi “Really”
4.3.2 Percobaan 2: Menggunakan Spin Control Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
<Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content">
Langkah 3 : Pada Spin.java ketikkan kode berikut ini : 29
package com.spin; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class Spin extends Activity implements AdapterView.OnItemSelectedListener{ TextView selection; String[] items= { "a", "an", "and", "andro", "android", "android1", "android2", "android3", "android4"}; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); selection= (TextView) findViewById(R.id.selection); Spinner spin = (Spinner) findViewById(R.id.spinner); // set a clickable right push‐button comboBoxto show items spin.setOnItemSelectedListener(this); // provide a particular design for the drop‐down lines ArrayAdapter<String> aa= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items); // associate GUI spinner and adapter aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown _item); spin.setAdapter(aa); } // //////////////////////////////////////////////////////////////////// public void onItemSelected(AdapterView> parent, View v, int position, long id) { selection.setText(items[position]); } public void onNothingSelected(AdapterView> parent) { selection.setText(""); } }
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P4.3.
30
Gambar 4.3 Contoh Tampilan Spin Control
Langkah 6: Kemudian coba klik spin control, dan memilih salah satu opsi yang ada. Maka akan muncul output seperti pada Gambar P4.4.
Gambar 4.4 Contoh Tampilan Spin Control setelah Klik Spin Control dan setelah Memilih Opsi Tertentu
31
4.3.3 Percobaan 3: Menggunakan Grid View Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
Langkah 3 : Pada GridView1.java ketikkan kode berikut ini : package com.grid.vview; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.GridView; import android.widget.TextView; public class GridView1 extends Activity implements AdapterView.OnItemClickListener{ TextView selection;
32
String[] items= { "this", "is", "a", "really", "really2", "really3","really4", "really5", "silly", "list"}; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); selection= (TextView) findViewById(R.id.selection); GridView gv= (GridView) findViewById(R.id.grid); ArrayAdapter<String> aa= new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, items); gv.setAdapter(aa); gv.setOnItemClickListener(this); }// onCreate public void onItemClick(AdapterView> parent, View v, int position, long id) { selection.setText(items[position]); } }// class
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P4.5.
Gambar 4.5 Contoh Tampilan Menggunakan Grid View
33
Langkah 6: Kemudian coba klik Grid View, dan memilih salah satu opsi yang ada. Maka akan muncul output seperti pada Gambar P4.6.
Gambar 4.6 Contoh Tampilan Menggunakan Grid View setelah klik “this”
4.3.4 Percobaan 4: Menggunakan AutoCompleteTextView Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
34
android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/select" android:completionThreshold="3" android:ems="10" android:textColor="#ff0000" > <requestFocus />
Langkah 3 : Pada MainActivity.java ketikkan kode berikut ini : package com.example. autocompletetextview; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.text.Editable; import android.text.TextWatcher; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.TextView; public class MainActivity extends Activity implements TextWatcher{ TextView selection; AutoCompleteTextView edit; String[] items= { "lear", "learning", "a", "and", "andro", "android", "android1", "android2", "android3"}; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); selection = (TextView) findViewById(R.id.select); edit = (AutoCompleteTextView)findViewById(R.id.edit); edit.addTextChangedListener(this); edit.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, items)); } public void onTextChanged(CharSequence s, int start, int before, int count){ selection.setText(edit.getText()); } public void beforeTextChanged(CharSequence s, int start,int count, int after){
35
//needed for interface but unused } public void afterTextChanged(Editable e){ //needed for interface but unused } }
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Ketikkan “an” pada edit text, selanjutnya akan akan muncul output seperti pada Gambar P4.7. Langkah 6 : Isikan edit text yang tersedia, misalnya, ketikkan “and”. Maka akan muncul AutoCompleteTextView seperti Gambar P4.8.
Gambar 4.7. Contoh Tampilan Selection Widget
36
Gambar 4.8 Contoh Tampilan AutoCompleteTextView
4.3.5 Percobaan 5: Menggunakan Customized List Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
37
Langkah 3 : Tambahkan file gambar (delete.jpg dan ok.jpg) yang akan digunakan sebagai icon dalam list sebagaimana dapat dilihat pada Gambar P4.9.
Gambar 4.9 Contoh Tampilan AutoCompleteTextView
Langkah 4: Ketikan kode berikut pada my_row.xml
38
>
Langkah 5: Pada CustomizedListAct.java ketikkan kode berikut ini : package com.cust.list2; import android.app.Activity; import android.app.ListActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class CustomizedListAct extends ListActivity{ TextView selection; String[] items= { "lear", "learning", "a", "and", "andro", "android", "android1", "android2", "android3"}; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); setListAdapter(new IconicAdapter(this)); selection= (TextView) findViewById(R.id.selection); } public void onListItemClick(ListView parent, View v, int position, long id) { selection.setText(items[position]); }
39
class IconicAdapter extends ArrayAdapter{ Activity context; IconicAdapter(Activity context) { super(context, R.layout.my_row, items); this.context= context; } public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater= context.getLayoutInflater(); View row = inflater.inflate(R.layout.my_row, null); TextView label = (TextView) row.findViewById(R.id.label); ImageView icon = (ImageView) row.findViewById(R.id.icon); label.setText(items[position]); if(items[position].length() > 4) icon.setImageResource(R.drawable.delete); else icon.setImageResource(R.drawable.ok); return(row); }//getView }//IconicAdapter }//AndDemoUI
Langkah 6: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 7: Kemudian, akan muncul output seperti pada Gambar P4.10.
Gambar 4.10 Contoh Tampilan Custumized List
40
4.3.6 Percobaan 6: Membuat Date and Time Selection Widget Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
Langkah 3: Berikut ini merupakan kode pada Activity.java
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P4.11. 41
Gambar 4.11 Tampilan Date and Time Selection Widget
4.3.7 Percobaan 7: Membuat Tabhost Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
42
<EditText android:id="@+id/txtPerson" android:layout_width="2500px" android:layout_height="wrap_content" android:text="txtPerson" android:textSize="18sp" > <Button android:id="@+id/btnGo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go" >
Langkah 3: Berikut ini merupankan kode pada Activity.java package com.ai.date;
43
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TabHost; public class TabSelectionWidgetActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); TabHost tabs= (TabHost)findViewById(R.id.tabhost); tabs.setup(); TabHost.TabSpec spec; spec = tabs.newTabSpec("tag1"); spec.setContent(R.id.tab1); spec.setIndicator("1‐Clock"); tabs.addTab(spec); spec = tabs.newTabSpec("tag2"); spec.setContent(R.id.tab2); spec.setIndicator("2‐Login"); tabs.addTab(spec); tabs.setCurrentTab(0); Button btnGo=(Button)findViewById(R.id.btnGo); btnGo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto‐generated method stub EditText txtPerson = (EditText)findViewById(R.id.txtPerson); String theUser = txtPerson.getText().toString(); txtPerson.setText("Hola " + theUser); } }); } }
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P4.12. 44
Tabhost 1 – Clock
Tabhost 2 – Login Form
Gambar 4.12 Tampilan TabWidget
45
Praktikum 5 Option dan Context Menu 5
Praktikum 5: Option dan Context Menu
5.1 Tujuan Tujuan praktikum ini adalah sebagai berikut: 1.
Memahami cara kerja Menu di Android.
2.
Memahami perbedaan antara Option dan Context Menu.
3.
Mengetahui cara membuat Option dan Context Menu
5.2 Tugas Pendahuluan 1.
Apakah yang dimaksud dengan Option dan Context Menu di Android
2.
Jelaskan dengan singkat cara membuat Option Menu
3.
Jelaskan dengan singkat cara membuat Context Menu
5.3 Percobaan 5.3.1 Percobaan 1: Menggunakan Option dan Context Menu Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikan kode berikut pada main.xml
<EditText
46
android:id="@+id/edtMess1" android:text="Hello World" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dp" /> <EditText android:id="@+id/edtMess2" android:text="Welcome" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dp" /> />
Langkah 3: Tambahkan statement berikut pada MenuActivity.java package com.example.menu; import android.app.Activity; import android.os.Bundle; import android.text.Html; import android.text.Spanned; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MenuActivity extends Activity { /** Called when the activity is first created. */ EditText edt1, edt2; Integer[] arrayPointSize = {10, 20, 30, 40, 50}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edt1 = (EditText)findViewById(R.id.edtMess1); edt2 = (EditText)findViewById(R.id.edtMess2); // you may register an individual context menu for each view registerForContextMenu(edt1);
47
registerForContextMenu(edt2); } public boolean onCreateOptionMenu(Menu menu){ // only one Option menu per activity populateMyFirstMenu(menu); return super.onCreateOptionsMenu(menu); } // detect what view is calling and create its context menu @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); // decide what context menu needs to be made if(v.getId() == edt1.getId()) // create a menu for etMessage1 box populateMyFirstMenu(menu); if(v.getId() == edt2.getId()){ // create a menu for etMessage2 box populateMySecondMenu(menu); } } private void populateMyFirstMenu(Menu menu){ int groupId= 0; int order= 0; //arguments: groupId, optionId, order, title 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"); } //populateMyMenu private void populateMySecondMenu(Menu menu){ int groupId= 0; int order= 0; //arguments: groupId, optionId, order, title menu.add(groupId, 9, 1, "Bold"); menu.add(groupId, 10, 2, "Italic"); menu.add(groupId, 11, 3, "Normal"); }//populateMySecondMenu @Override public boolean onContextItemSelected(MenuItem item) { return(applyMenuOption(item)); } @Override public boolean onOptionsItemSelected(MenuItem item) {
48
return(applyMenuOption(item)); } private boolean applyMenuOption(MenuItem item){ int menuItemId= item.getItemId(); // 1, 2, 3, ...11 String strMsg2 = edt2.getText().toString(); if(menuItemId<= 5) { // first five option are for setting text size int newPointSize= arrayPointSize[menuItemId‐1]; edt1.setTextSize(newPointSize); edt2.setTextSize(newPointSize); } else{ // either change color on text1 or style on text2 if(menuItemId== 6) edt1.setTextColor(0xffff0000); // red else if(menuItemId== 7) edt1.setTextColor(0xff00ff00); // green else if(menuItemId== 8) edt1.setTextColor(0xff0000ff); // blue else if(menuItemId== 9) edt2.setText(beautify(strMsg2, "BOLD")); //bold else if(menuItemId== 10) edt2.setText(beautify(strMsg2, "ITALIC")); //italic else if(menuItemId== 11) edt2.setText(beautify(strMsg2, "NORMAL")); //normal } return false; } //applyMenuOption // changing text style using HTML formatting // Spanned is text to which you could add formatting features private Spanned beautify (String originalText, String selectedStyle){ Spanned answer = null; if(selectedStyle.equals("BOLD")) answer = Html.fromHtml("
"+ originalText+""+ originalText+""); else if(selectedStyle.equals("NORMAL")) answer = Html.fromHtml("<normal>"+ originalText+"
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Kemudian, akan muncul output seperti pada Gambar P5.1.
49
Langkah 6: Lakukan click pada text box atau click [Menu] pada hardware keyboard, maka akan muncul output seperti pada Gambar P5.2.
Gambar 5.1 Tampilan Option dan Context Menu
Pada textbox “Hello World”
Pada textbox “Welcome”
Gambar 5.2 Contoh Tampilan Menu
50
5.3.2 Percobaan 2: Menggunakan Option dan Context Menu (lanjut) Langkah 1: Gunakan project Menu pada percobaan sebelumnya Langkah 2: Lakukan replace pada method populateMyFirstMenu() menjadi seperti berikut ini : private void populateMyFirstMenu(Menu menu){ int groupId= 0; //arguments: groupId, optionId, order, title 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 item5 = menu.add(groupId, 5, 5, "50 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.emo_im_angel); item2.setIcon(R.drawable.emo_im_cool); item3.setIcon(R.drawable.emo_im_crying); item4.setIcon(R.drawable.emo_im_foot_in_mouth); // shortcuts using device’s keyboard‐keypad // on a G1 open slide open the keyboard and // type letter u (same as pressing menu UNO) item1.setShortcut('1', '1'); item2.setShortcut('2', '2'); item3.setShortcut('3', '3'); item4.setShortcut('4', '4'); // adding a sub‐menu as fifth entry of this menu // .addSubMenu(intgroupId, intitemId, intorder, CharSequencetitle) int smGroupId= 0; // don't care, same as Menu.NONE int smItemId= 5; // fifth element int smOrder= 5; // don't care, same as Menu.NONE SubMenu mySubMenu5 = menu.addSubMenu(smGroupId, smItemId, smOrder, "Sub‐Menu‐CINCO"); mySubMenu5.setHeaderIcon(R.drawable.btn_rating_star_on_pressed); mySubMenu5.setIcon(R.drawable.btn_rating_star_on_normal); // .add(intgroupId, intitemId, intorder, CharSequencetitle) MenuItem sub51 = mySubMenu5.add(smGroupId,5,1,"Sub Menu 5‐ 1"); MenuItem sub52 = mySubMenu5.add(smGroupId,5,2,"Sub Menu 5‐ 2");
51
MenuItem sub53 = mySubMenu5.add(smGroupId,5,3,"Sub Menu 5‐ 3"); } //populateMyMenu
Langkah 5: Kemudian, akan muncul output seperti pada Gambar P5.3.
Gambar 5.3 Contoh Tampilan Awal Menu
Langkah 6 : Click pada text box atau click [Menu] pada hardware keyboard, maka akan muncul output seperti pada Gambar P5.4.
Gambar 5.4 Tampilan pilhan menu
52
Langkah 6 : Klik pada salah satu menu, misalnya pada [10 points], maka font dalam text box berubah ukurannya sesuai dengan menu, seperti pada Gambar P5.5.
Gambar 5.5 Tampilan Setelah pilihan menu
Langkah 7 : kemudian, terdapat “Sub-Menu-Cinco”, click, maka akan muncul output seperti pada Gambar P5.6.
Gambar 5.6 Tampilan Submenu
53
Langkah 8 : jika di-click “Blue Text”, maka teks akan berubah warna menjadi biru seperti pada Gambar P5.7.
Gambar 5.7 Tampilan setelah pilihan menu
54
Praktikum 6 WebKit 6
Praktikum 6: WebKit
6.1 Tujuan Tujuan pembelajaran bab ini adalah sebagai berikut: 1.
Memahami cara membuat WebKit.
2.
Mengetahui cara menggunakan navigasi WebKit
6.2 Tugas Pendahuluan 1.
Apakah yang dimaksud dengan WebKit?
2.
Bagaimana cara membuat aplikasi yang menggunakan WebKit?
3.
Sebutkan dan jelaskan menu navigasi WebKit.
6.3 Percobaan 6.3.1 Percobaan 1: Membuat Hello World dengan Webkit Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webkit" android:layout_width="fill_parent" android:layout_height="fill_parent"
/>
Langkah 3: Tambahkan statement berikut pada WebkitActivity.java package com.webkit; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; public class WebkitBrowserActivity extends Activity { /** Called when the activity is first created. */ WebView browser; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); browser=(WebView)findViewById(R.id.webkit); browser.loadData("Hello, world!", "text/html", "UTF‐8"); } }
Langkah 4 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Aplikasi akan menampilkan Hello World pada browser seperti Gambar P6.1.
Gambar 6.1 Tampilan Awal Browser
56
6.3.2 Percobaan 2: Menampilkan Data Waktu dengan Webkit Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webkit" android:layout_width="fill_parent" android:layout_height="fill_parent" />
Langkah 3: Tambahkan statement berikut pada MainActivity.java package com.webkit; import java.util.Date; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; public class WebkitBrowser2Activity extends Activity { /** Called when the activity is first created. */ WebView browser; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); browser=(WebView)findViewById(R.id.webkit); browser.setWebViewClient(new Callback()); loadTime(); } void loadTime() { String page="
" +new Date().toString() +"";
}
browser.loadData(page, "text/html", "UTF‐8");
57
private class Callback extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView view, String url) { loadTime(); return(true); } } }
Langkah 4: Pada AndroidManifest.xml tambahkan kode yang tercetak tebal berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.webkit" android:versionCode="1" android:versionName="1.0" >
<uses‐permission android:name="android.permission.INTERNET"/> <uses‐sdk android:minSdkVersion="10" />
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka webkit akan menampilkan output browser seperti Gambar P6.2.
58
Gambar 6.2 Tampilan Browser dengan waktu
6.3.3 Percobaan 3: Melakukan Browsing Internet dengan Webkit Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
<WebView android:id="@+id/webkit" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
Langkah 3: Tambahkan statement berikut pada WebkitActivity.java package com.ai.webkit; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView;
59
public class WebkitActivity extends Activity { WebView browser; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); browser=(WebView)findViewById(R.id.webkit); browser.loadUrl("http://google.com"); browser.getSettings().setJavaScriptEnabled(true); } }
Langkah 4: Pada AndroidManifest.xml tambahkan kode yang tercetak tebal berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.webkit" android:versionCode="1" android:versionName="1.0" >
<uses‐permission android:name="android.permission.INTERNET"/> <uses‐sdk android:minSdkVersion="10" />
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka webkit akan menampilkan browser seperti Gambar P6.3.
60
Gambar 6.3 Tampilan Browser
61
Praktikum 7 Intent 1: Implisit 7
Praktikun 7: Intent 1 - Implisit
7.1 Tujuan 1.
Memahami cara untuk membuat Intent Implisit
2.
Mengetahui berbagai macam Intent Implisit
3.
Mengetahui cara membuat Intent Implisit
7.2 Tugas Pendahuluan 1.
Apakah yang dimaksud dengan intent di Android?
2.
Apakah yang dimaksud dengan implisit intent?
3.
Sebutkan dan jelaskan macam implisit intent !
4.
Bagaimana cara menggunakan implisit intent?
5.
Apakah kegunaan method startActivity?
7.3 Percobaan 7.3.1 Percobaan 1: Memantau Baterai dengan BroadcastReceiver Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
62
Langkah 3 : Tambahkan statement berikut pada IntentBatteryActivity.java package com.ai.intent; import android.app.Activity; import android.os.Bundle; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.widget.TextView; public class IntentBatteryActivity extends Activity { private TextView txtBat; private BroadcastReceiver mBatInfoRec = new BroadcastReceiver() { @Override
63
public void onReceive(Context context, Intent intent)
{ // TODO Auto‐generated method stub int level = intent.getIntExtra("level", 0); txtBat.setText(String.valueOf(level)+ "%"); } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); txtBat = (TextView)this.findViewById(R.id.txtView); this.registerReceiver(this.mBatInfoRec, new IntentFilter (Intent.ACTION_BATTERY_CHANGED)); } }
Langkah 4 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5 : Maka akan muncul tampilan layout seperti pada Gambar P7.1.
Gambar 7.1 Tampilan informasi Battery
64
7.3.2 Percobaan 2: Membuat Intent Pemanggilan Telepon Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
<EditText android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="54px" android:text="tel:555‐1234" 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" />
Langkah 3: Tambahkan statement berikut pada Intent1Activity.java package com.example.intent; import android.app.Activity; import android.os.Bundle; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.*;
65
public class Intent1Activity extends Activity { /** Called when the activity is first created. */ 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{ @Override public void onClick(View v) { try{ // myActivity2 places a phone call // for ACTION_CALL or ACTION_DIAL // use 'tel:' formatted data: "tel:555‐ 1234" // for ACTION_VIEW use data: "http://www.youtube.com" // (you also need INTERNET permission ‐ see Manifest) String myData= text1.getText().toString(); Intent myActivity2 = new Intent(Intent.ACTION_DIAL, Uri.parse(myData)); startActivity(myActivity2); } catch(Exception e) { Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show(); } }//onClick }//ClickHandler }
66
Langkah 4: Pada AndroidManifest.xml perhatikan setiap baris kodenya sebagai berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.intent" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="8" />
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android dan akan didapatkan output seperti pada Gambar P7.2.
Gambar 7.2 Tampilan Panggilan Telpon
67
Langkah 6 : Click pada button [Make Phone Call], maka program akan melakukan panggilan telepon seperti pada Gambar P7.3.
Gambar 7.3 Tampilan Phone Call
7.3.3 Percobaan 3: Membuat Implisit Intent (lanjut) Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
<Button android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Pesan McDonald" android:id="@+id/btnMcDonald"> <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Pesan KFC" android:id="@+id/btnKFC">
68
<Button android:text="Belajar Android" android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/btnBelajarAndroid"> <Button android:text="Jadwal Puasa" android:layout_height="wrap_content" android:id="@+id/btnJadwalPuasa" android:layout_width="match_parent"> <Button android:text="Ambil Gambar" android:layout_height="wrap_content" android:id="@+id/btnKamera" android:layout_width="match_parent">
Langkah 3: Tambahkan statement berikut pada MainActivity.java package com.agusharyanto.net.implicit.intent; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class BelajarImplicitIntentActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btnMcDonald = (Button)findViewById(R.id.btnMcDonald); Button btnKFC = (Button)findViewById(R.id.btnKFC); Button btnBelajarAndroid = (Button)findViewById(R.id.btnBelajarAndroid); Button btnJadwalPuasa = (Button)findViewById(R.id.btnJadwalPuasa); Button btnKamera = (Button)findViewById(R.id.btnKamera); btnMcDonald.setOnClickListener(new Button.OnClickListener(){
69
public void onClick(View v){ // getRequest(txtResult,txtUrl); CallIntent(v); } }); btnKFC.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ // getRequest(txtResult,txtUrl); CallIntent(v); } }); btnBelajarAndroid.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ // getRequest(txtResult,txtUrl); CallIntent(v); } }); btnJadwalPuasa.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ // getRequest(txtResult,txtUrl); CallIntent(v); } }); btnKamera.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ // getRequest(txtResult,txtUrl); CallIntent(v); } }); } public void CallIntent(View view) { Intent intent = null; switch (view.getId()) { case R.id.btnKFC: //akan melakukan Call ke nomor 14022 intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:14022")); startActivity(intent); break; case R.id.btnMcDonald: //akan melakukan Call ke nomor 14045 intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:14045")); startActivity(intent); break;
70
case R.id.btnBelajarAndroid: //akan memanggil browser dan menampilkan website http://agusharyanto.net intent = new Intent(Intent.ACTION_VIEW, Uri .parse("http://agusharyanto.net")); startActivity(intent); break; case R.id.btnJadwalPuasa: //akan memanggil browser dan menampilkan website http://www.pkpu.or.id/imsyak/ intent = new Intent(Intent.ACTION_VIEW, Uri .parse("http://www.pkpu.or.id/imsyak/")); startActivity(intent); break; case R.id.btnKamera: //akan memanggil fungsi Camera android intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent, 0); break; default: break; } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK && requestCode == 0) { String result = data.toURI(); Toast.makeText(this, result, Toast.LENGTH_LONG); } } }
Langkah 4: Pada AndroidManifest.xml tambahkan kode yang dicetak tebal sebagai berikut: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.agusharyanto.net.implicit.intent" android:versionCode="1" android:versionName="1.0"> <uses‐sdk android:minSdkVersion="8" />
71
<uses‐permission
android:name="android.permission.CALL_PRIVILEGED"> <uses‐permission android:name="android.permission.CALL_PHONE"> <uses‐permission android:name="android.permission.INTERNET"> <uses‐permission android:name="android.permission.CAMERA">
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka akan tampil output sebagai berikut :
Gambar 7.4 Tampilan pilihan
72
Langkah 7 : Lakukan percobaan button satu per satu sehingga dihasilkan output seperti pada Gambar P7.5. [Pesan McDonald]
[Pesan KFC]
[Jadwal Puasa]
[Ambil Gambar]
[Belajar Android]
Gambar 7.5 Contoh Tampilan Setiap Pilihan
73
Praktikum 8 Intent 2: Eksplisit 8
Praktikum 8 : Intent 2 - Eksplisit
8.1 Tujuan 1.
Memahami cara untuk membuat Intent Eksplisit.
2.
Mengetahui cara membuat intent yang mengembalikan hasil.
3.
Mampu membedakan antara pemanggilan intent tanpa mengembalikan hasil dan pemanggilan intent yang mengembalikan hasil.
4.
Mengetahui cara menggunakan method startActivityForResult().
8.2 Tugas Pendahuluan 1.
Apakah yang dimaksud dengan intent eksplisit?
2.
Bagaimana cara membuat intent eksplisit tanpa mengembalikan hasil?
3.
Bagaimana cara membuat intent eksplisit dengan mengembalikan hasil?
4.
Apakah kegunaan method startActivityForResult()?
8.3 Percobaan 8.3.1 Percobaan 1: Membuat Intent Explisit dari Dua Buah Activity Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
74
android:orientation="vertical" >
<Button android:id="@+id/main_btnPage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go To Child"/>
Langkah 3: Buatlah sebuah file XML baru, beri nama child.xml :
<Button android:id="@+id/child_btnPage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Back to main"/>
Langkah 4 : Lengkapi statement berikut pada MainActivity.java package com.ai.intent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override
75
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button go=(Button)findViewById(R.id.main_btnPage); go.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MainActivity.this,Child.class); i.putExtra("pesan", "From Activity Main"); startActivity(i); } }); } }
Langkah 5 : Kemudian, buatlah sebuah activity lagi, misal beri nama Child.java, berikut adalah kodingnya : package com.ai.intent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Child extends Activity { public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.child); TextView txtChild = (TextView)findViewById(R.id.child_txtPage); Button go = (Button)findViewById(R.id.child_btnPage); //menerima intent yg dikirim Intent i=this.getIntent(); txtChild.setText("This is child " +i.getStringExtra("pesan")); go.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
76
}
}
});
}
finish();
Langkah 6 : Pada AndroidManifest.xml perhatikan setiap baris kodenya sebagai berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.intent" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="10" />
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka akan muncul output awal seperti pada Gambar P8.1.
77
Gambar 8.1 Tampilan Main Activity
Langkah 7 : Coba untuk klik pada button [Go To Child] yang akan meng-intent ke activity kedua, maka akan muncul output seperti pada Gambar P8.2.
Gambar 8.2 Tampilan Child Activity
78
8.3.2 Percobaan 2: Membuat Contoh Aplikasi BMI (Body Mass Index) Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
<EditText android:id="@+id/bb" android:layout_width="fill_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/tb" android:layout_width="fill_parent" android:layout_height="wrap_content">
79
<Button android:text="Hitung" android:id="@+id/hitung" android:layout_width="wrap_content" android:layout_height="wrap_content">
Langkah 3: Buatlah sebuah file XML baru, beri nama hasil.xml :
80
Langkah 4 : Lengkapi statement berikut pada class IntentBMIActivity: package com.ai.intent; import java.security.PublicKey; import android.app.Activity; import android.content.Intent; import android.graphics.Typeface; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.view.View.OnClickListener; public class IntentBMIActivity extends Activity { EditText beratbadan; EditText tinggibadan; TextView hasil, angka; Button btnHitung; Float berat, tinggi, hsl; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
81
beratbadan=(EditText)findViewById(R.id.bb); tinggibadan=(EditText)findViewById(R.id.tb); btnHitung=(Button)findViewById(R.id.hitung); btnHitung.setOnClickListener(new OnClickListener() { public void onClick(View v) { itung(beratbadan.getText().toString(), tinggibadan.getText().toString()); callIntent(v); } }); } public void callIntent (View v){ Intent i = new Intent(IntentBMIActivity.this,hitungBMI.class); i.putExtra("hasil", hsl); startActivity(i); } public void itung(String b, String t){ berat = Float.parseFloat(beratbadan.getText().toString()); tinggi = Float.parseFloat(tinggibadan.getText().toString()); hsl = berat/(tinggi*tinggi); } }
Langkah 5 : Kemudian, buatlah sebuah activity lagi, untuk menampilkan hasil hitung activity pertama, berikut adalah kodingnya : package com.ai.intent; import android.widget.EditText; import android.widget.TextView; import android.app.Activity; import android.graphics.Typeface; import android.os.Bundle; import android.view.View; public class hitungBMI extends Activity { Float hsl; TextView hasil, angka, title2; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.hasil);
82
TextView title2=(TextView)findViewById(R.id.lblbolide); Typeface myfont2=Typeface.createFromAsset(getAssets(),"fonts/PoloBrush.ttf"); title2.setTypeface(myfont2); hasil=(TextView)findViewById(R.id.hslKategori); angka=(TextView)findViewById(R.id.hslAngka); Bundle bundle = getIntent().getExtras(); //Intent i = this.getIntent(); float hsl=bundle.getFloat("hasil"); if(hsl<18.5){ angka.setText(""+hsl); hasil.setText("UNDERWEIGHT"); } else if(hsl>=18.5 && hsl<24.99){ hasil.setText("NORMAL"); angka.setText(""+hsl); } else if(hsl>=25 && hsl<29.99){ hasil.setText("OVERWEIGHT"); angka.setText(""+hsl); } else if(hsl>=30){ hasil.setText("OBESITAS"); angka.setText(""+hsl); } } }
Langkah 6 : Pada AndroidManifest.xml perhatikan setiap baris kodenya sebagai berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.intent" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="10" />
83
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka akan muncul output awal seperti pada Gambar 4.3.
Gambar 8.3 Tampilan Awal BMI
Langkah 7 : Isikan data-data pada text box, kemudian klik button [Hitung], maka akan menghubungkan ke activity kedua seperti pada Gambar P8.4.
84
Gambar 8.4 Tampilan Perhitungan BMI
8.3.3 Percobaan 3: Membuat Contoh Kurs Dollar ke Rupiah Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
85
android:padding="3dip" android:text="Masukkan Dalam Dollar (USD)" /> <EditText android:id="@+id/Edittext1" android:gravity="right" android:padding="3dip" android:text="" /> <Button android:id="@+id/btnHitung" android:text="HITUNG" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/Edittext2" android:gravity="right" android:padding="3dip" android:text="" />
Langkah 3: Buatlah sebuah file XML baru, beri nama convert.xml :
86
android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#6495ED" > <EditText android:id="@+id/USD" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/convert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CONVERT" />
Langkah 4 : Lengkapi statement berikut pada class KursDollarActivity: package com.kurs; import android.app.Activity; import android.app.DownloadManager.Request; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class KursDollarActivity extends Activity { /** Called when the activity is first created. */ private static final int REQUEST_CODE = 1; { } float hsl; Button btnHitung; EditText Edittext1; EditText editText2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
87
Button btnHitung =(Button)findViewById(R.id.btnHitung); // set OnClickListener event to btnHitung btnHitung.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto‐generated method stub callIntent(); } }); } public void callIntent() { try{ Intent i = new Intent(KursDollarActivity.this, convertActivity.class); Edittext1= EditText (EditText)findViewById(R.id.Edittext1); String dataActivity_1 = Edittext1.getText().toString(); //untuk mengirim data guanakan put Extra i.putExtra("value", dataActivity_1); startActivityForResult(i, REQUEST_CODE); }catch(Exception e){ Toast.makeText(getApplicationContext(), e+"", 1).show(); } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == REQUEST_CODE){ Bundle b = data.getExtras(); float hasil = b.getFloat("hasil"); = EditText text2 (EditText)findViewById(R.id.Edittext2); text2.setText(""+hasil); } } }
Langkah 5 : Kemudian, buatlah sebuah activity lagi, untuk menampilkan hasil hitung activity pertama, berikut adalah kodingnya : package com.kurs;
88
import android.app.Activity; import android.app.DownloadManager.Request; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class convertActivity extends Activity { /** Called when the activity is first created. */ Bundle extras; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.convert); extras = getIntent().getExtras(); if (extras == null) { return; } final String value1 = extras.getString("value"); if (value1 != null) { EditText Edittext1 = (EditText) findViewById(R.id.USD); Edittext1.setText(value1); } Button btnConvert = (Button) findViewById(R.id.convert); btnConvert.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto‐generated method stub hitung(value1); finish(); } }); } public void hitung(String a) { float ai = Float.parseFloat(a); float hsl = (ai * 10000); Intent i = new Intent(); extras.putFloat("hasil", hsl); i.putExtras(extras); setResult(Activity.RESULT_OK, i); } }
89
Langkah 6 : Pada AndroidManifest.xml perhatikan setiap baris kodenya sebagai berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.kurs" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="10" />
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka akan muncul output awal seperti pada Gambar P8.5.
90
Gambar 8.5 Tampilan Awal Konversi Mata Uang
Langkah 7 : Isikan sebuah input pada text box, kemudian klik button [Hitung], maka akan menghubungkan ke activity kedua seperti pada Gambar P8.6.
Gambar 8.6 Tampilan Perhitungan Konversi Mata Uang
91
Langkah 7 : klik button [Convert], akan menampilkan hasil seperti pada Gambar P8.7.
Gambar 8.7 Tampilan Akhir Konversi Mata Uang
8.3.4 Percobaan 4: Mengirimkan SMS dengan Intent Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
<Button android:id="@+id/btnSend" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Send SMS" />
Langkah 3 : Lengkapi statement berikut pada class java SMSSendingIntentActivity :
92
package com.ai.sms; import android.R.string; import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.view.View; import android.widget.Button; import android.widget.Toast; public class SMSSendingIntentActivity extends Activity { Button btnSendSms; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnSendSms =(Button)findViewById(R.id.btnSend); btnSendSms.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //sendSMS(“5556”, “Hello my friends!”); Intent i = new Intent(android.content.Intent.ACTION_VIEW); i.putExtra("address","5558; 5560"); i.putExtra("sms_body", "Test sending sms intent"); i.setType("vnd.android‐dir/mms‐sms"); startActivity(i); } }); } private void sendSMS(String phoneNum,String message) { String SENT ="SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); PendingIntent delivPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) {
93
switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS SENT", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getBaseContext(), "Generic Failure", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getBaseContext(), "No Service", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getBaseContext(), "Radio Off", Toast.LENGTH_SHORT).show(); break; default: break; } } },new IntentFilter(SENT)); //‐‐‐when the SMS has been delivered‐‐‐ registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS Delivered", Toast.LENGTH_SHORT).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getBaseContext(), "SMS not Delivered", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(DELIVERED)); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNum, null,message, sentPI,delivPI); } }
94
Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.sms" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="10" />
<uses‐permission
android:name="android.permission.SEND_SMS"/>
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Launch 2 buah emulator lagi dengan api yang sama. Langkah 7 : Maka akan muncul outputnya seperti Gambar P8.8., kemudian klik pada button [Send SMS], isikan sebuah teks :
95
Gambar 8.8 Tampilan Send SMS dengan Intent
Langkah 8 : Kemudian, akan muncul notifikasi sms masuk pada emulator 5558 dan 5560 dengan tampilan seperti pada Gambar P8.9.
Gambar 8.9 Tampilan Hasil Kirim SMS
96
Praktikum 9 Preference 9
Praktikum 9: Preference
9.1 Tujuan 1. Memahami cara menyimpan data sederhana dengan menggunakan Preference
9.2 Tugas Pendahuluan 1. Jelaskan apa saja Preference API yang dapat digunakan dan jelaskan pula perbedaan dari masing – masing cara tersebut.
9.3 Percobaan 9.3.1 Percobaan 1: Menyimpan data dengan SharedPreference Object Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement huruf tebal pada main.xml
97
Langkah 3: Tambahkan statement huruf tebal pada MainActivity.java
98
Langkah 4 : Ketikkan kode berikut ini pada class MainActivity.java
99
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android
100
Langkah 5: Masukkan beberapa text pada EditText view ubah ukuran font dengan menggeser SeekBar view. Kemudian tekan tombol Save
Gambar 9.1 Contoh Tampilan
Langkah 6: Kembali ke eclipse dan Tekan F11 untuk mendebug aplikasi, lihat output apa yang ditampilkan.
9.3.2 Percobaan 2: Saving/Retrieving a SharedPreference Object holding UI user choices Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
101
Langkah 3: Tambahkan statement berikut pada MainActivity.java
102
103
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android
104
Langkah 5: Tekan tombol Pref Fancy UI untuk melihat perubahan dan tekan Pref Simple UI, lihat perubahan yang terjadi.
Gambar 9.2 Simple UI
Langkah 6: Matikan aplikasi dan jalankan kembali, maka tampilan akan memperlihatkan state terakhir tampilan yang dipilih
9.3.3 Percobaan 3: Saving / Retrieving a SharedPreference Object containing ‘business’ data Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
105
Langkah 3: Tambahkan statement berikut pada MainActivity.java
106
107
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Aplikasi akan muncul dan menampilkan text default yang disimpan di SharedPreference 108
Gambar 9.3 Default Text
Langkah 5: Matikan Aplikasi dan jalankan kembali dan menampilkan text baru yang disimpan di SharedPreference
Gambar 9.4 Text dari SharedPreference
Langkah 6: Lihat data yang disimpan pada SharedPreference melalui File Expolere pada DDMS Eclipse
109
Gambar 9.5 DDMS File Explorer
Langkah 7: Lihat data dengan menggunakan text editor atau browser
Gambar 9.6 Menggunakan Browser Untuk membaca file
9.4 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas, yang berisi analisa, penjelasan dan program masing – masing percobaan.
110
Praktikum 10 Files 10
Praktikum 10: Files
10.1 Tujuan 1. Memahami cara menyimpan data pada Internal dan Eksternal Storage
10.2 Tugas Pendahuluan 1. Baca materi mengenai storage pada Android.
10.3 Percobaan 10.3.1 Percobaan 1: Penyimpanan data pada Internal Storage Langkah 1: Buat project Android baru pada Eclipse
111
Gambar 10.1 Project Baru
Langkah 2: Tambahkan statement berikut pada main.xml
112
Langkah 3: Tambahkan statement huruf tebal pada MainActivity.java
113
114
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5: Masukkan beberapa text pada EditText view. Kemudian tekan tombol Save
Gambar 10.2 Input Text View
Langkah 6: Jika berhasil, akan muncul Toast berisi “File saved successfully”. Langkah 7: Tekan tombol Load, dan text yang disimpan akan muncul kembali di edittext.
115
10.3.2 Percobaan 2: Membaca Resource File Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Buat sebuah text pada notepad dan simpan dengan nama my_base_data.txt. Kemudian letakkan pada folder res project. Lihat Gambar dibawah.
Gambar 10.3 File pada resource
Langkah 3: Tambahkan statement pada MainActivity.java
116
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android. Jika berhasil, akan muncul Toast yang berisi text seperti yang pada file.
117
10.3.3 Percobaan 3: Membaca atau menulis Internal File Contoh berikut merupakan aplikasi yang dapat mengambil data dari tampilan dan menyimpannya pada memori internal Android. Ketika aplikasi dijalankan kembali, maka data terakhir yang disimpan akan diambil kembali. Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
Langkah 3: Tambahkan statement berikut pada MainActivity.java
118
119
Langkah 4: Tekan F11 untuk mendebug aplikasi pada emulator Android. Kemudian isikan text pada EditText. Text akan disimpan saat aplikasi pause
120
Gambar 10.4 Hasil Teks Yang Disimpan
Langkah 5: Kemudian periksa pada File explorer di DDMS Eclipse /data/data/app/files, akan muncul file.
Gambar 10.5 DDMS file explorer
10.3.4 Percobaan 4: Membaca atau menulis pada memori SD Card Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada AndroidManifest.xml
121
Langkah 3: Tambahkan statement berikut pada main.xml
Langkah 4: Tambahkan statement berikut pada MainActivity.java
122
123
Langkah 5: Tekan F11 untuk mendebug aplikasi pada emulator Android. Kemudian isikan text pada EditText.
124
Gambar 10.6 Hasil Aplikasi
Langkah 6: Kemudian berturut turut tekan tombol Write SD File untuk menyimpan, tombol Clear screen dan tombol Read SD File untuk membaca file yang disimpan tadi.
10.4 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas, yang berisi analisa, penjelasan dan program masing – masing percobaan.
125
Praktikum 11 Databases 11
Praktikum 11: Databases
11.1 Tujuan 1. Memahami pengertian SQL Database 2. Memahami penggunaan SQL Database
11.2 Tugas Pendahuluan 1. Pelajari Dasar SQLite.
11.3 Percobaan 11.3.1 Percobaan 1 : Membuat table dan insert field pada Android Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
126
android:text="@string/hello" />
Langkah 3 : Lengkapi statement berikut pada class java MainActivity package com.data; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter { public static final String KEY_ROWID = "_id"; public static final String KEY_ISEBN = "isbn"; public static final String KEY_TITLE = "title"; public static final String KEY_PUBLISHER ="publisher"; public static final String TAG = "DBAdapter"; private static final String DATABASE_NAME ="books"; private static final String DATABASE_TABLE ="titles"; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = " create table titles (_id integer primary key autoincrement, "+ "isbn text not null, title text not null," + "publisher text not null);"; private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db;
127
public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context){ super(context, DATABASE_NAME, null , DATABASE_VERSION); } public void onCreate(SQLiteDatabase db){ db.execSQL(DATABASE_CREATE); } public void onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion){ Log.w(TAG, "Upgrading database from version" + oldVersion + "to" + newVersion +", which will destroy all old data"); db.execSQL("Drop table if exist titles"); onCreate(db); } } public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } public void close() { DBHelper.close(); } public long insertTitle(String isbn, String title, String publisher){ ContentValues initialValues = new ContentValues(); initialValues.put(KEY_ISEBN, isbn); initialValues.put(KEY_TITLE, title); initialValues.put(KEY_PUBLISHER, publisher);
128
return db.insert(DATABASE_TABLE, null, initialValues); } public boolean delete(long rowid){ return db.delete(DATABASE_TABLE, KEY_ROWID + "=" +rowid, null) >0; } public Cursor getAllTitles(){ return db.query(DATABASE_TABLE, new String[]{ KEY_ROWID, KEY_ISEBN, KEY_TITLE, KEY_PUBLISHER}, null, null,null, null, null); } public Cursor getTitle(long rowId) throws SQLException{ Cursor mCursor = db.query(true, DATABASE_TABLE, new String[]{ KEY_ROWID, KEY_ISEBN, KEY_TITLE, KEY_PUBLISHER}, KEY_ROWID + "="+ rowId, null, null,null, null, null); if (mCursor != null){ mCursor.moveToFirst(); }return mCursor; } public boolean updateTitle(long rowId, String isbn, String title, String publisher){ ContentValues args = new ContentValues(); args.put(KEY_ISEBN, isbn); args.put(KEY_TITLE, title); args.put(KEY_PUBLISHER, publisher); return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null)>0; }
129
}
Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.data" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="10" />
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka akan muncul outputnya
130
Gambar 11.1 Tampilan Awal
Langkah 7 : Database akan langsung dibuat, buka SQLiteStudio browser :
131
Gambar 11.2 Tampilan SQLite Admin
11.3.2 Percobaan 2 : Membuat database dengan SQLHelper Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
132
<EditText android:id="@+id/editText_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:phoneNumber="true" > <EditText android:id="@+id/editText_name" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/but_in" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_inClick" android:text="Add" > <Button android:id="@+id/but_Edit" android:layout_width="wrap_content"
133
android:layout_height="wrap_content" android:onClick="but_EditClick" android:text="Edit" > <Button android:id="@+id/but_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_DelClick" android:text="Delete" >
Langkah 3 : Buatlah sebuah class xml lagi, beri nama view2.xml
134
android:id="@+id/number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="myNumber" >
Langkah 4 : Lengkapi statement berikut pada class java MainActivity import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.AdapterView.OnItemClickListener; public class usingSQLHelper extends Activity { mySqlHelper dbHelper; private EditText ed_num; private EditText ed_name; protected Cursor cursor; private int id=‐1; protected ListAdapter adapter; protected ListView numberList; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.ed_num = (EditText) this.findViewById(R.id.editText_num); this.ed_name = (EditText) this.findViewById(R.id.editText_name); this.numberList = (ListView) this.findViewById(R.id.ListView01); dbHelper = new mySqlHelper(this); numberList.setSelected(true);
135
numberList.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView> arg0, View arg1, int arg2, long arg3) { SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM data",null); cursor.moveToPosition(arg2); ed_num.setText(cursor.getString(1)); ed_name.setText(cursor.getString(2)); id=cursor.getInt(0); }}); view(); } private void addData(String num,String name) { SQLiteDatabase db = dbHelper.getWritableDatabase(); try{ db.execSQL("insert into "+ mySqlHelper.TABLE +" values(null,'"+num+"','"+name+"')"); } catch(Exception e) { ed_num.setText(e.toString()); } } public void but_inClick(View v) { addData(ed_num.getText().toString(),ed_name.getText().toString()); view(); } public void but_DelClick(View v) { SQLiteDatabase db = dbHelper.getWritableDatabase(); try{ if(id!=‐1) { db.execSQL("delete from "+ mySqlHelper.TABLE +" where number='" +ed_num.getText().toString()+ "'"); view(); } }
136
catch(Exception e) { ed_num.setText(e.toString()); } } public void but_EditClick(View v) { SQLiteDatabase db = dbHelper.getWritableDatabase(); try{ if(id!=‐1) { db.execSQL("update data set number='"+ed_num.getText().toString()+"',name='"+ed_name.getText().to String()+"' where _id="+id); view(); } } catch(Exception e) { ed_num.setText(e.toString()); } } private void view() { SQLiteDatabase db = dbHelper.getReadableDatabase(); try{ cursor = db.rawQuery("SELECT * FROM data",null); adapter = new SimpleCursorAdapter( this, R.layout.view2, cursor, new String[] {"number","name"}, new int[] {R.id.number,R.id.name}); numberList.setAdapter(adapter);} catch(Exception e) { ed_num.setText(e.toString()); } } }
137
Langkah 5 : Kemudian, buatlah sebuah class java baru, beri nama mySqlHelper.java import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class mySqlHelper extends SQLiteOpenHelper{ private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; // Table name public static final String TABLE = "data"; // Columns public static final String number = "number"; public static final String name = "name"; public mySqlHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto‐generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { String sql = "create table " + TABLE + "( _id" + " integer primary key autoincrement, " + number + " text not null, " + name + " text not null);"; Log.d("Data", "onCreate: " + sql); db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto‐generated method stub } }
Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: 138
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.data" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="10" />
Langkah 6 :Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 7 : Maka akan muncul outputnya
139
Gambar 11.3 Tampilan Hasil
11.3.3 Percobaan 3 : Membuat database dengan ContentService Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
<EditText android:id="@+id/editText_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:phoneNumber="true" >
140
<EditText android:id="@+id/editText_name" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/but_in" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_inClick" android:text="Add" > <Button android:id="@+id/but_Edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_EditClick" android:text="Edit" > <Button android:id="@+id/but_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_DelClick" android:text="Delete" >
141
Langkah 3 : Buatlah sebuah class xml lagi, beri nama view2.xml
Langkah 4 : Lengkapi statement berikut pada class java MainActivity import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter;
142
import android.widget.AdapterView.OnItemClickListener; public class usingContentValues extends Activity { mySqlHelper dbHelper; private EditText ed_num; private EditText ed_name; private int id=‐1; protected Cursor cursor; protected ListAdapter adapter; protected ListView numberList; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.ed_num = (EditText) this.findViewById(R.id.editText_num); this.ed_name = (EditText) this.findViewById(R.id.editText_name); this.numberList = (ListView) this.findViewById(R.id.ListView01); numberList.setSelected(true); numberList.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView> arg0, View arg1, int arg2, long arg3) { SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM data",null); cursor.moveToPosition(arg2); ed_num.setText(cursor.getString(1)); ed_name.setText(cursor.getString(2)); id=cursor.getInt(0); }}); dbHelper = new mySqlHelper(this); view(); } private long addData(String num,String name) { SQLiteDatabase db = dbHelper.getWritableDatabase(); try{ ContentValues newValues = new ContentValues(); newValues.put("number", num);
143
newValues.put("name", name); db.insert(dbHelper.TABLE, null, newValues); } catch(Exception e) { ed_num.setText(e.toString()); } return 0; } public void but_inClick(View v) { addData(ed_num.getText().toString(),ed_name.getText().toString()); view(); } public void but_DelClick(View v) { SQLiteDatabase db = dbHelper.getWritableDatabase(); try{ if(id!=‐1) { db.delete(dbHelper.TABLE, "_id="+id, null); view(); } } catch(Exception e) { ed_num.setText(e.toString()); } } public void but_EditClick(View v) { SQLiteDatabase db = dbHelper.getWritableDatabase(); try{ if(id!=‐1) { ContentValues updateVal = new ContentValues(); updateVal.put("number", ed_num.getText().toString()); updateVal.put("name", ed_name.getText().toString()); db.update("data", updateVal, "_id="+id,null); view();
144
} } catch(Exception e) { ed_num.setText(e.toString()); } } private void view() { SQLiteDatabase db = dbHelper.getReadableDatabase(); try{ cursor = db.rawQuery("SELECT * FROM data",null); adapter = new SimpleCursorAdapter( this, R.layout.view2, cursor, new String[] {"number","name"}, new int[] {R.id.number,R.id.name}); numberList.setAdapter(adapter);} catch(Exception e) { ed_num.setText(e.toString()); } } }
Langkah 5 : Kemudian, buatlah sebuah class java baru, beri nama mySqlHelper.java import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class mySqlHelper extends SQLiteOpenHelper{ private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; // Table name public static final String TABLE = "data"; // Columns public static final String number = "number"; public static final String name = "name";
145
public mySqlHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto‐generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { String sql = "create table " + TABLE + "( _id" + " integer primary key autoincrement, " + number + " text not null, " + name + " text not null);"; Log.d("Data", "onCreate: " + sql); db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto‐generated method stub } }
Langkah 6 :lakukan editing pada AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stef.usingContentValues" android:versionCode="1" android:versionName="1.0">
<uses‐sdk android:minSdkVersion="7" />
Tekan F11 untuk mendebug aplikasi pada emulator Android 146
Langkah 7 : Maka akan muncul outputnya
Gambar 11.4 Tampilan Hasil
11.3.4 Percobaan 4 : Membuat database dengan Book Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
147
android:layout_width="wrap_content" android:layout_height="wrap_content" > <EditText android:id="@+id/Ed_search" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/But_Search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_SearchClick" android:text="SEARCH" >
Langkah 3 : Lengkapi statement berikut pada class java MainActivity import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.Button; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView;
148
public class Book extends Activity { mySqlHelper dbHelper; private TextView Jumlah; private EditText ed_Search; private TextView mytext; private Button but_Search; protected Cursor cursor; protected ListAdapter adapter; protected ListView List; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); dbHelper = new mySqlHelper(this); mytext=(TextView) findViewById(R.id.mytext); but_Search=(Button) findViewById(R.id.But_Search); ed_Search=(EditText) findViewById(R.id.Ed_search); List=(ListView) findViewById(R.id.ListView01); Jumlah=(TextView) findViewById(R.id.text_Jumlah); } public void but_SearchClick(View v) { try{ SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT _id,title,type FROM book where title LIKE '%" +ed_Search.getText().toString()+"%'" ,null); adapter = new SimpleCursorAdapter( this, android.R.layout.simple_list_item_2, cursor, new String[] {"title","type"}, new int[] {android.R.id.text1,android.R.id.text2}); List.setAdapter(adapter); cursor = db.rawQuery("select count(type) from book where title LIKE '%" +ed_Search.getText().toString()+"%'",null);
149
{ } } }
cursor.moveToFirst(); Jumlah.setText("Jumlah : "+cursor.getInt(0)); } catch(Exception e) mytext.setText(e.toString());
Langkah 4 : Buatlah sebuah activity lagi, beri nama MySqlHelper.java package com.stef.Book; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class mySqlHelper extends SQLiteOpenHelper{ private static final String DATABASE_NAME = "database.db"; private static final int DATABASE_VERSION = 1; // Table name public static final String TABLE = "book"; // Columns public static final String title = "title"; public static final String type = "type"; public mySqlHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto‐generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { String sql = "create table " + TABLE + "( _id" + " integer primary key autoincrement, " + title + " text not null, " + type + " text not null);"; Log.d("Data", "onCreate: " + sql); db.execSQL(sql); ContentValues newValues = new ContentValues();
150
newValues.put("title", "Mengenal android"); newValues.put("type", "technology"); db.insert(TABLE, null, newValues); newValues = new ContentValues(); newValues.put("title", "Memasak dengan mudah"); newValues.put("type", "hoby"); db.insert(TABLE, null, newValues); newValues = new ContentValues(); newValues.put("title", "cerita anak sma"); newValues.put("type", "fiction"); db.insert(TABLE, null, newValues); newValues = new ContentValues(); newValues.put("title", "Memancing di danau"); newValues.put("type", "hoby"); db.insert(TABLE, null, newValues); newValues = new ContentValues(); newValues.put("title", "cinta membawa hati"); newValues.put("type", "fiction"); db.insert(TABLE, null, newValues); newValues = new ContentValues(); newValues.put("title", "belajar menari dengan kaset"); newValues.put("type", "hoby"); db.insert(TABLE, null, newValues); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto‐generated method stub db.execSQL("DROP TABLE IF EXISTS " + TABLE); // Create a new one. onCreate(db); } }
Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml:
151
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stef.Book" android:versionCode="1" android:versionName="1.0">
<uses‐sdk android:minSdkVersion="7" />
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka akan muncul outputnya
Gambar 11.5 Tampilan Hasil
152
11.4 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas, yang berisi analisa, penjelasan dan program masing – masing percobaan.
153
Praktikum 12 Internet Feeders 12
Praktikum 12: Internet Feeders
12.1 Tujuan 1. Memahami cara untuk membuat Internet Feeder
12.2 Tugas Pendahuluan 1. Pelajari Materi mengenai Internet Feeders
12.3 Percobaan a. Percobaan 1: Menampilkan RSS Feed NPR Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
>
154
Langkah
3
:
Buat
sebuah
class
XML
baru,
beri
nama
my_simple_list_items.xml
Langkah 4 : Lengkapi statement berikut pada class Main Activity package matos.internet; import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; public class AndroNPR extends Activity { ArrayAdapter<String> aa; ListView myListView; Context context; SingleNewsItem selectedNewsItem; String [] myUrlAddress= { "http://www.npr.org/rss/rss.php?id=1001", "http://www.npr.org/rss/rss.php?id=1003",
155
"http://www.npr.org/rss/rss.php?id=1004", "http://www.npr.org/rss/rss.php?id=1006", "http://www.npr.org/rss/rss.php?id=1007", "http://www.npr.org/rss/rss.php?id=1008", "http://www.npr.org/rss/rss.php?id=1012", }; String [] myUrlCaption= { "News Detik", "Video", "Era Muslim", "Dunia Muslim", "TEchno Zone", "Liputan 6", }; String [] myUrlAddress2= new String[myUrlAddress.length]; String [] myUrlCaption2 = new String[myUrlCaption.length]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context= getApplicationContext(); this.setTitle("NPR Headline News v0.0 "+ niceDate() ); myListView= (ListView)this.findViewById(R.id.myListView); myListView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView> _av, View _v, int _index, long _id) { String urlAddress= myUrlAddress[_index]; String urlCaption= myUrlCaption[_index]; //create an Intent to talk to Activity2 Intent NprNewsDetailsIntent= new Intent( AndroNPR.this, NprNewsDetails.class); Bundle myData= new Bundle(); myData.putString("urlAddress", urlAddress); myData.putString("urlCaption", urlCaption);
156
NprNewsDetailsIntent.putExtras(myData); startActivity(NprNewsDetailsIntent); } }); //bind main category list (Top News, ...) to the
//show list and get ready for user to click on a
int layoutID= R.layout.my_simple_list_item_1; aa= new ArrayAdapter<String>(this, layoutID,
myListView.setAdapter(aa); }//onCreate public static String niceDate() { DateFormatSymbols dfs= new DateFormatSymbols(); // to get short weekday‐month_nameString arrays String shortWeekdaysArray[] = dfs.getShortWeekdays(); String shortMonthArray[] = dfs.getShortMonths(); Calendar cal = Calendar.getInstance(Locale.US); int dd= cal.get(Calendar.DAY_OF_MONTH); int mm = cal.get(Calendar.MONTH); String mmText= shortMonthArray[mm]; int yy= cal.get(Calendar.YEAR); int wd = cal.get(Calendar.DAY_OF_WEEK); String wdText= shortWeekdaysArray[wd]; return( wdText+ " "+ mmText+ " "+ dd+ ", "+ yy); }// niceDate }// AndroNPR
thelistView category myUrlCaption);
Langkah 5 : Buatlah sebuah class Activity Java, beri nama NprNewsDetails : package matos.internet; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.DOMException; import org.w3c.dom.Document; import org.w3c.dom.Element;
157
import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.DialogInterface.OnClickListener; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class NprNewsDetails extends Activity { //a main category subject has already been selected by the user //(data <"urlCaption", "urlAddress"> comes in a bundle sent // by main, access web‐feed and show corresponding headlines ArrayList<SingleNewsItem> newsList= new ArrayList<SingleNewsItem>(); ArrayAdapter<String> aa; ListView myListView; String urlAddress= ""; String urlCaption= ""; SingleNewsItem selectedNewsItem; Context context= getApplication(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myListView= (ListView)this.findViewById(R.id.myListView); //create a local Intent handler (needed to process input parameters) Intent myLocalIntent= getIntent(); //grab the data bundle with all the pieces sent to us //it contains 1. url‐address and 2. caption‐text Bundle myBundle= myLocalIntent.getExtras(); urlAddress= myBundle.getString("urlAddress"); urlCaption= myBundle.getString("urlCaption"); //top caption for this screen String todayStr= AndroNPR.niceDate(); this.setTitle("NPR ‐"+ urlCaption+ " \t"+ todayStr); //clicking a line shows more about selected news item myListView= (ListView)this.findViewById(R.id.myListView); myListView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView> _av, View _v,
158
int _index, long _id) { selectedNewsItem= newsList.get(_index); showNiceDialogBox(selectedNewsItem, context); } }); }//onCreate @Override protected void onResume() { super.onResume(); try{ URL url= new URL(urlAddress); URLConnection connection; connection = url.openConnection(); HttpURLConnection httpConnection= (HttpURLConnection) connection; int responseCode= httpConnection.getResponseCode(); if(responseCode== HttpURLConnection.HTTP_OK) { InputStream in = httpConnection.getInputStream(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document dom= db.parse(in); Element docEle= dom.getDocumentElement(); // NodeListnl= docEle.getElementsByTagName("entry"); NodeList nl= docEle.getElementsByTagName("item"); if((nl!= null) && (nl.getLength() > 0)) { for(int i= 0; i< nl.getLength(); i++) { dissectNode(nl, i); }// for }// if }// if int layoutID= R.layout.my_simple_list_item_1; ArrayAdapter<SingleNewsItem> aaNews= new ArrayAdapter<SingleNewsItem>(this, layoutID, newsList); myListView.setAdapter(aaNews); } catch(MalformedURLException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); Toast.makeText(context, "Trouble!!!", 1).show(); } catch(ParserConfigurationException e) { e.printStackTrace(); } catch(SAXException e) { e.printStackTrace(); } }// onResume public void dissectNode(NodeList nl, int i){ try{ Element entry = (Element) nl.item(i); Element title = (Element) entry.getElementsByTagName(
159
"title").item(0); Element description = (Element) entry.getElementsByTagName( "description").item(0); Element pubDate= (Element) entry.getElementsByTagName( "pubDate").item(0); Element link = (Element) entry.getElementsByTagName( "link").item(0); String titleValue= title.getFirstChild().getNodeValue(); String descriptionValue=description.getFirstChild().getNodeValue(); String dateValue= pubDate.getFirstChild().getNodeValue(); String linkValue= link.getFirstChild().getNodeValue(); SingleNewsItem singleItem= new SingleNewsItem( dateValue,titleValue,descriptionValue, linkValue); newsList.add(singleItem); } catch(DOMException e) { e.printStackTrace(); } }//dissectNode public void showNiceDialogBox(SingleNewsItem selectedNewsItem, Context context){ //assemble a nice looking dialog box try{ final Uri myLink= Uri.parse(selectedNewsItem.getLink()); AlertDialog.Builder myBuilder= new AlertDialog.Builder(this); myBuilder .setIcon(R.drawable.ic_launcher) .setTitle(urlCaption) .setMessage( selectedNewsItem.getTitle() + "\n\n" + selectedNewsItem.getDescription() + "\n") .setPositiveButton("Close", null) .setNegativeButton("More", new OnClickListener() { public void onClick(DialogInterface dialog, int whichOne) { // use native web browsing Intent webIntent= new Intent( Intent.ACTION_VIEW, myLink); startActivity(webIntent); } })//setNegativeButton .show(); } catch(Exception e) { e.printStackTrace(); } }//showNiceDialogBox }//NprNewsDetails
160
Langkah 6 : Buatlah sebuah activity lagi, beri nama SingleNewsItems.java package matos.internet; import android.app.Activity; import android.os.Bundle; public class SingleNewsItem{ private String pubDate; private String title; private String description; private String link; public String getPubDate() { return pubDate; } public String getTitle() { return title;} public String getDescription(){ return description; } public String getLink() { return link; } public SingleNewsItem( String _pubDate, String _title, String _description, String _link) { pubDate= _pubDate; description= _description; title= _title; link= _link; } @Override public String toString() { return title; } }
Langkah 7 : Pada AndroidManifest.xml perhatikan setiap baris kodenya sebagai berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="matos.internet" android:versionCode="1" android:versionName="1.0.0">
161
<uses‐permission android:name="android.permission.INTERNET"/> <uses‐sdk android:minSdkVersion="8" /> <uses‐permission android:name="android.permission.SEND_SMS" >
Langkah 8 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 9 : Maka akan muncul output awal sebagai berikut :
Gambar 12.1 Tampilan Awal
Lakukan klk pada salah satu menu, misal [News Detik], maka outputnya :
162
Gambar 12.2 Tampilan Ketika Dipilih Salah Satu Berita
12.4 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas, yang berisi analisa, penjelasan dan program masing – masing percobaan.
163
Praktikum 13 Intent Filter 13
Praktikum 13: Intent Filter
13.1 Tujuan 1. Memahami cara penggunaan intent filter
13.2 Tugas Pendahuluan 1. Pelajari penggunaan intent filter pada Android
13.3 Percobaan 13.3.1 Percobaan 1: Dial Number dengan Intent Filter Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikkan statement berikut pada class main.xml
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/txtNumber" android:inputType="phone" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Dial" android:id="@+id/btnDial" />
164
Langkah 3 : Lengkapi statement berikut pada class java MainActivity package project.buku.intentfilter.filter1; 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.app.Activity; import android.content.Intent; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnDial = (Button)findViewById(R.id.btnDial); final EditText txtNumber (EditText)findViewById(R.id.txtNumber); btnDial.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto‐generated method stub Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+(txtNumber.getText().toString()))); startActivity(dialIntent); } }); } }
=
Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="project.buku.intentfilter.filter1" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="8" android:targetSdkVersion="10" />
165
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android
Gambar 13.1 Tampilan Awal
Langkah 6 : Maka akan muncul outputnya, kemudian klik pada button [Send SMS], isikan sebuah teks : 166
Langkah 7 : Isi sebuah nomor pada textbox, kemudian, klik pada button [Dial], maka akan muncul output berikut beserta beberapa action :
Gambar 13.2 Tampilan ketika aksi telpon dial
13.3.2 Percobaan 2 : Dial Number dengan Intent Filter Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Ketikkan statement berikut pada class main.xml
<Spinner android:id="@+id/spinner_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" /> <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/spinner_1" android:layout_alignParentLeft="true"
167
android:ems="10" /> <Button android:id="@+id/btnGO" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/spinner_1" android:layout_centerHorizontal="true" android:layout_marginTop="41dp" android:text="Pindah halaman sesuai pilihan" />
Langkah 3 : Lengkapi statement berikut pada class java MainActivity package project.buku.intentfilter.filter2; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.app.Activity; import android.app.SearchManager; import android.content.Intent; public class MainActivity extends Activity { String teks = ""; int pilihan = 0; Intent intent; String[] items = {"Telepon", "SMS", "Search di Google"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText param = (EditText)findViewById(R.id.editText1); Spinner spin = (Spinner)findViewById(R.id.spinner_1); Button btnGO = (Button)findViewById(R.id.btnGO); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);
168
adapter.setDropDownViewResource(android.R.layout.simple_spinner_drop down_item); spin.setAdapter(adapter); spin.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView> parent, View v, int position, long id) { // TODO Auto‐generated method stub pilihan = position; } @Override public void onNothingSelected(AdapterView> arg0) { // TODO Auto‐generated method stub param.setText(""); teks = ""; pilihan = 0; } }); btnGO.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto‐generated method stub teks = param.getText().toString(); if(pilihan == 0) intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+teks)); else if(pilihan == 1) intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:"+teks)); else if(pilihan == 2){ intent = new Intent(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY, teks); } startActivity(intent); } }); } }
Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: 169
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="project.buku.intentfilter.filter2" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="8" android:targetSdkVersion="10" />
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android 170
Langkah 6 : Maka akan muncul outputnya
Gambar 13.3 Tampilan No Dial
Langkah 7 : Isi sebuah nomor pada textbox, kemudian, klik pada button [Pindah Halaman Sesuai Pilihan], maka akan muncul output berikut :
Gambar 13.4 Tampilan ketika mendial telpon
171
Jika dipilih [Telepon], outputnya :
Gambar 13.5 Telpon dial dilakukan
Jika dipilih button [SMS], outputnya :
Gambar 13.6 Tampilan jika SMS dipilih
Jika dipilih [Search di Google], outputnya :
172
Gambar 13.7 Tampilan browser pencarian
13.4 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas, yang berisi analisa, penjelasan dan program masing – masing percobaan.
173
Workshop 14 Location Service 14
Praktikum 14: Location Service
14.1 Tujuan 1. Memahami Penggunaan Location Service
14.2 Tugas Pendahuluan 1. Pelajari materi tentang Location Based Service
14.3 Percobaan 14.3.1 Percobaan 1 : Menampilkan StreetView Langkah 1: Buat Android Project baru Langkah 2: Tambahkan statement berikut pada main.xml
Langkah 3 : Kemudian, ketikkan statement berikut pada MainActivity.java package buku.project.location1; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import android.os.Bundle;
174
import android.view.KeyEvent; public class MainActivity extends MapActivity { private MapController mapController; private MapView mMapView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.mapView); mapController=mMapView.getController(); //lokasi UKSW GeoPoint geo=new GeoPoint((int)(‐ 7.316811*1E6),(int)(110.495807*1E6)); mapController.setCenter(geo); mapController.setZoom(17); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //untuk mengganti mode if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { mMapView.setSatellite(true); mMapView.setStreetView(false); } else if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { mMapView.setSatellite(false); mMapView.setStreetView(true); } // TODO Auto‐generated method stub return super.onKeyDown(keyCode, event); } @Override protected boolean isRouteDisplayed() { // TODO Auto‐generated method stub return false; } }
Langkah 4 : Edit class AndroidManifest.xml menjadi seperti berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="buku.project.location1" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="8" android:targetSdkVersion="10" /> <uses‐permission android:name="android.permission.INTERNET" />
175
android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <uses‐library android:name="com.google.android.maps" />
Langkah 5: Tekan F11 untuk mendebug aplikasi pada emulator Android.
Langkah 6 : Maka akan muncul outputnya sebagai berikut :
Gambar 14.1 Tampilan Peta
14.3.2 Percobaan 2 : Menampilkan Street View dengan KeyEvent Langkah 1: Buat Android Project baru Langkah 2: Tambahkan statement berikut pada main.xml <menu xmlns:android="http://schemas.android.com/apk/res/android">
176
android:title="@string/menu_settings"/>
Langkah 3 : Kemudian, ketikkan statement berikut pada MainActivity.java import import import import import import
com.google.android.maps.GeoPoint; com.google.android.maps.MapActivity; com.google.android.maps.MapController; com.google.android.maps.MapView; android.os.Bundle; android.view.KeyEvent;
public class MainActivity extends MapActivity { Private MapController mapController; privateMapView mMapView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.map_view); mapController=mMapView.getController(); //lokasi UKSW GeoPoint geo=new GeoPoint((int)(7.316811*1E6),(int)(110.495807*1E6)); mapController.setCenter(geo); mapController.setZoom(17); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //untuk mengganti mode if(keyCode == KeyEvent.KEYCODE_0) { mMapView.setSatellite(true); } else if(keyCode == KeyEvent.KEYCODE_1) { mMapView.setSatellite(false); } // TODO Auto-generated method stub return super.onKeyDown(keyCode, event); } @Override Protected Boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
Langkah 4 : Edit class AndroidManifest.xml menjadi seperti berikut : <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="project.buku.lbs.cobalbs" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8"
177
android:targetSdkVersion="10"/> <uses-permission android:name="android.permission.INTERNET">
<uses-library android:name="com.google.android.maps"android:required="true">
Langkah 5: Tekan F11 untuk mendebug aplikasi pada emulator Android.
Langkah 6 : Maka akan muncul outputnya sebagai berikut :
Gambar 14.2 Tampilan Peta dengan Street View
Langkah 7 : View dari output ini bisa berubah jika ditekan tombol 0 maupun satu pada keyboard.
178
jika ditekan [0]
jika ditekan [1]
Gambar 14.3 Tampilan pilhan street view atau tidak
14.4 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas, yang berisi analisa, penjelasan dan program masing – masing percobaan.
179
Workshop 15 MapViews 1 15
Praktikum 15: MapViews 1
15.1 Tujuan 1. Memahami cara penggunaan MapView
15.2 Tugas Pendahuluan 1. Pelajari materi mengenai MapView dan Overlay
15.3 Percobaan 15.3.1 Percobaan 1: Menampilkan Google Maps Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
Langkah 3 : Lengkapi statement berikut pada class java MainActivity package com.ai.lbs; import android.app.Activity;
180
import com.google.android.maps.MapActivity; import android.os.Bundle; public class LBS1Activity extends MapActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected boolean isRouteDisplayed(){ return false; } }
Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.lbs" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="8" />
<uses‐library android:name="com.google.android.maps"/> <uses‐permission android:name="android.permission.INTERNET" >
permission>
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka, akan muncul outputnya sebagai berikut : 181
Gambar 15.1 Tampilan Mapview
15.4 Percobaan 2: Menampilkan Zoom Control pada Map Langkah 1: Gunakan project MapView sebelumnya Langkah 2 : Lengkapi statement berikut pada class java MainActivity package com.ai.lbs; import android.app.Activity; import com.google.android.maps.MapActivity; import android.os.Bundle; public class LBS1Activity extends MapActivity { /** Called when the activity is first created. */
MapView mapView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Zoom control
mapView = (MapView)findViewById(R.id.mapView); mapView.setBuiltInZoomControls(true); } @Override protected boolean isRouteDisplayed(){ return false; } }
182
Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.lbs" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="8" />
<uses‐library android:name="com.google.android.maps"/> <uses‐permission android:name="android.permission.INTERNET" >
permission>
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka, akan muncul outputnya sebagai berikut :
Gambar 15.2 Tampilan Map denga Zoom Control
183
15.4.1 Percobaan 3 : Merubah View pada Map Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
Langkah 3 : Lengkapi statement berikut pada class java MainActivity package com.ai.lbs; import android.app.Activity; import com.google.android.maps.MapActivity; import android.os.Bundle; public class LBS1Activity extends MapActivity { /** Called when the activity is first created. */
MapView mapView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Zoom control
mapView = (MapView)findViewById(R.id.mapView); mapView.setBuiltInZoomControls(true); mapView.setSatellite(true); } @Override protected boolean isRouteDisplayed(){ return false; } }
Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml:
184
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.lbs" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="8" />
<uses‐library android:name="com.google.android.maps"/> <uses‐permission android:name="android.permission.INTERNET" >
permission>
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka, akan muncul outputnya sebagai berikut :
Gambar 15.3 Merubah View pada Map
185
15.5 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas, yang berisi analisa, penjelasan dan program masing – masing percobaan.
186
Praktikum 16 MapViews 2 16
Praktikum 16: MapViews 2
16.1 Tujuan 1. Memahami cara penggunaan MapView lebih lanjut
16.2 Tugas Pendahuluan 1. Pelajari Overlay pada Materi Teori
16.3 Percobaan 16.3.1 Percobaan 1: Menampilkan Location Data Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
Langkah 3 : Lengkapi statement berikut pada class java MainActivity package com.jj; import java.io.IOException; import java.util.List; import java.util.Locale;
187
import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Point; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.view.KeyEvent; import android.view.MotionEvent; import android.widget.Toast; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; public class LbsActivity extends MapActivity { MapView mapView; //navigate the map to display spesific location MapController mc; GeoPoint p; private LocationManager lm; private LocationListener locationListener; // adding markers to the Map class MapOverlay extends com.google.android.maps.Overlay{ public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when){ super.draw(canvas, mapView, shadow); // translate the GeoPoint to screen pixels Point screenPts = new Point(); mapView.getProjection().toPixels(p, screenPts); // add the marker Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.images2); canvas.drawBitmap(bmp, screenPts.x, screenPts.y‐ 50, null); return true; }
188
// geting the location that was touched public boolean onTouchEvent(MotionEvent event, MapView mapView){ if (event.getAction()==1){ GeoPoint p = mapView.getProjection().fromPixels( (int) event.getX(), (int)event.getY()); /* Toast.makeText(getBaseContext(), "Location: " +p.getLatitudeE6() /1E6 +","+ p.getLongitudeE6() /1E6, Toast.LENGTH_SHORT).show(); */ //Geocoding and Reverse Geocoding Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); try { List
addresses = geoCoder.getFromLocation(p.getLatitudeE6()/1E6, p.getLongitudeE6()/1E6, 1); String add = ""; if (addresses.size() >0){ for (int i=0; i
189
// changing views //mapView.setSatellite(true); // mapView.setStreetView(true); // mendisplay trafic conditions on the map // mapView.setTraffic(true); //navigate themap to display spisific location mc = mapView.getController(); //navigate to a point first String coordinates[] = {"1.352566007" , "103.78921587"}; double lat = Double.parseDouble(coordinates[0]); double lng = Double.parseDouble(coordinates[1]); p = new GeoPoint( (int)(lat * 1E6), (int)(lng * 1E6)); mc.animateTo(p); mc.setZoom(13); // use the locationmanager class to obtain location data /* lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); locationListener = new MyLocationListener(); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0 ,0 , locationListener); */ // add a location marker MapOverlay mapOverlay = new MapOverlay(); List listOverlays = mapView.getOverlays(); listOverlays.clear(); listOverlays.add(mapOverlay); mapView.invalidate(); } private class MyLocationListener implements LocationListener{ public void onLocationChanged(Location loc) { // TODO Auto‐generated method stub if(loc != null){ Toast.makeText(getApplicationContext(), "Location changed : List : "+ loc.getLatitude()+ "Lng : " +loc.getLongitude(), Toast.LENGTH_SHORT).show(); } p = new GeoPoint((int) (loc.getLatitude() * 1E6), (int)(loc.getLongitude() * 1E6));
190
mc.animateTo(p); mc.setZoom(18); // add a location marker MapOverlay mapOverlay = new MapOverlay(); List listOfOverlays = mapView.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(mapOverlay); } public void onProviderDisabled(String provider) { // TODO Auto‐generated method stub } public void onProviderEnabled(String provider) { // TODO Auto‐generated method stub } public void onStatusChanged(String provider, int status, Bundle extras){ // TODO Auto‐generated method stub } } // zoom in and out public boolean onKeyDown(int keyCode, KeyEvent event){ // untuk menghendle tombol aktiviti MapController mc = mapView.getController(); switch(keyCode){ case KeyEvent.KEYCODE_3: mc.zoomIn(); break; case KeyEvent.KEYCODE_1: mc.zoomOut(); break; } return super.onKeyDown(keyCode, event); } protected boolean isRouteDisplayed(){ return false; } }
Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.jj" android:versionCode="1" android:versionName="1.0" >
191
<uses‐sdk android:minSdkVersion="10" /> <uses‐library android:name="com.google.android.maps"/> <uses‐sdk android:minSdkVersion="10"/> <uses‐permission android:name="android.permission.INTERNET">
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka, akan muncul outputnya sebagai berikut :
Gambar 16.1 Menampilkan Location Data
192
16.3.2 Percobaan 2: Membuat MapView Overlays Langkah 1: Buatlah sebuah project Android baru Langkah 2 : Ketikkan statement berikut pada class main.xml
Langkah 3 : Lengkapi statement berikut pada class java MainActivity package com.ai.posttest; import java.util.List; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; import android.app.Activity; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.telephony.SmsManager; import android.view.View; import android.widget.Button; public class PostTestLBSActivity extends MapActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mapView = (MapView)findViewById(R.id.mapView); mapView.setBuiltInZoomControls(true); List mapOverlays = mapView.getOverlays(); Drawable drawable=this.getResources().getDrawable(R.drawable.emo_im_cool);
193
HelloItemizedOverlay itemizedOverlay = new HelloItemizedOverlay(drawable, this); //tambah marker GeoPoint point = new GeoPoint(19240000, ‐99120000); OverlayItem overlayitem = new OverlayItem(point, "Hello Ai!", "I'm in Mexico City"); itemizedOverlay.addOverlay(overlayitem); GeoPoint point2 = new GeoPoint(35410000, 139460000); OverlayItem overlayitem2 = new OverlayItem(point2, "Hello Ai!", "I'm in Japan"); itemizedOverlay.addOverlay(overlayitem2); GeoPoint point3 = new GeoPoint(386814135, ‐96496501); OverlayItem overlayitem3 = new OverlayItem(point3, "Hello Ai!", "I'm in ..."); itemizedOverlay.addOverlay(overlayitem3); GeoPoint point4 = new GeoPoint(561303660, ‐1063467710); OverlayItem overlayitem4 = new OverlayItem(point4, "Hello Ai!", "I'm in ..."); itemizedOverlay.addOverlay(overlayitem4); GeoPoint point5 = new GeoPoint(399042140, 1164074130); OverlayItem overlayitem5 = new OverlayItem(point5, "Hello Ai!", "I'm in ..."); itemizedOverlay.addOverlay(overlayitem5); mapOverlays.add(itemizedOverlay); } protected boolean isRouteDisplayed(){ return false; } }
Langkah
4
:
Kemudian,
buatlah
sebuah
activity
baru,
beri
nama
HelloItemizedOverlay : package com.ai.posttest; import java.util.ArrayList; import android.app.AlertDialog; import android.content.Context; import android.graphics.drawable.Drawable; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; public class HelloItemizedOverlay extends ItemizedOverlay { private ArrayList mOverlays = new ArrayList();
194
public HelloItemizedOverlay(Drawable defaultMarker, Context context) { super (boundCenterBottom(defaultMarker)); Context mContext = context; } protected boolean onTap(int index, Context mContext){ OverlayItem item = mOverlays.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; } public void addOverlay(OverlayItem overlay){ mOverlays.add(overlay); populate(); } @Override protected OverlayItem createItem(int i) { // TODO Auto‐generated method stub return mOverlays.get(i); } @Override public int size() { // TODO Auto‐generated method stub return mOverlays.size(); } }
Lakukan
editing
pada
kode
yang
dicetak
tebal
berikut
pada
class
AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ai.posttest" android:versionCode="1" android:versionName="1.0" > <uses‐sdk android:minSdkVersion="8" /> <uses‐library android:name="com.google.android.maps"/>
195
<uses‐permission android:name="android.permission.INTERNET"/>
Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka, akan muncul outputnya sebagai berikut :
Gambar 16.2 Membuat MapView Overlays
16.4 Laporan Resmi Buat laporan resmi tentang penjelasan mengenai percobaan diatas, yang berisi analisa, penjelasan dan program masing – masing percobaan.
196
DAFTAR PUSTAKA 1. Android Programming Tutorials, 3rd Edition, Mark L Murphy, CommonsWare, LLC, 2009 2. Beginning Android 4, Grant Allen & Mark Murphy, Apress, 2011 3. Beginning Android 4 Application Development, Wei-meng Lee, Wrox, 2012 4. The Busy Coder's Guide to Advanced Android Development, Mark L. Murphy, CommonsWare, LLC, 2009 5. Head First Android Development, Jonathan Simon, O'Reilly Media, 2011
197