• Tidak ada hasil yang ditemukan

PAPB-C. Yang harus dipersiapkan: 1. Eclipse 2. AVD/GenieMotion 3. JDK Membuat Android Application Project Baru

N/A
N/A
Protected

Academic year: 2021

Membagikan "PAPB-C. Yang harus dipersiapkan: 1. Eclipse 2. AVD/GenieMotion 3. JDK Membuat Android Application Project Baru"

Copied!
15
0
0

Teks penuh

(1)

User Notification adalah pesan yang diterima oleh user yang tidak muncul dalam user interface utama

tapi ada dalam bentuk icon dan dengan detail notifikasinya dalam notification area. Tujuan dari

munculnya user notification adalah agar user tetap mengetahui event atau alert atau pesan yang masuk

yang bisa user lihat kapan saja tanpa perlu keluar dari aplikasi yang sedang dibuka sekarang. Pada

tutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama notifikasi dengan view

normal menggunakan explicit intent dan yang kedua dengan view besar menggunakan implicit intent.

Yang harus dipersiapkan:

1. Eclipse

2. AVD/GenieMotion

3. JDK 1.7

1. Membuat Android Application Project Baru

Buka Eclipse IDE. Klik File – New – Project – Android Application Project. Isi nama aplikasi, project,

packagenya, dll. Klik Next. Untuk window berikutnya pilih Next saja karena digunakan pengaturan

default.

(2)
(3)
(4)

2. Membuat Layout pada Main Activity

Untuk membuat dua tipe notifikasi yang berbeda, kita membutuhkan dua tombol yang masing-masing

berbeda fungsi.

Buka file res/layout/activity_main.xml lalu paste kode berikut:

<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="papb.notificationtest.MainActivity" >

<Button

android:id="@+id/notificationOne"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Munculkan Notifikasi Satu" />

<Button

android:id="@+id/notificationTwo"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentTop="true"

android:layout_marginTop="60dp"

android:text="Munculkan Notifikasi Dua" />

</RelativeLayout>

3. Mengisi code pada Main Activity

Untuk membuat layout dan mengontrol action dari notifikasi digunakan objek

NotificationCompat.Builder. Setiap objek Notification harus mempunyai:

Icon kecil

Judul Notifikasi

Teks detail

Untuk itu perlu diset setSmallIcon(), setContentTitle(), dan setContentText(). Masih banyak juga layout

content yang bisa digunakan di notifikasi, namun sifatnya opsional. Untuk tampilan notifikasi besar atau

Big View Notification, kecuali konten dari view normal, harus ditambahkan Builder.setStyle().

Action notifikasi menghubungkan notifikasi dengan aktivitas dalam aplikasi, saat user mengklik notifikasi

itu. Notifikasi itu bisa menyediakan beberapa action, tapi minimal satu yang harus ditambahkan, walau

pun itu opsional. Untuk mendefinisikan action, kita menggunakan PentingIntent, yang berisi Intent yang

memulai aktivitas pada Aplikasi.

(5)

Pada aplikasi yang kita buat, pertama Explicit Intent, akan digunakan method cancel(notificationId) jadi

notifikasi akan hilang saat aktivitas ditampilkan. Yang kedua adalah Implicit Intent, digunakan method

setAutoCancel() yang akan berfungsi saat user mengklik notifikasi.

Buka file src/papb.notificationtest/MainActivity.java dan paste kode berikut ini.

package papb.notificationtest;

import android.net.Uri;

import android.os.Bundle;

import android.app.Activity;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.app.TaskStackBuilder;

import android.content.Context;

import android.content.Intent;

import android.support.v4.app.NotificationCompat;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity {

private NotificationManager myNotificationManager;

private int notificationIdOne = 111;

private int notificationIdTwo = 112;

private int numMessagesOne = 0;

private int numMessagesTwo = 0;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button notOneBtn = (Button) findViewById(R.id.notificationOne);

notOneBtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

displayNotificationOne();

}

});

Button notTwoBtn = (Button) findViewById(R.id.notificationTwo);

notTwoBtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

displayNotificationTwo();

}

});

}

protected void displayNotificationOne() {

// Invoking the default notification service

NotificationCompat.Builder mBuilder = new

NotificationCompat.Builder(this);

mBuilder.setContentTitle("Pesan baru");

mBuilder.setContentText("klik untuk melihat pesan");

mBuilder.setTicker("Explicit: Menerima Pesan Baru!");

(6)

mBuilder.setSmallIcon(R.drawable.ic_launcher);

// Increase notification number every time a new notification arrives

mBuilder.setNumber(++numMessagesOne);

// Creates an explicit intent for an Activity in your app

Intent resultIntent = new Intent(this, NotificationOne.class);

resultIntent.putExtra("notificationId", notificationIdOne);

//This ensures that navigating backward from the Activity leads out of

the app to Home page

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

// Adds the back stack for the Intent

stackBuilder.addParentStack(NotificationOne.class);

// Adds the Intent that starts the Activity to the top of the stack

stackBuilder.addNextIntent(resultIntent);

PendingIntent resultPendingIntent =

stackBuilder.getPendingIntent(

0,

PendingIntent.FLAG_ONE_SHOT //can only be used once

);

// start the activity when the user clicks the notification text

mBuilder.setContentIntent(resultPendingIntent);

myNotificationManager = (NotificationManager)

getSystemService(Context.NOTIFICATION_SERVICE);

// pass the Notification object to the system

myNotificationManager.notify(notificationIdOne, mBuilder.build());

}

