Workshop Struktur dan Pemakaian Teknologi Game
92
6.1 Tujuan Pembelajaran
1. Memahami tentang cara penggunaan intent.
2. Memahami cara untuk menghubungkan dua buah activity.
6.2 Dasar Teori
Pada bab ini, akan dibahas mengenai Intent. Intent mungkin merupakan konsep pengembangan aplikasi android yang paling unik dan paling penting. Disini akan dipelajari
bagaimana cara menggunakan intent untuk mem-broadcast data pada aplikasi, memulai activity atau service secara eksplisit maupun implisit.
6.2.1 Intent
Intent bekerja menggunakan mekanisme transfer pesan data dari activity satu ke activity lain, dari aplikasi satu ke aplikasi lain.
Pada penggunaan intent secara eksplisit, user menyebutkan sebuah class lain untuk di load. Secara implisit, user hanya merequest sebuah action yang sudah
built-in untuk dijalankan. Intent juga memiliki fasilitas Broadcast Intent yang digunakan sebagai sistem yang membroadacast pesan dan menggunakan Broadcast
Receiver untuk menerima pesan yang dikirim secara broadcast.
Menggunakan Intent untuk Memulai activity
Kegunaan yang paling umum dari intent adalah mengikat komponen aplikasi. Intent digunakan untuk memulai dan transisi antar activity.
Intent secara Eksplisit
Untuk memulai intent secara eksplisit, pilih sebuah activity class dari aplikasi lalu gunakan Context dari activity saat ini dan Class dari activity yang akan
dijalankan sebagai parameter penggunaan eksplisit intent.
Intent intent = new IntentActivityku.this, ActivityLain.class; startActivityintent;
Workshop Struktur dan Pemakaian Teknologi Game
93 Setelah
startActivity dieksekusi, activity barudalam contoh ini
ActivityLain akan dibuat, menjadi terlihat dan aktif, bergerak ke bagian teratas dari activity stack.
Memanggil finish
pada activity yang baru dibuat atau menekan tombol back pada device akan menutup activity dan menghapusnya dari stack.
Intent secara Implisit
Implisit intent adalah mekanisme yang membiarkan komponen dari aplikasi anonim merequest action service. Hal ini berarti aplikasi bisa meminta pada sistem untuk
menjalankan built-in atau action service yang sudah ditanam dalan android tanpa mengetahui aplikasi mana atau activity mana yang mencetusnya.
Ketika membuat implisit intent, Anda harus menambakan sebuah action built-in yang akan dijalankan dan secara opsional biasanya juga diikuti oleh URI data untuk
menjalankan action tersebut. Selain URI beberapa action juga membutuhkan data tambahan untuk menjalankannya.
IflampuKosMati{ Intent
telpPLN =
new IntentIntent.ACTION_DIAL,
Uri.parsetel:7108573; startActivitytelpPLN;
}
Android akan membaca intent dan memulai activity yang menyediakan fasilitas dial ke nomor telepon diatas
Table 4 Beberapa Action Intent yang biasa digunakan
ACTION_ANSWER Menjawab panggilan masuk
ACTION_ATTACH_DATA Mengindikasikan data yang harus dilekatkan
pada tempat lain
ACTION_CALL Menempatkan panggilan pada lokasi yang
menyediakan
ACTION_DELETE Menghapus data yang ditentukan
ACTION_DIAL Membuka
activity pemanggilan
dan memanggil nomor yang ditentukan
Workshop Struktur dan Pemakaian Teknologi Game
94
ACTION_EDIT Melayani akses pengubahan pada data yang
tersedia
ACTION_EMERGENCY_DIAL Memanggil nomor darurat
ACTION_GET_CONTENT
Memilih dan mengembalikan data yang ditentukan
ACTION_INSERT Memasukkan ke item yang kosong
ACTION_MAIN Membentuk titik awal activity
ACTION_PICK Memilih item dan mengembalikan pilihan
ACTION_RUN
Menjalankan data yang diberikan
ACTION_SEARCH Melakukan pencarian ke sistem
ACTION_SEND Mengirim data tanpa penentuan penerima
ACTION_SENDTO Mengirim data ke penerima yang ditentukan
ACTION_VIEW Menampilkan data kepada user
ACTION_WEB_SEARCH
Melakukan pencarian web
Broadcast Intent
Intent yang mengirimkan ke lebih dari satu activity untuk ditangani. Sebagai contoh, Broadcast Intent
akan mengirimkan perubahan waktu activity dapat memproses ini dan bereaksi sesuai waktu yang diberikan atau pengiriman level baterai oleh
Broadcast Intent dapat digunakan untuk menghentikan aplikasi apabila baterai
sudah dibawah level tertentu.
Action Broadcast
Intent intent = new IntentACTION_TIME_TICK; sendBroadcastintent;
Listener
import android.content.BroadcastReceiver; import android.content.Context;
import android.content.Intent; public class MyBroadcastReceiver extends BroadcastReceiver {
Override public void onReceiveContext context, Intent intent {
TODO: React to the Intent received. }
}
Workshop Struktur dan Pemakaian Teknologi Game
95
Table 5 Beberapa Broadcast Intent yang biasa digunakan
Broadcast Intent Keterangan
ACTION_TIME_TICK
Waktu sekarang
telah berubah,
mengirim setiap menit.
ACTION_TIME_CHANGED Waktu telah diatur
ACTION_TIMEZONE_CHANGED Zona waktu telah berubah
ACTION_ BOOT_COMPLETED Disiarkan sekali ketika sistem telah
menyelesaikan proses booting
ACTION_PACKAGE_ADDED Package aplikasi baru telah diinstal ke
device
ACTION_PACKAGE_CHANGED Package aplikasi yang ada telah diubah
ACTION_PACKAGE_REMOVED Package aplikasi yang ada telah
dipindahkan
ACTION_PACKAGE_RESTARTED Pengguna memulai kembali package
dan semua proses telah dimatikan
ACTION_PACKAGE_DATA_CLEARED Pengguna telah membersihkan data dari
package
ACTION_UID_REMOVE
User ID telah dipindahkan dari sistem
ACTION_BATTERY_CHANGED Penyiaran meliputi keadaan pengisian,
level dan informasi lain mengenai baterai.
ACTION_POWER_CONNECTED Daya dari luar dihubungkan ke device
ACTION_POWER_DISCONNECTED Daya dari luar dilepas dari device
ACTION_SHUTDOWN
Device dimatikan
Objek Intent
Objek intent merupakan sekumpulan informasi berkaitan dengan komponen yang akan menerima intent termasuk aksi yang akan diambil ditambah informasi berkaitan
dengan sistem Android termasuk kategori dari komponen yang seharusnya menangani Intent dan memerintahkan bagaimana memunculkan activity tujuan.
Workshop Struktur dan Pemakaian Teknologi Game
96
Atribut Intent
o
Atribut Utama Action
String yang berisi nama dari aksi yang akan dilakukan atau pada Broadcast Intent merupakan pelaporan dari aksi yang terjadi. Action yang biasa
dilakukan dapat dilihat pada bagian sebelumnya Data
Setiap action akan memiliki pasangan jenis data yang berbeda-beda yang dinyatakan sebagai URI. Misalnya, jika action adalah
ACTION_EDIT ,
maka data akan mengandung URI dokumen yang akan ditampilkan untuk diedit. Jika action adalah
ACTION_CALL , maka data akan menjadi
tel: URI
dengan nomor untuk panggilan. Demikian pula, jika tindakan tersebut ACTION_VIEW
dan bidang data adalah http: URI
, activity menerima perintah untuk men-download dan menampilkan data apa pun mengacu
pada URI. o
Atribut Tambahan Category
Memberikan informasi tambahan mengenai tindakan untuk mengeksekusi. Sebagai contoh,
CATEGORY_LAUNCHER berarti harus muncul dalam
launcher sebagai
aplikasi tingkat
atas, sementara
CATEGORY_ALTERNATIVE berarti tindakan alternatif user yang dapat
dilakukan pada sebuah data, misal: Print Preview adalah sebuah alternatif
dari Regular View. Extra
Ini adalah Bundle dari setiap informasi tambahan. Extra dapat digunakan
untuk memberikan informasi tambahan ke komponen. Flag
Pada sistem Android banyak perintah yang dapat mendeskripsikan bagaimana untuk pemuatan activity, sebagai contoh task dari activity harus
Workshop Struktur dan Pemakaian Teknologi Game
97 menjadi milik siapa dan bagaimana penanganan setelah dimuat. Semua
Flag ini didefinisikan pada Class Intent. Type
Type digunakan untuk menspesifikasikan tipe datafile general pada Intent. Contoh:
Pada aplikasi untuk mengirim gambar, myIntent.setType“imagepng”;
Pada aplikasi mengirim email, myIntent.setType“messagerfc822”;
Component
Component digunakan sebagai salah satu cara untuk memulai activity dengan menspesifikasikan ComponentName.
setComponentComponentName name; ComponentName disusun dengan mengikat nama package dan nama class
bersama-sama membentuk sebuah parameter baru yang dapat dimanfaatkan dalam intent.
Contoh:
Intent intent = new Intent; intent.setComponentnew ComponentName
com.android.myPackage, com.android.myPackage.myActivity;
startActivityintent
Permission
Pada sebuah aplikasi android, penggunaan fasilitas Intent hampir selalu disertai oleh penambahan permission pada AndroidManifest.xml karena secara default, fasilitas-
fasilitas telepon, sms, kamera, sensor, beserta hardware dilindungi oleh android. Hal ini sangat dibutuhkan karena digunakan untuk memberi izin akses fitur-fitur yang
terlindungi.
Workshop Struktur dan Pemakaian Teknologi Game
98 Pada eksplisit Intent yang tidak menggunakan action built-in melainkan class yang
didefinisikan sendiri oleh user, harus meregister class yang baru pada AndroidManifest.xml.
Contoh untuk eksplisit Intent:
application …
activity android:name=.ClassBaru
android:label=stringapp_name intent-filter
category android:name=android.intent.category.DEFAULT
intent-filter activity
… application
Untuk implisit Intent dan Broadcast Intent, cukup meregister action yang hendak digunakan, sebagai contoh pada penggunaan fasilitas melakukan panggilan telepon:
application …
application uses-permission Android:name=”Android.permission.CALL_PHONE”
Workshop Struktur dan Pemakaian Teknologi Game
99
Workshop 7
Intent 1
A. Tujuan
1. Memahami cara untuk membuat Intent Implisit
B. Tugas Pendahuluan
1. Pelajari dan buat rangkuman mengenai Intent Android
C. Percobaan
a. Percobaan 1: Memantau Baterai dengan BroadcastReceiver
Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml
? xml
version =
1.0 encoding
= utf-8
? RelativeLayout
xmlns:android =
http:schemas.android.comapkresandroid android:layout_width
= fill_parent
android:layout_height =
fill_parent android:orientation
= vertical
TextView android:id
= +idtextView1
android:layout_width =
wrap_content android:layout_height
= wrap_content
android:layout_alignParentTop =
true android:layout_centerHorizontal
= true
android:gravity =
center_horizontal android:text
= Battery Information
android:textSize =
30px android:textStyle
= bold
Workshop Struktur dan Pemakaian Teknologi Game
100
TextView android:layout_width
= wrap_content
android:layout_height =
wrap_content android:layout_alignParentLeft
= true
android:layout_below =
+idtextView1 android:gravity
= center_horizontal
android:text =
Available power : TextView
android:id =
+idtxtView android:layout_width
= wrap_content
android:layout_height =
wrap_content android:layout_alignParentLeft
= true
android:layout_below =
+idtextView1 android:layout_marginTop
= 23dp
android:padding =
10dp RelativeLayout
Langkah 3 : Lengkapi statement berikut pada class java MainActivity
package
com.ai.intent;
import android.app.Activity;
import android.os.Bundle;
import android.content.BroadcastReceiver;
import
android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.TextView;
public class
IntentBatteryActivity extends
Activity {
private TextView
txtBat ;
private BroadcastReceiver
mBatInfoRec =
new BroadcastReceiver {
Override
public void
onReceiveContext context, Intent intent {
TODO Auto-generated method stub
int level = intent.getIntExtra
level , 0;
txtBat .setTextString.valueOflevel+
; }
}; Called when the activity is first created.
Override
public void
onCreateBundle icicle {
super
.onCreateicicle; setContentViewR.layout.
main ;
txtBat = TextView
this .findViewByIdR.id.
txtView ;
Workshop Struktur dan Pemakaian Teknologi Game
101
this .registerReceiver
this .
mBatInfoRec ,
new IntentFilter
Intent. ACTION_BATTERY_CHANGED
; }
}
Langkah 4 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 5 : Maka akan muncul tampilan layout sebagai berikut :
Gambar 36 Tampilan informasi Battery
b. Percobaan 2: Membuat Intent Pemanggilan Telepon