MODUL PRAKTIKUM PEMROGRAMAN BERGERAK
SEMESTER GENAP
Dosen Pengampu Yusfrizal, M. Kom
Ratih Puspa Dini, ST., M. Kom Kristina Annatasia Br. Sitepu, M.Kom
PROGRAM STUDI TEKNIK INFORMATIKA STMIK KAPUTAMA BINJAI
T.A. 2021 / 2022
1
KATA PENGANTAR
Dengan mengucap syukur Alhamdulillah, akhirnya modul praktikum Pemrograman Bergerak untuk mahasiswa Teknik Informatika selesai di kerjakan, semoga bermanfaat bagi mahasiswa dan civitas akademika KAPUTAMA Binjai.
Modul ini dirancang untuk selalu dinamis mengikuti schedul tatap muka dosen di kelas, sehingga apa yang disampaikan di kelas akan di pertajam lagi di kelas praktikum.
Dengan mengikuti step-step di modul ini secara tertip dan terurut, diharapkan mahasiswa akan memahami tentang mata kuliah ini dan bisa diimplementasikan dalam kehidupan akademis untuk menunjang keberhasilan mahasiswa.
Keberhasilan mahasiswa sangat di pengaruhi oleh sikap dan perilaku mahasiswa sendiri dalam mengikuti proses belajar mengajar, dengan kedisiplinan yang tinggi serta di tunjang dengan aktifitas dalam mencari bahan rujukan lain baik itu di perpustakaan, internet maupun sharing dengan teman.
Apabila dalam kegiatan praktikum, praktikan menemukan kesulitas dan atau kekurangan dalam modul ini diharapkan segera memberitahukan kepada asisten pendamping atau dengan dosen pengampu matakuliah ini.
Demikian semoga modul ini bisa bermanfaat bagi kita semua. Amin.
Binjai, Pebruari 2022
Penyusun
2
PERTEMUAN KE : 1 PENGENALAN ANDROID
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu menginstall Eclipse Galileo dan Android SDK.
b. Mahasiswa mampu menginstall Emulator.
c. Mahasiswa mampu membuat aplikasi Hello World sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Perangkat berbasis android hanya mempunyai satu layar foreground. Normalnya saat menghidupkan android, yang pertama Kamu lihat adalah home. Kemudian bila Kamu menjalankan sebuah aplikasi catur, User Interfacenya (UI) akan menumpuk diatas layar sebelumnya (home). Kemudian bila melihat help-nya catur, maka UI help akan menimpa UI sebelumnya (catur), begitu seterusnya. Semua proses di atas direkam di application stack oleh sistem Activity manager. Menekan tombol back hanya kembali ke halaman sebelumnya, analoginya mirip dengan browser dimana ketika Kamu meng-klik tombol back browser akan kembali menampilkan halaman sebelumnya. Setiap User Interface diwakili oleh kelas Activity (Activity class). Setiap activity mempunyai siklus, dapat dilihat pada Gambar 1. Sebuah aplikasi dapat terdiri dari satu atau lebih activity yang diproses dalam Linux.
3 Siklus activity
Selama siklus ini berjalan, activity bisa mempunyai lebih dari 2 status seperti yang terlihat pada gambar 1.14. Kita tidak bisa mengontrol setiap status karena semuanya sudah ditangani oleh sistem. Namun kita akan mendapat pesan saat terjadi perubahan status melalaui method onXX(). Berikut penjelasan setiap status :
a. onCreate(Bundle), dipanggil saat pertama kali aplikasi dijalankan. Kita dapat menggunakan ini untuk deklarasi variabel atau membuat user interface.
b. onStart(), mengindikasikan activity yang ditampilkan ke pengguna (user).
c. onResume(), dipanggil saat applikasi kita mulai berinteraksi dengan pengguna. Disini sangat cocok untuk meletakkan animasi ataupun musik.
d. onPause(). dipanggil saat applikasi yang Kita jalankan kembali ke halaman sebelumnya atau biasanya karena ada activity baru yang dijalankan. Disini cocok untuk meletakkan algoritma penyimpanan (save).
e. onStop(), dipanggil saat aplikasi berjalan di belakang layar dalam waktu cukup lama.
f. onRestart(), activity kembali menampilkan user interface setelah status stop.
g. onDestroy(), sipanggil saat aplikasi benar-benar berhenti.
h. onSaveInstanceState(Bundle) Method ini mengijinkan activity untuk menyimpan setiap status intance. Misalnya dalam mengedit teks, kursor bergerak dari kiri ke kanan.
i. onRestoreInstanceState(Bundle), dipanggil saat activity kembali meng-inisialisasi dari status sebelumnya yang disimpan oleh onSaveInstanceState(Bundle).
Beberapa komponen aplikasi yang sangat penting seperti activities, intens, service, dan content providers :
a. Activity
Normalnya setiap activity menampilkan satu buah user interface kepada pengguna.
Misalnya sebuah activity menampilkan daftar menu minuman, kemudian pengguna dapat memilih satu jenis minuman. Contoh lainnya pada aplikasi sms, dimana satu activity digunakan untuk menulis pesan, activity berikutnya untuk menampilkan nomor kontak tujuan, atau activity lainnya digunakan untuk menampilkan pesan- pesan lama. Meskipun activity-activity diatas terdapat dalam satu aplikasi sms, namun masing-masing activity berdiri sendiri. Untuk pindah dari satu activity ke activity lainnya dapat melakukan suatu event misalnya tombol diklik atau melalui trigger tertentu.
4 b. Service
Service tidak memliki user interface, namun berjalan di belakang layar. Misalnya music player, sebuah activity digunakan untuk memilih lagu kemudian di-play. Agar music player bisa berjalan dibelakang aplikasi lain maka harus menggunakan service.
c. Intens
Intens adalah mekanisme untuk menggambarkan sebuah action secara detail seperti bagaimana cara mengambil sebuah poto.
d. Content Providers
Menyediakan cara untuk mengakses data yang dibutuhkan oleh suatu activity, misalnya kita menggunakan applikasi berbasis peta (MAP). Activity membutuhkan cara untuk mengakses data kontak untuk prosedur navigasi. Disinilah peran content providers.
e. Resource
Resource digunakan untuk menyimpan file-file non-coding yang diperlukan pada sebuah aplikasi misalnya file icon, file gambar, file audio, file video atau yang lain.
Gambar berformat JPG atu PNG sebuah aplikasi biasanya disimpan dalam folder res/drawable, icon applikasi disimpan dalam res/drawable-ldpi dan file audio disimpan dalam folder res/raw. File XML untuk membentuk sebuah user interface disimpan dalam folder res/layout.
4. LATIHAN
a. Menginstall Eclipse
Double-Click pada shortcut Eclipse.exe untuk menjalankan Eclipse
5
Atur konfigurasi Workspace
Jika anda bekerja dengan beberapa projectdianjurkan untuk menggunakan workspace yang berbeda untuk masing-masing project.
Tampilan Eclipse
b. Mengkonfigurasi lokasi SDK
Klik Window + Preferences, Klik pada Android, klik browse untuk tentukan lokasi SDK.
Pastikan muncul emulator untuk androidnya c. Lakukan setting AVD untuk emulator.
5. TUGAS
Demokan instalasi pada laptop kamu!
6
PERTEMUAN KE : 2 ANDROID LAYOUT
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu membuat layout pada pemrograman android.
b. Mahasiswa mampu membuat aplikasi Layout sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Alat Pengembangan Android berupa :
a. Java Development Kit (JDK) (www.java.com), adalah suatu produk dari Oracle Corporation untuk pengembang aplikasi Java pada Solaris, Linux, OS x atau Windows.
b. IDE Eclipse (www.eclipse.org), multi language IDE yang terdiri dari workspace dasar dan suatu system plug-in yang dapat diperluas (salah satunya ADT). Membutuhkan JDK
c. Android SDK, suatu software development kit yang memperbolehkan pengembang untuk membuat aplikasi, test, debug untuk platform Android. Membutuhkan JDK d. Android Development Tools (ADT), adalah suatu plugins untuk Eclipse yang mana
menyediakan suatu peralatan yang integrasi dengan IDE Eclipse.
Penyebaran Aplikasi Anda bisa melalui :
a. Melalui Google Play, buat account pada Google Play dengan account Google Anda, bayar biaya $25, upload aplikasi anda (apk, title dan description, application type, category, price, geography), dan jika segala lancar maka aplikasi anda akan dapat diakses pada Google Play beberapa hari kemudian.
b. Pelepasan melalui email, kirim email beserta attachment apk anda, ketika user membuka email anda dengan aplikasi android, maka mereka dapat menginstall dengan klik pada tombol install now.
7
c. Tempatkan apk pada website anda, dan sediakan link bagi pengunjung anda, ketika didownload akan terinstall otomatis jika user mengaktifkan fitur “allow installation of non-Market apps”
4. LATIHAN Linear Layout
Seperti apa tampilan Linear Layout?
8
9 5. TUGAS
Demokan hasil project di atas !
10
PERTEMUAN KE : 3 RELATIVE LAYOUT
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu membuat relative layout pada pemrograman android.
b. Mahasiswa mampu membuat aplikasi relative layout sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Secara umum sebuah project Android terdiri dari beberapa folder dan file utama yaitu:
a. Folder
src
gen
Android2.3.3 (tergantung pada target plaftform)
Assests
res, Folder res merupakan tempat dimana kita menempatkansegala sumber daya yang akan digunakan pada aplikasi seperti: Layout, Gambar (icon), String dan Nilai. Sumber daya ini digunakan pada saat pembuatan layout, class java maupun manifest.
b. File
AndroidManifest.xml, adalah file XML yang berisi informasi terkait dengan aplikasi anda seperti Activity dan Permission.
default.properties (otomatis dibuat ADT)
proguard.cfg (otomatis dibuat ADT)
R.java
File proguard.cfg akan digunakan pada saat anda melakukan build aplikasi pada “release mode”, dimana dilakukan proses shrinks, optimizes, dan obfuscates kode anda dengan menghilangkan kode yang tidak digunakan, menganti nama class, fields, dan method dengan nama semantik yang diobscure.
11 4. LATIHAN
RelativeLayout adalah sebuah layout dimana posisi dari sebuah komponen (simbol,text,dsb) letaknya bisa diatur terhadap komponen lainnya. Misalnya tombol “OK”
posisinya berada dibawah “EditText”, kemudian tombol “cancel” posisinya berada di sebelah kiri tombol “OK” dan dibawah “EditText”. Intinya, saling berkaitan antara posisi satu tombol dengan yang lain.
12 5. TUGAS
Demokan hasil project di atas !
13
PERTEMUAN KE : 4 TABLE LAYOUT
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu membuat table layout pada pemrograman android.
b. Mahasiswa mampu membuat aplikasi table layout sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Satuan pada Dimension : a. dp
Density-independent Pixels – Suatu satuan abstrak berdasarkan ukuran density layar fisik. Satuan ini relatif kepada 160 dpi (dots per inch) pada layar, pemakaian dp akan membuat tampilan konsistem pada peralatan yang memiliki jumlah pixel per inchi yang berbeda
b. sp
Scale-independent Pixels – Serupa dengan dp, direkomendasikan untuk pemakaian pada ukuran font.
c. pt
Points - 1/72 dari satu inchi pada ukuran fisik layar.
d. px
Pixels – Sesuai dengan ukuran pixel pada layar, unit ini tidak direkomendasi karena akan menyebabkan tampilan yang berbeda pada peralatan yang berbeda, karena peralatan yang berbeda dapat memiliki jumlah pixel per inchi yang berbeda pada layar.
e. mm
Millimeters – berdasarkan ukuran layar fisik.
f. in
Inches – berdasarkan ukuran layar fisik.
14 4. LATIHAN
15
16 5. TUGAS
Demokan hasil project di atas !
17
PERTEMUAN KE : 5 AUTOCOMPLETE TEXT
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu membuat aplikasi Autocomplete Text sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Autocomplete adalah daftar saran untuk dipilih saat kita sedang mengetik.
4. LATIHAN
18
19 PENJELASAN PROGRAM
Lihat dulu Main.xml khususnya baris 9-10, merupakan bagian yang menciptakan widget autocomplete. Widget ini memiliki beberapa atribut salah satu contohnya adalah baris12.
Atribut pada baris 12 bernilai 3, berfungsi untuk membatasi jumlah minimal huruf yang nanti dimasukkan. Dengan demikian, seorang user minimal harus memasukkan 3 huruf dulu baru kemudian muncul kata-kata rekomendasi. Sekarang kita focus ke activity AutocompleteSederhana. Saya bagi menjadi tiga blok
a. Baris 13-17 : deklarasi object textview, string dan autocompletetextView
b. Baris 24-28 : sinkronisasi object terhadap widget di layout xml berdasarkan id, sekaligus menempelkan method pada object edit.
c. Baris 31-43 : implementasi method TextWatcher
5. TUGAS
Demokan hasil project di atas !
20
PERTEMUAN KE : 6 DAN 7 CHECKBOX DAN RADIO BUTTON
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu menggunakan fasilitas checkbox dan radio button pada layout android.
b. Mahasiswa mampu membuat aplikasi chechbox dan radio button sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Suatu Activity mewakili satu layar tunggal sebagai UI. Masing-masing Activity berdiri sendiri. Suatu Aplikasi dapat terdiri dari beberapa Activity. Activity-activity bekerjasama membentuk user experience pada suatu aplikasi. Activity perlu didaftarkan pada Android- Manifest.xml. Activity Manager bertanggung jawab untuk creating, destroying, dan manage activities. Activity-activity dalam sistem diatur pada suatu activity stack. Ketika suatu activity dijalankan, dia akan ditempatkan pada posisi teratas di dalam stack dan menjadi activity yang sedang berjalan. Activity sebelumnya berada di bawahnya didalam stack, dan tidak akan kembali ke foreground sampai dengan Activity diatasnya berakhir.
21 4 State Activity, yaitu :
a. Jika suatu Activity berada di foreground dari layar (pada bagian teratas dari Stack), dia adalah aktif dan sedang Running.
b. Jika suatu Activity kehilangan fokus tetapi masih Visible (Tidak fullscreen atau Ada activity transparant lain diatasnya), maka dia sedang dalam kondisi pause. Suatu pause Activity masih hidup (tetap menangani state dan informasi serta tetap berada pada Window Manager), tetapi tetap dapat diakhiri oleh sistem jika berada dalam situasi kekurangan memori.
c. Jika suatu Activity benar - benar tidak kelihatan oleh aplikasi lainnya, dia adalah berada pada kondisi Stop, dia tetap mempertahankan semua state dan informasi tetao tidak Visible bagi pemakai, dan akan diakhiri oleh sistim jika berada dalam situasi kekurangan memori.
d. Jika suatu activity dalam kondisi Pause atau Stop, sistem dapat membuang Activity tersebut dari memori dengan meminta dia untuk selesai, atau dengan membuangnya dari memori, ketika dia ditampilkan kembali ke user, dia harus benar-benar mulai dari awal dan mengembalikan dirinya ke state sebelumnya.
4. LATIHAN
PRAKTIKUM 6
22
23 PRAKTIKUM 7
24
25
26 5. TUGAS
Demokan hasil project check box dan radio button di atas !
27
PERTEMUAN KE : 8 DAN 9 ANDROID WIDGET
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu membuat aplikasi Widget sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Widget adalah aspek penting dari penyesuaian layar utama. Anda dapat melihatnya sebagai tampilan "sekilas" dari data dan fungsi paling penting aplikasi yang dapat diakses langsung dari layar utama pengguna. Pengguna dapat memindahkan widget ke seluruh panel layar utama, dan, jika didukung, mengubah ukurannya untuk menyesuaikan jumlah informasi di dalam widget sesuai keinginan.
Jenis widget
Saat mulai merancang widget, tentukan jenis widget yang ingin Anda buat. Widget biasanya dikelompokkan ke dalam kategori berikut:
a. Widget informasi
Widget informasi biasanya menampilkan beberapa elemen informasi krusial yang penting bagi pengguna dan memantau perubahan informasi tersebut dari waktu ke waktu. Contoh widget informasi yang tepat adalah widget cuaca, widget jam, atau pemantau skor olahraga. Menyentuh widget informasi biasanya akan meluncurkan aplikasi terkait dan membuka tampilan detail informasi widget.
b. Widget koleksi
Seperti namanya, widget koleksi ditujukan khusus untuk menampilkan berbagai elemen dari jenis yang sama, seperti koleksi gambar dari aplikasi galeri, koleksi artikel dari aplikasi berita atau koleksi email/pesan dari aplikasi komunikasi. Widget koleksi biasanya berfokus pada dua kasus penggunaan: menjelajahi koleksi, dan membuka elemen koleksi hingga tampilan detailnya untuk digunakan. Widget koleksi dapat di-scroll secara vertikal.
28 c. Widget ListView
d. Widget GridView e. Widget kontrol
Tujuan utama widget kontrol adalah menampilkan fungsi yang sering digunakan, yang dapat dipicu oleh pengguna langsung dari layar utama tanpa perlu membuka aplikasi terlebih dahulu. Anggap widget ini sebagai remote kontrol untuk aplikasi.
Contoh umum widget kontrol adalah widget aplikasi musik yang memungkinkan pengguna memutar, menjeda, atau melewati lagu dari luar aplikasi musik yang sebenarnya. Interaksi dengan widget kontrol mungkin dapat membuka tampilan detail yang terkait, bergantung pada apakah fungsi widget kontrol membuat kumpulan data, seperti pada penggunaan widget penelusuran.
f. Widget campuran
Meskipun sebagian besar widget cenderung sesuai dengan tiga jenis yang dijelaskan di atas, banyak widget yang sebenarnya merupakan gabungan elemen dari berbagai jenis widget. Untuk keperluan perencanaan widget, pusatkan widget pada salah satu jenis dasar widget dan tambahkan elemen jenis lainnya jika diperlukan.
4. LATIHAN
PRAKTIKUM 8
29
30
31 PRAKTIKUM 9
Background Service
Background service adalah salah satu cara system untuk menjalankan fungsinya tanpa sepengetahuan user. Selama melakukan proses, tidak ada interaksi antara user dengan aplikasi. Implementasi paling sederhana adalah sound pada sebuah game, atau fungsi auto update pada aplikasi tertentu.
Pada kesempatan ini kita belajar implementasi background service menggunakan sound.
Idenya pada UI aplikasi disediakan 2 buah button yaitu start dan stop. Apabila button start diklik maka dari aplikasi akan terdengar suara music. Musik akan terus terdengar meskipun anda mengklik tombol back atau home. Lalu bagaimana untuk menghentikannya ? Anda harus kembali ke aplikasi ini kemudian mengklik button stop.
Perhatikan gambar berikut adalah tampilan aplikasi background service sederhana.
32 1. Buat project baru
Project name : ServiceBackground Build Target : Android 2.2 Application name : ServiceSederhana Package name : Com.serv.bg Create Activity : ServiceSederhana Min SDK version : 8
2. Siapkan dulu strings.xml
3. Kita buat layoutnya di main.xml
33
34 5. TUGAS
Demokan hasil project Android Widget di atas!
35
PERTEMUAN KE : 10 KOTAK DIALOG
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu membuat aplikasi Kotak Dialog sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Dalam sebuah aplikasi, kotak dialog merupakan sarana interaktif antara user dengan aplikasi itu sendiri. Misalnya jika kita ingin keluar dari aplikasi, biasanya muncul peringatan berisi pertanyaan “Are you sure to quit?” dan tersedia tombol “yes” dan
“cancel”. Pada bagian ini, kita mengimplementasikan 3 macam dialog yaitu Toast, ListDialog dan AlertDialog.
4. LATIHAN
Berikut contoh pembuatan aplikasinya : a. Buat sebuah project baru !
b. Tambahkan 3 string element pada Strings.xml !
36 c. Ubah layoutnya melalui Main.xml !
d. Buat file KotakDialog.java, lalu ketikkan coding berikut :
24:
25: keluar = (Button) findViewById(R.id.exitBtn);
26: keluar.setOnClickListener(this);
27:
28: tampilList = (Button)
29: findViewById(R.id.listDialogBtn);
30: tampilList.setOnClickListener(this);
31: } 32:
33: public void onClick(View clicked) { 34: switch (clicked.getId()) {
35: case R.id.listDialogBtn:
36: munculListDialog();
37: break;
37
38: case R.id.toastBtn:
39: Toast.makeText(this, "Kamu memilih Toast", 40: Toast.LENGTH_SHORT).show();
41: break;
42: case R.id.exitBtn:
43: exit();
44: break;
45: } 46: } 47:
48: private void munculListDialog() { 49: // TODO Auto-generated method stub
50: final CharSequence[] items = { "Es Teh", "Es Jeruk", 51: "Lemon Squash","Soft Drink" };
52:
53: AlertDialog.Builder kk = new AlertDialog.Builder(this);
54: kk.setTitle("Pilih Minuman");
55: kk.setItems(items, new DialogInterface.OnClickListener() { 56: public void onClick(DialogInterface dialog, int item) { 57: Toast.makeText(getApplicationContext(), items[item], 58: Toast.LENGTH_SHORT).show();
59: }
60: }).show();
61: } 62:
63: private void exit() {
64: AlertDialog.Builder builder = new AlertDialog.Builder(this);
65: builder.setMessage("Apakah Kamu Benar-Benar ingin keluar?") 66: .setCancelable(false)
67: .setPositiveButton("Ya", new 68: DialogInterface.OnClickListener() { 69: public void onClick(DialogInterface dialog, 70: int id) {
71: KotakDialog.this.finish();
72: } 73: })
74: .setNegativeButton("Tidak",new 75: DialogInterface.OnClickListener() { 76: @Override
77: public void onClick(DialogInterface dialog,
38
78: int arg1) {
79: // TODO Auto-generated method stub 80: dialog.cancel();
81: }
82: }).show();
83: } 84: }
e. Jalankan Program
PEMBAHASAN PROGRAM
a. Perhatikan KotakDialog.java, terdapat 5 blok yang memiliki fungsi masing – masing yaitu :
Baris 12-14 : deklarasi object Button.
Baris 19-30 : sinkronisasi object terhadap widget button pada layout main.xml sekaligus mengaktifkan button.
Baris 33-45 : fungsi pada masing-masing button.
Baris 48-61 : fungsi yang dipanggil ketika button, panggil list dialog diklik.
Baris 63-83 : fungsi yang dipanggil ketika button, keluar aplikasi diklik.
b. Activity ini mengimplementasikan class OnClickListener (baris 11-12). Class ini memiliki sebuah method onClick (baris 33-45) yang bertugas merespon button pada saat diklik. Didalam method onClick(), button direspon berdasarkan idnya melalui perulangan switch-case. Jika button pemilik id „listDialogBtn‟ diklik maka kemudian memanggil fungsi munculListDialog() (baris 58-61), jika button ber-id “toastBtn”
diklik, maka activity mengenerate sebuah toast, sedangkan jika yang diklik adalah button ber-id “exitBtn” maka yang dieksekusi adalah fungsi exit() (baris 63-83).
5. TUGAS
Demokan hasil project Kotak Dialog di atas !
39
PERTEMUAN KE : 11 FORM LOGIN
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu membuat aplikasi Form Login sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Dalam sebuah aplikasi, kotak dialog merupakan sarana interaktif antara user dengan aplikasi itu sendiri. Misalnya jika kita ingin keluar dari aplikasi, biasanya muncul peringatan berisi pertanyaan “Are you sure to quit?” dan tersedia tombol “yes” dan
“cancel”. Pada bagian ini, kita mengimplementasikan 3 macam dialog yaitu Toast, ListDialog dan AlertDialog.
4. LATIHAN
a. Buat Project android baru dengan aturan : Project Name : Aplikasi_NamaAnda Build Target : Android 2.2
Application Name : Aplikasi_NamaAnda Package Name : potensi.android.aplikasi Create Activity : MainActivity
Minimum SDK : 8
b. Bangun Tampilan Satu untuk fungsi Form Login di Layout main.xml :
40 Coding :
c. Tambahkan untuk Tampilan Dua, sebuah Layout dengan nama : content.xml Buat file xml baru : content.xml
41 Coding :
d. Buat kode program di MainActivity.java, Jika BENAR UserName = "NamaAnda"
dan Password = "OKE" maka tampilan pindah ke Tampilan DUA, jika SALAH Text Username dan Password di kosongkan kembali.
Coding :
42 e. Jalankan project.
5. TUGAS
Demokan hasil project Login !
43
PERTEMUAN KE : 12 dan 13 DATABASE SQLITE
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu membuat aplikasi Database Sqlite sederhana dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
SQLite merupakan embedded database yang sangat popular. Banyak perusahaan seperti adobe, apple, google, sun dan Symbian serta Mozilla, php dan python menggunakan SQLite. Android memasukkann SQLite ke dalam runtime Android, sehingga setiap aplikasi Android dapat memanfaatkan database SQLite. SQLite menggunakan dialek SQL untuk query (SELECT), manipulasi data (INSERT, dll), dan definisi data (CREATE TABLE, dll). Perbedaan utama SQLite dengan database SQL lainnya adalah dalam penulisan data. Ketika pembuatan table, dapat di tentukan tipe data untuk satu kolom.
Akan tetapi SQLite akan menggunakan itu sebagai petunjuk, admin dapat apapun dalam dalam suatu kolom, misal: data string di kolom integer dan sebaliknya. Selain itu juga terdapat beberapa fitur standar SQL yang tidak di support, antara lain: Foreign Key, Nested Transactions, Right Outer Join, Full Outer Join dan Alter Table. Selebihnya semua Fitur standar SQL didukung. Untuk membuat dan membuka database, salah satu cara menggunakan SQLiteOpenHelper. SQLiteOpenHelper memiliki 3 komponen, yaitu:
Contructor, Method onCreate(), dan Method onUpgrade().
4. LATIHAN
PRAKTIKUM 12
Kita akan membuat database hobi seseorang. Data dimasukkan melalui 2 buah edittext, kemudian tombol add dipakai untuk menyimpan data kedalam database sekaligus mengupdate tabel jika data berhasil disimpan.
44
45
46
47
48
Jika tidak ada error, maka aplikasi AndroidDatabaseSatu siap dijalankan.
PENJELASAN PROGRAM
Pada project database kita mempunyai kelas java DatabaseManager.java (bukan activity).
Kelas ini terdiri dari :
a. Deklarasi variable pada baris 14-26
b. Constructor DatabaseManager pada baris 28-32 c. subClass DatabaseOpenHelper pada baris 34-54 d. Method close pada baris 55-57
e. Method addRow pada baris 59-69
f. Method ambilSemuaBaris pada baris 71-94
49
Didalam cuntructor DatabaseManager, kita mendefinisikan subclass DatabaseOpenHelper dan menaruh method getWritableDatabase sehingga ketika project ini dijalankan database langsung diset agar bisa ditulisi data. Subclass DatabaseOpenHelper juga memiliki cuntroctor DatabaseOpenHelper yang didalamnya terdapat method super(). Method ini dipanggil untuk mengidedntifikasi nama dan versi database. Pada subclass ini juga terdapat method onCreate() untuk men-generate database jika sebelumnya tidak ada database yang sama dan juga method onUpdgrate() yang akan dieksekusi jika dijumpai database dengan versi lebih baru.
Method addRow bertugas untuk menambahkan data kedalam database. Di dalamnya terdapat class ContentValues(), dipakai untuk menyimpan sepasang data. Baris put(ROW_NAMA, nama) artinya menambahkan data yang dibawa oleh variable nama kedalam kolom nama. Method ambilSemuaBaris digunakan untuk membaca seluruh isi database. Data yang terbaca kemudian disimpan kedalam array bertingkat. Output dari method ini adalah data [_id,nama,hobi].
Berikutnya kita bahas listing dalam activity AndroidDatabaseSatu.java. Acitivy ini memiliki 4 method yaitu onCreate(), simpKamuta(),updateTable(), kosongkanField().
Semua method diawali dengan void karena tidak mempunyai nilai kembalian apapun.
Pada method simpKamuta(), kita memakai method addRow() milik class DatabaseManager untuk menambahkan data ke dalam database. Sedangkan di dalam method updateTable() kita memanggil method ambilSemuaBaris() untuk menampilkan data ke tabel. Method kosongkanField() dipakai untuk mengosongkan editteks kembali.
PRAKTIKUM 13
Pada praktikum ini, pemahaman database mengenai beberapa fitur seperti mengubah data dan menghapus data yang terdapat pada database. Lihat gambar di bawah ini :
50 Untuk praktikum lakukan langkah berikut ini :
a. Buat project baru dengan parameter sebagai berikut :
Project name : Nama Anda
Build Target : Android 2.2
Aplication name : DatabaseAndroidLanjutan
Package name : com.db.dua
Create Activity : DatabaseAndroidLanjutan
Min SDK version : 8
b. Ubah Strings.xml seperti berikut :
c. Buatlah layout Main.xml seperti ini :
51
52
53
d. Selanjutnya kita sedikit mengubah Databasemanager.java 1: package com.db.dua;
2:
3: import java.util.ArrayList;
4:
5: import android.content.ContentValues;
6: import android.content.Context;
7: import android.database.Cursor;
8: import android.database.sqlite.SQLiteDatabase;
9: import android.database.sqlite.SQLiteOpenHelper;
10: import android.util.Log;
11: import android.widget.Toast;
12:
13: public class DatabaseManager { 14:
15: private static final String ROW_ID = "_id";
16: private static final String ROW_NAMA = "nama";
17: private static final String ROW_HOBI = "hobi";
18:
19: private static final String NAMA_DB = "DatabaseAndroidDua";
private static final String NAMA_TABEL = "hobiku 20: private static final int DB_VERSION = 1;
21:
22: private static final String CREATE_TABLE = "create table " +
23: NAMA_TABEL+" (" + ROW_ID + " integer PRIMARY KEY autoincrement,"
24: + ROW_NAMA+ " text," + ROW_HOBI + " text)";
25:
26: private final Context context;
54 27: private DatabaseOpenHelper dbHelper;
28: private SQLiteDatabase db;
29:
30: public DatabaseManager(Context ctx) { 31: this.context = ctx;
32: dbHelper = new DatabaseOpenHelper(ctx);
33: db = dbHelper.getWritableDatabase();
34: } 35:
36: private static class DatabaseOpenHelper extends SQLiteOpenHelper {
37: public DatabaseOpenHelper(Context context) { 38: super(context, NAMA_DB, null, DB_VERSION);
39: } 40:
41: @Override
42: public void onCreate(SQLiteDatabase db) { 43: db.execSQL(CREATE_TABLE);
44: } 45:
46: @Override
47: public void onUpgrade(SQLiteDatabase db, int oldVer, int newVer) {
48: db.execSQL("DROP TABLE IF EXISTS " + NAMA_DB);
49: onCreate(db);
50: } 51: } 52:
53: public void close() { 54: dbHelper.close();
55: } 56:
57: public void addRow(String nama, String hobi) { 58:
55
59: ContentValues values = new ContentValues();
60: values.put(ROW_NAMA, nama);
61: values.put(ROW_HOBI, hobi);
62:
63: try {
64: db.insert(NAMA_TABEL, null, values);
65: } catch (Exception e) {
66: Log.e("DB ERROR", e.toString());
67: e.printStackTrace();
68: } 69: } 70:
71: public ArrayList<ArrayList<Object>> ambilSemuaBaris() { 72: ArrayList<ArrayList<Object>> dataArray = new
73: ArrayList<ArrayList<Object>>();
74: Cursor cur;
75: try {
76: cur = db.query(NAMA_TABEL, new String[] { ROW_ID, ROW_NAMA, 77: ROW_HOBI }, null, null, null, null, null);
78: cur.moveToFirst();
79: if (!cur.isAfterLast()) { 80: do {
81: ArrayList<Object> dataList = new ArrayList<Object>();
82: dataList.add(cur.getLong(0));
83: dataList.add(cur.getString(1));
84: dataList.add(cur.getString(2));
85: dataArray.add(dataList);
86: } while (cur.moveToNext());
87: }
88: } catch (Exception e) { 89: e.printStackTrace();
90: Log.e("DEBE ERROR", e.toString());
91: Toast.makeText(context, "gagal ambil semua baris:"+e.toString(),Toast.LENGTH_SHORT).show();
56 92: }
93: return dataArray;
94: } 95:
96: public ArrayList<Object> ambilBaris(long rowId) { 97:
98: ArrayList<Object> arrbaris = new ArrayList<Object>();
99: Cursor cursor;
100: try {
101: cursor = db.query(NAMA_TABEL, new String[] { ROW_ID,
102: ROW_NAMA,ROW_HOBI }, ROW_ID + "=" + rowId, null, null, null, 103: null,null);
104: cursor.moveToFirst();
105:
106: if (!cursor.isAfterLast()) { 107: do {
108: arrbaris.add(cursor.getLong(0));
109: arrbaris.add(cursor.getString(1));
110: arrbaris.add(cursor.getString(2));
111: } while (cursor.moveToNext());
112: String r = String.valueOf(arrbaris);
113: Toast.makeText(context, "haha" + r, 114: Toast.LENGTH_SHORT).show();
115: }
116: cursor.close();
117: } catch (Exception e) { 118: e.printStackTrace();
119: Log.e("error", e.toString());
120: Toast.makeText(context, "hhii" + e.toString(), 121: Toast.LENGTH_SHORT).show();
122: }
123: return arrbaris;
124: } 125:
57
126: public void updateBaris(long rowId, String nama, String hobi) { 127:
128: ContentValues cv = new ContentValues();
129: cv.put(ROW_NAMA, nama);
130: cv.put(ROW_HOBI, hobi);
131:
132: try {
133: db.update(NAMA_TABEL, cv, ROW_ID + "=" + rowId, null);
134: } catch (Exception e) { 135: e.printStackTrace();
136: Log.e("Db Error", e.toString());
137: } 138: } 139:
140: public void deleteBaris(long idBaris){
141: try {
142: db.delete(NAMA_TABEL, ROW_ID+"="+idBaris, null);
143: } catch (Exception e) { 144: e.printStackTrace();
145: Log.e("Error", e.toString());
146: } 147: } 148: }
e. Terakhir kita membuat activity DatabaseAndroidDua.java 1: package com.db.dua;
2:
3: import java.util.ArrayList;
4: import android.app.Activity;
5: import android.os.Bundle;
6: import android.util.Log;
7: import android.view.View;
8: import android.widget.Button;
9: import android.widget.EditText;
58 10: import android.widget.TableLayout;
11: import android.widget.TableRow;
12: import android.widget.TextView;
13: import android.widget.Toast;
14:
15: public class DatabaseAndroidDua extends Activity { 16: DatabaseManager dm;
17: EditText nama, hobi, GetId, updateNama, updateHobi,idDel;
18: Button addBtn, getIdBtn, updateBtn,delBtn;
19: TableLayout tabel4data;// tabel for data 20:
21: /** Called when the activity is first created. */
22: @Override
23: public void onCreate(Bundle savedInstanceState) { 24: super.onCreate(savedInstanceState);
25: setContentView(R.layout.main);
26:
27: dm = new DatabaseManager(this);
28: setupView();
29: fungsiBtn();
30: updateTable();
31: } 32:
33: public void setupView() {
34: tabel4data = (TableLayout) findViewById(R.id.tabel_data);
35: nama = (EditText) findViewById(R.id.inNama);
36: hobi = (EditText) findViewById(R.id.inHobi);
37: updateNama = (EditText) findViewById(R.id.inUpdateNama);
38: updateHobi = (EditText) findViewById(R.id.inUpdateHobi);
39: GetId = (EditText) findViewById(R.id.inGetId);
40: idDel=(EditText)findViewById(R.id.idDelete);
41:
42: addBtn = (Button) findViewById(R.id.btnAdd);
43: getIdBtn = (Button) findViewById(R.id.btnGetId);
59
44: updateBtn = (Button) findViewById(R.id.btnUpdate);
45: delBtn = (Button) findViewById(R.id.btnDel);
46: } 47:
48: public void fungsiBtn() {
49: addBtn.setOnClickListener(new View.OnClickListener() { 50: @Override
51: public void onClick(View v) { 52: simpKamuta();
53: kosongkanField();
54: } 55: });
56: getIdBtn.setOnClickListener(new View.OnClickListener() { 57: @Override
58: public void onClick(View b) { 59: ambilBaris();
60: } 61: });
62: updateBtn.setOnClickListener(new View.OnClickListener() { 63: @Override
64: public void onClick(View c) { 65: updateBaris();
66: kosongkanField();
67: } 68: });
69: delBtn.setOnClickListener(new View.OnClickListener() { 70: @Override
71: public void onClick(View d) {
72: // TODO Auto-generated method stub 73: deleteData();
74: kosongkanField();
75: } 76: });
77: }
60 78: protected void kosongkanField(){
79: nama.setText("");
80: hobi.setText("");
81: updateNama.setText("");
82: updateHobi.setText("");
83: GetId.setText("");
84: idDel.setText("");
85: } 86:
87: private void deleteData(){
88: dm.deleteBaris(Long.parseLong(idDel.getText().toString()));
89: updateTable();
90: } 91:
92: protected void updateBaris() {
93: dm.updateBaris(Long.parseLong(GetId.getText().toString()), updateNama.getText().toString(),
updateHobi.getText().toString());
94: updateTable();
95: } 96:
97: private void ambilBaris() { 98: try {
99: ArrayList<Object> baris;
100: baris =
101: dm.ambilBaris(Long.parseLong(GetId.getText().toString()));
102: updateNama.setText((String) baris.get(1));
103: updateHobi.setText((String) baris.get(2));
104: } catch (NumberFormatException e) { 105: e.printStackTrace();
106: Log.e("eror db", e.toString());
107: Toast.makeText(getBaseContext(), e.toString(), 108: Toast.LENGTH_LONG).show();
109: }
61 110: }
111:
112: protected void simpKamuta() { 113: try {
114: dm.addRow(nama.getText().toString(), 115: hobi.getText().toString());
116: updateTable();
117: } catch (Exception e) { 118: e.printStackTrace();
119: Toast.makeText(getBaseContext(),"gagal simpan,"+
120: e.toString(),Toast.LENGTH_LONG).show();
121: } 122: } 123:
124: protected void updateTable() {
125: while (tabel4data.getChildCount() > 1) { 126: tabel4data.removeViewAt(1);
127: }
128: ArrayList<ArrayList<Object>> data = dm.ambilSemuaBaris();//
129: for (int posisi = 0; posisi < data.size(); posisi++) { 130: TableRow tabelBaris = new TableRow(this);
131: ArrayList<Object> baris = data.get(posisi);
132:
133: TextView idTxt = new TextView(this);
134: idTxt.setText(baris.get(0).toString());
135: tabelBaris.addView(idTxt);
136:
137: TextView namaTxt = new TextView(this);
138: namaTxt.setText(baris.get(1).toString());
139: tabelBaris.addView(namaTxt);
140:
141: TextView hobiTxt = new TextView(this);
142: hobiTxt.setText(baris.get(2).toString());
143: tabelBaris.addView(hobiTxt);
62 144:
145: tabel4data.addView(tabelBaris);
146: } 147: } 148: }
f. PENJELASAN PROGRAM
Class AndroidManager.java. Disini kita menambahkan 3 method baru yaitu
Method deleteBaris() berfungsi untuk menghapus data. Terdapat pada baris 140- 148
Method ambilBaris() digunakan untuk mengambil data berdasarkan id. Terdapat pada baris 96-124
Method updateBaris() berfungsi untuk mengubah data pada baris tertentu.
Terdapat pada baris 126-138
Activity AndroidDatabaseDua.java, untuk menghapus data yaitu method deleteData() pada baris 87-90. Data dihapus berdasarkan kolom id. Misalkan id yang kamu masukkan bernilai 2 maka data yang dihapus adalah data pada baris 2. Nomor id diambil dari editteks idDel, kemudian dikirim ke method deleteBaris() miliki AndroidManager.java.
Untuk mengubah data pada table dibagi menjadi 2 tahap, pertama memanggil datanya dulu berdasarkan id kemudian data ditangkap dan ditampilkan ke editteks. Disinilah user bisa mengubah data nama dan hobi, kemudian setelah menekan tombol “update”, barulah method updateBaris() pada baris 92-95 bekerja menangkap isi editteks nama dan hobi kemudian dikirimkan ke method updateBaris() milik AndroidManager.java.
Terakhir memanggil method updateTable untuk meperbarui isi tabel.
5. TUGAS
Demokan hasil project Hello Android !
63
PERTEMUAN KE : 14
KAMUS BERSUARA BERBASIS ANDROID
1. TUJUAN PEMBELAJARAN
a. Mahasiswa mampu mengaplikasikan semua modul pada pratikum sebelumnya ke dalam aplikasi kamus bersuara.
b. Mahasiswa mampu membuat aplikasi Kamus Bersuara Berbasis Android dan melakukan kompilasi ke emulator dan perangkat mobile.
2. ALAT DAN BAHAN
a. Laptop atau Personal Computer (PC) b. Eclipse Galileo
3. MATERI
Salah satu cara untuk mempelajari bahasa adalah dengan menggunakan kamus. Tetapi masih banyak yang belum menguasai kamus terjemahan secara mendalam yang dikarenakan belum begitu paham dengan kosakata, arti dan cara pengucapan khususnya dalam bahasa Inggris yang ada pada kamus tersebut. Dengan adanya kemajuan teknologi mobile, dimungkinkan untuk dibuat sebuah kamus digital berbasis android yang dapat menggantikan fungsi dari Buku Kamus Terjemahan, dengan menyediakan kelebihan dan kemudahan dibandingkan dengan Buku Kamus Terjemahan. Seperti proses pencarian yang lebih mudah, dengan hanya memasukkan kata yang dicari, maka program akan mencari dan menampilkan arti dari kata tersebut secara otomatis tanpa harus mencarinya secara manual.
4. LATIHAN
Kita akan membuat project Kamus Bersuara seperti tampilan di bawah ini:
64 a) Membuat Project di Android
Siapkan project baru !
Ketik strings.xml seperti berikut :
Pada Layout, buat file kamus.xml seperti berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/androback_1" >
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Halaman-1"
/>
<TextView android:text="Inggris :" android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<AutoCompleteTextView android:text=""
android:id="@+id/txtInggris"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"/>
<Button android:text="Terjemahkan"
android:id="@+id/btnTerjemah"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="getTerjemahan" />
<Button android:text="Baca"
android:id="@+id/btnBaca"
65
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView android:text="Indonesia :" android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText android:text="" android:id="@+id/txtIndonesia"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false" />
<TextView android:text="Jawa :" android:id="@+id/TextView04"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText android:text="" android:id="@+id/txtJawa"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false" />
</LinearLayout>
Pada Layout, buat file kamus1.xml seperti berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/androback_1">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Halaman-2" />
<TextView android:text="Indonesia :" android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<AutoCompleteTextView android:text=""
android:id="@+id/txtIndonesia"
66 android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1" />
<Button android:text="Terjemahkan" android:id="@+id/btnTerjemah"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:onClick="getTerjemahan" />
<Button android:text="Baca"
android:id="@+id/btnBaca1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView android:text="Inggris :" android:id="@+id/TextView03"
android:layout_width="wrap_content" android:layout_height="wrap_content"
/>
<EditText android:text="" android:id="@+id/txtInggris"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:editable="false" />
<TextView android:text="Jawa :" android:id="@+id/TextView04"
android:layout_width="wrap_content" android:layout_height="wrap_content"
/>
<EditText android:text="" android:id="@+id/txtJawa"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:editable="false" />
</LinearLayout>
Pada Layout, buat file keterangan.xml seperti berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/androback_1"
67 >
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Halaman-3" />
<TextView
android:id="@+id/Label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:textSize="20px"/>
<TextView
android:id="@+id/Label"
android:layout_height="wrap_content"
android:text="Untuk menerjemahkan, ketikkan kata dalam Bahasa Inggris, lalu tekan tombol Terjemahkan untuk menerjemahkan kata ke Bahasa Indonesia dan Bahasa Jawa"
android:textSize="15px" android:layout_width="match_parent"/>
<TextView
android:id="@+id/Label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:textSize="20px"/>
<TextView
android:id="@+id/Label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Oleh :"
android:textSize="20px"/>
<TextView
android:id="@+id/Label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Nama Anda"
android:textSize="20px"/>
68 </LinearLayout>
Pada Layout, buat file tombol.xml seperti berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/androback_1">
<TextView
android:id="@+id/Label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" "
android:textSize="20px"/>
<TextView
android:id="@+id/Label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" "
android:textSize="20px"/>
<TextView
android:id="@+id/Label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" "
android:textSize="20px"></TextView>
<Button
android:text="Kamus Inggris-Indonesia-Jawa"
android:id="@+id/buttonKamus"
android:layout_width="fill_parent"
android:textSize="18px"
android:layout_height="55px">
69
</Button>
<Button
android:text="Kamus Indonesia-Inggris-Jawa"
android:id="@+id/buttonKamus1"
android:layout_width="fill_parent"
android:textSize="18px"
android:layout_height="55px">
</Button>
<Button
android:text="Keterangan"
android:id="@+id/buttonKet"
android:layout_width="fill_parent"
android:textSize="18px"
android:layout_height="55px">
</Button>
<Button
android:text="Keluar"
android:id="@+id/Button02"
android:layout_width="fill_parent"
android:textSize="18px"
android:layout_height="55px">
</Button>
</LinearLayout>
Membuat class CA.java : package com.kamus;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class CA extends Activity {
public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState);
70 setContentView(R.layout.tombol);
Button next = (Button) findViewById(R.id.buttonKamus);
next.setOnClickListener(new View.OnClickListener() { public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), showKamus.class);
startActivityForResult(myIntent, 0);
} });
Button next1 = (Button) findViewById(R.id.buttonKamus1);
next1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), showKamus1.class);
startActivityForResult(myIntent, 0);
} });
Button ket = (Button) findViewById(R.id.buttonKet);
ket.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
setContentView(R.layout.keterangan);
} });
Button kel = (Button) findViewById(R.id.Button02);
kel.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
finish();
} });
}}
Membuat class DataKamus.java : package com.kamus;
71 import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataKamus extends SQLiteOpenHelper{
private static final String DATABASE_NAME = "dbkamus";
public static final String INGGRIS = "inggris";
public static final String INDONESIA = "indonesia";
public static final String JAWA = "jawa";
//Constructor DataKamus untuk initiate database public DataKamus(Context context) {
super(context, DATABASE_NAME, null, 1);
}
//Method createTable untuk membuat table kamus public void createTable(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS kamus");
db.execSQL("CREATE TABLE if not exists kamus (id INTEGER PRIMARY KEY AUTOINCREMENT, inggris TEXT, indonesia TEXT, jawa TEXT);");
}
//Method generateData untuk mengisikan data ke kamus.
public void generateData(SQLiteDatabase db) { ContentValues cv = new ContentValues();
cv.put(INGGRIS,"run");
cv.put(INDONESIA, "lari");
cv.put(JAWA, "melayu");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "walk");
cv.put(INDONESIA, "jalan");
cv.put(JAWA, "melaku");
db.insert("kamus", "INGGRIS", cv);
cv.put(INGGRIS, "read");
cv.put(INDONESIA, "membaca");
cv.put(JAWA, "memboco");
db.insert("kamus", INGGRIS, cv);
72 cv.put(INGGRIS, "acne");
cv.put(INDONESIA, "jerawat");
cv.put(JAWA, "kukul");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "already");
cv.put(INDONESIA, "sudah");
cv.put(JAWA, "uwes");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "animal");
cv.put(INDONESIA, "hewan");
cv.put(JAWA, "kewan");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "appetite");
cv.put(INDONESIA, "selera");
cv.put(JAWA, "napsu");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "arena");
cv.put(INDONESIA, "arena");
cv.put(JAWA, "arena");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "assistant");
cv.put(INDONESIA, "asisten");
cv.put(JAWA, "babu");
db.insert("kamus", INGGRIS, cv);
73 cv.put(INGGRIS, "ballon");
cv.put(INDONESIA, "balon");
cv.put(JAWA, "balon");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "balm");
cv.put(INDONESIA, "balsem");
cv.put(JAWA, "balsem");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "base");
cv.put(INDONESIA, "dasar");
cv.put(JAWA, "dhasar");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "bear");
cv.put(INDONESIA, "beruang");
cv.put(JAWA, "metokake");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "beautiful");
cv.put(INDONESIA, "cantik");
cv.put(JAWA, "ayu");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "between");
cv.put(INDONESIA, "antara");
cv.put(JAWA, "antarane");
74 db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "bone");
cv.put(INDONESIA, "tulang");
cv.put(JAWA, "balung");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "brain");
cv.put(INDONESIA, "otak");
cv.put(JAWA, "uthek");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "bright");
cv.put(INDONESIA, "cerah");
cv.put(JAWA, "padhang");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "broken");
cv.put(INDONESIA, "pecah");
cv.put(JAWA, "pecah");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "brood");
cv.put(INDONESIA, "mengerami");
cv.put(JAWA, "angkrem");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "broom");
cv.put(INDONESIA, "sapu");
75 cv.put(JAWA, "sapu");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "book");
cv.put(INDONESIA, "buku");
cv.put(JAWA, "buku");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "carry");
cv.put(INDONESIA, "usung");
cv.put(JAWA, "nggawa");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "carve");
cv.put(INDONESIA, "ukir");
cv.put(JAWA, "mahat");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "cat");
cv.put(INDONESIA, "kucing");
cv.put(JAWA, "kucing");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "century");
cv.put(INDONESIA, "abad");
cv.put(JAWA, "abad");
db.insert("kamus", INGGRIS, cv);
76 cv.put(INGGRIS, "chair");
cv.put(INDONESIA, "kursi");
cv.put(JAWA, "jog");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "chat");
cv.put(INDONESIA, "obrol");
cv.put(JAWA, "ngobrol");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "child");
cv.put(INDONESIA, "anak");
cv.put(JAWA, "nduk");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "citizen");
cv.put(INDONESIA, "rakyat");
cv.put(JAWA, "rakyat");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "cock");
cv.put(INDONESIA, "ayam");
cv.put(JAWA, "pithik");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "colour");
cv.put(INDONESIA, "warna");
cv.put(JAWA, "werna");
77 db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "contemptible");
cv.put(INDONESIA, "hina");
cv.put(JAWA, "lembah");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "cow");
cv.put(INDONESIA, "sapi");
cv.put(JAWA, "sapi");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "crocodile");
cv.put(INDONESIA, "buaya");
cv.put(JAWA, "baya");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "cudget");
cv.put(INDONESIA, "gada");
cv.put(JAWA, "godo");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "cut");
cv.put(INDONESIA, "potong");
cv.put(JAWA, "pothong");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "damage");
cv.put(INDONESIA, "rusak");
78 cv.put(JAWA, "rongsok");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "dance");
cv.put(INDONESIA, "tari");
cv.put(JAWA, "tari");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "deaf");
cv.put(INDONESIA, "tuli");
cv.put(JAWA, "budheg");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "deer");
cv.put(INDONESIA, "rusa");
cv.put(JAWA, "rusa");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "delicious");
cv.put(INDONESIA, "enak");
cv.put(JAWA, "apik");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "egg");
cv.put(INDONESIA, "telur");
cv.put(JAWA, "endhok");
db.insert("kamus", INGGRIS, cv);
79 cv.put(INGGRIS, "eye");
cv.put(INDONESIA, "mata");
cv.put(JAWA, "moto");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "fall");
cv.put(INDONESIA, "jatuh");
cv.put(JAWA, "tibo");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "fail");
cv.put(INDONESIA, "gagal");
cv.put(JAWA, "gagal");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "economy");
cv.put(INDONESIA, "ekonomi");
cv.put(JAWA, "ekonomi");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "fascist");
cv.put(INDONESIA, "fasis");
cv.put(JAWA, "fasis");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "february");
cv.put(INDONESIA, "februari");
cv.put(JAWA, "pebruari");
80 db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "feel");
cv.put(INDONESIA, "rasa");
cv.put(JAWA, "roso");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "finger");
cv.put(INDONESIA, "jari");
cv.put(JAWA, "driji");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "finish");
cv.put(INDONESIA, "selesai");
cv.put(JAWA, "rampung");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "fire");
cv.put(INDONESIA, "api");
cv.put(JAWA, "geni");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "fish");
cv.put(INDONESIA, "ikan");
cv.put(JAWA, "iwak");
db.insert("kamus", INGGRIS, cv);
cv.put(INGGRIS, "five");
cv.put(INDONESIA, "lima");