protected void displayNotificationTwo() {

// Invoking the default notification service

NotificationCompat.Builder mBuilder = new

NotificationCompat.Builder(this);

mBuilder.setContentTitle("Pesan Baru!");

mBuilder.setContentText("Klik untuk melihat pesan");

mBuilder.setTicker("Implicit: Menerima Pesan Baru!");

mBuilder.setSmallIcon(R.drawable.ic_launcher);

NotificationCompat.InboxStyle inboxStyle = new

NotificationCompat.InboxStyle();

String[] events = new String[3];

events[0] = new String("1) Pesan implisit intent");

events[1] = new String("2) Notifikasi besar");

events[2] = new String("3) Julian - 115060807111132");

// Sets a title for the Inbox style big view

inboxStyle.setBigContentTitle("More Details:");

// Moves events into the big view

for (int i=0; i < events.length; i++) {

inboxStyle.addLine(events[i]);

(7)

mBuilder.setStyle(inboxStyle);

// Increase notification number every time a new notification arrives

mBuilder.setNumber(++numMessagesTwo);

// When the user presses the notification, it is auto-removed

mBuilder.setAutoCancel(true);

// Creates an implicit intent

Intent resultIntent = new

Intent("com.example.javacodegeeks.TEL_INTENT",

Uri.parse("tel:115060807111132"));

resultIntent.putExtra("from", "javacodegeeks");

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

stackBuilder.addParentStack(NotificationTwo.class);

stackBuilder.addNextIntent(resultIntent);

PendingIntent resultPendingIntent =

stackBuilder.getPendingIntent(

0,

PendingIntent.FLAG_ONE_SHOT

);

mBuilder.setContentIntent(resultPendingIntent);

myNotificationManager = (NotificationManager)

getSystemService(Context.NOTIFICATION_SERVICE);

myNotificationManager.notify(notificationIdTwo, mBuilder.build());

}

}

4. Membuat Activity dari Action Notifikasi

Kita ingin membuat aktivitas dari notifikasi, yang akan dimulai saat user mengklik notifikasi.

Di sini kita akan membuat dua aktivitas berbeda untuk setiap notifikasi, jadi kita harus mebuat file

berbeda.

Untuk file pertama yang memakai explicit intent, klik kanan pada package src/papb.notificationtest/ -

New – Class.

(8)

Buka src/papb.notificationtest/NotificationOne.java dan paste kode berikut.

NotificationOne.java:

package papb.notificationtest;

import android.os.Bundle;

import android.widget.TextView;

import android.app.Activity;

import android.app.NotificationManager;

import android.content.Context;

public class NotificationOne extends Activity {

@Override

public void onCreate(Bundle savedInstanceState)

{

(9)

super.onCreate(savedInstanceState);

setContentView(R.layout.notification_one);

CharSequence s = "Isi notifikasi satu ";

int id=0;

Bundle extras = getIntent().getExtras();

if (extras == null) {

s = "error";

}

else {

id = extras.getInt("notificationId");

}

TextView t = (TextView) findViewById(R.id.text1);

s = s+"adalah = "+id;

t.setText(s);

NotificationManager myNotificationManager =

(NotificationManager)

getSystemService(Context.NOTIFICATION_SERVICE);

// remove the notification with the specific id

myNotificationManager.cancel(id);

}

}

Untuk Implicit Intent, kita akan memakai prosedur yang sama seperti diatas untuk membuat Class. Klik

kanan package src/papb.notificationtest – New – Class. Isi nama kelas dan tekan finish. Untuk Class

kedua bisa dinamakan NotificationTwo.java.

Sekarang, buka dan src/papb.notificationtest/NotificationTwo.java dan paste kode berikut.

NotificationTwo.java:

package papb.notificationtest;

import android.app.Activity;

import android.net.Uri;

import android.os.Bundle;

import android.widget.TextView;

public class NotificationTwo extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

(10)

setContentView(R.layout.notification_two);

String output = "Isi notifikasi dua adalah ";

TextView dataIntent = (TextView) findViewById(R.id.text2);

// take the data and the extras of the intent

Uri url = getIntent().getData();

Bundle extras = getIntent().getExtras();

output = output + url.toString();

// if there are extras, add them to the output string

if(extras != null){

output = output + " from " +extras.getString("from");

}

dataIntent.setText(output);

}

}

Pada kode diatas kita tidak usah melakukan apa-apa untuk meng-cancel notifikasi karena kita sudah

dilakukan pada fungsi displayNotificationTwo() pada file MainActivity.java, dengan method

