Vytvorte jednoduchu socialnu siet s moznostou pridavania multimedialnych prispevkov ( obrazok, video ). Semestralne zadanie budete vypracovavat vo stvorici. Odovdzat je ho potrebne pred 11. cvicenim. Na 11. a 12. cviceni ho budete potom prezentovat.

ZADANIE JE POTREBNE ODOVZDAT DO 12. cvičenia (9.12. 6:00).

Zdrojovy kod odovzdat do miesta odovzdania v AIS. A nasledne na 12. cviceni mat pripraveny kod v pocitaci a tiez nainstalovanu aplikaciu na mobile na demostraciu funkcionality.

Pokyny k odovzdaniu

DO AIS odovzdavaju VSETCI studenti. Odovzdavate cely projekt v .zip archive, okrem suborov/priecinkov uvedenych v nasledovnych .gitignore suboroch.
V hlavnom priecinku projektu (kde sa nachadza priecinok app) je potrebne vynechat nasledovne subory podla tohto .gitignore listu.

*.iml
.gradle
/local.properties
/.idea
.DS_Store
/build
/captures
.externalNativeBuild
local.properties
*.apk
*.abb
/app/debug
/app/release

Vo vnutri priecinku app je potrebne vynechat subory, uvedene podla tohto .gitignore listu.

/build

Vsetky ostatne subory/priecinky v projekte odovzdavate v .zip subore. Ak sa vam zmesti tak do ZIP suboru pridate aj instalacny .apk subor vasej aplikacie.

UPOZORNENIE: Z odovzdanych suborov v .zip subore musi byt mozne uspesne zostavit project (buildnut), pomocou New -> Import project (Gradle). Ak build bude neuspesny, tak aplikacia nesplna poziadavky na hodnotenie, a je hodnotena nulovym (0) poctom bodov.

UPOZORNENIE !!! Ak počas odovzdávania zadania, študent nebude vedieť zdieľať obrazovku alebo nebude mať funkčný mikrofón (nebudem ho počuť) alebo nebude mať funkčnú webkameru (nebudem ho vidieť). Študent automaticky nedostáva zápočet bez ohľadu na odovzdaný projekt do AIS, keďže nebolo možné overenie vedomostí študenta, ktoré je nevyhnutné na získanie bodov do zápočtu.

Hodnotenie

  • Prihlasenie, odhlasenie, registracia - po 1 bode spolu 3 body
  • Firebase Crashlytics - ukazka aj Firebase konzoly - 2 body
  • Pouzivanie lokalnej databazy, Viewmodel, repozitory - 5 bodov
  • Nahratie Videa (novy prispevok) - 5 bodov
  • Upload Videa (novy prispevok) - 5 bodov
  • Zobrazenie profilu - 2 body
  • Vyber a upload fotky (zmena profilovej fotky) - 3 + 3 bodov
  • Skrolovanie prispevkov - 5 body (+ 2 bonus body ak sa po uploade novy prispevok zobrazi na zaciatku)
  • Prehravanie videa ( prehranie, plynulost, prisposobenie velkosti obrazovky ) - 5 b
  • Zobrazovanie profilovej fotky ( zobrazenie, zaokruhlenie, bez deformacie ) - 2 b
  • Celkovy dojem dizajnu, plynulost aplikacie, funkcnost ovladania, odozva na akcie - 10 bodov

Spolu max 50 Bodov ( min. 25 bodov na zapocet )

Ukazka aplikacie Ukazka aplikacie Ukazka aplikacie

Prispevok

Prispevok musi obsahovat video na celu obrazovku a vlavo dole pouzivatelska fotka, meno a pod tym datum uverejnenia prispevku.

Ukazka aplikacie

Profil

Profil musi obsahovat pouzivatelske meno, email, fotku. Po kliknuti na fotku je mozne zmenit profilovu fotku. Zmenu hesla a odhlasenie.

Ukazka aplikacie

Kamera

Aplikacia musi umoznovat vo vnutri nahravanie FULLHD video vo formate .mp4 (H264). Mozete pouzit lubovolnu kniznicu. Avsak ak sa nahra ine video, tak nahravanie nebude uznane.

Ukazka aplikacie

RecyclerView

Na swipovania medzi prispevkami je potrebne pouzit RecyclerView

Prihlasenie/ Registracia / Zmena hesla / Zmena fotky

Na prihlasovanie je povinne pouzit uvedene rest api. (bude coskoro)

Firebase Crashlytics

Na zaznamenavanie chyb v aplikacii je povinne pouzit Firebase Crashlytics

Povinne automaticke zaznamenavanie vzniknutych chyb pocas behu aplikacie.

Videa a fotky - Upload

Na upload videi (len .mp4) a obrazkov (len jpg, jpeg, png) do velkosti 8MB je povinne pouzivat nasledovny servis.

### Registracia
POST http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "register",
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "email": "john@doe.com",
  "username": "john",
  "password": "oV3aK9iB5"
}

### Info
POST http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "userProfile",
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "token": "776ea8822224691aa4f37c20b789715d"
}

### Login
POST http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "login",
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "username": "john",
  "password": "oV3aK9iB5"
}

### Refresh token !! zmena tokenu
POST http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "refreshToken",
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "refreshToken": "019fd7ad99bcafbf155723114514e412"
}

### Zmena hesla , !! zmena tokenu
POST http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "password",
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "token": "ad095d2e5dad6ae16087deb3c64bff60",
  "oldpassword": "95d2e5dad",
  "newpassword": "H3oV3aK9iB"
}



### Pridat profilovku
POST http://api.mcomputing.eu/mobv/upload.php
Content-Type: multipart/form-data; boundary=boundary

--boundary
Content-Disposition: form-data; name="image"; filename="image.jpg"
Content-Type: image/jpeg

< C:\laragon\www\api\profile.png

--boundary
Content-Disposition: form-data; name="data"
Content-Type: application/json


{
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "token": "2a5d3d882db5ba522f480047d1782933"
}


### Odstanit profilovku
POST http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "clearPhoto",
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "token": "2a5d3d882db5ba522f480047d1782933"
}

### Prispevky
POST http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "posts",
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "token": "23dc378945cecf28097ef131045f305e"
}


### Pridat prispevok
POST http://api.mcomputing.eu/mobv/post.php
Content-Type: multipart/form-data; boundary=boundary

--boundary
Content-Disposition: form-data; name="video"; filename="video.mp4"
Content-Type: video/mp4

< C:\laragon\www\api\video2.mp4

--boundary
Content-Disposition: form-data; name="data"
Content-Type: application/json


{
  "apikey": "bX8eF8uH3oV3aK9iB5xG0lX6eY5rT4",
  "token": "2a5d3d882db5ba522f480047d1782933"
}

### Existuje username
GET http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "exists",
  "apikey": "",
  "username": "user"
}

### Vymazat prispevok, podla id prispevku. Prispevok moze vymazat len jeho autor.
POST http://api.mcomputing.eu/mobv/service.php
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json

{
  "action": "deletePost",
  "apikey": "",
  "token": "",
  "id": 1
}

 

Nasledne cesta k videu ci fotke je : http://api.mcomputing.eu/mobv/uploads/

V pripade, ze token uz nie je platny vrati sa vam odpoved  401  so spravou Token invalid . V pripade ze ste uviedli zly Api key tak sa vam vrati odpoved 401 Api invalid . V ostatnych pripadoch je to 400 / 404 / 500 .

Prehravanie videa

Na prehravanie videi odporucam pouzivat ExoPlayer.


Zobrazovanie obrazkov

Na zobrazovanie obrazkov odporucam pouzivat: