Modul Pemrograman Java Mobile
Modul Pemrograman Java Mobile
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
1. Sistem operasi mobile
Sistem operasi perangkat mobile (bahasa Inggris: mobile operating system,
disingkat Mobile OS) adalah suatu sistem operasi yang mengontrol sistem dan kinerja pada
barang elektronik yang mobile, mirip dengan fungsi Windows,Mac OS X, dan Linux pada
Desktop PC atau Laptop/Notebook tetapi 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
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.
hanya dapat digunakan oleh ponsel dengan fitur 2.5G dan 3G.
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 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.
4. Location Manager, berfungsi untuk memberikan informasi detail mengenai lokasi
perangkat android berada.
5. Notification Manager, mencakup berbagai macam peringatan seperti, pesan masuk,
janji, dan lain sebagainya yang akan ditampilkan pada status bar.
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. Mahasiswa mampu mengetahui dan memahami dasar-dasar mobile programming
2. Mahasiswa mampu melakukan instalasi dan konfigurasi SDK
3. Mahasiswa mampu menggunakan ADT & Eclipse sebagai dasar pengembangan
Program berbasis android
Pokok bahasan :
1. Instalasi da2n Konfigurasi SDK
2. Dasar Penggunaan ADT & Eclipse
3. XML (eXtensible Markup Language)
6. Masukan directory instalasi java ke System variabel – Path-seperti gambar lalu ok.
Java Development kit sudah terinstall kemudian mengkonfigurasi eclipse dan kelengkapan
dalam membuat project.
1. Pilih folder eclipse. Eclipse tidak memerlukan wizard instalasi . Dalam folder eclipse
akan ditemukan eclipse.exe, cukup pilih file tersebut
2. Akan Tampil Workspace Launcher, merupakan dimana project akan tersimpan, anda
bisa langsung memilih Ok.
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.
5. Dalam eclipse anda bisa membuat icon project yang akan dibuat .
7. Dalam activity anda bisamerubah nama activitynya, jika sudah pilih finish.
8. Proses pembuatan project sudah selesai berikut adalah area kerja dari eclipse.
Terdapat Hellow word yang secara otomatis 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. 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.
6. Kembali ke tampilan avd , kini sudah terdapat satu avd, pilih avd tersebut dan
start. Memerlukan banyak waktu untukmemebuka avd, tunggu proses hingga selesai
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.
5. Folder res juga disebut resources yang digunakan untuk menyimpan file yang pasti
digunakan oleh aplikasi. Contoh adalah gambar,foto dan suara.dalam file ini ada
beberapa folder untuk menyimpan file yaitu:
Drawable berisi file – file bitmap yang mendukung aspek grafis pada aplikasi.
Drawable-xhdpi sama dengan folder drawable, hanya saja digunakan untuk
menyimpan file foto dengan resolusi sangat tinggi.XHDPI sendiri adalah extra
high density screens yang cocok digunakaan pada tablet berukuran besar.
Drawable –hdpi menyimpan file dengan kualitas yang tinggi namun masih dibawah
xhdpi.
Drawable –mdpi adalah medium density screens yang menyimpan file foto dengan
kualitas menengah.
Drawable – ldpi adalah low density screens yang menyimpan file foto dengan
kulaitas menengah.
Layout meenyimpan file XML untuk mengatur layout tata letak didalam layar
gadget.
Menu menyimpan file XML yang mengatur menu - menu di dalam aplikasi.
Values menyimpan file XML yang mengandung nilai –nilai sederhana seperti
string,integer,dan warna. Di dalam folder ini hanya terdapat file Array.xml,
Color.xml, Dimens.xml, String.xml, Styles.xml.
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:
MODUL III
IMPLEMENTASI MOBILE PROGRAMING
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami dasar-dasar mobile programming
2. Mahasiswa mampu memahami kode program dasar untuk membangun program
berbasis android.
Pokok bahasan :
1. Dasar coding menggunakan XML dan Membangun Code Program
- Variabel
- Percabangan (Decision)
- Perulangan (Looping)
1) TextView digunakan untuk menampilkan label teks. View ini sudah kita
gunakan Beberapa contoh property dari TextView adalah android:textSize,
android:textStyle, android:textColor.
Contoh:
<TextView
android:id=" @+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text=" @string/belajar"
android:textColor="#00ff00"
android:textStyle="italic"/>
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.
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" >
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
B. Layout
Kategori komponen pertama adalah layout. Komponen - komponen di kategori ini
menentukan struktur visual untuk antarmuka pengguna, seperti Uluntuk activity atau
widget. Mendeklarasikan layout di XML jugamemeudahkan anda memvisualisaikan
struktur dari antar muka. Berikut adalah contoh dari Linier Layout Horizontal
dengan menambah kan 3 button pada layar kerja.
<LinearLayout
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"
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" >
<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>
Berikut hasilnya . untuk Linier Layout vertical hanya perlu mengganti
android:orientation="vertical"
Android:layout_above
Android:layout_below
Android:layout_toLeftOf
Android:layout_toRightOf.
<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" />
Untuk mengatur posisi ada tambahan lima atribut: android: layout_alignT op,
android:layout_alignBottom,android:layout_alignLeft,
android:layout_alignBaseline.
contoh :
int X;
NB : int merupakan tipedata dari variabel, X merupakan Nama variabel
Latihan program
1. Buatlah project baru dengan nama Variabel
2. Inputkan EditText, TextView, Dan Button. Berikut adalah main.xml
<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"
<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"
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>
3. Pada Activitymain.java ketikan coding berikut
import com.variabel.R.id;
import android.os.Bundle;
import android.app.Activity;
int x, y, hitung;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
public void onClick(View arg0) {
input1.setText("");
input2.setText("");
hasil.setText("");
}
});
}
2. Percabangan
a) Percabangan if
Buatlah prject baru beri nama percabangan
<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/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="55dp"
android:text=" " />
</RelativeLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hasil=(TextView)findViewById(R.id.textView2); tampil=(Button)
findViewById(R.id.button1); input=(EditText)
findViewById(R.id.editText1);
@Override
public void onClick(View arg0) {
// memeparse variabel nilai
nilai = Integer.parseInt(((EditText)
input).getText().toString());
<TextView android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
<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>
int nilai;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hasil=(TextView) findViewById(R.id.textView2);
input=(EditText) findViewById(R.id.editText1);
tampil=(Button) findViewById(R.id.button1);
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;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu); return true;
}
}
3. Perulangan
a) Perulangan menggunakan for
Buat project baru , beri nama perulangan
Berikut adalh main.xml
<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 />
</EditText>
<Button
<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>
Pada main.java
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.EditText;
hasil=(TextView) findViewById(R.id.textView2);
input= (EditText) findViewById(R.id.editText1);
tampil=(Button) findViewById(R.id.button1);
tampil.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
cetak="";
nilai = Integer.parseInt(((EditText)
input).getText().toString());
for (int i = 1; i <=nilai; i++) {
if ( i % 2==0) {
cetak=cetak+" "+Integer.toString(i);
}
hasil.setText(cetak);
}
}});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Berikut adalah hasilnya
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());
int i = 1;
while (i <=nilai) {
if ( i % 2==1) {
cetak=cetak+""+Integer.toString(i);
} i++; hasil.setText(cetak);
}
}
});
MODUL IV
ACTIVITY DAN INTENT
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami dasar-dasar mobile programming
2. Mahasiswa mengetahui Activity dan Intent
3. Mahasiswa mampu membangun program menggunakan activity intent
Pokok bahasan :
1. Dasar teori
2. Latihan Project activity
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.
Intent merupakan bagian activity yang fungsinya menjalankan aplikasi yang berbeda
agar dapat bekerja secara bersamaan. Intent adalah bagian dari activity yang
memeiliki konsep sebagai perangkat yang dapat mengaktivkan activity dari
aplikasi yang berbeda untuk dapat bekerja secara bersamaan seolah activity
tersebut dimiliki oleh satu aplikasi. Syntak intent
IntentNamaIntent = new Intent(getApplicationContext(),ClassTujuan.class);
StartActivity(NamaIntent);
1) Buat project baru beri nama LatihanActivity. Kemudian buat activity baru
dengan cara berikut. Klik new – other
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.
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"
10. Buat layout activity_activity2 seperti berikut. Ganti button id dengan nama
back.
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Screen 2" android:textSize="18pt" />
<Button android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp" android:text="Back"
/>
@Override
@Override
public void onClick(View arg0) {
// berikut adalah deklasi intent
Intent i= new Intent
(getApplicationContext(),Activity2.class);
//mengaktifkan intent untuk memanggil activity kedua
startActivity(i);
}
});
}
@Override
Button btnBack=(Button)findViewById(R.id.back);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
finish();
}
});
}
MODUL V
GRAFIK 2 DIMENSI
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami dasar-dasar menggunakan canvas pada
eclipse android.
2. Mahasiswa mampu membuat tampilan grafik 2d pada eclipse android.
Pokok bahasan :
1. Menggambar grafik 2d di canvas pada eclipse
2. Menulis texs di canvas
Pada modul ini akan membahas penggunaan canvas pada eclipse.Canvas, sesuai
namanya adalah tempat untuk menggambar bentuk 2D. Dengan canvas, kita dapat
menggambar bentuk (lingkaran, kotak, garis, titik), menggambar text dan melakukan operasi
translate, scale, rotate. Paint digunakan untuk menyimpan style, warna dan informasi lainnya
yang dibutuhkan untuk menggambar.
//Menggunakan tulisan
cat.setColor(Color.RED);
//diisi dalam maupun outline
cat.setStyle(Style.FILL_AND_STROKE);
cat.setStrokeWidth(2); cat.setTextSize(35);
c.drawText("Hello World", 10, 500, cat);
//menggunakan font
cat.setTypeface(Typeface.create(Typeface.SERIF,Typeface.BOLD_IT
ALIC)
);
c.drawText("font serif italic_bold", 10, 550, cat);
}
public ViewGrafik(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
}
4. Pada mainActivity.java tambahkan code berikut untuk menampikan
dari class grapic view
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:
1. Buat project baru beri nama GrafikPath
2. Tambahakan class ViewPath
3. Pada class ViewPath.java tambahakan code berikut.
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.view.View;
public class ViewPath extends View{ Paint cat= new Paint();
private Path path = new Path();
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.
@Override
protected void onDraw(Canvas c) {
//clear screen cat.setColor(Color.BLACK);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gv=new GrapicView (this); gv.setOnTouchListener(this);
setContentView(gv);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
@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;
MODUL VI
SENSOR PROXIMITY DAN ACCELOMETER
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami sensor yang ada pada android.
2. Mahasiswa mampu membuat program penerapan sensorpada android
Pokok bahasan :
1. Dasar teori
2. Contoh program sensor android
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.
Sensor Accelerometer adalah merupakan salah satu fitur yang di tanam pada
smartphone android yang biasanya berfungsi untuk menentukan 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.
<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" >
< Im ag eV ie w
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"
/>
</RelativeLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensormanager=(SensorManager)getSystemService(SENSOR_SERVICE);
sensor=sensormanager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
image=(ImageView)findViewById(R.id.imageView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
protected void onResume(){ super.onResume();
sensormanager.registerListener(this, sensor,
sensormanager.SENSOR_DELAY_NORMAL);
}
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_centerVertical="true"
android:text="Z Kordinat :" />
<TextView
<TextView
android:id="@+id/xkoor"
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" />
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager=(SensorManager)getSystemService(SENSOR_SERVIC
E);
// 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){
4. Jalankan program pada device,jika pada posisi rata maka hasilnya adalah
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. Penerapan database pada android.
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.
3. Oncreate,mnyediakan SQLiteDatabase object yang kita gunakan dalam defenisi
tabel dan inisialisai data.
4. Onupgrade, menyediakan fasilitas konversi database dari database versi lama ke
database versi terbaru.
Pada database SQLite kita juga mengenal query data dan cursor. Query berfungsi
mengembalikan objeck cursor. Cursor adalah hasil dari query,yaitu satu baris
(record)ndari hasil query. Dengan cursor, Android bisa melakukan buffer hasil query
dengan efisien karena tidak perlu load data ke memory. Cursor menyediakan method
get*(), misalnya cursor.getCount(). Selain method get ada beberapa method pada cursor
yaitu:
1. MoveToFirst() : Memindahkan cursor ke baris pertama dari hasil query.
2. MoveToNext() : Memindahkan cursor ke baris selanjutnya
3. MoveToPrevious() : Memindahkan cursor ke baris sebelumnya
4. MoveToPosition() : Memindahkan cursor ke baris yang ditentukan.
<TextView android:text="Nama"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<TextView android:text="Nim"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<TextView android:text="KotaAsal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
3. Buat baru layout xml, Beri nama edit berikut adalalah codenya
<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">
</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
<Button
android:text="Simpan"
android:id="@+id/btnEditSimpan"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
Buat class baru beri nama SQLHelper.java isikan code berikutt. Code ini
membuat databse dan tabel.
import android.content.Context;
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 android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
Button btnEditSimpan;
EditText edEditNama;
EditText edEditNim;
EditText edEditKota;
@ Ov er ri de
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
SQLiteDatabase db = dbHelper.getReadableDatabase();
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());
}
}
}
7. Tambahkan lagi class baru dengan nama AddActivity berikut adalah kode nya:
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle; import android.view.Menu; import
android.view.MenuItem; import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.EditText;
import android.widget.ListView; import android.widget.Toast;
@ Ov er ri de
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add);
});
}
}
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu; import android.view.MenuItem;
import android.view.View;
@ Ov er ri de
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ma = this;
ListView01 = (ListView)findViewById(R.id.ListView01);
ListView01.setAdapter(new ArrayAdapter(this,
switch(item){
case 0 :
break;
case 1 :
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("delete from kota where nama = '"+selection+"'");
RefreshList();
break;
}
((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalida
ted
();
}
@ Ov er ri de
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;
}
@ Ov er ri de
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;
Setelah selesai jalankan programnya. Akan tampil data inputan pertama yang diabuat yaitu
nama yoga dan sukarta.
Klik menu pada device untuk tambah , maka akan muncul seperti berikut: