Modul 1
Pengenalan Mobile Programing
Tujuan
:
1. Mahasiswa dapat memahami dan mengetahui lebih dalam tentang
mobile programing.
2. Mahasiswa dapat mengetahui sistem operasi apa saja yang
digunakan pada perangkat mobile.
3. Mahasiswa mampu memahami dan mengetahui bagaimana mobile
programing bekerja dengan komponen eksternal.
Tugas pendahuluan :
1. Apa yang dimaksud sistem operasi ?
2. Sistem operasi apa saja pada handphone?
DASAR TEORI
lebih
sederhana.
Biasanya penggunaannya hadir di ponsel pintar, PDA, tablet komputer, dan PMP.
Pada tahun 1993 dirilis smartphone yang pertama, IBM Simon yang
memiliki fitur layar sentuh, email serta PDA. Selang 3 tahun kemudian, tahun
1996 Palm Pilot 1000 memperkenalkan personal digital assistant (PDA) untuk
pertama kalinya dengan sistem operasi Palm OS. Masih dalam tahun yang sama PC
Handled untuk pertama kalinya diperkenalkan dengan sistemWindows CE. 4 tahun
1
kemudian, tahun 2000 Symbian menjadi sistem operasi mobile modern pertama
pada smartphone yang diluncurkan oleh Ericsson R380.
Tahun 2002, Microsoft pertama Windows CE (Pocket PC) pada smartphone .
Masih pada tahun 2002, Blackberry merilis smartphone pertamanya. 3 tahun
kemudian, tahun 2005 Nokia memperkenalkan Maemo OS pada tablet internet
pertama Nokia N770. Lalu tahun 2007, Apple iPhone dengan iOS diperkenalkan
sebagai iPhone mobile phone dan internet communicator. Setahun kemudian,
tahun 2008 OHA yang dibentuk oleh Google merilis Android 1.0 dengan HTC
Dream (T-Mobile G1) sebagai ponselAndroid yang pertama.
Sistem operasi yang umum saat ini:
Android dari Google Inc. (open source, Apache)
Sistem operasi yang berbasis linux dan banyak digunakan oleh para
pembuat/pabrikan telepon genggam sekarang ini (Samsung, HTC,
Motorola, Sony Ericsson, LG, Huawei, dll). Android OS adalah sebuah
sistem operasi mobile yang diperuntukan bagi smartphone dan komputer
tablet. Android OS yang bebasis linux kernel ini dikembangkan oleh
Open Handset Alliance dibawah bendera Google. Pengembangkan
aplikasi-aplikasi Android dan menguploadnya di Android Market,
dengan tujuan aplikasi-aplikasi tersebut dapat didownload oleh para
pengguna smartphone android. Dalam empat tahun terakhir (rilis tahun
2008) Android berhasil merilis versi terbaru mulai dari : Cupcake, Donut,
Eclair, Froyo, Gingerbread, Honeycomb , Ice Cream Sandwich, jelly
beam dan yang terbaru adalah kitkat
BlackBerry OS dari RIM (closed source, proprietary)
BlackBerry menggunakan BlackBerry OS sebagai sistem operasinya.
BlackBerry OS, dikembangkan oleh Reseach in Motion (RIM), untuk
BlackBerry, perusahaan telekomunikasi asal Kanada ini. Diawal
kemunculannya BlackBerry booming dengan layanan push-email dan
2
dll. Sistem
operasi
yang berhasil
dikembangkan dan
1. Linux Kernel
Android dibangun di atas kernel Linux 2.6. Namun secara
keseluruhan android bukanlah linux, karena dalam android tidak terdapat
paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem
operasi terbuka yang handal dalam manajemen memori dan proses. Oleh
karenanya pada android hanya terdapat beberapa servis yang diperlukan
seperti keamanan, manajemen memori, manajemen proses, jaringan dan
driver. Kernel linux menyediakan driver layar, kamera, keypad, WiFi, Flash
Memory, audio, dan IPC (Interprocess Communication) untuk mengatur
aplikasi dan lubang keamanan.
2. Libraries
Android menggunakan beberapa paket pustaka yang terdapat pada
C/C++ dengan standar Berkeley Software Distribution (BSD) hanya setengah
5
dari yang aslinya untuk tertanam pada kernel Linux. Beberapa pustaka
diantaranya:
Media Library untuk memutar dan merekam berbagai macam format audio
dan video.
Surface Manager untuk mengatur hak akses layer dari berbagai aplikasi.
Graphic Library termasuk didalamnya SGL dan OpenGL, untuk tampilan
2D dan 3D.
SQLite untuk mengatur relasi database yang digunakan pada aplikasi.
SSl dan WebKit untuk browser dan keamanan internet.
3. Android Runtime
Pada android tertanam paket pustaka inti yang menyediakan sebagian besar
fungsi android. Inilah yang membedakan Android dibandingkan dengan sistem
operasi lain yang juga mengimplementasikan Linux. Android Runtime
merupakan mesin virtual yang membuat aplikasi android menjadi lebih tangguh
dengan paket pustaka yang telah ada. Dalam Android Runtime terdapat 2 bagian
utama, diantaranya:
4. Application Framework
Kerangka aplikasi menyediakan kelas-kelas yang dapat digunakan untuk
mengembangkan aplikasi android. Selain itu, juga menyediakan abstraksi generik
untuk mengakses perangkat, serta mengatur tampilan user interface dan sumber
daya aplikasi. Bagian terpenting dalam kerangka aplikasi android adalah sebagai
berikut [Hello Android 2nd Edition]:
1. Activity Manager, berfungsi untuk mengontrol siklus hidup aplikasi dan
menjaga keadaan Backstack untuk navigasi penggunaan.
2. Content Providers, berfungsi untuk merangkum data yang memungkinkan
digunakan oleh aplikasi lainnya, seperti daftar nama.
3. Resuource Manager, untuk mengatur sumber daya yang ada dalam program.
Serta menyediakan akses sumber daya diluar kode program, seperti karakter,
grafik, dan file layout.
6
5. Application Layer
Puncak dari diagram arsitektur android adalah lapisan aplikasi dan widget.
Lapisan aplikasi merupakan lapisan yang paling tampak pada pengguna ketika
menjalankan program. Pengguna hanya akan melihat program ketika digunakan
tanpa mengetahui proses yang terjadi dibalik lapisan aplikasi. Lapisan ini
berjalan dalam Android runtime dengan menggunakan kelas dan service yang
tersedia pada framework aplikasi. Lapisan aplikasi android sangat berbeda
dibandingkan dengan sistem operasi lainnya. Pada android semua aplikasi, baik
aplikasi inti (native) maupun aplikasi pihak ketiga berjalan diatas lapisan
aplikasi dengan menggunakan pustaka API (Application Programming Interface)
yang sama.
Modul II
Dasar implementasi mobile programing
Tujuan :
1.
2.
3.
Pokok bahasan :
1.
2.
3.
kita. Pada eclipse XML biasanya digunaka untuk mengatur layout pada layar
gadget.
Multi platform :
Multi-language
Multi-role
development
Kit).
Setelah
download
selesai
berikut
adalah
cara
10
6. Masukan directory instalasi java ke System variabel Path-seperti gambar lalu ok.
11
Pilih folder eclipse. Eclipse tidak memerlukan wizard instalasi . Dalam folder
eclipse akan ditemukan eclipse.exe, cukup pilih file tersebut
12
3. Berikut adalah tampilan awal aplikasi eclipse, anda bisa pilih New adaroid
Aplication.
4. Berikut tampilan awal dalam membuat project. Saya coba membuat Apliction
Name Latihan1. Pada kolom Package Name.example dihapus sehingga seperti
gambar, klik next.
13
5. Dalam eclipse anda bisa membuat icon project yang akan dibuat .
7. Dalam activity anda bisamerubah nama activitynya, jika sudah pilih finish.
14
8. Proses pembuatan project sudah selesai berukut adalah area kerja dari eclipse.
Terdapat Hellow word yang secara ototmatis akan muncul
Project eclipse sudah selesai di buat namun belum bisa berjalan / running. Untuk cara
running program ada beberapa kelengkapan yang harus dipenuhi.
1. Instalasi SDK manager, pilih gambar logo SDK pada ruang kerja eclipse.
2. Akan tampil sdk yang sudah dan belum terinstal. Dalam hal ini saya sudah
menginstal package yang diperlukan untuk menjalankan project yang akan dibuat.
15
Jika ingin melengkapi anda bisa langsung memilih Instal Package dan
memerlukan koneksi internet.
4. Berikut tampilan AVD , karena belum ada maka kita buat , pilih new
5. Berikan nama AVD1, pada device bisa pilih sesuai keinginan, lalu tekan ok.
16
6. Kembali ke tampilan avd , kini sudah terdapat satu avd, pilih avd tersebut dan
start. Memerlukan banyak waktu untukmemebuka avd, tunggu proses hingga
selesai
17
18
1. Folder src adalah folder terdapat nama proyek dan dibawahnya ada
file java untuk menuliskan source code yang menjelaskan logic dari
android anda.Di dalam folder ini ada file java yang vital dan berperan
penting yaitu MainActivity.java.
2. Folder gen adalah folder yang belum akan anda temukan jika baru
membuat aplikasi. Ketika script aplikasi itu anda compile, maka
folder gen akan mencul. Terdapat file-file java salah satunya R.java
yang fungsinya mengatur apapun yang terlihat dilayar gadget.
3. Folder android merupakan folder yang menunjukan versi android
proyek dan berisi sejumlah library agr program bisa berjalan di
sistem operasi android yang ditentukan.
4. Folder assets adalah folder yang digunakan untuk menyimpan aset
aset yang mungkin anda butuhkan dalam aplikasi. Sebagai contoh
aset bisa berupa file XML atau database yang mungkin diperlukan
agar aplikasi bisa berfungsi dengan baik.
19
20
Hasil dari project diatas setelah dirun. Cara running program klik kanan pada nama
project di package project pilih RunAs Android Aplication- pilih avd yang sudah
dibuat AVD1:
21
22
Modul III
Implementasi mobile programing
Tujuan :
Pokok bahasan :
1.
2.
1.
Variabel
Percabangan (Decision)
Perulangan (Looping)
Widget
Layout
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="98dp"
android:text="@string/button" />
Maka Hasilnya
3) Image view adalah widget yang digunakan untuk menampilkan image. Image
yang akan ditampilkan dalam button diletakkan di direktori /res sesuai dengan
resolusinya. Jadi untuk hasil yang maksimal, untuk setiap image yang akan
anda gunakan harus disediakan 4 image untuk setiap resolusi (mdpi sampai
dengan xxhdpi). Hal ini untuk mencegah gambar yang digunakan terlihat
pecah atau terlalu kecil pada device dengan resolusi berbeda. Pada folder res
sudah terdapat image android. Sebagai contoh kita tampilkan gambar
tersebut. Drag image view kelayar kerja.
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/textView1"
android:layout_marginRight="14dp"
android:src="@drawable/ic_launcher" />
setelah dijalankan
4) EditText digunakan untuk menerima input dari pengguna. Pada palette telah
disediakan berbagai jenis EditText, silahkan dicoba satu persatu dan
perhatikan XML yang dihasilkan. sebagai contoh adlah sebagai berikut
EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/imageView1"
android:ems="10" >
26
5) RadioButton hanya satu pilihan yang boleh aktif (mutual exclusive) di dalam
satu group yang disebut radioGroup. Sedangkan User dapat memilih lebih
dari satu pilihan dengan checkbox. Pada palette, Checkbox ada di bagian
FormWidgets.
Contoh script
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/radioButton1"
android:layout_alignBottom="@+id/radioButton1"
android:layout_alignRight="@+id/imageView1"
android:layout_marginRight="33dp"
android:text="@string/cek1" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/radioButton2"
android:layout_alignBottom="@+id/radioButton2"
android:layout_alignLeft="@+id/checkBox1"
android:text="@string/cek2" />
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="22dp"
android:text="@string/android" />
<RadioButton
27
android:id="@+id/radioButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/radioButton1"
android:text="@string/IoS" />
B. Layout
Kategori komponen pertama adalah layout. Komponen
- komponen di
activity
atau
widget.
Mendeklarasikan
layout
di
XML
28
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 3" />
</LinearLayout>
Android:layout_above
Android:layout_below
Android:layout_toLeftOf
Android:layout_toRightOf.
Seperti contoh berikut :
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="37dp"
android:layout_marginTop="50dp"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button1"
android:layout_marginTop="22dp"
android:layout_toRightOf="@+id/button1"
android:text="Button" />
yang
Variabel
Pada pemrograman eclipse pendeklarasian variabel sama seperti pada java.
Variabel pada java adalah satuan dasar penyimpanan dalam program. Cara
pendeklarasian variabel
tipe namaVariabel;
mendeklarasikan
//untuk
sebuah variabel
tipe namaVariabel1,variabel2,... //untuk
mendeklarasikan
beberapa variabel
contoh :
int X;
NB : int merupakan tipedata dari variabel, X merupakan Nama variabel
Latihan program
1.
2.
31
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="20dp"android:layout_marginTop="36dp"
android:text="INPUT 1" />
<EditText
android:id="@+id/input1"android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_marginLeft="17dp"
android:layout_toRightOf="@+id/textView1" android:ems="10" />
<TextView
android:id="@+id/hasil" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/btnHitung"
android:layout_below="@+id/input1"
android:layout_marginTop="108dp"
android:text="hasil" android:textStyle="bold"/>
<EditText
android:id="@+id/input2" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/input1"
android:layout_below="@+id/input1"
android:layout_marginTop="37dp"
android:ems="10" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView2" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/input2"
android:layout_toLeftOf="@+id/input1"
android:text="INPUT 2" />
<Button
android:id="@+id/btnReset" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/input2"
32
android:layout_below="@+id/hasil"
android:layout_marginRight="16dp"
android:layout_marginTop="54dp"
android:text="RESET" />
<Button
android:id="@+id/btnHitung"android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btnReset"
android:layout_alignBottom="@+id/btnReset"
android:layout_alignLeft="@+id/textView2"android:text="HITUNG"
/>
</RelativeLayout>
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.widget.Button;
android.widget.EditText;
android.widget.TextView;
33
x = Integer.parseInt(((EditText)
input1).getText().toString());
y = Integer.parseInt(((EditText)
input2).getText().toString());
hitung = x + y;
hasil.setText("Hasil"+"="+hitung);
}
});
// mereset inputan dan hasilnya
reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
input1.setText("");
input2.setText("");
hasil.setText("");
}
});
}
2. Percabangan
a) Percabangan if
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="102dp" android:ems="10" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView1"android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/editText1"
android:layout_alignParentLeft="true"android:layout_marginBottom="50dp"
android:layout_marginLeft="16dp"android:text="Masukan Nilai" />
<Button
android:id="@+id/button1"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_alignLeft="@+id/textVie
w1"
android:layout_below="@+id/editText1"android:layout_marginTop="24dp"
android:text="Grade" />
<TextView
android:id="@+id/textView2"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_alignRight="@+id/button
1"
android:layout_below="@+id/button1"android:layout_marginTop="55dp"
android:text=" " />
</RelativeLayout>
import android.os.Bundle;
import android.app.Activity;
35
import
import
import
import
import
android.view.Menu;
android.view.View;
android.widget.TextView;
android.widget.Button;
android.widget.EditText;
36
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:text="masukan angka 1 -6"
/>
37
<EditText
android:id="@+id/editText1"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_below="@+id/textView1"
android:layout_marginTop="22dp"android:layout_toRightOf="@+id/textView1"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_alignLeft="@+id/textVie
w1"
android:layout_below="@+id/editText1"android:text="HASIL" />
<TextView
android:id="@+id/textView2"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_below="@+id/button1"
android:layout_marginLeft="24dp"android:layout_marginTop="24dp"
android:layout_toRightOf="@+id/button1"android:textSize="18pt"
android:text="" />
</RelativeLayout>
import
import
import
import
import
import
import
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.widget.Button;
android.widget.EditText;
android.widget.TextView;
38
tampil.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// mem-parse bilangan integer
nilai = Integer.parseInt(((EditText) input).getText().toString());
switch (nilai) {
case 1 :
hasil.setText(" Hari Senin");
break;
case 2 :
hasil.setText("Hari Selasa");
break;
case 3 :
hasil.setText("Hari Rabu");
break;
case 4 :
hasil.setText(" Hari Kamis");
break;
case 5 :
hasil.setText("Hari Jumat");
break;
case 6 :
hasil.setText("Hari Sabtu");
break;
default :
hasil.setText("Hari Minggu ");
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
39
3. Perulangan
a) Perulangan menggunakan for
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:text="INPUT NILAI AKHIR"
/>
<EditText
android:id="@+id/editText1"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_alignLeft="@+id/textVie
w1"
android:layout_below="@+id/textView1"android:layout_marginLeft="30dp"
android:layout_marginTop="18dp"android:ems="10" >
<requestFocus />
40
</EditText>
<Button
android:id="@+id/button1"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_alignLeft="@+id/textVie
w1"
android:layout_below="@+id/editText1"android:layout_marginTop="20dp"
android:text="HITUNG" />
<TextView
android:id="@+id/textView2"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_below="@+id/button1"
android:layout_marginTop="82dp"android:layout_toRightOf="@+id/button1"
android:text=" " />
</RelativeLayout>
import
import
import
import
import
import
import
Pada main.java
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.widget.Button;
android.widget.TextView;
android.widget.EditText;
41
cetak=cetak+" "+Integer.toString(i);
}
hasil.setText(cetak);
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
b) Perulangan while
Buat project baru , beri nama perulangn2. Pada perulangan while buat
project sama dengan perulangan for, kita cukup ganti syntak perulanganya.
Bila pada for hasil yang ditampilkan adalah genap, maka pada while kita
tampilkan bilangn ganjil. Berikut adalah syntak dari perulangan while.
Kitamulai dari action button
tampil.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
cetak="";
nilai = Integer.parseInt(((EditText)
input).getText().toString());
42
int i = 1;
while (i <=nilai) {
if ( i % 2==1) {
cetak=cetak+"
"+Integer.toString(i);
}
i++;
hasil.setText(cetak);
}
}
});
43
Modul IV
Activity dan Intent
Tujuan :
1.
2.
3.
Pokok bahasan :
1.
Dasar teori
2.
1. Dasar Teori
Activity adalah jendela yang berisi user interface antara pengguna dengan
aplikasi. Pada saat layar interface terlihat oleh pengguna pada saat itulah activity
melakukan sebuah proses walaupun tersembunyi. Setiap proses yang dilakukan
activity dinamakan dengan siklus activity.
Pada dasarnya activity memiliki empat keadaan yaitu :
1. Active ,jika activity berada pada posisi atas stack
2. Pause , jika activitytidak dibutuhkan pada suatu saat tertentu, tetapi
activity itu masih ada, ketika activity baru yang ditangani oleh sistem
activity yang lama disebut pause dan masih ada di memory.
3. Stopped , jika activity tidak dipakai dan digantikan oleh activity lain,
activity yang di stop tidak akan pernah dipanggil lagi dan memory pun
tidak menyimpan ifo activity ini.
4. Restart , jika activity pause atau stop dalam waktu sasaat kemudian
dilakukan restart activity tersebut akan kembali ke keadan awal.
44
5. Pilih
Android Activity
BlankActivity
45
Next,
pada
layar
berikutnya
pilih
6. Pada layar ini kita menentukan nama dari activity yang akan dibuat.
Beri nama Activity 2. Lalu finish.
7. Pada package explorer akan ada activity baru yang anda buat.
46
8. Setelah membuat activity , sekarang kita akan buat code dari programnya
9. Buat layout main_activity seperti berikut. Tambahakan text view dan
button. Pada button id ganti dengan nama next.
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="screen 1"
android:textSize="18pt" />
<Button
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/textView1"
android:layout_marginBottom="59dp"
android:text="Next" />
47
android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp"
android:text="Back" />
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.content.Intent;
android.widget.Button;
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.view.View;
android.content.Intent;
android.widget.Button;
48
49
Modul V
Grafik 2 Dimensi
Tujuan :
1.
Mahasiswa
mampu
mengetahui
dan
memahami
dasar-dasar
Pokok bahasan :
1.
2.
android.content.Context;
android.graphics.Canvas;
android.graphics.Color;
android.graphics.Paint;
android.graphics.RectF;
android.graphics.Paint.Style;
android.graphics.Typeface;
50
import android.view.View;
51
}
public ViewGrafik(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
}
52
Method drawText dapat digunakan untuk menambahkan teks di canvas, sedangkan Path
dan
drawTextOnPath dapat digunakan untuk menggambar teks yang mengikuti jalur tertentu.
Untuk jelasnya berikut adalah contohnya:
53
path.reset();
//x,y,radius dan berlawan jarumjam (CCW)
path.addCircle(250, 250, 50, Path.Direction.CCW);
c.drawTextOnPath("ini mengikuti lingkaran", path, 0, 0, cat);
}
public ViewPath(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
}
5. Bila dijalankan
Selenjutnya kita akan membuat app yang akan menggambar kotak ditempat
pengguna menyentuh layar. Buat project baru dan tambahkan class beri nama
GraphicsView.
Berikut adalah isi dari kelas tersebut
import android.content.Context;
54
import
import
import
import
android.graphics.Canvas;
android.graphics.Color;
android.graphics.Paint;
android.view.View;
extends View {
55
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN: //jari menyentuh layar
//passing posisi ke graphicsview
gv.posx = event.getX();
gv.posy = event.getY();
gv.invalidate(); //draw ulang
break;
case MotionEvent.ACTION_MOVE: //bergerak
break;
case MotionEvent.ACTION_UP: //diangkat
break;
case MotionEvent.ACTION_CANCEL: //batal
break;
default:
break;
}
return true;
}
}
56
MODUL VI
Sensor Proximity dan Accelometer
Tujuan :
1.
2.
Pokok bahasan :
1.
Dasar teori
2.
1. Dasar teori
Sensor Proximity adalah sensor yang di gunakan untuk mendeteksi
keberadaan suatu objek tanpa kontak fisik. Manfaat dari proximity sensor
salah satunya untuk mematikan layar secara otomatis pada saat menelpon.
Pada smartphone android sensor ini apabila smartphone di dekatkan
pada telinga saat menelpon maka lampu layar dari smartphone akan mati
secara otomatis. Jadi sensor ini sangat penting untuk menghemat baterai saat
pemakaian telepon.
derajat kemiringan dari smartphone. Pada dasarnya fungsi sensor ini untuk
mengubah tampilan layar dari posisi landscape menjadi potrait ataupun
sebaliknya, sehingga tampilan menu dan aplikasi yang ada di smartphone
akan menyesuaikan posisi dari smartphone.salah satu contoh yang sering
menggunakan sensor ini adalah aplikasi game, misal game dalam balapan
mobil sehingga kita cukup memiringkan smartphone saat belok ke kanan atau
ke kiri.
2.
3.
Tempatkan
gambar
tersebut
di
directory
file
project
SensorProximity/res/drawable-mdpi
4.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="157dp"
android:src="@drawable/jauh" />
58
</RelativeLayout>
5.
import
import
import
import
import
import
import
import
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.hardware.Sensor;
android.hardware.SensorEvent;
android.hardware.SensorEventListener;
android.hardware.SensorManager;
android.widget.ImageView;
59
60
61
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_marginLeft="46dp"
android:layout_toRightOf="@+id/textView1"
android:text="TextView" />
<TextView
android:id="@+id/ykoor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/xkoor"
android:text="TextView" />
<TextView
android:id="@+id/zkoor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/ykoor"
android:layout_centerVertical="true"
android:text="TextView" />
</RelativeLayout>
android.os.Bundle;
android.app.Activity;
android.view.Menu;
android.hardware.Sensor; // memanggil funsi API sensor di android
62
import
import
import
import
android.hardware.SensorEvent;
android.hardware.SensorEventListener;
android.hardware.SensorManager;
android.widget.TextView;
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
// menambahkan listener. Listener untuk class ini adalah
accelerometer
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
// fungsi api yang dipakai untuk perubahan screen orientation
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it
is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onAccuracyChanged(Sensor sensor,int accuracy){
}
@Override
public void onSensorChanged(SensorEvent event){
// cek jenis sensor
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
63
4. Jalankan program pada device,jika pada posisi rata maka hasilnya adalah
64
MODUL VII
Data Base
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami database pada
android.
2. Mahasiswa mampu memahami kode program dasar untuk
membangun program berbasis android.
Pokok bahasan :
1. Database SqlLite.
2.
1. Dasar teori
Pada modul bagian ini kita akan membahas fasilitas untuk membuat database
pada android yang dikenal dengan SQLite. SQLite adalah salah satu software
embeddedyang sangat populer,kombinasi SQl interface dan penggunaan
memory yang sedikit.SQLite termasuk dalam android runtime ,sehingga
setiap versi dari android dapat membuat database dengan SQLite. Dalam
sisitem android memiliki beberapa teknik untuk menyimpan data. Teknik
yang umum digunakan adlah:
1. Shared Preferences yaitu menyimpan data beberapa nilai dalam
bentuk groups key yang dikenal deng preferences
2. Files yaitu menyimpan data dalam file , dapat berupa menulis ke
file atau membaca file.
3. SQLite Databases yaitu menyimpan data dalam bentuk database.
4. Content Providers yaitu menyimpan data dalam bentuk content
providers service.
Jika kita menggunakan Sqlite kitaharus mengcreate database ,
mendefenisikan tabel dan inisialisai data. Kelas SQLiteOpenHelper
menggunakan 3 metode dalam membuat dan membuka data yaitu:
1. Constuctor , menyediakan representasi versi dari database dan
skema databasse yang digunakan.
2. Oncreate,mnyediakan SQLiteDatabase object yang kita gunakan
dalam defenisi tabel dan inisialisai data.
65
66
</TextView>
<EditText android:text=""
android:id="@+id/edAddNim"
android:layout_width="100dp"
android:layout_height="wrap_content">
</EditText>
<TextView
android:text="KotaAsal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<EditText
android:text=""
android:id="@+id/edAddAsal"
android:layout_width="100dp"
android:layout_height="wrap_content">
</EditText>
<Button android:text="Simpan"
android:id="@+id/btnAddSimpan"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
3. Buat baru layout xml, Beri nama edit berikut adalalah
codenya
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:text="Nama"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<EditText android:text=""
android:id="@+id/edEditNama"
android:layout_width="100dp"
android:layout_height="wrap_content">
</EditText>
<TextView
android:text="Nim"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
67
</TextView>
<EditText android:text=""
android:id="@+id/edEditNim"
android:layout_width="100dp"
android:layout_height="wrap_content">
</EditText>
<TextView
android:text="KotaAsal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<EditText android:text=""
android:id="@+id/edEditAsal"
android:layout_width="100dp"
android:layout_height="wrap_content">
</EditText>
<Button android:text="Simpan"
android:id="@+id/btnEditSimpan"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
4. Pada main.xml isikan kode 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"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Database SQLite"
/>
<ListView
android:id="@+id/ListView01"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>
68
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
}
}
6.
Tambahkan class baru lagi dan beri nama EditActivity dan isikan
code berikut:
import
import
import
import
import
import
import
import
import
import
android.app.Activity;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.ArrayAdapter;
android.widget.Button;
android.widget.EditText;
69
import android.widget.ListView;
import android.widget.Toast;
public class EditActivity extends Activity {
protected Cursor cursor;
SQLHelper dbHelper;
Button btnEditSimpan;
EditText edEditNama;
EditText edEditNim;
EditText edEditKota;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
dbHelper = new SQLHelper(this);
edEditNama = (EditText) findViewById(R.id.edEditNama);
edEditNim = (EditText) findViewById(R.id.edEditNim);
edEditKota = (EditText) findViewById(R.id.edEditAsal);
SQLiteDatabase db = dbHelper.getReadableDatabase();
cursor = db.rawQuery("SELECT * FROM kota WHERE nama = '" +
getIntent().getStringExtra("nama") + "'",null);
cursor.moveToFirst();
if (cursor.getCount()>0)
{
cursor.moveToPosition(0);
edEditNama.setText(cursor.getString(1).toString());
edEditNim.setText(cursor.getString(2).toString());
edEditAsal.setText(cursor.getString(3).toString());
}
btnEditSimpan = (Button) findViewById(R.id.btnEditSimpan);
// daftarkan even onClick pada btnSimpan
btnEditSimpan.setOnClickListener(new
Button.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("update kota SET nama='" +
edEditNama.getText().toString()+"', " +"nim='"+
edEditNim.getText().toString() +"', " +"asal='" +
edEditAsal.getText().toString() + "' WHERE " + " nama = '" +
getIntent().getStringExtra("nama") + "'");
Toast.makeText(getApplicationContext(), "Berhasil",
Toast.LENGTH_LONG).show();
MainActivity.ma.RefreshList();
finish();
}
70
});
}
}
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.ArrayAdapter;
android.widget.Button;
android.widget.EditText;
android.widget.ListView;
android.widget.Toast;
71
android.app.Activity;
android.app.AlertDialog;
android.content.DialogInterface;
android.content.Intent;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.AdapterView;
android.widget.ArrayAdapter;
android.widget.ListView;
android.widget.AdapterView.OnItemClickListener;
72
}
public void RefreshList()
{
SQLiteDatabase db = dbHelper.getReadableDatabase();
cursor = db.rawQuery("SELECT * FROM kota",null);
daftar = new String[cursor.getCount()];
cursor.moveToFirst();
for (int cc=0; cc < cursor.getCount(); cc++)
{
cursor.moveToPosition(cc);
daftar[cc] = cursor.getString(1).toString();
}
ListView01 = (ListView)findViewById(R.id.ListView01);
ListView01.setAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_1, daftar));
ListView01.setSelected(true);
ListView01.setOnItemClickListener(new
OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2,
long arg3) {
final String selection = daftar[arg2];
final CharSequence[] dialogitem = {"Edit", "Delete"};
AlertDialog.Builder builder = new
AlertDialog.Builder(MainActivity.this);
builder.setTitle("Pilih ?");
builder.setItems(dialogitem, new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item){
case 0 :
Intent i = new Intent(getApplicationContext(),
EditActivity.class);
i.putExtra("nama", selection);
startActivity(i);
break;
case 1 :
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("delete from kota where nama = '"+selection+"'");
RefreshList();
break;
}
}
73
});
builder.create().show();
}});
((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalidated
();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
this.menu = menu;
menu.add(0, 1, 0,
"Tambah").setIcon(android.R.drawable.btn_plus);
menu.add(0, 2, 0,
"Refresh").setIcon(android.R.drawable.ic_menu_rotate);
menu.add(0, 3, 0,
"Exit").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
Intent i = new Intent(MainActivity.this,
AddActivity.class);
startActivity(i);
return true;
case 2:
RefreshList();
return true;
case 3:
finish();
return true;
}
return false;
}
}
Setelah selesai jalankan programnya. Akan tampil data inputan pertama yang diabuat
yaitu nama yoga dan sukarta.
74
Klik menu pada device untuk tambah , maka akan muncul seperti berikut:
75