Kezdőoldal » Számítástechnika » Programozás » Hogy lehet egy ilyen appot...

Hogy lehet egy ilyen appot létra hozni?

Figyelt kérdés
Egy olyan appot szeretnék létrehozni ami azt méri hogy naponta hány órát töltesz a telefonodon. Viszont sehol se találok a neten ehhez segítséget hogy milyen programozási nyelvvel kell meg a többi. Hátha itt tud valaki segíteni 1-2 információval.

2022. dec. 2. 21:50
 1/10 anonim ***** válasza:
74%
Ilyen már biztos rég létezik, mi értelme még egynek?
2022. dec. 2. 21:51
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
100%
a telefon alapból tudja
2022. dec. 2. 21:58
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:
Igen, tudom hogy létezik több is viszont szeretnék én is létrehozni egyet.
2022. dec. 2. 22:13
 4/10 anonim ***** válasza:
70%
Minek? Ha még azt se tudod, hogy indulj neki?
2022. dec. 2. 22:26
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
95%
Csak szeretné gyakorolni a programozást.
2022. dec. 2. 22:42
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
67%
Le kell kódolni.
2022. dec. 3. 00:30
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
95%

Attól is függ, milyen oprendszerről van szó. Tegyül fel, hogy Android.

Ez esetben Kotlin vagy Java nyelvvel célszerű megismerkedni (nem mondom, hogy más nyelvvel nem lehet).

A legegyszerűbb eset az, hogy screen on time-ot mérsz, mert ha be van kapcsolva a képernyő, akkor általában az ember használja is a telefonját. Persze, ez nem lesz teljesen pontos, de első megközelítésnek jó.

Ehhez készítesz egy projektet (praktikusan Android Studioban), az AndroidManifest.xml-ben deklarálsz egy android.intent.action.SCREEN_ON és egy android.intent.action.SCREEN_OFF intent filtert, a kódodban is megírod az intent filtereket, és regisztrálsz hozzájuk egy broadcast receivert.

Most jön az első nehezítés. Ehhez az egészhez kell készítened egy foreground service-t, különben az Android nem fogja triggerelni a broadcast receivert. Szóval írsz egy foreground service-t, amik majd kezelik az intenteket. Az egyes intentekben regisztrálod a képernyő be-és kikapcsolásának timestamp-jét, majd ezekből kiszámolod az időt.

Emellé még regisztrálnod kell egy android.permission.RECEIVE_BOOT_COMPLETED jogosultságot, és egy android.intent.action._BOOT_COMPLETED intent filtert, hogy az appod el tudjon indulni, amikor bebootolt a teló.


Második nehezítés: a kínai custrom Androidokban mint a MIUI, a Huawei, és a többiek, a háttérben futó szolgáltatásokat (még akkor is, ha amúgy ""foreground"" service-ről van szó), úgy kinyírják egyetlen szó nélkül, mint a szar. Aztán csak azt veszed észre, hogy hoppá, az előbb még futott az appom, most pedig már nem.

Ennek megelőzésére példányosítani kell vagy egy alarm managert, vagy egy job schedulert vagy egy work managert objektumot, és periodikusan újraindítani mondjuk 15 percenként a foreground service-t, és így TALÁN el tudod érni, hogy normálisan fusson az appod.

De például MIUI-ban az app áttekintő nézetben van egy "X" bezáró gomb, ami azonnal force stoppolja az összes appot, és velük együtt kinyírja a work managert, a foreground-és background service-üket, mindent. Ezzel nem tudsz mit kezdeni, el kell fogadni, hogy egyes készülékeken nem tudod 100%-ban biztosítani, hogy úgy fusson az appod, ahogy kell.


Még egy dolog: ezek a custom Androidok azt sem engedik csak úgy, hogy egy app automatikusan induljon a rendszerrel együtt. A periodikusra állított work managert, aminek az lenne az egyik feladata, hogy reboot után is működjenek, ezek az Androidok előszeretettel nyírják ki. Másrészt tosznak egy nagyot a android.permission.RECEIVE_BOOT_COMPLETED filterre, meg a broadcast receiveredre, egyszerűen nem fogják elindítani az appot és kész.


Ezekre igazából egy használható megoldás van. Megkéred a usert, hogy legyen kedves, manuálisan kapcsolja ki az energiagazdálkodást az appodra, és manuálisan tegye be az automatikusan induló appok közé a programod, mert ha ezt nem teszi meg, akkor bizony nem fog rendesen működni.


Esetleg a Firebase cloud messengerrel tudsz ügyeskedni, de az már nem annyira kezdőknek való szint.

2022. dec. 3. 08:29
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
91%

"Ehhez készítesz egy projektet (praktikusan Android Studioban), az AndroidManifest.xml-ben deklarálsz egy android.intent.action.SCREEN_ON és egy android.intent.action.SCREEN_OFF intent filtert, a kódodban is megírod az intent filtereket, és regisztrálsz hozzájuk egy broadcast receivert."

Hát ez a mondat... Ez biztos, hogy magyarul van? :D

2022. dec. 3. 09:29
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

#8


Angilali nyelven :)

2022. dec. 3. 14:53
Hasznos számodra ez a válasz?
 10/10 NTBS ***** válasza:
Segítséget kérsz egy olyan személytől, aki ért hozzá.
2022. dec. 3. 16:36
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!