Documente Academic
Documente Profesional
Documente Cultură
- Android
- iOS
- Windows Phone
- Universal Windows Platform (Windows 10 Mobile, Windows 10)
Aplicatii Web – redate intr-un control inclus intr-o aplicatie nativa sau in browser
Platforma Xamarin
Xamarin
1
Tipuri de aplicatii:
Xamarin.Forms
- Independenta de platforma
- Partajarea codului
- Bazat pe XAML (Extensible Application Markup Language)
Shared Libraries
Portable Class Libraries(PCL)
.NET Standard Libraries
- Codul partajat este disponibil ca biblioteca (util la partajarea codului intre mai multe proiecte)
- Nu se utilizeaza directive de compilare
- Facilitatile .Net sunt limitate in functie de profilul utilizat
Xamarin.Forms
- Aplicatii pentru introducerea datelor
- Prototipizare
- Interactiune redusa cu platforma
- Partajarea codului vs interfata grafica personalizata
2
Xamarin nativ
- Aplicatii care necesita interactiuni specifice
- Designul aplicatiei pretentios
- Access la un numar ridicat de API-uri
- Interfata grafica personalizata vs partajarea codului
Proiecte generate
- Proiect (partajat)
- Proiect.Android
- Proiect.iOS
- Proiect.UWP
Interfata utilizator
- Fisiere XAML si cod sursa C#
- Cod sursa C#
- Initializare – onStart()
- Intrare in starea inactiv – onSleep()
- Iesire din starea inactiv – onResume()
XAML
- Limbaj descriptiv, bazat pe XML
- Construirea declarativa a interfetei cu utilizatorul
- Fisierele XAML permit definirea:
interfetei cu utilizatorul (ierarhie de componente)
Sabloanelor
Legaturilor de date (statice si dinamice)
Stilurilor/resurselor statice si dinamice
- Spatiul de nume implicit specific Xamarin.Forms
- Spatiul de nume “x” specific XAML
- Proprietati implicite
o Content (pt ContentPage, ContentView, Frame, ScrollView)
o Text (pt Label)
o Children (pt obiectele de tip Layout)
o View (pt ViewCell)
XAML – Atribute
3
- X:Name – pentru referirea controalelor din cadrul fisierului sursa
XAML – Extensii
- {Element Valori}
- Element :
o Binding – legarea dinamica a continutului (StringFormat)
o StaticResource – asocierea unei resurse (stil) – “Proprietate={StaticResource
cheieResursa}”
Interfata utilizator
- Pagini
- Containere
- Componente vizuale (celule)
- Ferestre de dialog si informare
- Legarea dinamica a datelor
Clase de baza
- Element
o Cell
o VisualElement
View
Layout
Controale
Page
Pagini
Multipage
Pagini
- Ierarhica
- Modala
- Lista de optiuni
- Meniu lateral
- Selectori
- Dashboard/springboard
- Panorama/carusel
Pagina (Page)
- Android: activitate
- iOS: View Controller
- Windows Universal Platform (UWP): Page
4
- Elementul radacina al fisierelor XAML
Tipuri de pagini:
- ContentPage
- MasterDetailPage
- NavigationPage
- TabbedPage
- CarouselPage
Clasa Page
ContentPage
NavigationPage
- Proprietatea Navigation
- Stiva de navigare
o PushAsync(pagina)
o PopAsync()
5
o PopToRootAsync()
- Navigarea modala
o PushModalAsync(pagina)
o PopModalAsync()
Navigation Page
- Initializare:
MainPage = new NavigationPage(new Pagina1());
TabbedPage
MasterDetailPage
MasterBehavior
6
CarouselPage
Containere:
- StackLayout
- Grid
- AbsoluteLayout
- RelativeLayout
- Frame
- ScrollView
StackLayout
Grid
AbsoluteLayout
7
- Pozitionarea se realizeaza pe baza
o Punctului de ancorare (X,Y)
o Dimensiunii (Width, Height)
RelativeLayout
Frame
ScrollView
Componente vizuale
Afisare/introducere text
- Label
o Text static
- Entry
o Text pe o singura linie
o Proprietate placeholder
- Editor
o Text pe mai multe linii
o Proprietatea placeholder
- SearchBar
o Control pt cautare
o Proprietatile SearchCommand, Placeholder
Butoane
- Button
8
o Buton standard
- Stepper
o Butoane care permite alegerea incrementala a unei valori intr-un interval
o Proprietatile Value, Minimum, Maximum, Increment
o ValueChanged
- Switch
o Buton cu doua stari
o Proprietatea IsToggled
Data/Timp
- DatePicker
o Selectie data
o Proprietatile Date,Format, MaximumDate, MinimumDate
- TimePicker
o Selectie ora/minute
o Proprietatile Time, Format
Selectie
- ListView
o Lista de elemente cu posibilitatea de selectie
- Picker
o Selectie element dintr-o lista
o Proprietatile Items, SelectedIndex, Title
- Slider
o Selectie intr-un interval
o Proprietatile Value, Minimum, Maximum
o ValueChanged
Progres
- ActivityIndicator
o Indicator de progress circular, nedeterminat
- ProgressBar
o Indicator de progress orizontal
o Proprietatea progress
Grafica/Imagini
- BoxView
o Control pentru desenarea unei suprafete dreptunghiulare
o Dimensiuni implicite (40x40)
o Proprietatea Color
- Image
o Control pentru afisarea de imagini
o Proprietatile Source, Aspect (modul de scalare)
- OpenGLView
9
o Support pt OpenGL
o Disponibil pt Android si iOS
Controale Complexe
- TableView
- WebView
o Redare continut Web
o Proprietatea Source
ListView
Table View
Celule
Celule predefinite
- EntryCell
- TextCell
- ImageCell
- SwitchCell
- ViewCell
10
Sabloane elemente colectii
- Colectie.ItemTemplate
- DataTemplate
Meniuri
Operatii Asincrone
Ferestre de dialog/informare
11
o O singura cale (sursa – destinatie)
o Ambele sensuri (sursa – destinatie, destinatie – sursa)
- Proprietatea sursa
o Obiect
o Control
- Asociere
o XAML
o Cod sursa
o Mixt
ICommand
- Metode
o Void execute(object)
o Bool canExecute(object)
- Eveniment
o canExecuteChanged
o
Model
View
- interfata utilizator
- implementata usual prin fisierele XAML
ViewModel
Accesul la retea
- operatii asincrone
- tartare exceptii
- multiple pachete
o NuGet Package Manager
12
Stocarea persistenta a datelor
- Pachetul SQLite
- Clasa SQLiteConnection
- Decorarea cu attribute a claselor din model
Curs 5-6
Android Jetpack
o Foundation
AppCompat
Test
o Architecture
Ciclul de viata
Legarea dinamica a datelor
Baze de date
viewModel
paginare
navigare
operatii asincrone
o Behavior
Media si redare
Preferinte
Partajare
Notificari
o UI
Auto
Animatii
Fragmente
TV
13
Wear OS
Material Design
- Teme noi
- Controale noi
- Animatii
- Efecte de umbrire
Item Decoration
14
o Personalizare
o Evidentiere
o Desenarea de separatori
- Pot exista mai multe obiecte de tip ItemDecoration
o Apelate in ordinea adaugarii
- Asociere
o Metoda addItemDecoration()
DividerItemDecoration
ItemDecoration
Tratarea evenimentelor
- Metode interfata
o onInterceptTouchEvent()
determinare element si pozitie
o onTouchEvent()
o onRequestDisallowInterceptTouchEvent()
- determinarea actiunilor de apasare/ apasare prelungita
o GestureDetector
15
- Definire interfata noua in cadrul clasei
o Metode pentru apasare/apasare prelungita pe element
Curs 7-8
Location API
Pozitionarea geografica
Clasa Location
- Coordinate
o getLatitude(), getLongitude(), getAltitude()
- viteza
o getSpeed()
- timp
o getTime()
- acuratetea localizarii
o getAccuracy()
- alte informatii
16
- fused location provider
o combina furnizorii disponibili in functie de cerintele aplicatiei
precizie
consum de energie
o selectarea celui mai potrivit seviciu
Pozitionare geografica
Receptori de mesaje
Mesaje globale
- Intent.ACTION_BATTERY_LOW
- Intent.ACTION_BOOT_COMPLETED
- Intent.ACTION_MEDIA_MOUNTED
- Intent.ACTION_SCREEN_OFF
- Telephony.Sms.Intents.SMS_RECIVED
17
- O forma care include:
o Permisiunea necesara (String)
Inregistrarea receptorilor
Prelucrarea mesajelor
18
Mesaje locale
- Clasa LocalBroadcastManager
o Android.support.v4.content
- Obtinere instanta
o LocalBroadcastManager.getInstance(Context)
- Transmitere mesaj
o sendBroadcast(Intent)
- Asociere receptor
o registerReceiver(BroadcastReceiver, IntentFilter)
- Terminare asociere
o unregisterReceiver(BroadcastReceiver)
Servicii
19
Permit continuarea comunicarii din partea clientului dup ace acesta a fost
initializat
Initializate prin metoda bindService() din clasa Context
- Servicii utilizator
o Derivate din clasa Service
o Ciclu de viata bine determinat
o Trebuie declarate in fisierul AndroidManifest.xml
- Crearea serviciului
o onCreate()
- pornirea serviciului – client startService()
o onStartCommand()
- conectarea la serviciu – client bindService()
o onBind()
- terminarea serviciului – client stopService()
o onDestory()
Servicii la distanta
- fisiere
- socket
- transmiterea de mesaje
- partajarea memoriei
- furnizori de continut
- intent
- messenger
- binder
20
Interfata IBinder
Comunicarea cu serviciul
Interfata generate
Serviciul
21
Terminarea executiei serviciului
Curs 9
Furnizori de continut
Partajarea datelor
Furnizorii de continut
UriMatcher
22
Implementarea clasei abstracte ContentProvider
- onCreate()
- getType()
- query()
- insert()
- update()
- delete()
Interogarea datelor
- metoda query()
- parametrii
o identificatorul furnizorului de continut (URI)
o coloanele corespunzatoare datelor (proiectia)
o criteriul de selectie
o parametrii de selectie
o ordinea de sortare a acestora
- returneaza un obiect de tip Cursor
Inserarea
- metoda insert()
- parametrii
o identificatorul furnizorului de continut (URI)
o valorile associate inregistrarii (ContentValues)
- returneaza un URI asociat ingregistrarii inserate
o include identificatorul inregistrarii
Modificarea
- metoda update()
- parametrii
o identificatorul furnizorului de continut (URI)
daca nu este inclus un identificator, modificarea se aplica tuturor inregistrarilor
23
o valorile associate campurilor care se vor modifica (ContentValues)
o criteriul de selectie
o parametrii de selectie
- returneaza numarul de inregistrari afectate
Stergerea inregistrarilor
- metoda delete()
- parametrii
o identificatorul furnizorului de continut (URI)
daca nu este inclus un identificatory, vor fi sterse toate inregistrarile
o criteriul de selectie
o parametrii de selectie
- returneaza numarul de inregistrari afectate
ROOM
Curs 10
24
- Folosesc obiecte speciale pentru afisarea interfetei utilizator
o remoteViews
- transfer de date inter-proces
Interfata utilizator
RemoteViews
Receptorul
Activitatea de configurare
25
Curs 11
Senzori
- Componente hardware
- Sursa de date pentru
o Masurarea miscarii, orientarii si conditiilor de mediu
o Determinarea pozitiei
- Exemple
o Accelerometru
o Giroscop
o Temperatura
o Proximitate
o Ambiental
- Posbilitatea de preluare a datelor
Utilizare senzori
- Initializarea serviciului
- Inregistrarea unui obiect (de tip listener) care va fi informat cu privier la modificarile aparute
o Obiectul este asociat unui sensor
o Metoda corespunzatoare este apelata periodic cu valorile preluate de la sensor
- Terminarea asocierii obiectului inregistrat
Senzori
- Pachetul android.hardware
- Servicii
o SENSOR_SERVICE
- Clasa SensorManager
- Clasa Sensor
- Interfata SensorEventListener
- Interfata SensorEventListener
- Modificarile senzorilor
o Void onSensorChanged(SensorEvent event)
- Valorile citite disponibile prin SensorEvent
SensorManager
26
o UnregisterListener()
Bluetooth
- Tehnologia permite schimbul de informatii fara fir intre diferite dispositive
- Viteze mult mai mari (vs. IR, NFC)
- Necesitatea imprerecherii dispozitivelor Bluetooth in vederea comunicarii
- Diferite profile (specificatii pentru comunicatii fara fir intre dispositive)
- Utilizarea protocolului RFCOMM (Radio frequency communication)
Transferul datelor
NFC
- consortiul NFC Forum
- conectarea fara fir a 2 dispozitive aflate la o distanta foarte mica (de maxim 10cm)
- conectare in mod direct(fara imperechere sau descoperire reciproca)
- viteze reduse (sute de kbps)
- frecventa 13.56 MHz
- asigura schimbul de pachete de date intre
o etichete NFC si dispositive
o dispositive
Moduri de lucru
- citire/scriere (RFID)
o dispozitivul poate citi sau scrie informatii de pe sau pe etichete NFC passive
- peer-to-peer (P2P)
o dispozitivele NFC schimba date intre ele
o mod folosit de Android Beam
- emulare card
o dispozitivul NFC se comporta ca un simplu card
o folosit in special pentru plati electronice
Etichete NFC
- NXP MIFARE
o Implementari propria ale standardului ISO14443 A
- Tipuri
o MIFARE Classic
o MIFARE DESFire
o MIFARE Plus
o MIFARE Ultralight
27
Curs 12
JNIEnv
- Creare/conversii siruri
- Tartare exceptii
- Creare/copier vectori
- Accesare campuri
- Apelare metode
- Acces la masina virtuala Java
- Sincronizare executie
28
Fisiere in cadrul proiectului
Android NDK
Componenta NDK
- Instrumente de compilare
- Fisiere antet
- Biblioteci
- Exemple
- Scripturi dedicate dezvoltarii de module native
Curs 13
Android Wear/Wear OS
29
o aplicatii independente (Wear OS 2.0)
- carduri contextuale in fluxul de carduri
o notificari trimise de aplicatiile Android de pe dispozitivul mobil
o notificari contextuale de pe dispozitivul portabil (ceas)
Curs 14
Multimedia
- locale
o incluse in pachetul aplicatiei (resurse si continut)
o sistemul de fisiere
o biblioteci globale media
- disponibile la distanta (server)
o accesibile prin diferite protocoale
HTTP, HTTPS
RTSP etc
Operatii
- Redare
o Prezentarea continutului media intr-o forma specifica
- Captare
o Preluarea continutului media si salvarea sau retransmiterea acestuia
- Prelucrare
o Modificarea continutului media sau aplicarea de transformari specific acestuia (rotiri,
translatari, modificare frecvente)
Imagini
Audio
Video
Multimedia Android
- Pachete
o Android.media
o Android.hardware
- Includerea de capabilitati hardware
o Camera, autofocus, flash, front
- Includerea de permisiuni de acces
o Camera
o Microfon
30
o Memoria externa
o Internet
MediaStore
- Furnizor de continut
- Acces global la clipurile media din system
- Clase specializate pe continut:
o MediaStore.Audio
o MediaStore.Video
o MediaStore.Images
- Informatii despre clipuri
o Artist, titlu, dimensiune, locatie, etc
31