android applications

68
UPB - ETTI 26.03.2015 1 Dezvoltarea Aplicatiilor Android Inovative (DAAI) 2015 UPB - Facultatea ETTI Titular curs: SAIM Lab Team [email protected] Suport curs: https://www.facebook.com/daai.saim https://www.facebook.com/groups/daai2015/

Upload: adelina-marin

Post on 25-Sep-2015

15 views

Category:

Documents


0 download

DESCRIPTION

java programming

TRANSCRIPT

  • UPB - ETTI 26.03.2015 1

    Dezvoltarea Aplicatiilor Android Inovative

    (DAAI)

    2015

    UPB - Facultatea ETTI

    Titular curs: SAIM Lab Team

    [email protected]

    Suport curs: https://www.facebook.com/daai.saim

    https://www.facebook.com/groups/daai2015/

  • UPB - ETTI 2

    Organizare

    Curs DAAI

  • UPB - ETTI 3

    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 4

    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 5

    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 6

    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 7

    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 8

    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 9

    Introducere in platforma Android si in

    dezvoltarea pe aceasta platforma

    Curs DAAI

  • UPB - ETTI 10

    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/

    Introducere in platforma Android

  • UPB - ETTI 11

    Android Tutorial Vogella

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

    Introducere in platforma Android

    Android platform components

  • UPB - ETTI 12

    Android Tutorial Vogella

    Introducere in platforma Android

    Android emulator and

    Android Virtual Device

  • UPB - ETTI 13

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 14

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 15

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 16

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 17

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 18

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 19

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 20

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 21

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 22

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 23

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 24

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 25

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 26

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 27

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 28

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 29

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 30

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 31

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 32

    Android Tutorial Vogella

    Introducere in platforma Android

  • UPB - ETTI 33

    Android Tutorial Vogella

    Introducere in platforma Android

    AndroidManifest.xml

    example file

  • UPB - ETTI 34

    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)

    Introducere in platforma Android

  • UPB - ETTI 35

    Programarea pe platforma Android

  • UPB - ETTI 36

    Programarea pe platforma 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

    Componentele aplicatiilor Android

  • UPB - ETTI 37

    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

  • UPB - ETTI 38

    Programarea pe platforma Android

    Intent descrierea abstracta a unei operatii

    Trimiterea explicita a unui obiect Intent cu startActivityForResult() de catre Activity1

  • UPB - ETTI 39

    Programarea pe platforma Android

    Componentele

    aplicatiilor

    Android

  • 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

    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 42

    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 43

    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 44

    Programarea pe platforma Android

    Activitati, task-uri, procese

    Task o colectie de Activitati legate intre ele, are propria stiva a istoricului UI

    O activitate poate fi

    instantiata de mai multe ori

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

    asteptand sa fie reluat, in timp ce Task-ul B

    interactioneaza cu utilizatorul in foreground.

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

  • UPB - ETTI 45

    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 46

    Programarea pe platforma Android

    Activitati, task-uri, procese

    Lansarea unei Activity din Home

    Iesirea dintr-o Activity cu tasta BACK

  • UPB - ETTI 47

    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 48

    Programarea pe platforma Android

    Activitati, task-uri, procese

    Reutilizarea unei Activity Contacts reutilizeaza Gallery pentru a Obtine o imagine

  • UPB - ETTI 49

    Programarea pe platforma Android

    Activitati, task-uri, procese

    Reutilizarea unei Activity Gallery reutilizeaza Messaging pentru a Partaja o imagine

  • UPB - ETTI 50

    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 51

    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 52

    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 53

    Programarea pe platforma Android

    Activitati, task-uri, procese

    Lansarea din 2 puncte de intrare

  • UPB - ETTI 54

    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 55

    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 56

    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 57

    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 58

    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 59

    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 60

    Programarea pe platforma Android

    Fazele aplicatiilor Android

    Activitatea trece

    in pauza, starea

    ii este mentinuta

    Activitatea revine

    in prim plan din

    pauza

    Activitatea este

    in prim plan

    Activitatea este

    oprita, nu mai

    este vizibila

    Diagrama MSC schimbul de mesaje

  • UPB - ETTI 61

    Programarea pe platforma Android

    Fazele aplicatiilor Android

    Activitatea in

    pauza este

    distrusa pentru

    a se elibera

    memorie

    Activitatea

    revine in prim

    plan dupa ce a

    fost oprita

    Activitatea

    oprita este

    distrusa pentru

    a se elibera

    memorie

    Diagrama MSC schimbul de mesaje

  • UPB - ETTI 62

    Programarea pe platforma Android

    Fazele aplicatiilor Android

    Diagrama de activitati

  • UPB - ETTI 63

    Programarea pe platforma Android

    Fazele

    aplicatiilor

    Android

    Diagrama de

    stari si tranzitii

  • UPB - ETTI 64

    Programarea pe platforma Android

    Fazele aplicatiilor Android Detalii privind metodele asociate

  • UPB - ETTI 65

    Programarea pe platforma Android

    Fazele serviciilor Android

  • UPB - ETTI 66

    Introducere in Java si Orientarea spre Obiecte

    (complemente)

    Curs DAAI

  • UPB - ETTI 67

    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

    Introducere in Java si Orientarea spre Obiecte

    Introducere in Orientarea spre Obiecte

  • UPB - ETTI 68

    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;

    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();

    }

    }

    Introducere in Java si Orientarea spre Obiecte

    Introducere in Java / Android http://uet.vnu.edu.vn/~chauttm/e-books/java/Head-First-Java-2nd-edition.pdf

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