Anda di halaman 1dari 68

UPB - Facultatea ETTI

2015

Dezvoltarea Aplicatiilor Android Inovative

(DAAI)

Titular curs: SAIM Lab Team


saim.mobilpro@gmail.com
Suport curs: https://www.facebook.com/daai.saim
https://www.facebook.com/groups/daai2015/
UPB - ETTI

26.03.2015

Curs DAAI

Organizare

UPB - ETTI

Dezvoltarea Aplicatiilor Android Inovative (DAAI)


Sinteza organizare
Curs
Introducere in platforma Android si dezvoltarea pe aceasta platforma
Dezvoltarea interfetelor grafice pe platforma Android
Dezvoltarea aplicatiilor Android bazate pe biblioteci cross-platform
(libGDX, phonegap, etc).
Dezvoltarea aplicatiilor Android bazate pe utilizarea senzorilor
Dezvoltarea aplicatiilor avansate cu biblioteci specializate (SQLite, etc.)
Introducere in problematica inovarii si a proceselor de inovare
Elemente de marketing, conceperea produselor inovative, etc.

UPB - ETTI

Dezvoltarea Aplicatiilor Android Inovative (DAAI)


Sinteza organizare
Laborator
Familiarizarea cu mediul de dezvoltare (Eclipse) i configurarea lui
(SDK, emulator)
Dezvoltarea interfetelor grafice pe platforma Android

Dezvoltarea aplicatiilor Android bazate pe utilizarea senzorilor


Dezvoltarea aplicatiilor avansate cu biblioteca SQLite, alte biblioteci
specializate i biblioteci cross-platform (prima iteratie)
Dezvoltarea aplicatiilor avansate cu biblioteca SQLite, alte biblioteci
specializate i biblioteci cross-platform (a doua iteratie)
Studii de caz de aplicare a proceselor de inovare (1)
Studii de caz de aplicare a proceselor de inovare (2)
UPB - ETTI

Dezvoltarea Aplicatiilor Android Inovative (DAAI)


Sinteza organizare
Proiect
Alegerea ghidata a domeniului de aplicabilitate a proiectului
Definirea temei proiectului ca idee de aplicatie inovativa
Definirea temei proiectului din perspectiva tehnica (tehnologii i
biblioteci utilizate)
Prima iteraie de realizare a proiectului (prototipul iniial)
A doua iteraie de realizare a proiectului (completarea arhitecturii)
A treia iteraie de realizare a proiectului (adugarea unor detalii)
Evaluarea final a proiectului

UPB - ETTI

Dezvoltarea Aplicatiilor Android Inovative (DAAI)


Alte informatii importante
Organizator Laboratorul SAIM pagina Facebook https://www.facebook.com/etti.saim
(site in curs de refacere)
Pagina cursului https://www.facebook.com/daai.saim
Grupul secret al cursantilor https://www.facebook.com/groups/daai2014/
Evenimente de grup https://www.facebook.com/events/1495054114111877/
Evenimente publice unele Sesiuni Deschise vor fi publice
Competitia MobilPRO

site oficial http://mobilpro.lse.org.ro/ si


pagina Facebook https://www.facebook.com/mobilproetti

UPB - ETTI

Organizare
Tutoriale Localizare
http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/
Android Location API - Tutorial http://www.vogella.com/tutorials/AndroidLocationAPI/article.html
https://developer.android.com/training/location/retrieve-current.html
Android Location Based Services Application GPS
http://www.javacodegeeks.com/2010/09/android-location-based-services.html

Tutoriale Google Maps


http://www.javacodegeeks.com/2011/02/android-google-maps-tutorial.html
https://developers.google.com/maps/documentation/android/start
http://www.androidhive.info/2013/08/android-working-with-google-maps-v2/
Google Maps Android API v2 Tutorial http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html

Tutoriale Camera
http://www.androidhive.info/2013/09/android-working-with-camera-api/
http://developer.android.com/guide/topics/media/camera.html
http://www.vogella.com/tutorials/AndroidCamera/article.html
http://www.tutorialspoint.com/android/android_camera.htm

UPB - ETTI

Organizare
Tutoriale Socketuri
http://examples.javacodegeeks.com/android/core/socket-core/android-socket-example/
http://stackoverflow.com/questions/15984001/java-client-socket-connection-in-android
http://lakjeewa.blogspot.ro/2012/03/simple-client-server-application-for.html
http://android-er.blogspot.ro/2014/02/android-sercerclient-example-client.html
http://www.pixelstech.net/article/1368328614-Android-socket-programming-example
http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/
http://stackoverflow.com/questions/5135438/example-android-bi-directional-network-socket-using-asynctask

