MODUL PRAKTIKUM PEMROGRAMAN MOBILE II 5 Broadcast Receivers and Notifications STMIK SINAR NUSANTARA SURAKARTA 2017 Broadcast Receivers Definisi dari Broadcast Receiver adalah sebuah komponen pada aplikasi android yang berfungsi untuk menerima siaran (broadcast) pesan dari internal sistem android atau dari aplikasi tertentu yang sudah terinstall di dalam os android. Pesan yang di broadcast oleh aplikasi disebut event (atau system event, kalau berasal dari internal system android). Event-event yang bisa terjadi diantara contohnya adalah seperti : kondisi level batere yang rendah (Low battery), perubahan level batere, perangkat android terhubung dengan sumber listrik (power connected with the device), perangkat android beralih (switch) ke flight mode (airplane mode), proses booting OS telah selesai (Boot completed), perubahan tanggal sistem, dan sebagainya. Untuk menerapkan Broadcast Receiver pada sebuah project dimulai dengan membuat object dari Class BroadcastReceiver kemudian mendaftarkan (register) event pada file AndroidManifest.xml, agar nantinya event dapat dideteksi oleh program. Selain mendaftarkan pada AndroidManifest, event bisa juga didaftarkan pada class Activity pada saat activity dibentuk (onCreate) dengan menggunakan method registerReceiver(). Sedangkan untuk melakukan event handling (action yang dilakukan ketika event terjadi) dapat di definisikan pada method onReceive(). LATIHAN 1 Untuk memahami penerapan Broadcast Receiver buat aplikasi sebagai berikut : 1. Buat Project dengan nama LatBroadcastBatere ! 2. Setelah project terbentuk, ubah MainActivity.java menjadi BatteryIndicatorActivity.java 3. Buat XML Layout untuk activity_main.xml sebagai berikut (copy-paste): <?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:orientation="vertical" > <TextView android:id="@+id/textfield" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="40dip" /> <ProgressBar android:id="@+id/progressbar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="20dip" android:max="100" android:maxHeight="500dip" android:maxWidth="300dip" android:minHeight="100dip" android:minWidth="200dip" /> </LinearLayout> 4. Simpan perubahan dari file activity_main.xml ! Pemrograman Mobile II Halaman 1 5. Buat coding untuk BatteryIndicatorActivity.java sebagai berikut : 6. Simpan dan jalankan projectnya pada emulator! 7. Untuk mensimulasikan perubahan level batere dapat dengan menggunakan tools adb. Jalankan perintah adb pada command prompt seperti berikut : a. Pindahkan folder aktif ke folder instalasi sdk terlebih dahulu : b. Kemudian berikan perintah berikut: adb shell dumpsys battery set level 70 c. Amati perubahan level batere yang dideteksi oleh aplikasi. Pemrograman Mobile II Halaman 2 8. Buat analisis project pada Laporan! LATIHAN 2 Pada project berikut penerapan Broadcast Receiver digunakan untuk menjalankan aplikasi setiap device dinyalakan (autostart app / setiap proses booting OS android telah selesai) 1. Buat project dengan nama LatihanAutostart ! 2. Buat XML Layoutnya (activity_main.xml) sebagai berikut : <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rl1" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="101dp" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageView1" android:layout_centerHorizontal="true" android:layout_marginTop="40dp" android:gravity="center" android:text="Auto Start" android:textSize="30sp" /> </RelativeLayout> 3. Buat coding MainActivity.java sebagai berikut : Pemrograman Mobile II Halaman 3 4. Buat class BootupReceiver.java isikan codingnya sebagai berikut : 5. Tambahkan coding pada AndroidManifest sebagai berikut : 6. Jalankan Projectnya pada Emulator! 7. Restart Emulator, dan perhatikan bahwa aplikasi akan otomatis di jalankan ketika proses Boot OS selesai. 8. Buat analisis project pada Laporan Praktikum! Pemrograman Mobile II Halaman 4 NOTIFICATIONS Notification adalah mekanisme pemberitahuan untuk pengguna yang ditampilkan di luar area user interface aplikasi pengguna (umumnya ditampilkan dibagian atas tampilan layar device). Mirip seperti pop-up messages pada sistem operasi Windows, notification ini berguna untuk memberikan informasi kepada pengguna akan terjadinya suatu event seperti SMS atau e-mail yang masuk inbox, pengingat (reminder) jadwal, alarm jam, dan sebagainya. Penggunaan Toast meskipun dapat memberikan pemberitahuan kepada pengguna, tetapi Toast hanya tampil dalam periode yang singkat, setelah itu akan hilang dari tampilan user interface, sehingga pengguna kemungkinan tidak mengetahui adanya peringatan tersebut. Notification dalam hal ini akan mengingat pesan peringatan yang muncul, dan akan ditempatkan dalam tumpukan daftar, jadi meskipun muncul beberapa kali notification yang berbeda, tidak akan hilang sampai pengguna menghapus notification tersebut. Berikut ini contoh tampilan notifikasi yang muncul pada layar device. Untuk membuat Notifikasi, langkah pertama yang perlu dilakukan adalah membuat object dengan menggunakan NotificationBuilder, contoh codingnya adalah sebagai berikut : Notification notification = new Notification.Builder(this) .setContentTitle("Basic Notification") .setContentText("Lorem ipsum dolor sitamet") .setSmallIcon(R.drawable.ic_launcher).build(); notification.flags = Notification.FLAG_AUTO_CANCEL; NotificationManager notificationManager = getNotificationManager(); notificationManager.notify(0, notification); Properties dari Notification yang bisa digunakan diantaranya sebagai berikut : Pemrograman Mobile II Halaman 5 LATIHAN 3 Untuk memahami penerapan Notifications pada suatu aplikasi, serta berbagai macam bentuk tampilan style dari suatu Notification buatlah project berikut : 1. Buat Project dengan nama LatihanNotification, set minSdkVersion="16" 2. Buat XML Layout untuk file activity_main.xml sebagai berikut (copy-paste): <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="vertical" android:gravity="center_horizontal"> <Button android:id="@+id/btBasicNotification" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:onClick="sendBasicNotification" android:text="BasicNotification" /> <Button android:id="@+id/btBigTextNotification" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:onClick="sendBigTextStyleNotification" android:text="BigTextNotification" /> <Button android:id="@+id/btBigPictureNotification" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:onClick="sendBigPictureStyleNotification" android:text="BigPictureNotification" /> </LinearLayout> Simpan file tersebut, tampilan Layout xml seperti berikut : Pemrograman Mobile II Halaman 6 3. Buat XML Layout untuk file handle_notification_activity.xml sebagai berikut (copy-paste): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal|center_vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="HandleNotification" android:textSize="20dp" android:textStyle="bold|italic" /> </LinearLayout> 4. Buat coding untuk file HandleNotificationActivity.java sebagai berikut : Pemrograman Mobile II Halaman 7 5. Pada AndroidManifest daftarkan activity HandleNotificationActivity : 6. Buat icon Notification yaitu : ic_action dan ic_share dengan langkah berikut : Klik Kanan folder /res/drawable-hdpi lalu pilih New – Other – Android – Android Icon set Pilih Notification Icons, dan beri nama iconnya: Pilih Clipart lalu klik Choose... untuk memilih icon Pemrograman Mobile II Halaman 8 7. Tempatkan sebuah file gambar dengan nama big_pic.png berukuran 200 x 100 pixel pada folder : /res/drawable-hdpi 8. Buat coding untuk MainActivity.java sebagai berikut : Pemrograman Mobile II Halaman 9 Perhatikan coding pada bagian attribut dari Notification seperti setContentTitle, setContentText, setTicker dan seterusnya. Pending Intent digunakan nantinya untuk mengaktifkan Activity yang akan dijalankan ketika user meng-klik notification pada layar. Activity yang akan dijalankan didefinisikan pada method getPendingIntent() dibawah ini (coding dibawah masih merupakan lanjutan dari MainActivity.java). Pemrograman Mobile II Halaman 10 9. Simpan dan jalankan project pada Emulator! 10. Perhatikan variasi tampilan dari Notifikasi yang dimunculkan, buat analisa & kesimpulan project pada Laporan! TUGAS 1. Buat Project dengan nama TugasNotification yang akan menampilkan pesan Notification apabila level Battery < 50 % ! 2. Gunakan properties pada Notification seperti : .setSound() .setTicker() .setSmallIcon() 3. Untuk mensimulasikan level battery < 50% gunakan perintah ini didalam command-prompt : 4. Tampilan Notification seperti berikut : Pemrograman Mobile II Halaman 11