Programowanie wizualno

Transkrypt

Programowanie wizualno
Android
Wykład 8
1


Widgety cd
Notification
2



Standardowo Widget odświeżany jest
najczęściej co 30 minut.
Jeżeli nasz widget ma zapewnić częstsze
odświeżanie należy zorganizować to
odświeżanie samodzielnie.
Dobrym rozwiązaniem jest skorzystanie z
klasy AlarmManager
3

Widget cykl życia
Metoda
Opis
onEnabled()
Wywoływana kiedy widget jest
dodawany do ekranu poraz
pierwszy
onDisabled()
Wywoływana kiedy ostatni
egzemplarz widgetu usuwany
jest z ekranu
onUpdate()
Wywoływana podczs każdej
aktualizacji widgetu
onDeleted()
Wywoływana kiedy
egzemplarz widgetu usuwany
jest z ekranu
4




Notification
Powiadomienia w systemie Android zazwyczaj
pojawiają się na pasku statusu (status bar).
Jednak ich możliwości na tym się nie kończą.
Nie dość, że mamy możliwość "rozwinięcia"
powiadomienia, to możemy dołączyć do
niego dźwięk, alarm wibracyjny czy też
migającą diodę LED.
5

Ideą powiadomień jest to, że pojawiają się
one bez naszej ingerencji, pochodzą od
aplikacji/serwisów chodzących w tle. Np.
poczta e-mail, sms itp.
6

Do stworzenia powiadomienia wykorzystamy
dwie klasy:
◦ Notification - odpowiedzialna za to jak
powiadomienie zostanie wyświetlone. Przykładowo
jaka ikona zostanie wyświetlona pasku statusu, jaki
dźwięk zostanie odtworzony, jakie View zostanie
użyte po rozwinięciu paska statusu itd.
◦ NotificationManager - klasa do zarządzania
powiadomieniami użytkownika o zdarzeniach w
systemie. NotificationManager jest klasą, dla której
nie można utworzyć jej instancji.
7



W zamian tego używamy metody
getSystemService(String) zwracającej do niej
referencję.
Parametrem tej metody jest jeden z
systemowych serwisów, np.
VIBRATOR_SERVICE (w przypadku chęci użycia
takowego), WIFI_SERVICE itp.
Nas interesuje NOTIFICATION_SERVICE.
8




Zwyczajowo zaczynamy od stworzenia View
aplikacji.
Tym razem przygotujemy view, zawierające
przynajmniej jeden przycisk, który będzie
odpowiedzialny za wywołanie powiadomienia.
Pobieramy referencję do NotificationManager
notificationManager =
(NotificationManager)getSystemService
(NOTIFICATION_SERVICE);
9



Tworzymy instancję Notification.
Jako parametry przyjmuję ikonę jaka zostanie
wyświetlona przy powiadomieniu po
rozwinięciu, tekst jaki zostanie wyświetlony
na pasku statusu oraz moment kiedy
powiadomienie ma się pojawić.
notification = new
Notification(R.drawable.icon,"Hello",
System.currentTimeMillis());
10



Tworzymy obiekt typu Intent.
Uruchomi przeglądarkę, a następnie
przejdzie na stronę o podanym adresie.
Intent notIntent = new
Intent(android.content.Intent.ACTION_
VIEW,Uri.parse("http://www.google.com
"));
11




Tworzymy obiekt typu PendingIntent.
Umożliwia on przekazanie intentu do innej
aktywności (Activities).
Np. w naszym przypadku zostanie wywołany
z powiadomienia.
PendingIntent contentIntent =
PendingIntent.getActivity(getApplicat
ionContext(), 0, notIntent, 0);
12




Ustawiamy intent oraz teksty jakie mają się
pojawić po wywołaniu powiadomienia.
notification.setLatestEventInfo(getAp
plicationContext(),titleText,bodyText
,contentIntent);
Opcjonalnie można dodać flagi, w tym
przypadku poniższa flaga powoduje
automatyczne usunięcie powiadomienia po
"wejściu w nie".
notification.flags |=
Notification.FLAG_AUTO_CANCEL;
13



Ostatnim krokiem jest przekazanie (metoda
notify()) do NotificationManagera naszego
powiadomienia.
Drugim parametrem jest unikalny dla całej
aplikacji identyfikator naszej notyfikacji.
notificationManager.notify(notificati
onId, notification);
14
15
16
KONIEC
17