Tutoriale Acces servicii Web


http://android.programmerguru.com/android-webservice-example/
http://chintankhetiya.wordpress.com/2013/05/27/83/
http://spring.io/guides/gs/consuming-rest-android/
http://www.themobilemontage.com/2012/11/29/successfully-integrating-web-services-into-your-android-apps/

UPB - ETTI

Curs DAAI

Introducere in platforma Android si in


dezvoltarea pe aceasta platforma

UPB - ETTI

Introducere in platforma Android


Resurse
Resurse online:
Android Tutorial Vogella
http://www.vogella.com/tutorials/Android/article.html

Programming Mobile Applications for Android Handheld Coursera


https://www.coursera.org/course/android (de parcurs acasa pe perioada cursului)
https://class.coursera.org/android-001/lecture (de parcurs la curs ca exemplu)

Pattern-Oriented Software Architectures: Programming Mobile Services for


Android Handheld Systems Coursera
https://www.coursera.org/course/posa (de parcurs pe perioada cursurilor saul ulterior)
https://class.coursera.org/posa-002/lecture (de parcurs la curs ca exemplu)

Android Application Development Heavendrops.net


http://heavendrops.net/category/android-application-development/161

How To Learn Android 4.4 KitKat App Development Online


http://www.diygenius.com/how-to-learn-android-app-development-online/
UPB - ETTI

10

Introducere in platforma Android


Android Tutorial Vogella
Android Tutorial Vogella http://www.vogella.com/tutorials/Android/article.html

Android platform components

UPB - ETTI

11

Introducere in platforma Android


Android Tutorial Vogella

Android emulator and


Android Virtual Device

UPB - ETTI

12

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

13

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

14

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

15

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

16

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

17

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

18

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

19

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

20

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

21

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

22

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

23

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

24

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

25

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

26

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

27

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

28

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

29

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

30

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

31

Introducere in platforma Android


Android Tutorial Vogella

UPB - ETTI

32

Introducere in platforma Android


Android Tutorial Vogella
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.rssfeed"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name="RssApplication"
android:allowBackup="false"
AndroidManifest.xml
android:icon="@drawable/ic_launcher"
example file
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="RssfeedActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailActivity" android:label="Details" > </activity>
<activity android:name="MyPreferenceActivity" > </activity>
<service android:name="RssDownloadService" > </service>
</application>
</manifest>

UPB - ETTI

33

Introducere in platforma Android


Resurse

Programming Mobile Applications for Android Coursera


https://www.coursera.org/course/android
https://class.coursera.org/android-001/lecture
Introduction to the Android Platform (18:19)
The Android Development Environment - Part 1 (18:06)
The Android Development Environment - Part 2 (12:26)
Application Fundamentals - Part 1 (15:24)
Application Fundamentals - Part 2 (11:24)
The Activity Class - Part 1 (14:06)
The Activity Class - Part 2 (14:50)
The Intent Class - Part 1 (9:14)
The Intent Class - Part 2 (10:42)

UPB - ETTI

34

Programarea pe platforma Android

UPB - ETTI

35

Programarea pe platforma Android


Componentele aplicatiilor Android
Exista 4 tipuri de componente
Activitati
interfete grafice corespunzatoare actiunilor utilizatorului
Servicii
procese fara interfata care sunt executate (ruleaza) in background
Broadcast Receivers
receptioneaza notificari si reactioneaza la ele
Furnizori continut
pun la dispozitie altor aplicatii un set specific de date

UPB - ETTI

36

Programarea pe platforma Android


Intent descrierea abstracta a unei operatii
Trimiterea implicita a unui obiect Intent catre entitatile ce pot executa ACTION_CALL
se foloseste Intent-filter
startActivity(intent);

Pot executa
ACTION_CALL

Definirea Intent-filter in fisierul Androidmanifest.xml


<activity android:name=".activity.Dashboard" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.CALL" />
</intent-filter>
</activity>

UPB - ETTI

37

Programarea pe platforma Android


Intent descrierea abstracta a unei operatii
Trimiterea explicita a unui obiect Intent cu startActivityForResult() de catre
Activity1

UPB - ETTI

38

Programarea pe platforma Android


Componentele
aplicatiilor
Android

UPB - ETTI

39

Programarea pe platforma Android


Activitati, task-uri, procese
Activitatea este ca o molecula o portiune distincta de functionalitate
Un task este o colectie de Activitati
Un proces este un proces Linux standard

UPB - ETTI

40

Programarea pe platforma Android


Activitati, task-uri, procese
Activitatea este ca o molecula o portiune distincta de functionalitate
Un task este o colectie de Activitati
Un proces este un proces Linux standard

