5.5 steps to create notifications

“Ai primit un mail…”, “Ai un mesaj nou…”, “Instalare finalizată”.

Îţi par cunoscute aceste mesaje?! Parcă le-ai întâlnit undeva, dar unde? Ei bine da, aceste mesaje sunt de fapt notificările pe care le primeşti aproape zilnic pe telefonul tău aflat sub domnia lui Verde-Împărat sau Android cum îl cunoaşte toată lumea.

Şi pentru că personal mi se par foarte importante m-am gândit să mă joc un pic şi să văd cum pot realiza propria notificare. Ei bine avem de-a face cu o mică provocare şi cum mie îmi place să învăţ mereu ceva drăguţ şi nou am trecut la treabă.

Pasul 1: avem nevoie de o clasă, un pachet, ceva care se ocupă de management-ul notificărilor. Şi aplicând învăţămintele din principiul “You Don’t AskYou Don’t Get”, a apărut imediat ideea (precum o notificare, că doar de aşa ceva ne ocupăm) de a întreba un prieten.  Pe cine credeţi că am întrebat? Cine ştie o grămadă de lucruri şi o mulţime de oameni care cunosc multe informaţii?! Google bineînţeles. Rezultatul căutării mele nu s-a lăsat aşteptat şi am descoperit că sdk-ul de Android conţine o clasă NotificationManager care se ocupă exact de notificări.

Arhitectura Android se prezintă pe mai multe nivele, iar Application Framework coţine NotificationManager:

Pasul 2: Cum să arate notificarea? Şi pentru că nu avem cerinţe impuse eu zic să lăsăm imaginaţia să îşi spună cuvântul. M-am gândit să alegem o notificare relativ simplă alcătuită dintr-un titlu, un text şi un icon.

Pasul 3: Care e evenimentul care determină apariţia notificării? Propun selectarea unui buton.

Pasul 4: Cum arată layout-urile pe care le vom utiliza?

result.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:background="@drawable/white"
	android:gravity="center_vertical|center_horizontal">
	<TextView android:text="Acesta este rezultatul activitatii deschise la vizualizarea notificarii!"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:padding="20dip"
	android:textColor="@drawable/black"
	android:id="@+id/textView1">
	</TextView>
</LinearLayout>

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:background="@drawable/white"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="center_vertical|center_horizontal">
	<Button android:text="Adauga notificare"
	android:onClick="btnAdd_createNotification"
	android:id="@+id/btnAdd"
	android:layout_height="wrap_content"
	android:layout_width="wrap_content">
	</Button>
</LinearLayout>

Pasul 5: Cum arată codul java?

NotificationReceiver.java

import android.app.Activity;
import android.os.Bundle;

public class NotificationReceiver extends Activity
{
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.result);
	}
}

CreateNotification.java

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class CreateNotification extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
	}

	public void btnAdd_createNotification(View view)
	{
		NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		Notification notification = new Notification(R.drawable.android,"O notificare noua", System.currentTimeMillis());
		// ascunde notificarea dupa ce a fost selectata
		notification.flags |= Notification.FLAG_AUTO_CANCEL;

		Intent intent = new Intent(this, NotificationReceiver.class);
		PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0);
		notification.setLatestEventInfo(this, "Acesta este titlul","Acesta este textul", activity);
		notification.defaults =Notification.DEFAULT_ALL;
		notification.number += 1;
		notificationManager.notify(0, notification);
	}
}

Pasul 5.5: Run Android Application

Advertisements
5.5 steps to create notifications

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s