Tujuan Pembelajaran Percobaan 1: Memantau Baterai dengan BroadcastReceiver

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