UPB - ETTI

41

Programarea pe platforma Android


Activitati, task-uri, procese
Activitate
clasa concreta in API
incapsulare a unei operatii
ruleaza in procesul .APK-ului care a instalat-o
optional asociata cu o fereastra (UI)
Task
o notiune (nu o entitate concreta)
o colectie de Activitati legate intre ele
capabil sa se intinda peste mai multe procese
asociat cu propria stiva a istoricului UI (fereastrelor)

similar aplicatiilor de pe alte platforme

UPB - ETTI

42

Programarea pe platforma Android


Activitati, task-uri, procese
Task o colectie de Activitati legate intre ele, are propria stiva a istoricului UI

Fiecare noua activitate intr-un task adauga un element in back stack. Cand utilizatorul
apasa tasta BACK, activitatea curenta e distrusa si cea anterioara reluata
UPB - ETTI

43

Programarea pe platforma Android


Activitati, task-uri, procese
Task o colectie de Activitati legate intre ele, are propria stiva a istoricului UI

Doua task-uri: Task-ul A este in background,


asteptand sa fie reluat, in timp ce Task-ul B
interactioneaza cu utilizatorul in foreground.

O activitate poate fi
instantiata de mai multe ori

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

UPB - ETTI

44

Programarea pe platforma Android


Activitati, task-uri, procese

Daca o activitate este deja parte a unui task din background cu propria back stack (B),
atunci intreaga back stack revine in prim plan, in varful task-ului curent (A).
UPB - ETTI

45

Programarea pe platforma Android


Activitati, task-uri, procese
Lansarea unei Activity din Home

Iesirea dintr-o Activity cu tasta BACK

UPB - ETTI

46

Programarea pe platforma Android


Activitati, task-uri, procese
Iesirea dintr-o Activity cu tasta HOME

http://developer.android.com/guide/practices/ui_guidelines/activity_task_design.html

UPB - ETTI

47

Programarea pe platforma Android


Activitati, task-uri, procese
Reutilizarea unei Activity Contacts reutilizeaza Gallery pentru a Obtine o imagine

UPB - ETTI

48

Programarea pe platforma Android


Activitati, task-uri, procese
Reutilizarea unei Activity Gallery reutilizeaza Messaging pentru a Partaja o imagine

UPB - ETTI

49

Programarea pe platforma Android


Activitati, task-uri, procese
Inlocuirea unei Activitati
utilizatorul descarca activitatea Rings Extended, inlocuitoare a Phone Ringtone
cand utilizatorul efectueaza Settings > Sound & Display > Phone Ringtone,
sistemul prezinta o alegere intre activitatea Android System si cea noua
dialogul are optiunea de reamintire a alegerii "Use by default for this action
daca se alege "Rings Extended", activitatea se incarca, inlocuind-o pe cea originala
Android System

UPB - ETTI

50

Programarea pe platforma Android


Activitati, task-uri, procese
Multitasking
Starea 1 Utilizatorul lanseaza activitatea View Map si cauta o locatie pe harta.
Sa zicem ca incarcarea hartii dureaza neasteptat de mult
Starea 2 Utilizatorul doreste sa efectueze altceva in timp ce asteapta, asa
incat apasa HOME, ceea ce nu intrerupe conexiunea de retea a hartii ci ii permite
sa continue incarcarea in background
Starea 3 Activitatea Map se executa acum in background, cu Home in prim
plan. Utilizatorul lanseaza activitatea Calendar, care se executa in prim plan,
obtinand focus, iar utilizatorul poate vedea calendarul zilei

UPB - ETTI

51

Programarea pe platforma Android


Activitati, task-uri, procese
Multitasking
Starea 4 Utilizatorul apasa HOME, apoi
Maps pentru a se intoarce la harta, care
acum este complet incarcata

UPB - ETTI

52

Programarea pe platforma Android


Activitati, task-uri, procese
Lansarea din 2 puncte de intrare

UPB - ETTI

53

Programarea pe platforma Android


Activitati, task-uri, procese
Intentiile
daca terminalul are doua aplicatii email configurate, cand utilizatorul atinge
mailto:link pe o pagina web, rezultatul este un obiect Intent care afiseaza un
dialog cu o alegere intre doua activitati pentru a compune un email (Gmail si
Email)

UPB - ETTI

54

Programarea pe platforma Android


Activitati, task-uri, procese
Comutarea intre task-uri
Lansarea primului task. Se doreste trimiterea unui mesaj text si atasarea unei
fotografii. Se alege: Home > Messaging > New message > MENU > Attach >
Pictures. Ultimul pas lanseaza galeria de imagini pentru a selecta o fotografie. Se
observa ca galeria de imagini e o activitate separata

