» »

Android notification

Android notification

mihy11 ::

Zdravo!

Razvijam eno mobilno aplikacijo, pa me zanima kako naj izdelam, da se bo uporabniku pojavil notification vsake dve uri kljub zaprti aplikaciji in pod pogojem, da bo izpolnjen nek pogoj ? Bi lahko mogoče kdo pomagal?
"Computers are good at following instructions, but not at reading your mind."
by Donald Knuth

shadeX ::

Sicer je že nekaj časa kar sem delal to ampak iz glave:

1. Uporabi AlarmManager class, ki ti omogoča časovno izvršitev neke kode
2. Pod Intent, ki ga zahteva AlarmManager podaš nov razred, ki deduje iz "Broadcast Receiverja". Tam se ti bo izvršila koda, kadar bo za to primeren čas in točno tam daš svojo "if" kodo.
3. V istem razredu uporabiš še NotificationManager, ki ti omogoča, da uporabnik dejansko dobi obvestilo.
4. Ne pozabit spisat Broadcast Receiverja za "boot", kjer boš tudi aktiviral "AlarmManager" iz 2. točke, v primeru kadar bo uporabnik izklopil / vklopil telefon.

Zgodovina sprememb…

  • spremenil: shadeX ()

mihy11 ::

shadeX je izjavil:

Sicer je že nekaj časa kar sem delal to ampak iz glave:

1. Uporabi AlarmManager class, ki ti omogoča časovno izvršitev neke kode
2. Pod Intent, ki ga zahteva AlarmManager podaš nov razred, ki deduje iz "Broadcast Receiverja". Tam se ti bo izvršila koda, kadar bo za to primeren čas in točno tam daš svojo "if" kodo.
3. V istem razredu uporabiš še NotificationManager, ki ti omogoča, da uporabnik dejansko dobi obvestilo.
4. Ne pozabit spisat Broadcast Receiverja za "boot", kjer boš tudi aktiviral "AlarmManager" iz 2. točke, v primeru kadar bo uporabnik izklopil / vklopil telefon.



Kakšna pa je koda za broadcast receiverja za "boot" imaš morda kakšen primer?
"Computers are good at following instructions, but not at reading your mind."
by Donald Knuth

shadeX ::

Isto deduješ iz razreda "Broadcast Receiver", s to razliko, da moraš v manifest to zapisat:

1. Daš dovoljenja:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 


2. Poveš kateri razred je odgovoren za kodo, ki se bo izvršila ob zagonu naprave.

<receiver android:name=".TvojRazredKiDedujeIzBroadcastReceiverja">
                        <intent-filter>
                                <action android:name="android.intent.action.BOOT_COMPLETED" />
                        </intent-filter>
   </receiver>



Ko bo uporabnik vklopil telefon, se bo izvršila koda, ki jo imaš v "onReceive" metodi, v "TvojRazredKiDedujeIzBroadcastReceiverja" razredu.

Zgodovina sprememb…

  • spremenil: shadeX ()

mihy11 ::

Hvala za vse informacije. Pa deluje tudi recimo, če je nastavljen interval na eno uro, ker se mi je zgodilo, da sem imel nastavljeni na eno uro pa mi je po 10 minutah poslalo notification potem pa se ni zgodilo nič več naprej, kot bi android "ubil" to.
"Computers are good at following instructions, but not at reading your mind."
by Donald Knuth

shadeX ::

"setRepeating" mora biti nastavljen na alarm manager objektu.

mihy11 ::

shadeX je izjavil:

"setRepeating" mora biti nastavljen na alarm manager objektu.



Takole sem nastavil pa se mi je sedaj pokazalo obvestilo po 16. minutah:
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 10, 3600 * 1000, pendingIntent );
"Computers are good at following instructions, but not at reading your mind."
by Donald Knuth

Mavrik ::

A mora biti točno na dve uri ali približno na dve uri? A mora res biti vsaki dve uri?
The truth is rarely pure and never simple.

mihy11 ::

Mavrik je izjavil:

A mora biti točno na dve uri ali približno na dve uri? A mora res biti vsaki dve uri?


Čas ni tako zelo pomemben. Nekje na približno dve uri. In tudi nekje na približno vsaki dve uri razen ponoči.
"Computers are good at following instructions, but not at reading your mind."
by Donald Knuth

mihy11 ::

mihy11 je izjavil:

Mavrik je izjavil:

A mora biti točno na dve uri ali približno na dve uri? A mora res biti vsaki dve uri?


Čas ni tako zelo pomemben. Nekje na približno dve uri. In tudi nekje na približno vsaki dve uri razen ponoči.



Ne vem zakaj, nastavljeno imam na 1 uro interval, pa mi obvestilo pošlje po 15min...
"Computers are good at following instructions, but not at reading your mind."
by Donald Knuth

shadeX ::

Drugi parameter, ki si ga vpisal (10), sprejme milisekunde pri katerih se bo alarm vklopil. Če me spomin ne vara, so to milisekunde od leta 1970, torej če hočeš čez 2 uri triggat alarm boš moral dobiti številko milisekund + 2 uri (v milisekundah).

Trenutne milisekunde najlažje dobiš z instanco "Calendar" razreda:

cal.getTimeInMillis()

Tretji parameter so ravno tako milisekunde, kdaj naj se alarm ponovi ampak vzame že v zakup trenutni čas, torej ti samo vpišeš čas kdaj naj se alarm ponovi od takrat ko se je že izvršil.

Torej na 2 minuti bi bil tretji parameter 120*1000;

Zgodovina sprememb…

  • spremenil: shadeX ()

mihy11 ::

shadeX je izjavil:

Drugi parameter, ki si ga vpisal (10), sprejme milisekunde pri katerih se bo alarm vklopil. Če me spomin ne vara, so to milisekunde od leta 1970, torej če hočeš čez 2 uri triggat alarm boš moral dobiti številko milisekund + 2 uri (v milisekundah).

Trenutne milisekunde najlažje dobiš z instanco "Calendar" razreda:

cal.getTimeInMillis()

Tretji parameter so ravno tako milisekunde, kdaj naj se alarm ponovi ampak vzame že v zakup trenutni čas, torej ti samo vpišeš čas kdaj naj se alarm ponovi od takrat ko se je že izvršil.

Torej na 2 minuti bi bil tretji parameter 120*1000;



Hvala za odgovor. Sedaj bi pa moralo iti!
"Computers are good at following instructions, but not at reading your mind."
by Donald Knuth


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

AAA Polnilne baterije

Oddelek: Elektrotehnika in elektronika
192882 (2257) Dr_M
»

[Android] Informacija iz Servic-a v Main Activity

Oddelek: Programiranje
7882 (692) i386
»

[Android] Izklop/Vklop vsak dan ob isti uri - problem

Oddelek: Programiranje
101052 (867) mallard
»

[Java]OOP Vprasanje glede dedovanja

Oddelek: Programiranje
5893 (763) KernelPanic
»

Nova anketa: kaj vas zjutraj zbudi? (strani: 1 2 )

Oddelek: Novice / Ankete
7114673 (11878) jype

Več podobnih tem