setAutocancel().

5. Membuat Layout dari Action Notifikasi

Selanjutnya, kita perlu membuat layout yang akan ditampilkan saat aktivitas dari setiap notifikasi mulai

berjalan.

Untuk NotificationOne.java kita akan menggunakan layout notification_one seperti yang didefinisikan

pada file. Untuk membuatnya, klik kanan pada res/layout – New – Android XML File. Isi nama dan pilih

linear layout sebagai root element.

(11)

Lalu buka file res/layout/notification_one.xml pada xml tab dan paste kode berikut.

Notification_one.xml

<?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/text1"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

</LinearLayout>

Dengan cara yang sama, buatlah layout untuk file notification_two.java.

Setelah itu buka file res/layout/notification_two.xml pada xml tab dan paste kode berikut.

Notification_two.xml

<?xml version="1.0" encoding="utf-8"?>

(12)

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/text2"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

</LinearLayout>

6. Mendefinisikan Rules untuk Notification Activity

Pada step ini kita akan menggunakan elemen <meta-data>, yang bertujuan untuk mendefinisikan parent

dari aktivitas NotificationOne dan NotificationTwo. Element <meta-data> merupakan data tambahan,

yang mana bisa menyediakan komponen parent. Jadi kita akan mengisi elemen ini dengan value yang

sesuai. Karenanya, kita akan menaruh android.support.PARENT_ACTIVITY ke dalam android:name, dan

dalam android:value kita akan menaruh nama dari aktivitas parent. Kita juga harus mendefinisikan rules

untuk Implicit Intent yang kita gunakan dalam element aktivitas yang sesuai.

Buka file AndroidManifest.xml dan pilih tab xml. Kemudian paste kode berikut.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="papb.notificationtest"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="17"

android:targetSdkVersion="19" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="papb.notificationtest.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".NotificationOne"

android:label="Details of Notification One"

android:parentActivityName=".MainActivity">

<meta-data

(13)

android:value=".MainActivity"/>

</activity>

<activity

android:name=".NotificationTwo"

android:label="Details of Notification Two"

android:parentActivityName=".MainActivity">

<intent-filter>

<action android:name="com.example.javacodegeeks.TEL_INTENT" />

<category android:name="android.intent.category.DEFAULT" />

<data android:scheme="tel" />

</intent-filter>

<meta-data

android:name="android.support.PARENT_ACTIVITY"

android:value=".MainActivity"/>

</activity>

</application>

</manifest>

7. Menjalankan Aplikasi

Jika kalian dapat mengikuti step-stepnya dari awal sampai akhir tanpa ada error. Congrats! Aplikasi siap

dijalankan!

Untuk menjalankan aplikasi kita, klik kanan pada project kita – Run As – Android Application.

Saat kita menekan tombol “Munculkan Notifikasi Satu”, notifikasi baru akan dibuat dan muncul ticker

notifikasi.

Kalo kita men-drag bagian atas layar dan pergi ke notification drawer, kita akan melihat tampilan normal

dari notification seperti yang ditunjukkan gambar di bawah ini.

(14)

Jika user menekan notifikasi, maka activity NotificationOne akan dipanggil dan notifikasi akan

dihilangkan dari notification bar. Di sana juga ada tombol untuk kembali ke MainActivity.

Sekarang, tekan tombol “Munculkan Notifikasi Dua” makan notifikasi yang akan muncul seperti gambar

di bawah ini.

Jika kita menekannya, notifikasi akan dihilangkan karena method setAutoCancel dan Activity

NotificationTwo akan dipanggil.

(15)

Referensi

Dokumen terkait

Pengaruh mereka (kiai) sepenuhnya di tentukan oleh kualitas kekarismaan mereka. Lebih dari itu kualitas kekarismaan seorang kiai pada gilirannya diyakini oleh

Penelitian ini menghasilkan prototipe alat pengatur temperatur dan kelembaban dengan menggunakan mikrokontroler ATmega16, yang mampu meningkatkan kecepatan respon sistem pengendali

Bangkit Sentosa adalah kurang rancu dalam penghitungan gaji, pembuatan rekapitulasi gaji, absensi, serta pembagian team kerja, sering terjadi duplikasi data, dan

asetat, borneol, simen. Kina, damar, malam.. as. CI CINN NNAM AMOM OMI COR I CORTE TEX X..

Unsworth (2008) melakukan penelitian mengenai tingkat konektivitas antara komunitas ikan di lamun dengan habitat mangrove dan terumbu karang di perairan Taman Nasional

Para Narasumber dimohon segera mengkonfirmasi kesediaan/tidak bersedia mengajar s Hotel Omni

Pemohon memahami proses asesmen untuk skema Klaster Perawatan Pencegahan ( Preventive Maintenance ) Alat Berat Big Bulldozer yang mencakup persyaratan dan ruang

Oleh sebab itu dengan melihat pertumbuhan rasio arus kas yang diproyeksikan dalam, arus kas operasi terhadap kewajiban lancar (AKO), Cakupan kas terhadap bunga (CKB), arus