In acest punct, inainte de a selecta imaginea, se decide oprirea taskului si saltul la


calendar, care este un task separat. Deoarece activitatea curenta nu are buton de
salt direct la Calendar, e necesar sa fie pornita din Home
UPB - ETTI

55

Programarea pe platforma Android


Activitati, task-uri, procese
Comutarea intre task-uri
Lansarea celui de-al doilea task. Se alege Home > Calendar pentru a se
vedea evenimentele din calendar. Calendar se lanseaza din Home ca nou task
deoarece lansatorul de aplicatii creeaza un nou task pentru fiecare aplicatie lansata

UPB - ETTI

56

Programarea pe platforma Android


Activitati, task-uri, procese
Comutarea intre task-uri
Comutarea catre primul task si incheierea lui. Cand se incheie citirea din
Calendar, se poate reveni la atasarea imaginii utilizand Home > Messaging,
ceea ce conduce nu la Messaging, ci direct la galerie, unde se suspendase
task-ul. Poate fi selectata o imagine, care e adaugata la mesaj, iar cand este
trimis mesajul se incheie primul task

UPB - ETTI

57

Programarea pe platforma Android


Fazele aplicatiilor Android
Visible and focused
activity is visible (on the top of
the task), the user can interact
with the activity

Visible but without the focus


activity is still visible, but the user cannot
interact with the activity (because of a view,
like a dialog, that has the focus on the top of the
activity)
activity is paused, but maintains the state
(i.e. member values). It may be killed by the
system in extreme low memory situation
UPB - ETTI

58

Programarea pe platforma Android


Fazele aplicatiilor Android
Hidden
activity is completely hidden by
another activity (full-screen)
activity is stopped, it still retains
all state and members BUT is
often killed by the system when
memory is needed elsewhere
Finished
an activity that is paused or stopped can be killed by the system
the system can either call the onDestroy() method or simply kill the
process (without any notification)
the state is lost in that case
if the activity is displayed again to the user, it must be completely
restarted and restore its previous state itself (if at all)
UPB - ETTI

59

Programarea pe platforma Android


Fazele aplicatiilor Android

Diagrama MSC schimbul de mesaje

Activitatea este
in prim plan

Activitatea trece
in pauza, starea
ii este mentinuta
Activitatea este
oprita, nu mai
este vizibila

UPB - ETTI

Activitatea revine
in prim plan din
pauza
60

Programarea pe platforma Android


Fazele aplicatiilor Android

Diagrama MSC schimbul de mesaje


Activitatea
revine in prim
plan dupa ce a
fost oprita
Activitatea in
pauza este
distrusa pentru
a se elibera
memorie
Activitatea
oprita este
distrusa pentru
a se elibera
memorie

UPB - ETTI

61

Programarea pe platforma Android


Fazele aplicatiilor Android
Diagrama de activitati

UPB - ETTI

62

Programarea pe platforma Android


Fazele
aplicatiilor
Android
Diagrama de
stari si tranzitii

UPB - ETTI

63

Programarea pe platforma Android


Fazele aplicatiilor Android

UPB - ETTI

Detalii privind metodele asociate

64

Programarea pe platforma Android


Fazele serviciilor Android

UPB - ETTI

65

Curs DAAI

Introducere in Java si Orientarea spre Obiecte


(complemente)

UPB - ETTI

66

Introducere in Java si Orientarea spre Obiecte


Introducere in Orientarea spre Obiecte

Local: 2014_Intro_Java_OOP_short_v01.pdf
http://uet.vnu.edu.vn/~chauttm/e-books/java/Head-First-Java-2nd-edition.pdf

Local: Head-First-Java-2nd-edition.pdf

UPB - ETTI

67

Introducere in Java si Orientarea spre Obiecte


Introducere in Java / Android
package com.vogella.android.first;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

http://uet.vnu.edu.vn/~chauttm/ebooks/java/Head-First-Java-2nd-edition.pdf

Local: Head-First-Java-2nd-edition.pdf

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (BuildConfig.DEBUG) { Log.d(Constants.LOG, "onCreated called"); }
setContentView(R.layout.activity_main);
}
// you may have here an onCreateOptionsMenu method
// this method is not required for this exercise therefore I deleted it

public void onClick(View view) {


EditText input = (EditText) findViewById(R.id.main_input);
String string = input.getText().toString();
Toast.makeText(this, string, Toast.LENGTH_LONG).show();
}
}
UPB - ETTI

68

Anda mungkin juga menyukai