Praktikum 13 Dasar Pemprograman Android

advertisement
Praktikum 13
Dasar Pemprograman Android
Dosen : Ir. Nanang Syahroni M.Kom
Pokok Bahasan
Konsep Pemprograman Bahasa Java pada Android
Deklarasi Pemprograman Java pada Android
Penggunaan import, resource, Button, RadioButton, dan Textfield.
Tujuan Belajar
Mengetahui cara instalasi Java JDK, Eclipse IDE, dan Android SDK.
Mengenal tentang konsep pemrograman Java untuk Android
Mengenal tentang komponen pemprograman Android
Mengetahui perbedaan fungsi antara file main.xml dan string.xml
Pendahuluan
Android merupakan adalah perangkat lunak terdiri dari OS beserta tool dan library
lainnhya yang dikembangankan oleh perusahaan Google, dan bersifat Open Source.
Saat ini disediakan Android Software Development Kit (SDK) sebagai alat bantu dan
API diperlukan untuk mulai mengembangkan aplikasi pada platform Android
menggunakan bahasa pemrograman Java, sehingga mudah digunakan untuk belajar
membuat aplikasi. Fitur-fitur Android antara lain:
Mesin virtual Dalvik dioptimalkan untuk perangkat mobile
Integrated browser berdasarkan engine open source WebKit
Grafis yang dioptimalkan dan didukung oleh perpustakaan grafis 2D, grafis
3D berdasarkan spesifikasi opengl ES 1,0 (Opsional akselerasi hardware)
SQLite untuk penyimpanan data
Media Support yang mendukung audio, video, dan gambar (MPEG4, H.264,
MP3, AAC, AMR, JPG, PNG, GIF)
Bluetooth, EDGE, 3G, dan WiFi (tergantung hardware)
Kamera, GPS, kompas, dan accelerometer (hardware tergantung)
Lingkungan Development yang lengkap dan kaya termasuk perangkat
emulator, tools untuk debugging, profil dan kinerja memori, dan plugin.
1
Framework Aplikasi
Pengembang memiliki akses penuh framwork API yang sama yang digunakan
oleh aplikasi inti. Arsitektur aplikasi dirancang agar komponen dapat digunakan
kembali (reuse) dengan mudah.
Setiap aplikasi dapat memanfaatkan kemampuan ini dan aplikasi yang lain
mungkin akan memanfaatkan kemampuan ini (sesuai dengan batasan keamanan
yang didefinisikan oleh framework). Mekanisme yang sama memungkinkan
komponen untuk diganti oleh pengguna.
Semua aplikasi yang merupakan rangkaian layanan dan sistem, termasuk:
o View Set kaya dan extensible yang dapat digunakan untuk membangun
aplikasi, termasuk daftar, grids, kotak teks, tombol, dan bahkan sebuah
embeddable web.
o Content Provider yang memungkinkan aplikasi untuk mengakses data (seperti
dari daftar kontak telp) atau dari data mereka sendiri.
o Resource Manager, yang menyediakan akses ke kode sumber non-lokal seperti
string, gambar, dan tata letak file
o Notifikasi Manager yang memungkinkan semua kustom aplikasi untuk
ditampilkan dalam alert status bar
o Activity Manager yang mengelola siklus hidup aplikasi dan menyediakan
navigasi umum backstack
Android Runtime
Android terdiri dari satu set core libraries yang menyediakan sebagian besar
fungsi yang tersedia dalam core libraries dari bahasa pemrograman Java.
Setiap menjalankan aplikasi Android sendiri dalam proses, dengan masingmasing instance dari mesin virtual Dalvik (Dalvik VM).
Dalvik dirancang agar perangkat dapat menjalankan multiple VMs secara
efisien. Mesin
Virtual Dalvik dieksekusi dalam Dalvik executable (.dex), sebuah format yang
dioptimalkan untuk memori yang kecil. Dalvik VM berbasis, berjalan dan
dikompilasi oleh compiler bahasa Java yang telah ditransformasikan ke
dalam .dex format yang disertakan oleh tool "dx".
Dalvik VM bergantung pada kernel Linux untuk berfungsi , seperti threading
dan manajemen memori tingkat rendahnya .
2
Linux Kernel
Android bergantung pada Linux Versi 2.6 untuk inti sistem pelayanan seperti
keamanan, manajemen memori, proses manajemen, susunan jaringan, dan
driver model.
Kernel juga bertindak sebagai lapisan yang abstak antara hardware dan
software stacknya.
Android ADT
Android Development Tools (ADT) merupakan plugin untuk Eclipse IDE
yang didesain dengan kemampuan yang lengkap dan terintegrasi untuk
membangun aplikasi Android.
ADT dapat meningkatkan kemampuan yang dimiliki Eclipse to agar dapat
digunakan untuk membuat project aplikasi, membuat uer interface,
menambahkan beberapa package yang berkaitan untuk membangun aplikasi
dengan framework application user interface (API) pada Android.
Disamping itu kita bias melakuka debug menggunakan Android SDK tools,
meskipun sudah dalam bentuk file aplikasi yang telah jadi .apk dalam rangka
menggunakan aplikasi Android yang telah dibuat.
Komponen Siklus Hidup Android
Dalam pengembangan aplikasi Android, ada beberapa hal yang harus diperhatikan,
antara lain:
Konsep yang dipakai adalah memisahkan coding untuk logic aplikasi
(algoritma) dan coding untuk tampilan aplikasi (user interface).
Untuk coding logic (algoritma), android menggunakan bahasa pemrograman
Java. Sedangkan untuk pengaturan tampilan, Android menggunakan XML.
Android memiliki 4 komponen yang memiliki peran yang berbeda-beda dan berdiri
sendiri meskipun terkadang salah satu komponen bergantung pada komponenen
lainnya. Masing-masing komponen memiliki daur hidup sendiri-sendiri yang
mengatur kapan komponen dibuat dan bagaimana komponen dihapus.
3
Berikut ini adalah 4 tipe komponen dalam aplikasi android:
a. Activity
Aplikasi yang kita buat bisa memiliki satu activity, atau juga banyak activity.
Setiap activity yang didefinisikan memiliki daur hidup tersendiri, jika saat ini
activity sedang running, mungkin selanjutnya aplikasi kita berhenti sebentar
(pause) atau memang benar-benar dimusnahkan, hilang dari memori (destroy).
Kita melakukan pengaturan tindakan saat activity berada di state tertentu dengan
cara melakukan override terhadap method di dalam class Activity. Pada waktunya,
Android akan memanggil method yang bersesuaian dengan state activity. Sebagai
contoh, sebuah aplikasi email mungkin memiliki satu activity untuk menunjukan
email baru, satu lagi activity untuk menulis surat, dan satu lagi activity untuk
membaca email. Meskipun activity-activity bekerja bersamaan untuk membentuk
sebuah aplikasi email yang bagus, setiap activity tidak bergantung kepada yang
lainnya. Misalnya aplikasi lain bisa menggunakan satu dari beberapa activity
tersebut jika aplikasi email memperbolehkannya.
Beberapa tahapan (state) yang terjadi dalam class Activity bisa dilihat gambar
berikut ini :
4
Penjelasan state method pada class Activity :
1. onCreate(), method ini dipanggil ketika aktifitas pertama kali dimulai. Kita
dapat menggunakan method ini untuk melakukan inisialiasi awal seperti
menentukan antar muka (user interface), method onCreate() yang memiliki
satu parameter yang dapat bernilai null atau bernilai informasi dari state
sebelumnya yang dijalankan oleh method onSaveInstanceState().
2. onStart(), method ini mengindikasikan aktifitas yang siap ditampilkan ke user.
3. onResume(), method ini dipanggil ketika aktifitas anda dinyatakan siap ber
interaksi dengan user. Ini adalah aktifitas yang paling tepat untuk menyertakan
animasi dan music pada aplikasi.
4. onPause(), method ini dijalankan ketika aktifitas akan dijalankan di
background, biasanya terjadi ketika aktifitas berjalan di atas aktifitas ini. Pada
state ini sebaiknya anda implementasi persistent data pada program anda,
seperti ketika sebuah database sedang dilakukan proses edit.
5. onStop(), method ini dipanggil saat aktifitas anda tidak bisa dilihat lagi oleh
user dan tidak dibutuhkan untuk sementara waktu. Jika memori dalam keadaan
parah (karena banyak resource berjalan) maka method onStop() tidak pernah
akan dipanggil (system mungkin akan mematikan prosesnya)
6. onRestart(), jika method ini dipanggil, berarti aktifitas anda sedang di
tampilkan ulang (redisplay) oleh user dari sebelumnya distop.
7. onDestroy(), method ini dipanggil sebelum sebuah aktifitas di matikan (didestroy). Jika resource memory ketat method onDestroty() tidak pernah akan
dipanggil (system mungkin akan mematikan prosesnya).
8. onStateInstanceState()
9. onRestoreInstanceState()
b. Service
Service adalah komponen yang berjalan dibalik layar. Sebuah service tidak
memiliki user interface. Sebagai contoh, sebuah service bisa memainkan musik,
sementara user sedang menjalankan aplikasi lain. Atau service juga bisa
mengirimkan data melalui internet tanpa harus menghentikan interaksi user
dengan sebuah activity. Komponen lain, misalnya activity bisa memulai service
dan menjalankannya atau terikat ke service tersebut untuk berinteraksi dengan
service tersebut.
c. Content provider
Sebuah content provider mengatur sekumpulan data aplikasi yang terbagi (shared).
Kita bisa menyimpan data di filesystem, sebuah database SQLite, di web, atau di
metode penyimpanan data lainnya yang bisa diakses oleh aplikasi kita. Melalui
content provider, aplikasi lain bisa memberikan query atau bahkan bisa
memodifikasi, tentunya jika content provider mengijinkan aksesnya. Sebagai
contoh, sistem android menyediakan content provider yang mengatur informasi
kontak user. Misalnya, aplikasi apa saja yang memiliki ijin bisa memberikan
5
query kepada sebagian data untuk membaca dan menulis informasi tentang orang
tertentu. Content provider juga bisa digunakan untuk menulis dan membaca data
pribadi yang tidak dibagikan (tidak di shared).
d. Broadcast receivers
Broadcast receiver adalah komponen yang merespon terhadap siaran (broadcast)
pengumuman yang dikeluarkan oleh sistem. Banyak siaran broadcast yang aslinya
berasal dari sistem. Misalnya broadcast yang memberitahukan bahwa layar sudah
mati, battery lemah, atau gambar sudah diambil. Aplikasi juga bisa memulai
broadcast, misalnya memberitahukan aplikasi lain bahwa beberapa data sudah
selesai didwonload dan bisa digunakan. Meskipun broadcast receiver tidak
menampilkan user interface, broadcast receiver bisa membuat notifikasi di status
bar untuk memberitahukan user sedang terjadi broadcast. Secara umum, broadcast
receiver hanyalah sebuah "gerbang" kepada komponen lain dan ditujukan untuk
melakukan perkerjaan yang sangat minimal.
Tiga dari empat tipe komponen (activity, service dan broadcast receiver) diaktifkan
oleh sebuah pesan tidak sinkron yang disebut intent. Intent mengikat beberapa
komponen-komponen indiviual menjadi satu pada saat runtime. Sebuah intent dibuat
dengan objek Intent, yang mendefinisikan sebuah pesan untuk mengaktifkan sebuah
komponen khusus atau sebuah tipe komponen (sebuah intent bisa merupakan
komponen implisit atau eksplisit). Untuk activity dan service, sebuah intent
mendefinisikan aksi apa yang harus dilakukan oleh keduanya, misalnya untuk melihat
atau
mengirim
sesuatu.
Bagi broadcast receiver, intent hanyalah mendefinisikan pengumuman yang dibroadcast. Misalnya sebuah broadcast untuk mengindikasikan batery perangkat sudah
lemah hanya terdiri dari sebuah action string yang bernilai "Battery lemah".
Komponen tipe lain, content provider, tidak diaktifkan oleh intent. Akan tetapi,
content provider diaktifkan ketika menjadi target permintaan dari sebuah content
resolver. Content resolver meng-handle semua transaksi langsung dengan content
provider sehingga komponen yang ingin bertransaksi dengan content provider cukup
memanggil
method
di
objek
content
resolver.
Ada beberapa metode terpisah yang bisa digunakan untuk mengaktifkan setiap tipe
komponen:
6
Kita bisa memulai sebuah activity atau memberikannya sesuatu yang baru
untuk dilakukan dengan mengirimkan sebuah Intent ke startActivity() atau
startActivityForResult() jika kita ingin activity agar mengembalikan sebuah
hasil.
Kita bisa memulai service atau memberikan instruksi baru kepada service
yang berjalan dengan memberikan Intent ke startService(). Atau kita bisa
terikat ke service dengan memberikan Intent ke bindService().
Kita juga bisa menginisiasi sebuah broadcast dengan memberikan sebuah
Intent ke beberapa method seperti sendBroadcast(), sendOrderedBroadcast(),
atau sendStickyBroadcast().
Kita bisa melakukan query ke content provider dengan memanggil query()
dalam sebuah Contentresolver.
Praktek 1: Instalasi Java JDK, Eclipse IDE, dan Android SDK
1. Periksa PC masing-masing, dan pastikan telah bekerja dengan baik.
2. Periksa apakah beberapa perangkat lunak yang diperlukansudah tersedia
antara lain:
o OS Windows XP/7
o Eclipse IDE for Java (122 MB)
o JDK 6 atau 7 ( kalau sudah ada gak perlu install lg) 70 MB
o Android Development Tool Plugin (4,8 MB)
o Android SDK (34 MB)
Berikut adalah cara instalasi Android:
1. Instal JDK, apabila sudah pernah menginstall maka tidak perlu menginstall lagi.
2. Extrak Eclipse IDE yang sudah di download. Kemudian ekstract pada directory
yang mudah diakses. Jika telah siap maka jalankan Eclipse, dan akan ditampilkan
logo seperti berikut:
7
3. Kemudian pilih menu Help > Install New Software…
4. Klik tombol Add… di kiri atas, lalu muncul Add Repository, disini kita bisa
masukkan ADTnya secara online dengan memasukan alamat repository Android
(https://dl-ssl.google.com/android/eclipse/).
5. Jika secara offline dengan menekan tombol Archive dan arahkan ke file yang
telah kita download sebelumnya, seperti betikut:
Jika terdapat Warning seperti gambar dibawah maka tekan OK.
6. Setelah proses diatas selesai dilakukan, maka selanjutnya jalankan eclipse dan
tentukan directori Workspace, seperti contoh dibawah.
8
7. Setelah proses diatas selesai dilakukan, maka selanjutnya pilih Window >
Preferences > Android, lalu browse ke folder SDK Android lalu tekan Apply,
tunggu beberapa saat, lalu tekan OK.
8. Pilih lagi Window > Android SDK and AVD Manager, nah disini kita harus
mendownload lagi file yang kita butuhkan, misalnya ingin buat aplikasi yang
berjalan di Android 2.1, maka download lah SDK Platform Android 2.1, lebih
baik kita download sama Sample dan Documentation agar memudahkan kita
untuk mencari dokumentasi dan belajar dari source code yang sudah ada.
9. Bila langkah-langkah diatas telah dilakukan dengan benar maka dapat dikatakan
selesai instalasinya, Selanjutnya langsung bisa memulai membuat aplikasi dengan
memilih File > New >Android Project.
10. Pada contoh ini akan membuat Android Project dengan nama CobaHello1.
9
11. Kemudian pilih Android Target sesuai dengan HP yang dimiliki.
12. Kemudian pilih minimum SDK yang sesuai dengan HP yang dimiliki.
10
13. Kemudian periksa project yang telah dibuat dengan menampilkan Graphical
Layout dari main.xml sepeti gambar dibawah:
14. Lalu tambahkan gambar icon seperti berikut ini:
15. Jika telah selesai maka click button Run dan akan ditampilkan menu seperti
berikut, lalu pilih Android Application.
16. Jika tidak ada kesalahan maka akan ditampilkan pada emulator seperti terlihat
dibawah ini:
11
Praktek 2: Program Konverter Suhu
1. Pertama-tama butlah project baru, misalnya dengan nama KonverterSuhu.
Selanjutnya pada Package Explorer akan terlihat susunan seperti berikut:
2. Langkah kerja aplikasi Android pertama kali akan memeriksa file
AndroidManifest.xml pada project kita. Dalam file tersebut, sistem android akan
12
mencari sebuah element <activity> yang ditetapkan sebagai LAUNCHER,
ditandai dengan memiliki elemen <category> dengan atribut
android:name="android.intent.category.LAUNCHER".
3. Kita lihat file AndroidManifest.xml dalam aplikasi KonverterSuhu, seperti berikut.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="konverter.suhu"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="konverter.suhu.KonverterSuhuActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
4. Kemudian edit file KonverterSuhuActivity.java seperti contoh dibawah ini. File
inilah yang mengatur logic dari aplikasi, berdasarkan informasi yang ada di
AndroidManifest.xml, maka file inilah yang akan dijalankan pertama kali ketika
user ingin menjalankan aplikasi.
package konverter.suhu;
import
import
import
import
import
import
import
konverter.suhu.R;
android.app.Activity;
android.os.Bundle;
android.view.View;
android.widget.EditText;
android.widget.RadioButton;
android.widget.Toast;
public class KonverterSuhuActivity extends Activity {
private EditText text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (EditText) findViewById(R.id.editText1);
}
// method untuk click button
public void myClickHandler(View view) {
switch (view.getId()) {
case R.id.button1:
RadioButton celsiusButton = (RadioButton)
findViewById(R.id.radio0);
RadioButton fahrenheitButton = (RadioButton)
findViewById(R.id.radio1);
13
if (text.getText().length() == 0) {
Toast.makeText(this,"Input salah!",
Toast.LENGTH_LONG).show();
return;
}
float inputValue =
Float.parseFloat(text.getText().toString());
if (celsiusButton.isChecked()) {
text.setText(String.valueOf(konversiFahrenheitToCelsius(i
nputValue)));
celsiusButton.setChecked(false);
fahrenheitButton.setChecked(true);
} else {
text.setText(String.valueOf(konversiCelsiusToFahrenheit(i
nputValue)));
fahrenheitButton.setChecked(false);
celsiusButton.setChecked(true);
}
break;
}
}
// konversi ke celsius
private float konversiFahrenheitToCelsius(float
fahrenheit) {
return ((fahrenheit - 32) * 5 / 9);
}
// konversi ke fahrenheit
private float konversiCelsiusToFahrenheit(float celsius)
{
return ((celsius * 9) / 5) + 32;
}
}
5. Class KonverterSuhuActivity diatas merupakan sebuah class turunan dari class
Activity. Metode onCreate pada class diatas akan dipanggil ketika activity ini
ingin dijalankan (ditampilkan di layar). Yang perlu kita perhatikan disini adalah
pada baris setContentView(R.layout.main);. Artinya, file xml yang akan digunakan
menjadi tampilan activity ini adalah pada file dengan nama main.xml dalam folder
res/layout/ pada project kita.
6. Kemudian edit file main.xml seperti contoh dibawah. File inilah yang mengatur
tampilan, sesuai dengan parameter yang diberikan ke metode setContentView().
<?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:background="@color/myColor"
android:orientation="vertical" >
<TextView
14
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal|numberSigned" >
</EditText>
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/celsius" >
</RadioButton>
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/fahrenheit" >
</RadioButton>
</RadioGroup>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="myClickHandler"
android:text="@string/calc" >
</Button>
</LinearLayout>
7. LinearLayout merupakan format layout yang paling sering digunakan dalam
aplikasi Android. Format ini menempatkan menampilkan komponen UI (button,
textview, dll) secara berurutan berdasarkan penulisannya. Seperti namanya,
TextView digunakan untuk menampilkan text. Text yang ditampilkan langsung
ditulis atau merupakan referensi ke variable string dalam res/values/strings.xml.
Dalam contoh di atas, text yang akan ditampilkan adalah string dengan nama
"hello".
8. Pada Graphical Layout file main.xml akan terlihat seperti contoh berikut:
15
9. Kemudian edit file string.xml tempat mendeklarasikan beberapa string, seperti
contoh berikut:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="myColor">#AA55CC</color>
<string name="app_name">KonverterSuhu</string>
<string name="hello">Isilah suhu pada kolom dibawah</string>
<string name="myClickHandler">myClickHandler</string>
<string name="celsius">ke Celsius</string>
<string name="fahrenheit">ke Fahrenheit</string>
<string name="calc">Konversi</string>
</resources>
10. Jika proses edit telah selesai semua, maka click Run, lalu tunggu beberapa saat,
maka pada emulator akan terlihat seperti contoh berikut:
16
Cara kerja aplikasi diatas adalah sebagai berikut:
1. Ketika pertama kali aplikasi dijalankan (activity dibuat), method onCreate()
dieksekusi. Di dalam method ini, terdapat pengaturan tampilan layar dan
pengambilan ID dari text field.
2. Dalam Android, tampilan text field direpresentasikan oleh class editText1. Setelah
method onCreate() dieksekusi, selanjutnya Android mengeksekusi method
onResume().
3. Karena activity baru diluncurkan pertama kalinya, belum ada nilai yang tersimpan
di inputValue sehingga variabel text bernilai null, dan jika akan diisi dengan cara
meng-click didalam textfield maka akan ditampilkan keypad Android pada sisi
bawah.
4. Ketika aplikasi akan dieksekusi dengan memilih radio button “ke Fahrenheit”,
maka nilai yang diisikan kedalam text akan dikonversikan ke Fahrenheit.
Selanjutnya dengan meng-click button “konversi” maka inilah saat yang pas
untuk menyimpan nilai dari textfield atau menyimpan konten dari textfield.
5. Jika kita lihat kode di dalam KonverterSuhuActivity.java, maka kita akan melihat
proses penyimpanan konten text dan diberikan ke method
konversiCelsiusToFahrenheit() untuk dikonversikan. Selanjutnya hasil kalkulasi
akan disimpan dalam text sebagai nilai hasil kalkulasi, dan nilai text inilah yang
selanjutnya ditampilkan ke textfield.
17
Download