Estudi d'entorns de programació per a...

81
Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica Industrial en Electrònica Industrial AUTORS: Sergi Domingo Porqueras . DIRECTORS: Ernest Gil Dolcet . DATA: Setembre / 2015.

Transcript of Estudi d'entorns de programació per a...

Page 1: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

Estudi d'entorns de programació per a Android.

TITULACIÓ: Enginyeria Tècnica Industrial en Electrònica Industrial

AUTORS: Sergi Domingo Porqueras .

DIRECTORS: Ernest Gil Dolcet .

DATA: Setembre / 2015.

Page 2: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

2

Dedicatòria:

Li dedico al meu avi, en pau descansi, i al meu fill. Entremig d’ells hi han algunes

generacions però també hi ha un fil conductor, en comú.

Page 3: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

3

Agraïments:

Pricipalment agraeixo la infinita paciència del meu director de projecte, l’Ernest Gil i

a la meva dóna per el seu suport incondicional en tot moment. També, i com no, als meus

pares perquè fa molt de temps em van poder donar aquesta educació Universitària.

Page 4: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

4

Figura 1. Logotip marca Android

Resum:

Android és un sistema operatiu de codi lliure

creat de la mà de Google i utilitzat principalment en

equips mòbils tàctils, bàsicament telèfons

intel·ligents i tauletes. En els darrers anys, aquest

sistema operatiu ha incrementat exponencialment la

seva participació en el mercat, convertint-se en una

de les plataformes líders en vendes d'equipaments i

comptant amb la major quantitat d’aplicacions

disponibles per a la seva descàrrega, al voltant del

milió d’aplicacions amb més de 50.000 milions de

descarregues.

D'acord amb l’exposat anteriorment, és clar,

que el desenvolupament d'aplicacions en Android

s'ha convertit en un dels camps de major interès per a

petites i grans empreses, les quals busquen tenir un

paper rellevant en aquest industria emergent.

És per aquesta raó, i en vista de l'àmplia oferta d'alternatives de programació i

d’entorns de treball existents en el mercat, que aquest treball intenta oferir una llista d’un

gran nombre del diferents marcs de programació que permeten desenvolupar aplicacions

sota aquest sistema operatiu, destacant l'abast i les limitacions de cadascun d’ells, i

brindant així, a tots els interessats, una guia bàsica de referència a l'hora de prendre la

decisió per escollir quina alternativa és la que s'adapta millor a les seves necessitats.

En primer lloc, intenta realitzar un anàlisi bàsic i general de moltes de les alternatives

diferents existents al mercat per a la programació d’aplicacions en Android, definint quins

llenguatges de programació utilitzen (Java, HTML, etc.) i algunes de les facilitats i

inconvenients que ofereixen alhora de dur a terme el desenvolupament d'aplicacions,

segons sigui l’objectiu d’aquestes o altres factors determinats.

Alhora, es seleccionen quatre de les alternatives més rellevants segons l’ús i es

realitza un estudi més detallat de les mateixes (Entorns natius: Android Studio/Eclipse,

jQuery Mobile, PhoneGap i App Inventor) en el qual s'analitza quins són els elements i

components als que es poden accedir des de cadascun dels entonrs, i quin d'ells és

recomanable utilitzar depenent de la categoria a la qual pertany l'aplicació que es vol fer i

els coneixements previs de què disposa el desenvolupador.

Com a resultat del treball, els desenvolupadors interessats tenen la facilitat de triar

l'alternativa de programació en Android que els garantirà el millor resultat amb el menor

esforç possible.

Més específicament, s’aprofundeix en l’entorn natiu, mostrant els procediments

d’instal·lació aquests Frameworks, tant del paquet Andoird Studio i com els diferents

paquets per l’ús de l’IDE Eclipse. Posteriorment, també s’estudia com s’estructura un

projecte per el desenvolupament d’una aplicació en aquests entorns esmentats i finalment

és crea una aplicació de comunicació bàsica a traves del Bluetooth, per intentar posar en

pràctica els conceptes teòrics explicats prèviament i mostra la forma de treball que utilitzen

aquets entorns.

Page 5: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

5

Figura 1. Logotip marca Android

Resumen

Android es un sistema operativo de código

abierto creado por Google y utilizado principalmente

en equipos móviles táctiles, especialmente en

teléfonos inteligentes y tabletas. En los últimos años

este sistema operativo ha incrementado de forma

exponencial su participación en los mercados,

convirtiéndose en una de las plataformas líder en

ventas de equipamientos y que cuenta con el mayor

número de aplicaciones disponibles para su descarga,

aproximadamente un millón de aplicaciones, con

más de 50.000 millones de descargas.

De acuerdo con lo expuesto, es normal que el

desarrollo de aplicaciones para Android, se haya

convertido en uno de los campos con mayor interés,

tanto para pequeñas empresas como para grandes,

que buscan ocupar un sitio relevante en esta industria tan emergente.

Es por esta razón, y en vista de la amplia oferta de alternativas de desarrollo y

entornos de trabajo existentes en el mercado, que este trabajo intenta ofrecer una lista de

algunos de los distintos marcos de programación que permiten el desarrollo de aplicaciones

bajo este sistema operativo, destacando el alcance y las limitaciones de cada uno de estos,

y brindando así, a todos los interesados una guía básica de referencia a la hora de tomar

decisiones para escoger cual de las alternativas disponibles se adapta mejor a sus

necesidades.

En primer lugar, se realiza un análisis básico i general de muchas de las alternativas

distintas existentes en el mercado para la programación de aplicaciones en Android,

definiendo que lenguajes de programación utilizan (Java, HTML, etc…) i las facilidades e

inconvenientes que ofrecen en el momento de llevar a cabo desarrollos de aplicaciones,

según sea el objetivo de estas u otros factores también determinantes, etc.

A la vez, se seleccionan cuatro de las alternativas más relevantes básicamente por su

uso (entorno nativo, jQuery Mobile, PhoneGap i App Inventor), y se realiza un estudio más

detallado, en el que se analizan los elementos y componentes específicos a los que se

pueden acceder en cada uno de los distintos Frameworks y cuál de ellos es más

recomendable utilizar según la categoría a la que pertenece la aplicación que se quiere

desarrollar y los conocimientos previos de que dispone el desarrollador.

Como resultado de este trabajo, los desarrolladores interesados disponen de

herramientas para escoger la alternativa de programación para aplicaciones en Android que

les garantizará un mejor resultado con un esfuerzo más controlado.

Más específicamente, también se profundiza en el entorno nativo, mostrando los

procesos de instalación de estos entornos, tanto para el paquete de Android Studio como

para los distintos paquetes que conforman el framewrok Eclipse. Posteriormente también

se estudia cómo se estructura de un proyecto para el desarrollo de una aplicación en estos

entornos citados y finalmente se muestra el proceso de creación de una aplicación básica

de comunicación a través de la característica Bluetooth, que pretende poner en práctica

toda la información teórica previamente explicada así como la forma de trabajar en dichos

entornos.

Page 6: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

6

Abstract

Android is an open source operating system created by Google which is used mainly

in mobile touch devices, especially smart and tablets. In last year’s, this operating system

has exponentially increased their market shares, becoming one of the leading platforms in

sales of equipment and having the highest number of applications available for download,

approximately one million applications and more than 50.000 millions of downloads.

According to the above, it is normal, that the applications development for Android

has become one of the most interesting fields for small and large companies, who seek to

occupy an important place in this emerging industry so.

It is for this reason, and in view of the wide range of development alternatives i

existing work environments in the market, this paper attempts to provide a list of some of

the various programming frameworks that enable the development of applications under

this operating system, highlighting the scope and limitations of each of these, and thus

providing to all stakeholders a roadmap of reference when making decisions to choose

which of the alternatives is best suited to your needs.

First, a basic and generic analysis of many of the existing alternatives on the market

for Android application programming is done, in which are defined programming

languages (Java , HTML , etc ... ) some benefits and inconvenient that offer in application's

development, depending on the purpose of these applications or other determinants.

At the same time, four of the most important alternatives, primarily by his use (native

environment: Android Studio and Eclipse, jQuery Mobile, PhoneGap and MIT App

Inventor) are selected, and a more detailed study is done, in which specific elements and

components are analyzed, can be accessed and which of the different Frameworks is better

to use depending on the application category you want to develop and prior knowledge

available to the developer belongs.

As a result of this work, interested developers have tools to choose between

alternative frameworks programming Android applications that will guarantee a better

result with a more controlled effort.

More specifically, it delves into the native framework, where showing the process of

installing these environments for both Android Studio package to the various packages that

make up the Eclipse framework. Later also it studies the project structure for the

development of an application in these aforementioned environments and finally the

process of creating a basic communication application via the Bluetooth feature, which

aims to put into practice all the theoretical information which is displayed previously

explained, as well as, how is to work in such environments.

Page 7: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

7

Taula de contingut:

Dedicatòria: ..............................................................................................................2

Agraïments: ..............................................................................................................3

Resum: .....................................................................................................................4

Resumen ...................................................................................................................5

Abstract ....................................................................................................................6

1 Índex d’il·lustracions: ..................................................................................... 10

2 Introducció: .................................................................................................... 12

3 Propòsit del projecte: ...................................................................................... 15

4 Justificació ..................................................................................................... 15

5 Objectius ........................................................................................................ 15

5.1 Objectiu general: ..................................................................................... 15

5.2 Objectius específics: ................................................................................ 15

6 Limitacions. ................................................................................................... 16

7 Abast .............................................................................................................. 16

8 Base de coneixements: ................................................................................... 17

8.1 Tipologia de les Aplicacions mòbils: ....................................................... 17

8.1.1 Aplicació Nativa: ................................................................................. 17

8.1.2 Aplicació Web o WebApp: .................................................................. 18

8.1.3 Aplicacions híbrides: ........................................................................... 19

9 Arquitectura lògica del Sistema Operatiu Android. ......................................... 20

9.1 Model de Capes de l’arquitectura Android. .............................................. 20

9.1.1 Kernel de Linux o nucli de Linux:........................................................ 21

9.1.2 Capa de Llibreries o capa nativa: ......................................................... 21

9.1.3 Base de funcionament de la màquina virtual Dalvik. ............................ 22

9.1.4 Framework per aplicacions: ................................................................. 23

9.1.5 Capa d’aplicacions: .............................................................................. 23

10 Marc referencial ............................................................................................. 24

10.1 Entorns o Frameworks de programació. ................................................... 26

10.1.1 Android Studio / API natiu d’Android: ............................................... 26

10.1.2 MIT App Inventor (Google App Inventor) ......................................... 26

10.1.3 PhoneGap (Apache Cordova PhoneGap): ........................................... 27

10.1.4 jQuery ................................................................................................ 28

10.1.5 Basic4android (B4A): ........................................................................ 29

10.1.6 HyperNext Android Creator ............................................................... 30

10.1.7 Kivy ................................................................................................... 30

Page 8: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

8

10.1.8 Qt para Android ................................................................................. 31

10.1.9 RFO Basic! ........................................................................................ 31

10.1.10 RubyMotion ..................................................................................... 32

10.2 Altres Frameworks més minoritaris: ........................................................ 32

10.2.1 Rebol 3Saphir .................................................................................... 32

10.2.2 Projecte Simple: ................................................................................. 33

10.2.3 WinDev Mobile ................................................................................. 33

10.2.4 GameSalad ......................................................................................... 33

10.2.5 Corona SDK ...................................................................................... 34

10.2.6 Altres entorns per al desenvolupament de jocs: .................................. 34

10.2.7 Entorns HTML5 i CSS: ...................................................................... 34

10.3 Quadre comparatiu entre Frameworks. .................................................... 36

10.4 Conclusions ............................................................................................. 37

11 Framework Natiu ........................................................................................... 39

11.1 Requisits per a la programació amb Api nativa: ....................................... 39

11.1.1 SDK: .................................................................................................. 39

11.1.2 IDE (Integrated Development Environment): ..................................... 40

11.1.3 JDK (Java Development Kit) ............................................................. 41

11.1.4 NDK (Native Development Kit) ......................................................... 41

11.2 Instal·lació del entorn natiu: .................................................................... 41

11.2.1 Instal·lació del paquet complet d’Android Studio: .............................. 41

11.2.2 Descàrrega i instal·lació de Java:........................................................ 42

11.2.3 Descarregar i instal·lar el paquet Android Studio ............................... 42

11.2.4 Configuració inicial de l’entorn Android Studio ................................. 46

11.2.5 Instal·lar/actualitzar els components del SDK de Android. ................. 46

11.3 Android per parts o en entorn Eclipse. ..................................................... 48

11.3.1 Descàrrega i instal·lació de Java. ........................................................ 48

11.3.2 Descàrrega i instal·lació d’Eclipse...................................................... 48

11.3.3 Descarregar el SDK d’Android. ......................................................... 49

11.3.4 Instal·lar els paquets addicionals del SDK. ......................................... 49

11.3.5 Configuració d’un AVD (Android Virtual Device) ............................. 50

11.3.6 Descarrega i instal·lació del Pluggin per Eclipse ................................ 51

12 Estructura d’un projecte en Android Studio. ................................................... 53

12.1 Creació d’un projecte en Android Studio pas a pas .................................. 53

12.1.1 Carpeta /app/src/main/java ................................................................. 58

12.1.2 Carpeta /app/src/main/res/ .................................................................. 58

12.1.3 Fitxer /app/src/main/AndroidManifest.xml ......................................... 59

Page 9: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

9

12.1.4 Fitxer /app/build.gradle ...................................................................... 59

12.1.5 Carpeta /app/libs ................................................................................ 59

12.1.6 Carpeta /app/build/ ............................................................................. 60

12.2 Components d’una aplicació Android. ..................................................... 60

12.2.1 Activitat/Activity: .............................................................................. 60

12.2.2 Vista/View: ........................................................................................ 60

12.2.3 Servei/Service: ................................................................................... 60

12.2.4 Proveïdors de Continguts/Content Provider. ....................................... 60

12.2.5 Broadcast Reciver. ............................................................................. 61

12.2.6 Widget. .............................................................................................. 61

12.2.7 Intent. ................................................................................................ 61

13 Creació d’una aplicació senzilla ..................................................................... 62

13.1 Procés de creació de l’aplicació. .............................................................. 62

13.1.1 Fase I: Creació del projecte. ............................................................... 62

13.1.2 Fase II: Factors inicials. ..................................................................... 65

13.1.3 Fase III: Creació de la interfície gràfica. ............................................. 66

13.1.4 Fase IV: Creació de l’activitat principal. ............................................ 68

Conclusions finals: .................................................................................................. 71

Referències: ............................................................................................................ 73

Annex 1 .................................................................................................................. 74

Annex 2 .................................................................................................................. 75

Annex 3 .................................................................................................................. 77

Annex 4 .................................................................................................................. 78

Page 10: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

10

1 Índex d’il·lustracions

FIGURA PG.

Figura 1. Logotip del Sistema Operatiu Android . 5, 6

Figura 2. Gràfic del creixement d’abonats a l’ample de banda mòbil a nivell

mundial. 12

Figura 3. Gràfic del creixement del consum de dades a nivell mundial. 12

Figura 4. Gràfic del usos dels diferents Sistemes Operatius Mòbils. 13

Figura 5. Representació de l’Arquitectura de capes del Sistema Operatiu

Android. 20

Figura 6. Representació comparativa compilació estàndard Java i Dalvik. 22

Figura 7. Ús dels diferents Frameworks els anys 2013 i 2012. 24

Figura 8. Logotip d’Android Studio. 25

Figura 9. Logotip MIT App Inventor. 26

Figura 10. Logotip PhoneGap. 27

Figura 11. Logotip JQuery. 28

Figura 12. Logotip Basic 4 Android. 29

Figura 13. Logotip HyperNext Studio. 30

Figura 14. Logotip del framework Kivy. 30

Figura 15. Logotip del framework Qt. 31

Figura 16. Logotip RFO Basic! 31

Figura 17. Logotip RubyMotion. 32

Figura 18. Logotip GameSalad. 33

Figura 19. Logotip Corona SDK. 34

Figura 20. SDK Maneger, on es veuen el paquest i llibreries disponibles en el

nostre SDK. 39

Figura 21. Captura de l’aspecte que ofereix l’IDE d’Android Studio. 40

Figura 22. Enllaç de descàrrega d’Android Studio al web

https://developer.android.com. 41

Figura 23. Captura en el procés d’instal·lació del paquet de Java. 42

Figura 24. Pantalla inicial del procés d’instal·lació d’Android Studio 43

Figura 25. Instal·lació en curs d’Android Studio. 44

Figura 26. Opció d’importar a Android Studio una configuració prèvia 44

Figura 27. Actualitzció automàtica del components recent instal·lats d’Android

Studio 44

Figura 28. Pantalla de Benvinguda / Inicial d’Andoid Studio. 45

Figura 29. Pantalla de configuració de la ubicació dels directoris SDL i Java a

Android Studio. 46

Page 11: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

11

Figura 30. Captura del SDK Maneger. 47

Figura 31. SDK Maneger. 49

Figura 32. Captura de la informació mostrada per l’SDK en el procés

d’actualització. 50

Figura 33. Vista de l’emulador AVD amb dos dispositius configurats. 50

Figura34. Pantalla per a la configuració dels dispositius d’emulació al AVD. 51

Figura 35. Finestra de Benvinguda a Android Studio. 53

Figura 36. Captura d’una pantalla en el creació d’un nou projecte. 54

Figura 37. Exemple 1 de la configuració d’alguns paràmetres en un nou projecte. 55

Figura 38. Pantalla d’ajuda per a la selecció de paràmetres en la configuració del

nou projecte. 55

Figura 39. Exemple 2 de la configuració d’alguns paràmetres en un nou projecte. 56

Figura 40. Exemple 3 de la configuració d’alguns paràmetres en un nou projecte. 56

Figura 41. Aspecte del entorn de treball davant d’un nou projecte. 57

Figura 42. Captura del menú de carpetes de com s’estructura un projecte. 57

Figura 43. Llistat de les carpetes d’un nou projecte. 59

Figura 44. Captura dels components que conformen la carpeta build en un nou

projecte. 60

Figura 45. Pantalla de configuració del nom de l’aplicació a crear. 62

Figura 46. Pantalla de configuración del mínim SO amb el que serà compatible

l’aplicació a crear. 63

Figura 47. Pantalla de configuració del tipus d’activitat principal que tindrà la

nova aplicació. 64

Figura 48. Introducció dels paràmetres que defineixen el tipus d’activitat escollit. 64

Figura 49. Entorn de treball on es crearà la nova aplicació. 65

Figura 50. Previsualització de l’entorn gràfic de la nostra aplicació. 66

Page 12: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

12

2 Introducció

La penetració de les telecomunicacions i la telefonia mòbil en aquesta última dècada

ha estat tan accelerada, que d’acord amb l’últim informe “Medición de la Sociedad de la

información (MSI)” de 2014, a finals d’aquest any, 2014, hi havia casi tants abonats a la

telefonia mòbil com habitants hi ha a la Terra, uns 6.900 milions. Directament relacionat

amb aquest creixement hi va vinculat el creixement encara més exagerat dels abonats a

l’ampla de banda mòbil, amb una penetració mundial del 32%, és per això, que resulta

innegable un creixement exponencial del mercat de les aplicacions mòbils en conjunt amb

la demanda de telèfons mòbils, convertint-se indubtablement en un dels sectors de més

interès per a petits i grans empresaris.

Figura 2. Gràfic del creixement d’abonats a l’ample de banda mòbil a nivell mundial.

Tan mateix, també es pot observar el fort creixement en volum de dades a nivell

mundial al llarg de la última dècada.

Figura 3. Gràfic del creixement del consum de dades a nivell mundial.

En resposta a aquest creixement desmesurat de la tecnologia mòbil sorgeixen al

mercat múltiples marques i sistemes operatius de telèfons mòbils, que utilitzen i aprofiten

els recursos de formes diferents d’acord amb les seves necessitats i possibilitats d’ofertes.

Page 13: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

13

D’aquesta manera, Android, com a Sistema Operatiu mòbil, es posiciona actualment

com un dels més utilitzats per els telèfons intel·ligents i tauletes, de fet, a l’any 2014 un

47,45% dels dispositius a nivell mundial utilitzaven aquest sistema operatiu (segons dades

de NetMarketShare: http://www.netmarketshare.com/). Directament vinculat a aquest

creixement, Google Play s’ha convertit amb la plataforma amb major nombre d’aplicacions

que aproximadament aglutina més de 800.000 aplicacions disponibles i més de 50.000

millons de descarregues des dels seus inicis, fa aproximadament una dècada.

Figura 4. Gràfic del usos dels diferents Sistemes Operatius Mòbils.

La programació d’aplicacions en Andoird es realitza mitjançant una combinació de

comandes en Java juntament amb la utilització de llibreries natives que permeten manejar i

controlar els esdeveniments i accessoris del telèfon. Com a contrapartida a la programació

nativa, sorgeixen múltiples empreses, companyies i associacions d’usuaris dedicats a la

creació i desenvolupament de frameworks o entonrs de programació que ens permeten la

creació i elaboració d’aplicacions de forma alternativa a l’esdentada programació nativa,

fent servir altres llenguatges i lògiques de programació.

En aquest mateix ordre d’idees, segons un informe realitzat per Eclipse el juny de

2014, “Eclipse Open Source Developer Report 2014” tot i existir diferents opcions de

programació al mercat, casi el 60% dels programadors prefereixen utilitzar els entorns

natius, aproximadament un 28% utilitza jQuery Mobile, framework basat en HTML5 +

CSS + JavaScript, per una altre banda, un 7%, prefereix utilitzar PhoneGap, també basat

amb els mateixos llenguatges que el framework anterior. Finalment la resta de

programadors es divideixen en un gran nombre de marcs existents, que posteriorment

nombrarem.

És important remarcar que cadascun dels Frameworks, té les seves avantatges i els

seus inconvenients segons el tipus, objectiu i tipologia de l’aplicació que el usuari desitja

desenvolupar.

En aquest projecte, intentaré exposar les capacitats i limitacions d’alguns dels

Frameworks més representatius, explicant les seves avantatges així com els seu

inconvenients, basant-nos en la experiència de desenvolupadors experimentats com la

meva pròpia, més limitada. De la mateixa manera, intentaré establir criteris d’avaluació per

avaluar la conveniència d’utilitzar una plataforma o una altre segons l’objectiu de

l’aplicació, com també altres factors com poden ser els coneixements previs del

programador, el temps del que es disposa, etc.

Page 14: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

14

Com a problemàtica tenim el gran nombre d‘entorns de treball existents al mercat, i

en conseqüència l’elevat nombre de llenguatges i lògiques diferents utilitzades, així com la

constant evolució de tots ells, fet que pot dificultar força l’anàlisi de tots ell,.

En conclusió, aquest treball intenta ser una guia bàsica per aquells usuaris que

desitgin desenvolupar aplicacions en Android i no saben quina alternativa escollir i en el

cas d’escollir un entorn natiu, també el serveixi com a guia inicial per començar a treballar

amb aquest entonrs.

Page 15: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

15

3 Propòsit del projecte

Com ja s’ha mencionat amb anterioritat, aquest projecte intenta donar una amplia

informació dels diversos Frameworks de programació existents al mercat que permeten

desenvolupar aplicacions sobre el sistema operatiu Android, amb una posterior comparació

dels avantatges i inconvenients de la utilització de cadascun d’ells.

Particularment, el treball intenta realitzar un anàlisi detallat de les capacitats d’alguns

frameworks, i seguidament mostrar de forma simplificada i senzilla als desenvolupadors,

una varietat d’informació comparativa que els serveixi com a guia alhora de prendre

decisions al escollir entre les múltiples opcions disponibles combinades amb les seves

necessitats de desenvolupament, objectius de l’aplicació i coneixements del programador.

4 Justificació

Android, en els darrers anys, s’ha posicionat a nivell mundial com una de les

plataformes mòbils més utilitzades. Tot i que el propi Sistema Operatiu posa a disposició

una web amb documentació detallada, tutorials, etc. Sobre la programació d’aplicacions

amb els paquets natius, es possible trobar per la xarxa, moltes altres plataformes que ens

permeten també desenvolupar les mateixes aplicacions, però utilitzant llenguatges o

tècniques de desenvolupament diferents.

És per això, que degut a aquest gran nombre d’alternatives a la programació nativa,

que aquest projecte proposa la recopilació dels Frameworks més utilitzats per explicar els

avantatges i inconvenients de cascun d’ells respectivament i oferir al desenvolupador una

guia que l’ajudi en la presa de les decisions prèvies al desenvolupament d’aplicacions

mòbils.

5 Objectius

5.1 Objectiu general: Comparació de Frameworks existents al mercat per a la programació d’aplicacions

mòbils i un anàlisi més exhaustiu del que considerem més adequat per al nostre entorn.

5.2 Objectius específics:

Coneixements sobre l’arquitectura lògica del Sistema Operatiu Android.

Coneixement sobre la tipologia d’aplicacions mòbils existents.

Coneixement bàsics dels diferents entorns de treball existents al mercat per al

desenvolupament d’aplicacions mòbils.

Coneixement dels Frameworks natiu de desenvolupament.

Coneixement dels processos d’instal·lació dels dos entorns natius principals.

Coneixement de l’estructuració de projectes en els entorns natius principals.

Coneixements dels components que composen un aplicació Android.

Coneixements del procés de creació, compilació i emulació d’una aplicació

senzilla.

Page 16: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

16

6 Limitacions

Existeixen al mercat una gran diversitat de Frameworks que ofereixen al públic en

general eines per al desenvolupament d’aplicacions mòbils compatibles amb el sistema

operatiu Android. Precisament, aquesta gran quantitat de Frameworks representen la

principal limitació en el moment de desenvolupar la primera part aquesta investigació. Es

per aquest motiu que es va decidir orientar l’estudi cap un anàlisis més general sobre una

gran nombre de Frameworks i un posterior aprofundiment sobre els més utilitzats, acabant

amb un anàlisi encara més acurat del Frameworks natius.

En la segona part del projecte, el desenvolupament d’una aplicació en Android

Studio, la limitació rau en els coneixements bàsics dels que disposo a nivell de

programació sobre aquest entorn.

7 Abast

Aquest treball s’emmarca sota la necessitat de proporcionar als nous

desenvolupadors interessats en la creació d’aplicacions mòbils sota el Sistema Operatiu

Android, una guia bàsica comparativa que els faciliti la elecció del Framework més idoni,

que s’amotlli a les seves necessitats. I en cas d’escollir l’entorn natiu ampliï aquesta

informació i col·labori en l’execució i elaboració de l’aplicació de forma més ràpida i

senzilla.

També intenta ser una guia per iniciar-se en el mon dels entorns natius, mostrant des

del procés d’instal·lació, entenent l’estructuració dels projectes en aquests entorns, passant

per el desenvolupament de l’estructura bàsica d’un projecte, coneixen el components

bàsics d’una aplicació fins arribar a ala creació d’una aplicació de comunicació força

senzilla on es posi en pràctica tota la informació teòrica desgranada.

Page 17: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

17

8 Base de coneixements

Alhora de començà a desenvolupar una aplicació mòbil, a més d’escollir quin

Framework s’utilitzarà, també cal conèixer quin tipus d’aplicació es desenvoluparà,

aquesta elecció afectarà directament en la pròpia elecció del marc de treball, així com el

nivell de compatibilitat amb altres sistemes operatius, la plataforma de propagació de

l’aplicació i possiblement la tipologia de públic a la que anirà dirigida, etc...

La forma de classificar les aplicacions, pot ser segons el seu objectiu o ús, com per

exemple: aplicacions educatives, aplicacions empresarials, aplicacions per l’oci,

divulgatives, jocs, de música, etc., però també es poden classificar segons els seu mode de

construcció, que per al nostre objectiu és la millor forma de classificar-les.

És per això, que per escollir quin tipus de modalitat d’Aplicació és la més apropiada

per a definir l’aplicació que es té com objectiu desenvolupar, cal respondre a un sèrie de

preguntes, les respostes de les quals, en ajudaran a realitza una correcta planificació i a

escollir l’entorn de desenvolupament més adequat.

i. Quin cost s’està disposat a assumir per al desenvolupament de l’aplicació?

ii. L’aplicació a desenvolupar, requereix accedir a les característiques del

maquinari del dispositiu?

iii. A quin tipus de públic va dirigida l’aplicació?

iv. Requereix d’un disseny molt complex o molt personalitzat?

v. Es vol utilitzar les notificacions a l’aplicació?

vi. Es té pensat modificar les accions de l’aplicació mòbil i incorporar més

funcionalitats en un futur?

La resposta a aquestes preguntes ens indicarà de quina tipologia serà l’aplicació a

desenvolupar, per tant, les aplicacions es poden classificar de la següent manera,

classificació que és vàlida per qualsevol plataforma o sistema operatiu:

8.1 Tipologia de les Aplicacions mòbils:

8.1.1 Aplicació Nativa:

És aquella que es desenvolupa de forma específica per a un determinat Sistema

Operatiu, també anomenat Software Development Kit o SDK, com poden ser els coneguts

sistemes Android, iOS, Windows Phone, etc... Cadascun d’aquest tenen un sistema

diferent, que implica un desenvolupament propi i únic per a cadascuna d’elles, és a dir, si

es vol que un aplicació nativa funcioni en tots els sistemes operatius, caldrà realitzar un

desenvolupament complet d’aquest per cadascun.

Per exemple:

i. Les Apps per a iOS es desenvolupem en llenguatge Objective-C.

ii. Les Apps d’Android es desenvolupament amb llenguatges com per exemple

el Java.

iii. Les Apps amb Windoes Phone es desenvolupen en .Net.

Quan es parla de desenvolupament mòbil, quasi sempre es fa referència a aplicacions

natives. La principal avantatge d’aquest tipus de desenvolupament ne front la resta, és la

possibilitat d’accedir a totes les característiques de hardware de l’aparell: càmera, GPS,

Bluetooth, agenda, emmagatzemant, etc... Això afavoreix que l’experiència de l’usuari

sigui molt més positiva comparada amb altres tipologies d’aplicació.

Page 18: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

18

A més, aquest tipus d’Apps no requereixen d’una connexió continua a Internet per a

que puguin funcionar.

La descarrega i instal·lació d’aquestes Apps es realitza a través de les tendes

d’aplicacions (app stores dels fabricants: AppStore, PlayStore, etc...

Avantatges:

Possibilitat d’accés complet a les característiques del maquinari del

dispositiu.

Millora l’experiència de l’usuari.

Visibilitat de l’aplicació en les plataformes de descarrega reconegudes.

Aprofitament de les notificacions i avisos.

Fàcil i constant actualització de l’aplicació a traves de la publicació de noves

versions.

Inconvenients:

Requereix d’un desenvolupament per a cadascuna de les plataformes

especifiques en les que es vol que funcioni.

Normalment tenen un cost més elevat de desenvolupament.

8.1.2 Aplicació Web o WebApp:

És aquella que es desenvolupa amb llenguatges majoritaris i molt coneguts per els

programadors, com per exemple HTML5, JavaScript, CSS. La principal avantatge respecte

el desenvolupament d’aplicacions natives és la possibilitat de programar independentment

del sistema operatiu on es farà corre l’aplicació. D’aquesta forma es pot executar

l’aplicació en diferents entorns sense la necessitat de fer un desenvolupament específic per

a cada SO.

Les aplicacions web, s’executen dins del propi navegador web del dispositiu o a

traves d’una URL, per exemple: a través de Safari per plataformes amb iOS, o Chrome en

Android, en aquests casos, el contingut s’adapta a la pantalla simulant l’aspecte de

navegació d’una App Nativa.

Una altra característica diferenciadora, és que aquest tipus d’aplicacions no

requereixen instal·lació, per tant, aquestes Apps no estan visibles a les botigues dels

fabricants, com a conseqüència, totes les tasques de promoció i comercialització s’ha de

realitzar de forma independent.

La manera de presentar-les com una aplicació nativa, és crear un accés directe que

seria l’equivalent al procés de instal·lació.

Avantatges:

El mateix codi font és vàlid per a tots els Sistemes Operatius.

Simplificació del procés de desenvolupament, tant a nivell tècnic com

econòmic.

No requereix de l’aprovació dels fabricants per a la seva publicació a les

botigues reconegudes.

Els usuaris sempre disposen de la última versió, ja que no cal actualització de

la pròpia aplicació.

Es poden utilitzar en llocs que ja han estat dissenyats de forma responsiva.

Page 19: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

19

Inconvenients:

Requereix d’una connexió de dades continua per al seu funcionament.

L’experiència de l’usuari és menys satisfactòria deguda la dependència amb

la connexió de dades.

Requereix un major esforç en la promoció i comercialització ja que

l’aplicació no es publica en les Stores reconegudes.

8.1.3 Aplicacions híbrides:

Són aquelles que combinen les dues modalitats anteriors, és a dir, aprofiten les

millors característiques de cadascuna d’elles.

Per una banda aquestes aplicacions es desenvolupen amb els llenguatges propis de

les WebApps, com poden ser: HTML, CSS, Javascript..i com a conseqüència són

executables en els diferents sistemes Operatius, però a més, incorporen la possibilitat

d’accedir a les característiques Hard del dispositiu.

La principal avantatge, a més de les característiques esmentades, és que, en aquest

tipus de desenvolupament es possible agrupar els codis desenvolupats i distribuir-los a

traves de les tendes dels fabricants.

El grau d’integració amb el sistema Operatiu, dependrà del entorn o framework de

desenvolupament escollit, per exemple: PhoneGap, és un dels entorns de desenvolupament

(Frameworks) més utilitzats per als programadors d’aquest tipus d’Apps, tot i així,

n’existeixen molts altres que desenvoluparem en punts posteriors.

Avantatges:

Es possible distribuir-les a traves de les Apps Stores dels fabricants

L’entorn de treball es basa en una instal·lació nativa però construïda en –

Javascript, HMTL i CSS.

Un únic codi per a tots els Sistemes Operatius.

Possibilitat d’accedir a quasi totes les característiques hard del dispositiu.

Inconvenients:

L’experiència de l’usuari no es pot considerar del tot equivalent a les Apps

Natives.

Page 20: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

20

Alhora de desenvolupar una aplicació sota el Sistema Operatiu Android cal tenir

alguns coneixements bàsics sobre aquest.

9 Arquitectura lògica del Sistema Operatiu Android.

Una de les característiques que fa tan atractiu aquest Sistema Operatiu, és que va ser

creat per ser independent de qualsevol tipus de hardware, sobretot en els dispositius

mòbils.

Aquesta característica fa que sigui necessari estudiar la seva arquitectura abans de

començar la programació, conèixer les seves característiques tant d’operació en temps real

com en el seu format d’encapsulament d’arxiu.

9.1 Model de Capes de l’arquitectura Android. Android es va construir amb una arquitectura de quatre capes o nivells

interelacionats amb la disposició que mostra el següent gràfic proposat per Marko

Gargenta y Masumi Nakamura en el seu llibre “Learning Android”.

Figura 5. Representació de l’Arquitectura de capes del Sistema Operatiu Android.

Com es pot observar al gràfic anterior, i de forma genèrica, l’estructura d’Android

recau sobre un Kernel de Linux, directament a sobre s’hi troba la capa de llibreries

relacionada amb una estructura administradora anomenada “Android runtime”.

En la següent capa hi trobem els “Frameworks” o entorns de desenvolupament,

objectes d’estudi en aquest projecte i que donen recolzament al desenvolupament de les

aplicacions que estan just en la següent capa.

Page 21: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

21

Ampliant els conceptes anteriors:

9.1.1 Kernel de Linux o nucli de Linux:

En aquest cas es tracta de la base del Sistema Operatiu, aquest nucli ha estat

modificat per adaptar-se a dispositius mòbils. Es va escollir Linux com a base, basant-se en

la gran portabilitat, flexibilitat i seguretat que aquest sistema presentava.

Una de les conseqüències i a la vegada curiositat d’aquesta elecció, és que degut a

que Linux està sota una llicencia GPL (Licencia Pública General que es caracteritza per

que permet la còpia, distribució (comercial o no) i modificació del codi, sempre que

qualsevol modificació es continuï distribuint amb la mateixa llicència GPL), per tant,

Android també ho ha d’estar.

9.1.2 Capa de Llibreries o capa nativa:

En aquesta capa s’hi troben parts com:

la HAL (Hardware Abstraction Layer): component que permet la

independència del Hardware, aquest actua com una arquitectura genèrica

que representa a tots els possibles tipus de hardware existents en el mercat.

Tot i que actualment encara no existeixen estendards de construcció per al

hardware de dispositius mòbils, el Hal, és qui permet als fabricants ajustar

les seves preferències per a que Android pugui corre sobre els seus

dispositius. llibreries natives: són interfícies de codi obert que poden facilitar processos

com per exemple el renderitzat de gràfics en 3D (OpenGL), la gestió de

base de dades (SQLite), o d’altres com per exemple els serveis com la Wifi,

el posicionament, la telefonia, etc... Daemons (dimonis): aquests dimonis són porcions de codi que s’executen

per ajudar a serveis del sistema, per exemple, quan es requereix instalar o

actualitzar una aplicació s’executa un dimoni el qual administrarà tot el

procés, el mateix passa quan per exemple els programadors executen el

mode de depuració, des del pc s’executa el dimoni sobre el terminal per dur

a terme aquest procés. Alguns dels dimonis més coneguts o que hem comentat podrien ser: installd,

adbd (Android Debug Bridge Daemon)

les eines de consola: com molts altres sistemes operatius, Android també

permet l’ús de línies de comanda per a l’execució de processos de sistema o

per a la pròpia exploració del sistema.

els controladors en temps d’execució: si bé les aplicacions d’Android estan

escrites en llenguatge Java i són traduïdes a Bytecodes, aquestes no són

interpretades per la Maquina Virtual de Java. Android té la seva pròpia

màquina virtual interpretadora de bytecodes anomenada Dalvick.

Page 22: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

22

9.1.3 Base de funcionament de la màquina virtual Dalvik.

Dalvik, no interfereix en un procés normal de compilació, senzillament intervé al

final del procés, intervé com a receptor d’un arxiu executable fruit de la re-compilació dels

arxius .class de Java. És a dir, dins les fases de construcció d’una aplicació Java, trobem:

i. en primer lloc, la generació del codi font (arxius .java).

ii. posteriorment, aquest es traduït per el Java Compiler (javac) obtenint un fitxer

de tipus Bytecode (arxius .class),

iii. finalment la màquina virtual de Java interpreta en temps real aquest arxius per

executar l’aplicació.

A partir d’aquest punt, Dalvik, simplement espera que JavaC tradueixi el codi a

Bytecodes (punt ii) i quan aquests estan llestos són compilats per el compilador Dex. Es

per això que Dalvik, tradueix els arxius bytecodes de Java a un estil d’arxius bytecode

natius que seran convertits a un executable “.dex”.

El següent gràfic intenta reproduir un procés comparant ambdós sistemes, per un

cantó el procés típic de Java i per l’altre el d’Android.

Figura 6. Representació comparativa compilació estàndard Java i Dalvik.

Page 23: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

23

9.1.4 Framework per aplicacions:

Capa on s’hi poden trobar totes les llibreries Java necessàries per al desenvolupament

de les aplicacions, tot i que n’hi ha algunes de excloses. Els paquets més rellevants són els

Android.*, en els que s’allotgen totes les característiques necessàries per a construir de

qualsevol aplicació Android.

En aquesta capa, a més, també s’hi trobarà els controladors, serveis i proveïdors de

contingut que suportaran la comunicació de la nostra aplicació amb l’ecosistema

d’Android.

9.1.5 Capa d’aplicacions:

És la última instancia de funcionament d’Android, la qual es centra en l’execució,

comunicació i estabilitat de les aplicacions pre-instal·lades per el fabricant o bé les que es

van instal·lant o construint. A ella, hi poden accedir tots els usuaris d’Android degut al seu

alt nivell de comprensió i simplicitat.

Les aplicacions d’Android, són fitxers comprimits amb extensió .apk (Android

Application Package) dins les quals hi podem trobar:

Arxiu Android Manifest: aquest arxiu conté la definició de totes les

característiques principals que tindrà la nostra aplicació al executar-se en un

dispositiu mòbil, és a dir, contindrà els blocs, permisos, versions, versions

prèvies suportades, dimensions de les pantalla, etc...

Arxiu classes .dex: aquest és el fitxer compilat i preparat per executar-se en

la màquina virtual Dalvick. Carpeta Resources: carpeta on s’hi troben tots els arxius externs que

s’utilitzaran per a la construcció del nostre projecte, com per exemple: icones,

àudios, arxius plans de text, arxius xml de disseny, etc... Llibreries natives: llibreries referenciades a l’arxiu .apk de les quals depèn

l’aplicació. Carpeta META-INF: carpeta on s’emmagatzemen arxius que corresponen a

les Firmes Digitals de la nostra aplicació, és a dir, les especificacions que

indiquen qui és el creador i propietari de l’aplicació, la ID del desenvolupador

per a poder ser reconegut i autenticat en el procés de comercialització de

Google.

Page 24: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

24

10 Marc referencial

Tot i que Android recomana el desenvolupament de les aplicacions utilitzant l’API

nativa mitjançant l’ús de comades en Java, existeixen moltes altres alternatives que

permeten programar en una variada diversitat de llenguatges (Java, HTML5, etc...) i

mètodes (Nadiu, hibrida, multi-plataforma) segons sigui l’objectiu de la programació, així

com els coneixements del programador.

Aquestes alternatives són els coneguts “Frameworks”:

D’origen anglès, la paraula Framework (marc de treballa) defineix, en termes

generals, un conjunt estandarditzat de conceptes, pràctiques i criteris per a enfocar un tipus

de problemàtica particular que serveix com a referència, i posteriorment poder afrontar i

resoldre nous problemes de caire similar.

“En el desenvolupament de software, un Framework o infraestructura digital, és una

estructura conceptual i tecnològica de suport definit, normalment es compon d’artefactes o

mòduls de software concrets, que poden servir de base per a la organització i

desenvolupament de software. Típicament, inclouen suport de programes de suport,

compiladors, biblioteques de codi, interfícies de programació (Api’s), llenguatges

interpretats, de entre altres eines, amb l’objectiu de facilitar el desenvolupament i unificar

els diferents components d’un projecte.”1

Una de les principals característica d’alguns Frameworks és la possibilitat de

treballar en múltiples plataformes, permetent la creació d’un codi font que podrà ser

executat en diferents sistemes operatius compatibles, és a dir, són Framworks que són

capaços de traduir un codi font, força estàndard a diferents sistemes operatius

simultàniament, com per exemple, Android, iOS, Windows Phone, etc...

A continuació es mostra un gràfic on es pot veure els frameworks de programació

més utilitzats, tot i que com es pot comprovar, una gran majoria prefereix desenvolupar de

forma nativa amb les pròpies eines proporcionada per Google:

1 Riehle, Dirk (2000), Framework Design: A Role Modeling Approach

Page 25: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

25

Figura 7. Ús dels diferents Frameworks els anys 2013 i 2012.

L’entorn oficial actual de treball d’Android està desenvolupat per Google i disposa

d’un lloc web on s’explica de forma força detallada i amb gran quantitat d’exemples, l’ús

del seu API, actualment el conegut Android Studio. Tot i això, encara que aquesta és

l’opció més estable, completa i recomanable, existeixen múltiples opcions que permeten

als desenvolupadors programar aplicacions utilitzant altres mètodes o llenguatges de

programació, com a alternativa al Java, proposada per Google.

Figura 8. Logotip Android Studio

A continuació es presenta una llista d’alguns, d’entre tants, Frameworks que

permeten el desenvolupament d’aplicacions per a dispositius amb Sistema Operatiu

Android.

Començant per els entorns natius, aplicable a Android Studio com a Eclipse, pels

motius ja exposats anteriorment, a continuació tractarem el MIT App Inventor, també és un

Framework de Google, i, tot i que no és un dels entorns més utilitzats, és un dels més

curiosos degudes les seves característiques, Posteriorment, serà el torn del PhoneGap, que

tal com ja indicaven en el gràfic anterior (Figura 7) l’utilitza aproximadament un 12% dels

desenvolupadors i finalment tractarem el JQuery amb un 24, 5% de la quota de

programadors.

Page 26: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

26

Figura 9. Logotip MIT APP Inventor

10.1 Entorns o Frameworks de programació.

10.1.1 Android Studio / API natiu d’Android:

Plataformes o marcs de treball de Google per al desenvolupament d’aplicacions per

aquest sistema operatiu. Ambdós es basen en llenguatge de programació “Java” més

algunes comandes pròpies que permeten accedir a les funcionalitats de telèfon permetent

executar diferents accions i esdeveniments.

Des de finals del 2014 existeix el paquet per a desenvolupadors Android Studio, que

agrupa totes les aplicacions necessàries per a la creació d’aplicacions, tot i que per a equips

que utilitzen Windows 7 o posterior i que substitueix el paquet d’Eclipse. En cas d’utilitzar

Windows XP cal fer la instal·lació per parts, instal·lant cadascuna de les aplicacions (SDK,

IDE, etc...) individualment.

Paquet Android Stuido que es el recomanat actualment per al desenvolupament,

incorpora:

Android Studio IDE.

Android SDK tools.

Android 5.0 (Lollipop) Platform.

Android 5.0 emulator system image with Google API’s.

En cas de no poder utilitzar aquesta paquet, Android Studio, es recomana la

instal·lació dels paquets bàsics SDK, ADT per separat,i la configuració d’una plataforma

integral de desenvolupament (IDE), com per exemple Eclipse o NetBeans.

Avantatges:

i. És gratuït

ii. Representa l’alternativa de desenvolupament amb més funcionalitats per

accedir als accessoris i al hardware del dispositiu, com poden ser: càmera,

GPS, acceleròmetre, etc...

iii. Actualment compta amb un paquet complet amb totes les eines necessàries

per al desenvolupament de fàcil instal·lació si es compleixen els

requeriments.

iv. És l’alternativa que compta amb major ajuda, documentació i suport per al

desenvolupament de les aplicacions, ja sigui oferta per el propi fabricant,

com per fòrums o usuaris.

Inconvenients:

v. Només permet el desenvolupament sobre el Sistema Operatiu d’Android, no

en permet d’altres com iOS, Windows Phone, etc...

vi. Calen coneixements de Java.

10.1.2 MIT App Inventor (Google App Inventor)

És una plataforma de Google Labs per a

crear aplicacions per Android d’una forma molt

visual a partir d’unes eines força bàsiques, en les

que l’usuari pot entrellaçar un sèrie de blocs al

estil trencaclosques (llenguatge de programació)

per a crear les aplicacions, sense la necessitat

Page 27: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

27

d’escriure gens de codi.

App Inventor proporciona un ampli accés als components i funcions natives del

sistema, entre les que destaquen, l’accés al GPS, al acceleròmetre i a dades d’orientació, a

serveis web, com per exemple Twitter, entre d’altres.

Una de les particularitats d’aquest entorn, és que les aplicacions construïdes no estan

emmagatzemades al nostre disc dur, sinó que es troben a la xarxa, permetent accedir a elles

des de qualsevol punt amb accés a Internet.

És gratuït i es pot obtenir fàcilment de la web, és a dir, tal i com ja s’ha esmentat, la

programació es pot realitzar via web, només cal disposar d’un compte a Google i després

descarregar l’emulador per a fer les proves de funcionament.

Avantatges:

i. Gratuït, només cal tenir un compte a Google.

ii. Tot via web, no calen instal·lar programes ni interfícies, per tant, a part

d’una fàcil instal·lació també permet accedir des de qualsevol punt que

tingui connexió a Internet indiferentment del sistema operatiu o l’entorn de

treball

iii. Només cal instal·lar el simulador / emulador /connector per tal de dur a

terme les proves de les aplicacions, directament amb l’emulador o via USB

amb un terminal físic.

iv. Fàcil programació, que és divideix en dos apartats:

a. El dissenyador de pantalles

b. El dissenyador de blocs

Inconvenients:

i. Les aplicacions poden estar limitades una mica per la pròpia simplicitat del

llenguatge.

Enllaç: http://appinventor.mit.edu/explore/

10.1.3 PhoneGap (Apache Cordova PhoneGap):

És una plataforma que permet als programadors el desenvolupament d’aplicacions

per a múltiples plataformes /Sistemes Operatius, mitjançant eines genèriques tal com:

JavaScript, HTML5 i CSS3.

Les aplicacions resultants

no són realment aplicacions

natives al dispositiu, però

tampoc es tracta d’aplicacions

web.

A partir de la seva tercera

versió, PhonGap va incorporar

l’ús d’una interfície de comandes a traves d’una consola, una nova arquitectura de

complements descentralitzats i la possibilitat d’utilitzar un codi web unificat per a crear

múltiples projectes.

Permet APIs d’accés a elements com l’acceleròmetre, la càmera, els contactes, la

xarxa, l’emmagatzemen, les notificacions, etc...

Figura 10. Logotip PhoneGap

G

Page 28: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

28

Figura 11. Logotip JQuery

També permet el desenvolupament de les aplicacions a traves del navegador sense

necessitat d’utilitzar un simulador/emulador dedicat i permet funcions com SenchaTouch o

JQueryMobile, com per exemple els Widgets d’alt rendiment, barres d’eines, formularis,

etc....

Avantatges:

i. Gratuït i de codi totalment obert.

ii. Gran compatibilitat amb els Sistemes Operatius majoritaris.

iii. Possibilitat d’accedir als elements de Hard mitjançant Javascript

iv. Utilització de llenguatges web molt comuns.

Inconvenients:

i. No crea Apps natives, sinó que requereix el motor de la plataforma web.

ii. No té un IDE propi.

iii. Tot i que permet l’accés als accessoris i a les característiques hard, aquest té

algunes limitacions.

iv. Requereix coneixements de llenguatges de programació HTML5, CSS i

JAvaScript.

Enllaç: http://phonegap.com/

Requeriments per al Desenvolupament:

i. Instal·lació d’un IDE extern. El més recomanat es Eclipse.

ii. Instal·lació del SDK de Android

iii. Instal·lació del ADT Plugin al IDE.

iv. Instal·lació de les llibreries Cordova als projectes.

v. Instal·lació del paquet JDK (Java Development Kit)

vi. De forma opcional, instal·lar l’emulador AVD Manager

10.1.4 jQuery

Es un framework basat en HTML5,

JavaScript i CSS que permet desenvolupar

aplicacions suportades en la majoria de

Sistemes operatius mòbils, implementant un

únic codi, ja que crea una App Híbrida o

WebApp.

JQuery és un software de codi obert. Al igual que altres biblioteques ofereix una

sèrie de funcionalitats pròpies basades en JavaScript, que simplifiquen molt el

desenvolupament i que aconsegueixen grans resultats en menys temps i espai.

La principal funcionalitat que destaca d’aquest Framework, és la que possibilita el

canviar el contingut d’una plana web, sense necessitat de recarregar-la, mitjançant la

manipulació de la estructura del DOM (Document Object Model, és un interfície que

proporciona conjunt estàndard d’objectes utilitzats per a representar documents HTML i

XML, un model estàndard de com aquest es poden combinar i una interfície estàndard per

accedir a ells i manipular-los) i amb peticions AJAX.

Page 29: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

29

Avantatges:

i. Gratuït i de codi lliure.

ii. És compatible amb múltiples plataformes.

iii. Compta amb algunes llibreries de disseny que permeten crear aplicacions

amb una estètica intuïtiva d’una manera senzilla i ràpida.

iv. Aplicacions construïdes utilitzant llenguatges web molt comuns.

Inconvenients:

i. La aplicació es desenvolupa utilitzant el motor de la plataforma web i no

objectes individuals propis de d’interfície d’usuari nativa.

ii. No compta amb el seu propi IDE.

iii. Requereix de les llibreries de PhoneGap per a poder accedir als accessoris o

al hardware del dispositiu mòbil.

iv. Calen coneixements de llenguatges de programació: HTML5, CSS y

JavaScript

Requeriments per a la seva utilització:

i. Instal·lació d’un IDE, per exemple Eclipse.

ii. Instal·lació del SDK de Android.

iii. Instal·lar el ADT Pluggin al IDE.

iv. Descarregar les llibreries JQuery Mobile o indicar en el procés de

desenvolupament, on es troben aquestes a traves de rutes web.

v. Instal·lar el JDK.

vi. Opcional: instal·lar l’AVD manager si es vol utilitzar algun emulador.

vii. Opcional: Descarregar les llibreries Cordova, per accedir als accessoris del

dispositiu

Enllaç: https://jquery.com/

10.1.5 Basic4android (B4A):

Producte comercial de Anywhere Software

amb una versió gratuïta, que té com a limitació que

no permet la carrega de llibreries i una versió de

pagament ampliada (Developer estàndard o

Enterprise) que té un cost aproximat de 35 €.

Dirigit al desenvolupament d’aplicacions

natives, el tipus de programació està enfocat a

desenvolupadors habituats a utilitzar Visual Basic, ja

que està inspirat en Microsoft Visual Basic 6 o

Microsoft Visual Studio.

Tot i ser de pagament, existeix una gran

comunitat de desenvolupadors força activa.

Avantatges:

i. Llenguatge de programació orientat a objectes, no requereix saber programar

en XML.

ii. Existeix una gran comunitat de programadors i fòrums on obtenir

documentació.

Figura 12. Logotip Basic 4

Android

Page 30: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

30

Inconvenients:

i. La versió gratuïta i limitada en actualitzacions només dura 30 dies, per tant,

per obtenir una versió estàndard o enterprise cal pagar llicencia.

Enllaç: http://www.b4x.com/b4a.html

10.1.6 HyperNext Android Creator

És un sistema dirigit a programadors que comencen, ja que els permet crear les seves

aplicacions sense necessitat de tenir cap coneixement ni Java ni el SDK d’Android.

Esta basat en la metodologia HyperCard, el qual gestiona el software construït com

una pila de targetes, en les que ,només una d’elles pot ser visible en un moment donat,

funcionament que encaixa perfectament amb el model d’aplicació mòbil, que només

disposen d’una finestra a la vegada.

El llenguatge de programació és l’anomenat HyperNext, que està relacionat

HyperCard (sistema hipermedia, és a dir sistema que es compon d’un conjunt de mètodes o

procediments per a escriure, dissenyar o compondre continguts que tinguin text, vídeo,

àudio, mapes o altres mitjans, i que a més, tingui la possibilitat d'interaccionar amb els

usuaris. ) i amb el llenguatge HyperTalk, llenguatge de programació d’alt nivell i similar a

l’Anglès, que a més disposa de moltes funcions específiques per a la creació aplicacions

Android.

Avantatges:

i. És gratuït.

ii. És multi plataforma

iii. Llenguatge de programació propi, però de senzill aprenentatge.

Enllaç: http://www.tigabyte.com/

10.1.7 Kivy

Kivy, és una llibreria Python (Llenguatge de

nivell alt) de codi obert especialitzada en el

desenvolupament d’aplicacions multitàctils amb un

interfície natural d’usuari (NUI, “natural user

interface” ), és a dir, desenvolupament d’aplicacions

que no fan servir dispositius d’entrada , com ratolins,

teclats, etc... sinó que utilitzen moviments gestuals,

en aquest cas dels dits, control per veu o control de

proximitat. És compatible amb una amplia gama de dispositius, i per tant, dona la

possibilitat de mantenir una mateixa aplicació corrent sobre nombrosos sistemes operatius.

Figura 13. Logotip HyperNext Studio

Figura 14. Logotip del Framework

Kivy

Page 31: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

31

Avantatges:

i. És gratuïta.

ii. És multi plataforma

iii. EL propi fabricant aporta gran nombre de docuemntació.

Inconvenients:

i. Requereix coneixements de Python.

Enllaç : http://kivy.org/

10.1.8 Qt para Android

Plataforma originàriament creada per Nokia, i actualment de

l’empresa Digia. Qt és una infraestructura multi plataforma per

aplicacions amb o sense interfície gràfica, o eines per a línies de

comandes i consoles per a servidors, que pot abraçar des d’Android,

passant per Linux, iOS, Sailfish OS (https://sailfishos.org/) i Windows.

El desenvolupament d’aquestes aplicacions es fa en C++

estàndard i en Java.

Qt requereix el recolzament d’Android l’NDK i JDK, ja que ell

ja compta amb un potent IDE i un entorn visual.

Avantatges:

i. És gratuït.

ii. És multi plataforma

iii. Té una gran comunitat online de desenvolupadors

Inconvenients:

i. Instal·lació complexa, ja que requereix paquets externs: Andoird NDK,

Android SDK, Apache Ant v1.8 i Java SE Development Kit.

Enllaç: http://www.qt.io/

10.1.9 RFO Basic!

RFO Basic (un dialecte del Basic Dartmouth) és un intèrpret

lliure en el dispositiu, és a dir, que permet escriure i executar

aplicacions directament sobre el propi dispositiu. Aquesta interfície

es caracteritza perquè es capaç de proporcionar accés al hardware,

com per exemple: a la majoria de sensors, al so, gràfics, multi tàctil,

sistema de fitxers, grbació, etc... a més a nivell de elements de

software permet: SQLite, network sockets, FTP, HTTP, Bluetooth,

HTML, CGUI, encriptació, SMS, telèfon, correu, text a veu,

reconeixement de veu, GPS, funcions matemàtiques, funcions de

cadenes de caràcters, llistes i altres utilitats essencials.

És un projecte de codi obert i és també, una plataforma activa i que disposa d’una

gran comunitat de desenvolupadors actius.

Existeixen dues formes de poder executar les aplicacions desenvolupades:

Figura 15. Logotip del

Framework QT

Figura 16. Logotip

RFO Basic!

Page 32: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

32

1. Un procés que crea la icona a la pantalla d’inici del dispositiu, i que com a

conseqüència requereix que RFO Basic estigui instal·lat.

2. O, un procés que com a resultat produeix fitxers .apk independents,

perfectament publicables als mercats d’aplicacions.

Enllaç: http://laughton.com/basic/

10.1.10 RubyMotion

Tot i que inicialment era una plataforma dirigida al

desenvolupament d’aplicacions per corre sota el Sistema

Operatiu iOS, l’aparició all mercat de Swift (llenguatge de

programació d’Apple) i altres moviments de la industria, van

provocar que aquesta plataforma, amb un extens nombre de

seguidors, amplies per poder suportar aplicacions sota

Android, cosa que el va fer més atractiu.

És una eina per a desenvolupar aplicacions natives en

Ruby. Ruby és un llenguatge de programació interpretat,

reflexiu i orientat a objectes.

Les aplicacions RubyMotion poden interactuar amb el

joc complet de Java Android APIs i altres les llibreries de Java de tercers que ja estan

compilades estàticament al codi màquina.

Compta amb una bona recopilació de documentació facilitada per el propi fabricant,

així com un gran xarxa de desenvolupadors que aporten més documentació i part de la seva

experiencia.

Enllaç: http://www.rubymotion.com/

10.2 Altres Frameworks més minoritaris:

10.2.1 Rebol 3Saphir

Rebol, es destaca de la resta de Frameworks, bàsicament, perquè té la capacitat de

reduir dràsticament les línies de codi i augmentar la productivitat com cap altre.

És un framework ideal per a desenvolupadors de nivell mig, així com per a

desenvolupar les versions Lite i aplicacions de negoci amb interfícies gràfiques senzilles.

Es basa en una interpretació del codi obert Rebol 3. Tota la funcionalitat de R3,

incloent la interfície gràfica, gràfics, accés a la xarxa, accés a fitxers, anàlisi sintàctic i

altres de les principals funcions portables per Android, Windows, Mac i Linux sense

necessitat de fer modificacions al codi font.

Aquesta plataforma utilitza plantilles “concise dialect” (SDL: Simple DirectMedia

Layer2 ) per a la construcció de interfícies gràfiques d’usuari i per a realitzar operacions

comuns, utilitzant una sintaxis breu i llegible.

2 SDL: llibreria multiplataforma de desenvolupament dissenyada per a proporcionar

accés a baix nivell per a àudio, teclats, ratolí, joystick i gràfics de hardware mitjançant

OpenGL y Dierct3D. La programació es fa bàsicament utilitzant C++, també es poden

utilitzar altres llenguatges com Python, etc..

Figura 17. Logotip

RubyMotion

Page 33: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

33

10.2.2 Projecte Simple:

L’objectiu de Simple és ser un llenguatge senzill d’aprendre per al desenvolupament

en la plataforma Android. Es tracta d’un dialecte de BASIC que serveix tant per a

programadors professionals com per afeccionats que permetent escriure ràpidament

aplicacions que utilitzen els components d’execució d’Android.

Similar al Visual Basic 6 de Microsoft, els programes Simple consisteixen en

definicions de formularis (que contenen components) i codi (que conté la lògica de

programa), la interacció dels quals es realitza mitjançant el llançament de esdeveniments

lligats als components. La lògica del programa consisteix en gestors d’esdeveniments, que

executen el codi que tenen vinculat segons el esdeveniment.

Tot i la seva aparent senzilles, aquest projecte no té gaire activitat i la última

actualització del codi es va dur a terme al 2009.

10.2.3 WinDev Mobile

Es tracta d’un entorn de desenvolupament propietari, creat per PC Soft.

Com a llenguatge de programació utilitza Wlanguage, .Net, Java, etc...

És una eina concebuda per a realitzar el desenvolupament ràpid d’aplicacions,

principalment, orientades a dades.

El llenguatge de programació que utilitza, és el W-language, inclòs en el paquet i que

es caracteritza per ser un llenguatge de 4arta generació, simplificat i flexible que permet

obtenir resultats ràpidament.

WinDev, posseeix un IDE propi que permet crear fàcilment interfícies d’usuaris

gràfiques mitjançant drag/drop (arrastrar i deixar). També permet definir interactivament

diferents aspectes sobre l’entrada de dades: mida de la màscara, format automàtic, entrada

obligatòria, etc...

Tot i que inicialment va ser creat per a ser utilitzat sota Windows, WinDev permet

generar aplicacions en Java, així com aplicacions estàndards o aplicacions per a la

plataforma .NET o aplicacions Linux natives. Per al desenvolupament d’aplicacions mòbils

s’utilitza WinDevMobile, que utilitza els mateix llenguatge de programació i els mateixos

conceptes tant per a la generació d’aplicacions o llocs web.

Una tendència d’aquest llenguatge, sobretot a partir de la seva versió número 11, és

la seva especialització integrant funcionalitats dirigides a la domòtica.

10.2.4 GameSalad

Plataforma especialitzada per a la creació de jocs per a

programadors poc experimentats o principiants. És una

plataforma que permet crear les aplicacions utilitzant una

interfície d’arrastrar i deixar conjuntament amb editors

visuals.

Per a crear el jocs, utilitza sistemes lògics basats en el

comportament. Es utilitzada per als dissenyadors gràfics i

programadors per a crea jocs i mitjans interactius per a Figura 18. Logotip

GameSalad

Page 34: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

34

diferents dispositius i plataformes (iOS, Android, web a través deHTML5, Kindle o Nook).

10.2.5 Corona SDK

Plataforma dirigida al desenvolupament

d’aplicacions executables sota iOS, Android, amazon

Kindle Fire i Burnes&Noble Nook. El tipus

d’aplicacions a la que va destinada aquesta plataforma

es principalment el desenvolupament de jocs, tot i que

també es pot usar en altres àmbist.

Es tracta en una plataforma basada en C++, però

alhora de desenvolupar es recolza en altres llenguatges,

com Lua3 (llenguatge de programació imperatiu,

estructurat i interpretat). O també amb els funcionament

“drag and drop”, que si es complementen amb diferents

pluggins, es converteix en un entorn molt atractiu per al

desenvolupament de jocs, com per exemple:

i. Kwik: per utilitzar els elements de Photoshop.

ii. Spriteloq: permet la inclusió de arxius Shockwave i l’animació.

iii. Pluggin Caramelo: per a l’obtenció de grans efectes (fum, foc explosions,

etc...)

En altres àmbits, també permet mesclar tecnologia HTML5 amb OpenGL, o utilitzar

funcionalitats empresarials com accedir a bases de dades locasl SQLite, llibreries JSON o

connectivitat asíncrona HTTP per a guarda dades al cloud.

També permet l’accés a algunes de les característ ques que porten actualment els

telèfons intel·ligents, com el GPS, la càmera, les fotos o els giroscopi.

Cal remarcar, que no es gratuït o de codi obert. Compta d’una versió de proba

gratuïta i limitada en el temps per a poder realitzar algunes proves. Per altra banda, si es

desitja distribuir l’aplicació als diferents mercats, és necessari obtenir una llicencia per uns

200€.

10.2.6 Altres entorns per al desenvolupament de jocs:

i. Unity 3D (Multiplataforma) ii. LimeJS

10.2.7 Entorns HTML5 i CSS:

i. Ionic: dedicada a la construcció de aplicacions híbrides. Tot i que treballa

sota PhoneGap o Cordova, ell té el seu propi instal·lador.

ii. Sencha Touch: permet als usuaris el desenvolupament d’aplicacions mòbils

natives per a iPhone, Android i Blacberry (tàctils)

iii. Sculpt: per a dispositius de pantalla petita.

3 Lua va ser creat al 1993 per Roberto Ierusalimschy, Luiz Henrique de Figueiredo y Waldemar Celes basat en C i Perl.

Figura 19. Logotip Corona

SDK

Page 35: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

35

iv. Spine Mobile: és un Framework dirigit a la construcció d’aplicacions web

per a mòbils.

v. SideTap: Framework senzill i lleuger, també dirigit a la creació d’aplicacions

web per a mòbils. Aquets, bàsicament es centra en proporcionar una

navegació flexible i similar a la que ja coneixem com des de la creació de

l’aplicació de Facebook.

vi. Moobile: és un macro que es centra en oferir una experiència molt similar a

iOS.

vii. Zoey: creat per a la construcció d’aplicacions mòbils natives. Construït sobre

Zepto.js i amb opció multi plataforma.

viii. IIU: biblioteca de Java i CSS, per al desenvolupament de aplicacions web

amb tecnologia de pantalla tàctil, compatible amb la majoria de telèfons

intel·ligents i tauletes.

ix. Guiño: com en altres plataformes, està destinada bàsicament al

desenvolupament de aplicacions web i ofereix funcionalitats bàsiques com

poden ser la gestió d’events per contacte, manipulació d’objectes DOM, etc...

x. DHTMLX Touch: biblioteca per a la creació de aplicacions web.

xi. RestKit: framework de codi obert, que ha diferencia dels altres permet

interactuar amb els serveis web tipus RESTfull (Serveis que implementen

l’arquitectura REST).

xii. Joshfire: per a la creació d’aplicacions web que es poden executar en

multiplesplataformes com poden ser, ordenadors de sobretaula, telèfons

inteligents, televisors intel·ligents i aparells conectats a la xarxa.

xiii. ChocolateChip UI: ChocolateChip-UI es un marco per al desenvolupament

d’aplicacions web mòbil que utilitza HTML5, WAML, CSS y JavaScript. Es

basa en ChocolateChip Biblioteca JavaScript.

xiv. Zepto.js: biblioteca javascript minimalista per a navegadors moderns amb

una API compatible amb JQuery. També es multiplataforma.

xv. JO: Framework multiplataforma o multi sistema operatiu, vàlid per a crear

aplicacions per a iOS, Android, WebOS, BlackBerry, Chrome OS i qualsevol

altre cosa amb Widgets HMTL5. És de codi obert compatible amb PhoneGap

xvi. Enyo: funciona en tots els navegadores i disposa d’una amplia gama de

plataformes creuades UI widgets, com poden ser Widgets d’interfície

d’usuari, elements de formularis, barres de desplaçament, menús, informació

sobre eines i altres.

Page 36: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

36

10.3 Quadre comparatiu entre Frameworks.

FRA

MEW

OR

K

Gra

tuït

o c

od

i Ob

ert

Llic

enci

a d

e p

agam

ent

S.O

. An

dro

id

Mu

lti p

lata

form

a (A

nd

roid

, iO

S, W

ind

ow

s P

ho

ne.

..)

Ap

licac

ion

s N

ativ

es

Ap

licac

ion

s H

íbri

des

Ap

licac

ion

s w

eb

Jocs

Acc

és a

to

t el

Har

dw

are

Fàci

l in

stal

·laci

ó i

pre

par

ació

de

l’en

torn

Gra

n d

ocu

men

taci

ó F

abri

can

t

Gra

n c

om

un

itat

o x

arxa

d’u

suar

is i

des

en

volu

pad

ors

Java

HTM

L 5

, CSS

Llen

guat

ge d

e d

ese

nvo

lup

amen

t p

rop

i

Llen

guat

ge d

irig

it a

ob

ject

es

Alt

res

llen

guat

ges

(Pyt

ho

n, C

++, B

asic

, etc

..)

Ento

rn P

rop

i

Req

uer

eixe

n S

DK

, ND

K..

. en

ton

r n

atiu

...

Android Studio X X X X X X X X X X

Eclipse X X X X X X X X X X X

MIT App Inventor X X X X X X X

PhoneGap X X X X X X X

JQuery X X X X X X X

Basic 4 Android X X X X X X

HyperNext Studio X X X X X X

Kivy X X X X X X X

Qt X X X X X X

RFO Basic X X X X X

RubyMottion X X X X X X

Rebolt 3 Saphir X X X X

Project Simple X X X

WinDev Mobile X X X

Game Salad X X X X X X

Corona SDK X X X X X X X X

Page 37: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

37

10.4 Conclusions

Estudiat el sistema operatiu per a dispositius mòbils Android, les seves principals

característiques que poden oferir als usuaris, quines són les seves capacitats i limitacions, i

les diferents opcions que es poden utilitzar per a programar apliaccions en aquest sistema

operatiu, podem deduir que:

i. Android és un dels sistemes operatius amb el major número d’usuaris actius,

fet que garanteix un ampli mercat per als desenvolupadors d’aplicacions.

ii. Android compta amb API potent i en constant evolució, que permet crear

aplicacions utilitzant llenguatges coneguts i extensos. A més, aquest API,

ofereix múltiples opcions i comandes que permeten accedir, manipular i

obtenir dades dels accessoris del dispositiu.

iii. Android disposa al seu voltant de un extens nombre de Frameworks que

permeten desenvolupar aplicacions coma a alternativa al desenvolupament

natiu. Aquest marcs de treball solen utilitzar, de vegades, altres lògiques i

llenguatges de programació però aconseguint els mateixos resultats o els

resultats desitjats. Molts d’aquests frameworks, són multiplataforma,

característica que els fa molt atractius alhora de voler estalviar temps de

desenvolupament, però de vegades, aquests frameworks presenten limitacions

alhora d’accedir a algunes característiques que ens obligaran a tornar al

desenvolupament natiu.

iv. Els frameworks multiplataforma tenen la característica de permetre accés

únicament a les eines comuns a totes les plataformes, en alguna cas es permet

crear pluggins per accedir a elements que no es troben en aquell API, però

aquest pluggins poden eliminar la compatibilitat entre plataformes.

v. Segons els estudi realitzat per Eclipse els anys 2012 i 2013, la majoria de

desenvolupadors utilitzen llibreries natives per a desenvolupar les

aplicacions, tot i que existeix una gran part que prefereix utilitzar frameworks

alterns, generalment basats en HTML + CSS + Java, un clar exemple és

JQuery Mobile, que es la opció majoritària alternativa a la programació

nativa seguida de PhoneGap, amb un tant per cent menor de usuaris.

vi. Existeixen frameworks que utilitzan llenguatges de programació poc comuns

o minoritaris, fet que pot ser dissuasori alhora de escollir-los com a eines de

treball. Per altra banda, es ben conegut, que Java és el segon llenguatge de

programació més utilitzat, fet que podria afavorí la elecció de desenvolupar

aplicacions de forma nativa. App Inventor, per la seva part, proposa la

programació d’aplicacions mitjançant l´’us de blocs visuals, característica que

resulta interessant per a aquelles persones que no desitgen desenvolupar un

codi o no tenen coneixements dels llenguatges de programació.

vii. Cada Framework ofereix facilitats per que el desenvolupador pugui aprendre

a utilitzar-lo, ja sigui perquè el propi fabricant ofereix docuemntació, o

perqueè existeix una gran comunitat al voltant que comparteix les seves

experiencies. La documentació oficial d’Android, és sense dubte la que

compta amb el major suport per part del fabricant com de la xarxa d’usuaris

que conformen una comunitat al voltant d’aquest framework.

viii. L’IDE Eclipse representa l’entorn de desenvolupament integral més

recomanat per aquells frameworks que no compten amb entorn propi i en

necessiten un d’extern.

Page 38: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

38

ix. La gran majoria de frameworks son completament gratuïts. Alguns, però,

com Corona SDK, permetent desenvolupar inicialment aplicacions sense cap

cost, però per a genera l’arxiu .apk, és necessari obtenir una subscripció. N’hi

d’altres que són gratuïts però cal pagar per rebre serveis de suport, segons la

versió amb la que es treballi, com per exemple el Sencha Touch.

x. En els casos en que l’aplicació requereixi de l’ús d’elements i eines del

dispositiu com poden ser: la càmera, el reproductor/grabador de só, els

sensors, etc.. sempre és més recomanable utilitzar la programació nativa, ja

que aquesta ofereix la forma més estable, eficaç i diversa d’accedir als

recursos i adaptar-los més facilment a la nostra aplicació, tal i com hem dut a

terme en el desenvolupament. Amb PhoneGap, no sempre es té accés a tots el

elements del dispositiu, per lo que cal utilitzar els coneguta pluggins, que de

vegades poden resultar complicats d’implementar. AppInventor, per la seva

part, només ofereix una fracció de otes les funcionalitats que es troben a les

llibreries natives, fet que el limita notablement. JQuery Mobile,compta amb

un API molt limitat, però per el contrari disposa de múltiples llibreries que li

donen moltes funcionalitats i disseny, això sí, per accedir a les eines i

funcions pròpies del sistema requereix la llibreria de PhoneGap.

xi. Per a escollir l’entorn de treball idoni cal tenir en compte, el temps del que es

disposa per a desenvolupar una aplicació, el tipus i objectiu de l’apliació i els

coneixements previs del programador.

Vistes les característiques d’un gran nombre dels Frameworks disponibles, tant els

avantatges i inconvenients tècnics dels més significatius per volum d’ús, les possibilitats

d’accés a les característiques hardware dels dispositius, les eines i recursos a nivell

formatiu, com poden ser el gran nombre documentació, exemples, tutorials que ofereix el

propi desenvolupador del Framework o la gran xarxa social de desevolupadors que hi ha al

voltant, es pot arribar a la conclusió que l’entorn de treball més recomanat, tot i tenir un

handicap important, que resideix en el nivell de coneixements previs del programador, és

l’Entorn Natiu, ja sigui utilitzant el paquet Android Studio en equips actualitzats (pc’s amb

Windows 7 o superior) o bé la versió Eclipse amb equips de desenvolupament més antics

(Windows XP).

Com he indicat significativament, aquest entorn requereix d’uns coneixements de

programació previs, tot i això, l’aprenentatge pot ser força ràpid degut a l’ajuda existen i de

tota la docuemntació disponibles a la xarxa, ja siguin ofertes per el propi desenvolupador

del Framework o per tota la xara de desevolupadors que hi podem trobar al voltant, que

aporten la seva experiència en l’ús d’aquest entorn.

Un cop assolits certs coneixements i amb més experiència, pot aparèixer l’oportunitat

d’utilitzar altres Frameworks més especialitzats, ja sigui per què em assolit un nivell alt de

programació i coneixement sobre l’entorn Android, perquè l’aplicació que es vol

desenvolupar ens requereix una sèrie d’eines més específiques que altres entorns no natius

en faciliten o perquè es vol que l’aplicació sigui compatible amb altres sistemes Operatius.

Page 39: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

39

11 Framework Natiu

11.1 Requisits per a la programació amb Api nativa: Abans de començar, però, a utilitzar aquesta plataforma cal preparar els pc’s amb una

sèrie de programes i configuracions, que permetran usar les funcionalitats pròpies del

sistema Operatiu.

Aquest entorn de treball es pot crear mitjançant un paquet que aglutina quasi totes les

eines necessàries, com és, l’Andorid Studio, o instal·lant per separat i un a un tots els

components necessaris.

Aquests programes i eines són:

11.1.1 SDK:

L’SDK (Software Development Kit) d’Android, és l’encarregat de proporcionar les

biblioteques API i les eines necessàries per a crear, provar i depurar aplicacions per a

Android. Conté una llista amb totes les versions del sistema operatiu que han estat

desenvolupades, així com les seves utilitats i funcionalitats específiques de cadascuna de

les versions. Així doncs, sempre es possible obtenir versions més antigues del sistema

operatiu i poder-ne fer ús i proves.

A més, l’SDK, és l’encarregat de compilar l’aplicació amb tots els recursos i fitxers

en un únic arxiu executable amb extensió “.apk”, aquest arxiu, possibilitarà la instal·lació

de l’aplicació en qualsevol terminal que utilitzi un Sistema Operatiu Android compatible.

Figura 20. SDK Maneger, on es llisten el paquets i llibreries disponibles en el nostre SDK.

Page 40: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

40

11.1.2 IDE (Integrated Development Environment):

L’Entorn de Desenvolupament Integrat, és l’encarregada de proporcionar serveis

integrals als programadors per facilitar el seu desenvolupament, per exemple, un dels més

coneguts històricament seria l’“Eclipse”, tot i que actualment ja existeix una nova versió

pròpia, que és l’Android Studio, que aglutina tots els elements necessaris que comentem en

aquest punt en un únic paquet d’instal·lació.

Un IDE, normalment consta de:

i. Editor de codi font.

ii. Un constructor automatitzat d’eines.

iii. Depurador.

Tot i que molts Frameworks d’Android compten amb el seu propi IDE, també

recomana la instal·lació del complement ADT (Android Development Tools Pluggin) que

amplia les capacitats entre l’SDK i l’IDE instal·lats, com per exemple:

i. la ràpida configuració de nous projectes.

ii. la creació de la interfície d’usuari de la aplicació.

iii. el mode d’agregar paquets basats en API’s de Android Framework.

iv. la depuració de les aplicacions utilitzant l’SDK.

v. L’exportació d’arxius .apk signats amb la finalitat de distribuir-los de forma

més massiva.

Figura 21. Captura de l’aspecte que ofereix l’IDE d’Android Studio.

Page 41: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

41

11.1.3 JDK (Java Development Kit)

Com ja és ben conegut, és un software desenvolupat per Oracle, que té com objectiu

dotar de eines de desenvolupament per a la creació de programes en Java.

En el nostre entorn Android, s’utilitza bàsicament per crear i depurar aplicacions des

del terminal.

Aquest software no ve incorporat en el paquet Android Studio i cal instal·lar-lo

individualment.

11.1.4 NDK (Native Development Kit)

Són un conjunt d’eines que permeten als desenvolupadors de codi, implementar parts

d’una aplicació utilitzant codi natiu d’altres llenguatges de programació, com per exemple:

C, C++, Basic, etc... En alguns certs casos, aquest paquet ens pot ajudar força, tot i que, en

la majoria d’ocasions no és un paquet d’obligatòria instal·lació.

11.2 Instal·lació del entorn natiu:

11.2.1 Instal·lació del paquet complet d’Android Studio:

Figura 22. Enllaç descàrrega Andoird Studio a la web developers.android.com

Requeriments Windows:

Microsoft® Windows® 8/7/Vista/2003 (32 or 64-bit)

2 GB RAM mínim, 4 GB RAM recomanat

Espai lliure en disc dur: 400 MB

Mínim 1 GB per a l’Android SDK, l’emulador de sistemes d’imatge, i la

caché

Resolució mínima de pantalla: 1280 x 800

Indispensable la instal·lació del Java Development Kit (JDK) 7

Opcional, per a l’acceleració de l’emulador: Intel® processor amb suport per

a Intel® VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit

functionality.

Page 42: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

42

Enllaç: http://developer.android.com/intl/es/sdk/index.html#win-bundle

Paquet de 820 MB

11.2.2 Descàrrega i instal·lació de Java:

Com a requeriment indispensable, molt remarcada per el fabricant, cal tenir

instal·lada una versió de JDK (Java Development Kit) la qual es pot descarregar fàcilment

des de la web oficial d’Oracle o des de la pròpia web d’Andoird Studio.

Tot i haver disponible la versió 8, el propi fabricant recomana utilitzar seguir

utilitzant la versió 7, dada que podem trobar on s’informa dels requeriments necessaris per

a la instal·lació (https://developer.android.com/intl/es/sdk/index.html#Requirements).

Detall força important alhora d’escollir la versió de Java, cal tenir en compte en

escollir la versió correcta per al nostre sistema operatiu (32 o 64 bits, Win...).

Figura 23. Captura en el procés d’instal·lació del paquet Java

La instal·lació no té cap dificultat, es tracta de un instal·lador estàndard de Windows,

només cal anar llegint les indicacions que ofereix i anar Acceptant, normalment les opcions

per defecte.

11.2.3 Descarregar i instal·lar el paquet Android Studio

Des de la web https://developer.android.com/intl/es/sdk/index.html, podem accedir a

l’instal·lador de la última versió del paquet Android Studio corresponen per al nostre

sistema operatiu.

Page 43: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

43

Per a la instal·lació executem l’instal·lador descarregat i seguim les notificacions que

l’assistent ens va mostrant, Acceptant-les normalment les mostrades per defecte. Durant el

procés s’instal·larà el SDK d’Android, els components addicionals per al desenvolupament

sobre Android 5.0, l’emulador d’un dispositiu virtual (AVD) i per suposat tot l’entorn de

desenvolupament d’Android Studio (IDE).

Figura 24. Pantalla inicial del procés de instal·lació d’Andoird Studio.

Al llarg d’aquest procés també s’instal·larà i configurarà, sempre que el pc sigui

compatible, el paquet anomenat Intel Hardware Accelerated Execution Manager o

“HAXM”, que s’encarrega de millorar el rendiment del emulador i que cal activar

previament mitjançant l’accés a la Bios del sistema, on existeix com a funció avançada del

Chipset.

Un altra opció interessant que es pot decidir, és la quantitat de memòria que volem

reservar per al funcionament de l’emulador.

Figura25. Configuració de la memòria destinada a l’emulador en el procés d’instal·lació.

Page 44: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

44

Decidides totes les opcions de configuració inicials, el procés d’instal·lació s’inicia i

aquest pot tarda uns quants minuts, depenen de l’equip que es disposi.

Figura 24. Instal·lació en curs Andorid Studio.

Un cop finalitzada la

instal·lació s’iniciarà automàticament

Android Studio i ens donarà l’opció

de reutilitzar la configuració d’alguna

versió anterior, en cas d’haver-ne

tingut alguna, sinó es pot escollir

l’opció de començar sense la

configuració de ninguna versió prèvia

(opció: “I do not have a previous

version of Android Studio or I do not

want to import my settings”.

En la primera execució, l’assistent s’encarregarà automàticament de descarregar i

instal·lar les últimes actualitzacions d’alguns dels components del SDK.

Figura 25. Opció d’importar a Android Studio

els paràmetres de configuració de versions

anteriors.

Page 45: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

45

Figura 26. Actualització automàtica dels components recent instal·lats d’Android Studio

L’actualització dels components esmentats en el punt anterior, també es pot dur a

terme, un cop finalitzada la instal·lació, amb l’opció d’actualitzar mitjançant l’SDK

Maneger que podem trobar dins del menú “Configure”.

Figura 27. Pantalla de Benvinguda/ Inicial d’Android Studio.

Un cop finalitzada l’actualització, Android Studio es reiniciarà i tornarem al punt on

estàvem, és a dir, a la pantalla de Benvinguda de la figura anterior.

Page 46: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

46

11.2.4 Configuració inicial de l’entorn Android Studio

Un altre factor recomanable un cop finalitzada la instal·lació, és comprovar si les

rutes tant del SDK com la del JAVA siguin les correctes. Per fer-ho,existeix l’opció

“Configure” de la pantalla de benvinguda, que ens donarà pas a la pantalla de “Project

Defaults” i després a la de “Project Structure”, on mitjançant la finestra d’opcions

revisarem l’apartat “SDK Location”, on podem introduir o editar les rutes dels mòduls

indicats.

Figura 28. Pantalla de configuració de la ubicació dels directoris SDK i Java a Andoird

Studio

Un cop feta la comprovació, acceptem els canvis mitjançant el botó OK i tornem al

menú de benvinguda.

11.2.5 Instal·lar/actualitzar els components del SDK de Android.

En aquest punt se’ns permet actualitzar els components bàsics del SDK o instal·lar

altres components addicionals que ens poden ser útils o necessaris per els desenvolupament

de la nostra aplicació. Aquest menú sempre és accessible i en qualsevol moment si pot

accedir per a poder complementar la nostra instal·lació inicial.

En cas de voler fer alguna de les accions esmentades, només cal accedir al menú

“Configure”, apartat “Configure SDK”, dins aquesta pantalla, anirem a l’opció “SDK

Manager”, eina que ens permet instal·lar, desinstal·lar o actualitzar qualsevol dels

components disponibles.

El propi fabricant recomana que com a mínim caldria instal·lar/actualitzar els

següents components:

i. Android SDK Tools: eines que donen accés a moltes de les característiques

per al desenvolupament, aixó com comandaments i altres facilitats per al

disseny de la interfície d’usuari.

ii. Android SDK Platform-tools

Page 47: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

47

iii. Android SDK Buid-tools: component indispensable per a la construcció del

codi, per defecte, el SDK sempre utilitza la última versió descarregada i

instal·lada.

iv. Versions recents de la plataforma Andorid: força rellevant, degut a que

conté els components i llibreries necessàries per al desenvolupament sobre

les versions concretes d’Android, si volem que la nostra aplicació sigui

funcional en diferents versions, caldrà instal·lar totes les versions en les que

volguem que sigui compatible

v. Android Support Repository (opcional)

vi. Google Play Services (opcional)

vii. Google Repository (opcional)

Figura 29. Captura del SDK Maneger.

Un cop escollits els components, cliquem sobre el botó “Install Packages...”,

acceptem els llicenciaments corresponents i esperem que finalitzi el procés de descàrrega i

instal·lació.

Page 48: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

48

En el cas de voler utilitzar l’IDE Eclipse, tot i que actualment Google ha deixat de

desenvolupar el pluggin per a Android, s’hauria de fer una instal·lació per parts seguint els

següents passos:

11.3 Android per parts o en entorn Eclipse.

11.3.1 Descàrrega i instal·lació de Java.

Per a realitzar la instal·lació i al igual que en el procés anterior,és imprescindible,

comprovar la versió del JDK (Java Development Kit) que tenim al pc i instal·lar la última

versió disponible que es pot trobar a la web d’Oracle.

Cal recordar, que cal instal·lar la versió adequada al processador dels nostres equips,

comprovant si es necessita una versió de 32 bits o 64 bits.

Un cop escollida i descarregada la versió correcte, només cal executar l’instal·lador

descarregat i seguir les instruccions que indicades, normalment escollint les opcions

mostrades per defecte.

11.3.2 Descàrrega i instal·lació d’Eclipse.

Per a instal·lar aquest mòdul cal descarregar-lo a la web oficial https://eclipse.org. Es

recomana descarregar la última versió del paquet anomenta “Eclipse IDE for Java

Developers” i la que correspongui al sistema on ha d’anar instal·lat, ja sigui de 32 o 64

bits, al igual que el Sistema Operatiu corresponent (Windows/Mac/Linux).

La instal·lació consisteix simplement en descomprimir el fitxer zip descarregat,

executar eclipse.exe i seguir les indicacions, com per exemple, indicar quina serà la carpeta

per emmagatzemar els projectes de les aplicacions, es pot deixar la que existeix per defecte

i marcar el checbox “Use this as the default“. És molt important saber quina es aquesta

ubicació, ja que si en algun moment es vol començar a fer servir Android Studio com a

eina de desenvolupament, existeix la possibilitat d’importar els projectes realitzats amb

Eclipse, tal i com s’indica al punt 11.1.2

Figura 30. Captura del procés d’instal·lació on s’ha d’indicar la ubicació dels projectes.

Page 49: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

49

11.3.3 Descarregar el SDK d’Android.

Aquest paquet es pot descarregar a la web oficial http://developer.android.com, a

l’apartat de “Desarrollar/Herramientas/Installing the Android SDK”, en aquesta secció

caldrà escollir l’opció “Stand Alone SDK Tools”, en cas contrari s’escollirà el paquet

corresponent a Android Studio.

El paquet descarregat, només inclou les eines bàsiques del SDK, a les que es poden

accedir mitjançant línea de comandes o a també inclou un pliggin per poder utilitzar l’IDE

favorit, que es vulgui, en el nostre cas usarem Eclipse.

En la instal·lació, només cal seguir les instruccions pertinents que se’ns mostra a

l’executar l’instal·lador descarregat.

11.3.4 Instal·lar els paquets addicionals del SDK.

Per defecte, el SDK, no inclou totes les eines necessàries per a començar a

desenvolupar, l’SDK separa eines plataformes i altres components en paquets que es poden

descarregar segons les nostres necessitats, l’obtenció d’aquest compoenents es pot

gestionar a traves del gestor SDK Manager.

Per començar a descarregar la resta de components no instal·lats que es necessiten,

executarem l’arxiu SDL Maneger.exe que es pot trobar al directori arrel de la instal·lació

del SDK. El primer cop que s’executa aquest gestor, ja existeixen una sèrie de paquets

preseleccionats, els quals es recomana descarregar, a més de seleccionar els que

considerem necessaris per als nostres projectes.

Aquest procés és l’homòleg del punt 11.1.4, en la instal·lació d’Android Studio.

Figura 31. SDK Maneger.

Page 50: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

50

Com es pot veure a la imatge anterior, a més de poder descarregar les eines com:

Android SDK Tools, o Android SDK Platform-tools, també es poden obtenir totes les

versions anteriors d’Android que considerem necessàries per a que la nostra aplicació

funcioni.

Aquest procés d’actualització pot ser força llarg tot depenent del nombre de paquets

a instal·lar.

Figura 32. Captura de la informació mostrada per l’SDK en el procés d’actualització.

11.3.5 Configuració d’un AVD (Android Virtual Device)

Alhora de provar i depurar les aplicacions creades, no és del tot necessari fer-ho

directament sobre un dispositiu físic, sinó que existeix la possibilitat d’utilitzar un

emulador o un dispositiu virtual (AVD).

Per això, és necessari accedir al AVD Maneger, i escollir l’opció Virtual Devices, en

aquesta secció es poden escollir tants dispositius com es necessitin, com per exemple, un

dispositiu per a cada versió d’Android que es vulgui utilitzar.

Figura 33. Vista de l’emulador AVD amb dos dispositius configurats.

Page 51: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

51

Per a configurar cada dispositiu, nomes cal indicar el seu nom descriptiu, la versió de

Sistema Operatiu Android que es vol i les característiques de hardware del dispositiu

virtual, com per exemple: resolució i mides de la pantalla, capacitat de la targeta SD, etc...

Figura34. Pantalla per a la configuració dels dispositius d’emulació al AVD.

11.3.6 Descarrega i instal·lació del Pluggin per Eclipse

Tot i que des del web del proveïdor, insisteixen en migrar cap a Android Studio, es

permet descarregar aquest pluggin per seguir treballant amb Eclipse, sempre i quan aquest

cumpleixi els següents requisits:

i. Tenir instal·lat Eclipse 3.7.2 (Indigo) o posterior. (Eclipse 3.6, ja no és

compatible amb la última versió disponible de l’ADT)

ii. Eclipse JDT complet

iii. JDK 6, instal·lant únicament el JRE no és suficient.

Un cop es compleixen els requeriments indicats, caldrà agregar el pluggin a Eclipse,

per a dur a terme aquest procés seguirem les següents passes:

i. Arranquem Eclipse

ii. Al menú Ajuda, seleccionem Instal·lar nou software

iii. Cliquem el botó Add, que apareix a la cantonada superior dreta.

iv. EN el quadre de dialeg que apareix, escrivim el nom del paquet, per

exemple “ADT pluggin” al camp “Nombre” i afegim la següent adreça URL

de la ubicació:

https : //dl-ssl.google.com/android/eclipse/.

v. Acceptem

vi. A continuació anem avançant clicant el botó “Next” varies vegades.

vii. Llegim i acceptem els acords de llicencia i cliquem a “Finish” per tal de

finalitzar el procés.

Page 52: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

52

viii. Un cop finalitzada la instal·lació, caldrà reiniciar Eclipse.

ix. Un cop es reinicia, cal especificar la ubicació del directori SDK de

l’Android, cosa que pot dur a terme des de la finestra de Benvinguda on

apareix l’opció “Use SDKs existentes”, seleccionant el directori on està

ubicat l’SDK.

Page 53: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

53

12 Estructura d’un projecte en Android Studio.

El primer pas per a crear una aplicació en Android és necessari la creació d’un

projecte, en el nostre cas, el crearem amb l’Android Studio i per tant el nostre projecte

seguirà la estructura típica que crea el nostre Framework, en cas d’utilitzar una altre

Framework, aquesta estructura pot variar.

12.1 Creació d’un projecte en Android Studio pas a pas Per a la creació d’un projecte, ho farem des de la pantalla de benvinguda escollint

l’opció “Start a new Android Studio Project”.

Figura 35. Finestra de Benvinguda a Android Studio.

Un cop creat un projecte, és molt possible que a partir d’aquest moment, cada cop

que accedim a Android Studio, es precarregui el projecte creat, sense haver de passar per la

pantalla de benvinguda.

Si volem crear un projecte i no se’ns obra la pantalla de benvinguda, ho podrem fer

des del menu superior clicant sobre “File”, “New project”.

A partir d’aquí, l’assistent ens guiarà per escollir les diferents opcions que definiran

la nostra aplicació i per tant el nostre projecte.

En la primera pantalla que ens mostra l’assistent, és on indicarem el nom de

l’aplicació, el domini de la companyia, y la ruta on es crearà el nou projecte.

Page 54: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

54

Figura 36. Captura d’una pantalla en el creació d’un nou projecte.

En la següent pantalla que ens mostrarà l’assistent, és on configurarem els dispositius

on s’utilitzarà la nostra aplicació, així com l’API mínima (versió d’Android mínima) que

soportarà la nostra aplicació. Alhora d’escollir aquesta opció, cal tenir en compte, que quan

més antiga sigui la versió que suporti, en més dispositius serà compatible la nostra

aplicació, però tindrem menys característiques de desenvolupament disponibles, cosa que

dificultarà que l’aplicació s’executi correctament en totes les plataformes.

Page 55: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

55

En cas, de no tenir clara

quina versió escollir, sempre

podem clicar sobre l’opció

“Help me choose”, que ens

mostra una taula de distribució

percentual del nombre de

dispositius que utilitzan en

aquest moment cada versió de

Android, dades que es ajudaran

a decidir a escollir quina es la

versió mínima.

A més, si cliquem sobre

cada versió, se’ns mostra com

a informació addicional,

quines novetats s’han introduït

en cada versió.

Figura 38. Pantalla d’ajuda per a la selecció de paràmetres en la configuració del nou

projecte.

Per exemple, si escollim com a versió mínima, la 4.1 Jelly Bean, de nivell d’API 16,

estarem arribant a un 78,3% dels dispositius.

Figura 37. Exemple 1 de la configuració d’alguns

paràmetres en un nou projecte.

Page 56: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

56

En la següent pantalla de l’assistent, escollirem el tipus d’activitat principal

(“activity”) de l’aplicació. Entendrem activitat, com “finestra” o “pantalla” de l’aplicació.

Normalment, seleccionarem l’opció per defecte “Blank Activity”.

Figura 39. Exemple 2 de la configuració d’alguns paràmetres en un nou projecte.

En la següent pantalla de l’assistent, omplirem les dades associades a l’activitat

principal seleccionada anteriorment, indicarem:

Activity Name: nom, que servirà per crear, també, la classe vinculada.

Layout Name: nom de la interfície gràfica

Title: el títol que apareixerà...

Menu Resource Name: Nom del menú principal.

Figura 40. Exemple 3 de la configuració d’alguns paràmetres en un nou projecte.

Page 57: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

57

Un cop introduïdes tots aquestes dades, pitjarem el botó “Finish” i Android

s’encarregarà de crear tota l’estructura del projecte així com els elements indispensables

que ha de contenir.

Després d’una estona de processament, i si tot és correcte, apareixerà la pantalla

inicial del nou projecte creat.

Figura 41. Aspecte del entorn de treball davant d’un nou

projecte.

A la part esquerra, s’hi troben tots els elements creats

inicialment per al nou projecte Android seguint una de les

següents estructures segons com escollim la visió.

La estructura clàssica es caracteritza per tenir una

estructura jerarquia diferenciada, una carpeta única de

projecte i que engloba tots la resta de elements. Dins d’un

mateix projecte podem incloure diferents mòduls, que poden

representar diferents aplicacions, tot i que en la majoria dels

casos es recomana incloure una única App per projecte. EL

modul de l’aplicació s’ubica a la carpeta App. En l’exemple

de la imatge, tenim un projecte que es diu “XXXXX” que

conté la carpeta App que contindrà tot el software de

l’aplicació.

Dins la carpeta que conté l’aplicació (carpeta App) hi

trobarem una altra estructura que conté una sèrie de carpetes

que passem a detallar:

Figura 42. Captura del

menú de carpetes de com

s’estructura un projecte

Page 58: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

58

12.1.1 Carpeta /app/src/main/java

Aquesta carpeta contindrà tot el codi font de l’aplicació, les classes auxiliars, etc...

Inicialment, Android Studio crearà per nosaltres el codi base de la pantalla principal de

l’aplicació (Activitat) en el nostre cas anomentat “MainActivity”.

12.1.2 Carpeta /app/src/main/res/

Conté tots els arxius de recursos necessaris per el projecte: imatges, layouts, cadenes

de text, etc.. Els diferents tipus de recursos es poden distribuir entre les diferents

subcarpetes.

CARPETA DESCRIPCIÓ

/res/drawable/ Conté les imatges i elements gràfics usats en la aplicació.

Normalment es diferencies els recursos segons la resolució i la

densista de la pantalla dels dispositius en subcarpetes:

/drawable: recursos independents de la densitat

/drawable-ldpi: baixa densistat

/drawable.mdpi: densitat mitja

/drawable-hdpi: densitat alta

/drawable-xhdpi: densitat molt alta

/drawable-xxhdpi: densitat molt molt alta

/res/layout/ Conté els arxius de definició XML de les diferents pantalles

de l’interficie gràfica. En aquesta carpeta també es diferencien

dues carpetes segons la orientació de la pantalla en l’aplicació:

/layout: orientació vertical

/layout-land: orientació horitzontal

/res/anim/

/res/animator/

Contenen les animacions utilitzades a la aplicació

/res/color/ xxxxxxxxxxxxxxxxxxxxxxxxx

/res/menu/ Conté la definició XML dels menús de l’aplicació

/res/xml/ Conté altres fitxers XML de dades utilitzats a l’aplicació

/res/raw/ Conté recursos addicionals de format diferent al XML i que

tampoc s’inclouen en cap de les altres carpetes específiques.

/res/values/ Conté altres fitxers XML on es defineixen alguns valors

dels recursos de l’aplicació, com per exemple:

cadenes de text (string.xml)

estils (styles.xml)

colors (colors.xml)

etc...

Per defecte, totes aquestes carpetes no tenen per que aparèixer en tots els projectes,

únicament apareixeran les que anem necessitant.

Page 59: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

59

Per defecte les que apareixen en un projecte acostumen a ser:

Segons els tipus de compatibilitat escollit,

a vegades poden aparèixer carpetes amb un

sufix específic, com per exemple “values-

w820dp”, en les quals s’emmagatzemen

recursos específics per a dispositius, en aquest

cas, amb pantalles amb una amplitud major a

820 dp.

Un altre exemple molt típic, és el “values-

v11” on s’emmagatzemaran els recursos per a

dispositius amb versió d’Android 3.0 (API11) o

superior.

D’aquest sufixos n’hi ha una gran llista la

qual podem consultar a: http://developer.android.com/guide/topics/resources/providing-

resources.html, al punt “Table 2”

Entre els recursos creats per defecte, cal destacar els “layouts”, en el nostre cas

només tindrem, inicialment, el fitxer anomenat “activity_main.xml” , el qual conté la

definició de la interfície gràfica de la pantalla principal de l’aplicació. Si es clica sobre

aquest arxiu, Andoid Studio ens mostrarà en l’editor gràfic aquesta interfície.

12.1.3 Fitxer /app/src/main/AndroidManifest.xml

Aquest conté la definició en XML de molts aspectes principals de l’aplicació, com

per exemple: la seva identificació (nom, icona...), els seus components (pantalles, serveis,

....) o els permisos necessaris per a la seva execució.

12.1.4 Fitxer /app/build.gradle

Conté informació necessària per a la compilació del projecte, com per exemple la

versió del SDK d’Android utilitzada, la mínima versió d’Android que suportarà l’aplicació,

referencies a les llibreries externes utilitzades, etc...

En un projecte poden existir diferents fitxers build.gradle, per a definir determinats

paràmetres a diferents nivells. Per exemple, un que definirà els paràmetres globals de tots

els mòduls del projecte i un altre, situat a la carpeta App, que sols tindrà efecte sobre el

mòdul corresponent de la carpeta.

12.1.5 Carpeta /app/libs

Conté les llibreries java externes (fitxers “.jar”) que utilitzarà la nostra aplicació.

Normalment per a que aquestes llibreries entrin en el procés de compilació de l’aplicació

caldrà fer-ne referència al fitxer build.gradle.

Figura 43. Llistat de les carpetes

d’un nou projecte.

Page 60: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

60

12.1.6 Carpeta /app/build/

Conté una sèrie d’elements de codi generats automàticament al compilar el projecte.

Cada vegada que es realitza una compilació del projecte, el compilador d’Android genera

per nosaltres una sèrie de fitxers font java dirigits, entre d’altres coses, al control dels

recursos de l’aplicació. Molt important i a tenir en compte: no modificar mai manualment

aquest fitxers generats automàticament després del procés de cada compilació.

Figura 44. Captura dels components que conformen la carpeta build en un nou projecte.

Destacar el fitxer, que podem observar que apareix desplegat en la imatge anterior,

anomenta “R.java” on es defineix la classe R, la qual, contindrà en tot moment una serie de

constants amb els identificadors (ID) de tots els recursos de la aplicació inclosos a la

carpeta /app/src/main/res/, de forma que podem accedir a ells fàcilment des del nostre codi

mitjançant aquesta dada.

12.2 Components d’una aplicació Android. En els punts anteriors, hem vist l’estructura bàsica d’un projecte d’Andorid i on

col·locar cada uns dels elements que componen l’aplicació, ja siguin elements de software

com elements gràfics o de dades. A continuació ens centrarem específicament, en els

elements de software, amb els que podrem construir la nostra aplicació.

Android disposa duna sèrie d’elements bàsics:

12.2.1 Activitat/Activity:

Les activiats (activities) representen els component principal de l’interficie grafica

d’una aplicació Android. Es pot fer l’equivalència com elements anàlegs entre activitat i

finestra o pantalla de l’aplicació.

12.2.2 Vista/View:

Les vistes són els components bàsics amb els que es construeix d’interfície gràfica

d’una aplicació. Android, posa a la nostra disposició una gran quantitat de control bàsics,

com per exemple: quadres de text, botons, llistes desplegables o imatges, tot i això, també

podem ampliar la funcionalitat d’aquest controls o crear-ne de porpis.

12.2.3 Servei/Service:

Són components sense interfície gràfica que s’executen en segon pla, com els de

qualsevol altre sistema operatiu. Els serveis poden realitzar qualsevol tipus d’acció, com

per exemple: l’actualització de dades, activar notificacions o inclús mostrar elements

visuals.

12.2.4 Proveïdors de Continguts/Content Provider.

Són el mecanisme que fan possible la compartició de determinades dades de la nostra

aplicació sense desvelar detalls sobre el mode d’emmagatzament intern, la seva estructura

Page 61: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

61

o la seva implementació. De la mateixa forma, la nostra aplicació pot accedir a dades de

tercers utilitzan el mateix sistema de “Content Providers” que s’hagin definit.

12.2.5 Broadcast Reciver.

És un component que té com objectiu detectar i reaccionar davant determinats

missatges o events globals generats pel sistema, com per exemple: Bateria baixa, SMS

rebut, Targeta SD insertada, etc... o també generats per d’altres aplicacions, anomenats

“intents”, és a dir, missatges o events no dirigits a una aplicació concreta sinó a qualsevol

que els vulgui escoltar.

12.2.6 Widget.

Elements visuals, normalment interactius, que es poden mostrar en la pantalla

principal (home screen) i rebre actualitzacions periodiques. També permetent mostrar

informació de l’aplicació als usuaris directament sobre la pantalla prinicipal.

12.2.7 Intent.

Com ja comentàvem anteriorment, és tracta d’un element bàsic de comunicació entre

els diferents components Android que hem descrit. Es poden entendre com els missatges o

peticions que son enviats entre els diferents components d’una aplicació o entre diferents

aplicacions amb la finalitat de mostrar una activitat, iniciar un servei, enviar una missatge

broadcast, iniciar una altra aplicació, etc...

Page 62: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

62

13 Creació d’una aplicació senzilla

Com exemple a totes les investigacions fetes fins al moment, intentaré crear una

petita aplicació bàsica que intenta crear una comunicació entre dos dispositius mitjançant

el bluetooth del dispositiu. Un cop creada, utilitzarem l’emulador del Framework prt

intentar provar el seu funcionament.

13.1 Procés de creació de l’aplicació.

13.1.1 Fase I: Creació del projecte.

Seguint les passes documentades en l’apartat “12.1 Creació d’un projecte en Android

Studio pas a pas”, comencem el procés de creació del nostre nou projecte. Un cop clicat

l’opció “Start a new Android Studio Project”, tal i com mostra la Figura 35, en apareix la

següent pantalla on definirem el nom de la nostra aplicació, en aquest cas s’anomenarà

“TFC Bluetooth”. En aquesta mateixa pantalla, també quedarà definit el Nom de la

Companya, que deixarem el que hi ha per defecte, i automàticament es definirà el nom de

l’empaquetament, una combinació entre el nom de l’aplicació i el Domini de la Companyia

Figura 45. Pantalla de configuració del nom de l’aplicació a crear.

Page 63: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

63

Un cop complimentats els camps requerits, fem clic a “Next”, i s’ens mostrarà la

següent finestra.

Figura 46. Pantalla de configuración del mínim SO amb el que serà compatible l’aplicació

a crear.

En aquesta pantalla es defineixen les versions mínimes del SDK per a cadascuna dels

tipus de dispositius per al qual estiguem creant l’aplicació. En el nostre cas, únicament

estem desenvolupant un aplicació per a mòbil, per tant, només caldrà definir el mínim

SDK per aquesta plataforma, que seria l’opció Phone and Tablet.

Per aquesta aplicació, i degut a les característiques de l’aplicació, és a dir, que és una

aplicació força senzilla que no requerirà de cap característica especial, tant de hardware

com de libaries o mòduls externs per el seu desenvolupament, únicament requerià del

servei de Bluetooth i una mica d’interficie, podem escollir una versió que sigui compatible

per la majoria de dispositius, en aquest cas, si consultem les versions d’Android mitjançant

el “Help me choose...” ens mostra que la versió compatible amb la majoria de dispositius,

un 99,5%, es la versió Android 2.2 (Froyo) - API 8, que és la que escollim.

Per la resta de tipus de dispositius, com ja hem comentat, no escollim res ja que la

nostra aplicació no va dirigida a aquest tipus d’aparells.

Page 64: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

64

En el la següent finestra, haurem d’escollir el tipus d’activitat principal, recordar que

l’activitat, o “Activity”, representen el component principal d’una aplicació i que es pot fer

l’analogia amb finestra o pantalla de l’aplicació.

Figura 47. Pantalla de configuració del tipus d’activitat principal que tindrà la nova

aplicació.

En el nostre cas escollirem l’opció per defecte, “Blank Activity” i clicarem sobre el

botó Next per continuar el procés.

Figura 48. Introducció dels paràmetres que defineixen el tipus d’activitat escollit.

Page 65: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

65

En la finestra que ens trobem, és en la que es definirà algunes de les característiques

de l’Activitat que hem escollit, com per exemple el nom, el nom de la interfície gràfica

vinculada, el títol, etc... en el nostre cas, ja que és un cas d’exemple, deixarem tots els

valors per defecte, i així posteriorment podrem aprendre com canviar aquest valors des de

dins del projecte.

Finalment i després d’una estona en el que Android Studio realitza una sèrie de

processos interns per a construït totes les parts del projecte, apareixerà la pantalla principal

del nostre projecte per poder començar a crear la nostra aplicació.

Figura 49. Entorn de treball on es crearà la nova aplicació.

13.1.2 Fase II: Factors inicials.

En primer lloc i fonamental, alhora de crear una aplicació que utilitzi una

característiques de comunicació com el Bluetooth o qualsevol altre, sempre, cal comprovar

si la característica en qüestió està disponible, o no. Com a conseqüència, serà indispensable

afegir els permisos adequats accedir a les opcions que ens ofereix aquest dispositiu, això

cal fer-ho al fitxer AndroidManifest.xml.

Cal recordar, que el fitxer AndroidManifest.xml, és on es defineixen els principals

aspectes de la nostra aplicació, com per exemple: identificació, components, permisos, etc.

<uses-permission android:name="android.permission.BLUETOOTH" />

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

Page 66: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

66

En l’Annex 1, es veu com queda l’arxiu definitiu AndroidManifest.xml una cop

acabat l’aplicació.

13.1.3 Fase III: Creació de la interfície gràfica.

Inicialment, voldrem que la nostra

aplicació realitzi diferents funciona bàsiques per

establir una comunicació:

1. Activar i desactivar el Bluetotth.

2. Mostrar dispositius disponibles.

3. Aparallar-se amb altres dispositius.

4. Llistar dispositius ja aparellats.

Per a dur a terme aquestes funcions

necessitarem alguna interfície gràfica que ens

permeti interactuar i realitzar les accions

definides anteriorment, a més de poder

comprovar en tot moment quin es l’estat del

nostre dispositiu en tot moment, per això

utilitzarem una sèrie de botons, llistats, etc. que

ens ho permetran.

Dins la carpeta “res/layout”, definirem

aquest elements, en el document

activity_main.xml (Annex 2), de tal manera que

ens quedaria una pantalla com la següent, que

ens mostra l’opció Preview d’Android Studio, en

aquest cas tenim definit un dispositiu tipus

Nexus 4, que és el que ve definit per defecte.

Començarem definint la pantalla i

capçalera on mostrarem el nom de l’aplicació i

que contindrà la resta d’elements:

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity" >

. . .

</RelativeLayout>

Després definirem l’etiqueta que ens mostrarà l’estat del bluetooth del nostre

dispositiu en tot moment.

<TextView

Figura 50. Previsualització de

l’entorn gràfic de la nostra aplicació.

Page 67: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

67

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge"

android:text="@string/Text" / “Estat: -“ (valor)

/>

Continuarem amb els botons per activar i desactivar el Bluetooth:

<Button

android:id="@+id/BTOn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/on" / “Activar BT“ (valor)

/>

<Button

android:id="@+id/BTOff"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/off" / “Desactivar BT“ (valor)

/>

Ara seguirem amb el botó del Llistat de Dispositius Aparellats, que al clicar ens

mostrarà en la llista de la part inferior (ítem 1, ítem 2, ítem 3...) els aparells amb els quals

ens em aparellat en el passat i el botó per a la recerca de nous dispositius, els quals també

mostrarà en el mateix llistat un cop haguem fet clic sobre el botó.

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:layout_marginTop="80dp" >

<Button

android:id="@+id/paired"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

//Text: “Llistat de dispositius aparellats“

android:text="@string/List" />

<Button

android:id="@+id/search"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

//Text: “Troba nous dispositius / Cancel·la“

android:text="@string/Find" />

<ListView

android:id="@+id/listView1"

android:layout_width="fill_parent"

android:layout_height="200dp" >

Page 68: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

68

</ListView>

</LinearLayout>

Per a una millor gestió dels texts utilitzats en l’aplicació, aquests, els definirem com

a variables les quals haurem de especificar posteriorment dins el fitxer xml que

anomenarem strings.xml (Annex 3) el qual trobarem dins la carpeta “res/values” i que

quedarà de la següent forma:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">BluetoothTest</string>

<string name="action_settings">Settings</string>

<string name="Text">Estat: -</string>

<string name="on">Activar BT</string>

<string name="off">Desactivar BT</string>

<string name="List">Llistat de dispositius aparellats:</string>

<string name="Find">Troba nous dispositius / Cancel</string>

</resources>

13.1.4 Fase IV: Creació de l’activitat principal.

Per comunicar-nos amb el dispositiu Bluetooth cal utilitzar una classe anomenada

BluetoothAdapter. Utilitzarem l’instancia getDefaultAdapter(), de la següent forma:

myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

Segons el resultat que ens retorni prendrem diferents accions, en el cas que el valor

retornat sigui NULL, significarà que el nostre dispositiu no disposa de Bluetooth, i per

tant, desactivarem tots els botons, mostrarem “Estat: no disponible” i completarem la

informació mostrant un pop-up que indicarà: “El seu dispositiu no suporta el Bluetooth”

if(myBluetoothAdapter == null) {

onBtn.setEnabled(false);

offBtn.setEnabled(false);

listBtn.setEnabled(false);

findBtn.setEnabled(false);

text.setText("Estat: no disponible");

Toast.makeText(getApplicationContext(),"El seu dispositiu no

suporta el Bluetooth",

Toast.LENGTH_LONG).show();

}

Page 69: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

69

Per activar el Bluetooth, el primer que ha de fer la nostra aplicació, es comprovar si

el aquest sí està activat. Sinó, cridem el procediment starActivityForResult() més l’acció

ACTION_REQUEST_ENABLE. El segon paràmetre del mètode aplicat, és un nombre

enter, el qual, si és major que zero el sistema torna cap oneActivityResult() per mostrar

l’estat del dispositiu, o per el contrari crida el disable() per tal de desactivar-lo.

public void on(View view){

if (!myBluetoothAdapter.isEnabled()) {

Intent turnOnIntent =

new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(turnOnIntent, REQUEST_ENABLE_BT);

Toast.makeText(getApplicationContext(),"Bluetooth Activat"

Toast.LENGTH_LONG).show();

}

else{

Toast.makeText(getApplicationContext(),"Bluetooth ja està

activat",

Toast.LENGTH_LONG).show();

}

}

@Override

protected void onActivityResult(int requestCode, int resultCode,

Intent data) {

if(requestCode == REQUEST_ENABLE_BT){

if(myBluetoothAdapter.isEnabled()) {

text.setText("Estat: Activat");

} else {

text.setText("Estat: Desactivat");

}

}

Per a realitzar una connexió a un dispositiu mitjançant el Bluetooth és necessari

conèixer la direcció d’aquest i que a més es trobi disponible. Es possible realitzar un

aparellament (pairing) entre dos dispositius de tal manera que es “recordi” i s’autoritzi

aquest dispositiu per a futures connexions. Tot i això, sempre es necessari realitzar una

primera connexió, per dur-la a terme, utilitzarem el procediment starDiscovery()

Aquest procés de detecció triga aproximadament uns 12 segons, i es tracta d’un

element o dispositiu que realitza la recerca i un altre element o dispositiu que es deixa

descobrir. Cal tenir en compte que els dispositius Android, ja sigui per defecte o per motius

de seguretat, tenen el Bluetooth desactivat, romanent així, en estat ocult, de tal manera que

els altres dispositius que es troben realitzant operacions de descobriment no poden accedir

a la informació d’aquests. Per a poder ser descobert, cal canviar la visibilitat de forma

explicita.

public void find(View view) {

if (myBluetoothAdapter.isDiscovering()) {

Page 70: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

70

// Si es prem el botó mentre està descobrint, aquest

procés es cancel·la

myBluetoothAdapter.cancelDiscovery();

}

else {

BTArrayAdapter.clear();

myBluetoothAdapter.startDiscovery();

registerReceiver(bReceiver, new IntentFilter

(BluetoothDevice.ACTION_FOUND));

}

}

Per recollir tota la informació del dispositius descoberts, farem ús d’un

BroadcastReciver, combinat amb l’accioó: ACTION_FOUND, que ens avisarà cada cop

que es descobreixi un dispositiu, del qual, emmagatzemarem el nom i la direccio Mac a la

taula creada (BTDispositius).

final BroadcastReceiver bReceiver = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

// Quan el process descobreix un dispositiu

if (BluetoothDevice.ACTION_FOUND.equals(action)) {

// obté la info des del Intent

BluetoothDevice device =

intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

// Afeigeix al info a la taula (Nom i direcció Mac)

BTArrayAdapter.add(device.getName() + "\n" +

device.getAddress());

BTArrayAdapter.notifyDataSetChanged();

}

}

};

Finalment es recomana cancel·lar el procés de descobriment, ja que aquest

consumeix molts recursos, per lo que utilitzarem el cancelDiscovery()

myBluetoothAdapter.cancelDiscovery();

Page 71: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

71

Conclusions finals:

El món de les comunicacions avança molt ràpidament, i cada dia és major el número

de programadors interessats a desenvolupar aplicacions per a sistemes operatius mòbils.

Android com una de les plataformes líder en aquest mercat i amb un nombre elevat

d’usuaris es converteix en un camp d’alt interès per als empresaris.

En aquest sentit, mitjançant aquest projecte hem pogut observar que a més de la

programació nativa, existeixen un gran nombre d’entorns i alternatives que permeten

arribar als mateixos resultats utilitzant lògiques i llenguatges diferents. Per tant, no es pot

considerar que existeix un framework que representi la millor alternativa per a

desenvolupar tot tipus d’aplicacions, sinó que l’elecció del millor framework depèn en

cada moment: segons el tipus i objectius d’aplicació i els coneixements previs dels

programadors. El cost del framework i les seves limitacions o facilitats que ofereix alhora

de desenvolupar aplicacions, són també altres factors determinats alhora de fer una elecció.

La programació nativa, és la que ofereix més amplia varietat de funcionalitats i

esdeveniments, convertint-se per aquest motiu amb l’opció escollida per a desenvolupar les

aplicacions que requereixen múltiples accessos a característiques i accessoris del

dispositiu.

També, el fet de que la programació nativa compti amb entorns de treball cada dia

més complerts i senzills d’obtenir, amb processos de instal·lació i actualització dirigits,

com el d’Android Studio, i a més, disposar d’una extensa documentació oficial i una gran

comunitat de desenvolupadors que aporten la seva experiència, fan que es converteixi

inicialment amb el sistema més escollit per aquesta comunitat de desenvolupadors.

Posteriorment, quan s’obté més experiència en el desenvolupament d’aplicacions

sota el sistema operatiu Android o es tenen altres necessitats o requeriments és quan els

desenvolupadors busquen altres entorns alternatius que els ofereixen millors condicions de

treball o optimització dels recursos. Per exemple, el desenvolupament en JQuery Mobile o

Sencha Mobile, els quals mitjançant l’ús de llibreries permeten obtenir aplicacions

personalitzables amb una bona interfície d’usuari i estètica, però invertint un esforç menor

i acceptant les limitacions que aquestes alternatives tenen.

Per altre banda, també existeixen frameworks, com l’AppInventor, senzills, que no

requereix de gaires coneixements de programació, amb moltes limitacions i que aposten

per una programació visual i no de codi, aquest tipus d’entorns van dirigits a un públic

força específic i totalment diferent al esmentat en els punts anteriors, però que

possiblement amb el temps i l’experiència, acabin utilitzant altres entorns més complexes.

També queda palès, que amb la potencia i capacitats que ofereixen avui en dia els

entorns de treball natius, sobretot el que em utilitzat, Android Studio, el desenvolupament

d’aplicacions mòbils requereix d’un esforç considerable d’aprenentatge per arribar a

dominar les eines que aquest ofereixen i poder conèixer quins són els límits de cada

dispositiu o sistema operatiu.

Page 72: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

72

Com es tracta d’un camp quasi inabastable, el projecte deixa oberta moltes

possibilitat d’investigació, algunes poden ser:

Instal·lació i ús dels entorns alternatius a la programació nativa.

Comparació del tipus de programació entre entorns.

Diferencies entre les eines oferides en cada entorn

Exploració de la limitacions d’accés a les característiques dels dispositius que

tenen els entonrs multiplataforma quan es desenvolupen aplicacions

exclusives per a Android, val la pena utilitzar aquests frameworks en aquest

casos?

Etc...

Finalment, sota el meu punt de vista personal, la realització d’aquest projecte m’ha

despertat un gran interès en el desenvolupament d’aplicacions mòbils, tant per un

creixement a nivell de coneixements propis, com aplicat la opció d’aprofitar els

coneixements adquirits en el món laboral, ja que com hem vist aquest és un mercat en alça

i en continua evolució.

Page 73: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

73

Referències: [1] https://es.wikipedia.org/wiki/Wikipedia:Portada [Informació General sobre Android] 2015

[2] Medición de la sociedad de la información 2013: Unión Internacional de Telecomunicaciones, 2013, https://www.itu.int/en/ITU-D/Statistics/Documents/publications/mis2013/MIS2013-exec-sum_S.pdf

[3] Informe sobre Medición de la socidad de la información 2014, Resumen ejecutivo: Unión

Internacional de Telecomuncaciones, 2014,

http://www.itu.int/en/ITU-D/Statistics/Documents/publications/mis2014/MIS_2014_Exec-sum-S.pdf

[4] 2014 Annual Eclipse Comunity Report: Eclipse Foundation, 2014,

https://eclipse.org/org/foundation/reports/2014_annual_report.php

[5] 2013 Annual Eclipse Comunity Report: Eclipse Foundation, 2013,

https://eclipse.org/org/foundation/reports/2013_annual_report.php

[6] 2013 Annual Eclipse Comunity Report: Eclipse Foundation, 2014,

https://eclipse.org/org/foundation/reports/2013_annual_report.php

[7] http://developer.android.com/intl/es/index.html [Informació general sobre Android Studio] 2015

[8] https://www.eclipse.org/home/index.php [Informació general sobre IDE Eclipse] 2015

[9] https://www.eclipse.org/forums/index.php/t/225513/ [Ajuda sobre instal·lació d’Eclipse] 2015

[10] http://appinventor.mit.edu/ [Informació general sobre MIT AppInventor] 2015

[11] http://appinventor.mit.edu/explore/ai2/tutorials.html [Tutorials d’AppInventor]

[12] http://phonegap.com/ [PhoneGap] 2015

[13] http://phonegap.com/blog/ [Blog de la Comunitat de PhoneGap] 2015

[14] https://jquery.com/ [Informació general JQuery Mobile] 2015

[15] http://www.b4x.com/ [Informació general sobre Basic 4 Android] 2015

[16] http://tigabyte.com/ [Informació general sobre HyperNext] 2015

[17] http://kivy.org/#home [Informació general sobre Kivy per Android] 2015

[18] http://www.qt.io/ [Informació general sobre Qt per Android] 2015

[19] http://laughton.com/basic/ [Informació sobre RFO Basic]

[20] http://rfobasic.com/ [Comunitat de RFO Basic] 2015

[21] http://www.rubymotion.com/ [Informació general sobre RubyMotion] 2015

[22] http://development.saphirion.com/rebol/saphir/ [Informació general sobre Rebolt 3 Saphir] 2015

[23] http://learnrebol.com/rebol3_book.html [Manual d’ús de Rebolt 3 Saphir]

[24] https://plus.google.com/communities/114791428968349268860 [Comunitat de desenvolupadors

d’Android] 2015

[25] http://android-developers.blogspot.com.es/ [Android Developers Blog]

[26] https://developer.android.com/intl/es/sdk/installing/create-project.html [Creació de projectes en

Android Studio] 2015

[27] http://developer.android.com/intl/es/tools/studio/index.html [Estructura dels projectes Android] 2015

[28] https://developer.android.com/intl/es/training/index.html [Iniciació a Android Studio]

[29] http://developer.android.com/intl/es/reference/android/bluetooth/package-summary.html

[Funcionalitats per al desenvolupament amb Bluetooth] 2015

[30] Por qué Android enamora a todo el mundo: Javier Elío, El Android Libre, 24/12/2014

[31] Sockets en Android: Sebastian Cipolat, Androidety.com, 05/08/2012

[31] http://developer.android.com/intl/es/samples/connectivity.html [Exemples de programes amb

Bluetooth] 2015

[32] Bluetooth (I): Activando y desactivando el Bluetooth en Android: Let’s Code Something Up!,

19/10/2014

[33] Ranking de Sistemas Operativos más utilizados en 2015: Nicolàs Montés, Blog de la Universidad

Cardenal Herrera, 02/2015

Page 74: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

74

Annex 1

Codi referent al fitxer AndroidManifest.xml:

<? Xml version = "1.0" codificación = "UTF-8"?>

<Manifiestan xmlns: android =

"http://schemas.android.com/apk/res/android"

paquete = "com.javacodegeeks.android.bluetoothtest"

android: versionCode = "1"

android: VersionName = "1.0">

<Usos-sdk

android: minSdkVersion = "8"

android: targetSdkVersion = "19" />

<Usa-permiso android: nombre =

"android.permission.BLUETOOTH" />

<Usa-permiso android: nombre =

"android.permission.BLUETOOTH_ADMIN" />

<Aplicación

android: allowBackup = "true"

android: icon = "@ estirable / ic_launcher"

android: label = "@ string / nombre_apl"

android: tema = "@ style / AppTheme">

<Actividad

android: nombre =

"com.javacodegeeks.android.bluetoothtest.MainActivity"

android: label = "@ string / nombre_apl">

<Intención de filtro>

<Acción android: nombre =

"android.intent.action.MAIN" />

<Categoría android: nombre =

"android.intent.category.LAUNCHER" />

</ Intención de filtro>

</ Actividad>

</ Aplicación>

</ Manifiesto>

Page 75: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

75

Annex 2

Codi referent al fitxer activity_main.xml:

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity" >

<TextView

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge"

android:text="@string/Text" />

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_marginTop="30dp" >

<Button

android:id="@+id/BTOn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/on" />

<Button

android:id="@+id/BTOff"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/off" />

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:layout_marginTop="80dp" >

<Button

android:id="@+id/paired"

android:layout_width="wrap_content"

Page 76: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

76

android:layout_height="wrap_content"

android:text="@string/List" />

<Button

android:id="@+id/search"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/Find" />

<ListView

android:id="@+id/listView1"

android:layout_width="fill_parent"

android:layout_height="200dp" >

</ListView>

</LinearLayout>

Page 77: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

77

Annex 3

Codi referent al fitxer strings.xml:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">TFC Bluetootht</string>

<string name="action_settings">Settings</string>

<string name="Text">Estat: -</string>

<string name="on">Activar BT</string>

<string name="off">Desactivar BT</string>

<string name="List">Llistat Dispositius Aparellats:</string>

<string name="Find">Toba nous dispositius / Cancel</string>

</resources>

Page 78: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

78

Annex 4

Codi referent al fitxer Activity_main.xml:

package com.javacodegeeks.android.bluetoothtest;

import android.os.Bundle;

import android.app.Activity;

import android.bluetooth.BluetoothAdapter;

import android.bluetooth.BluetoothDevice;

import android.content.BroadcastReceiver;

import android.content.Context;

import java.util.Set;

import android.content.Intent;

import android.content.IntentFilter;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

private static final int REQUEST_ENABLE_BT = 1;

private Button onBtn;

private Button offBtn;

private Button listBtn;

private Button findBtn;

private TextView text;

private BluetoothAdapter myBluetoothAdapter;

private Set<BluetoothDevice> pairedDevices;

private ListView myListView;

private ArrayAdapter<String> BTArrayAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if(myBluetoothAdapter == null) {

onBtn.setEnabled(false);

offBtn.setEnabled(false);

listBtn.setEnabled(false);

findBtn.setEnabled(false);

text.setText("Status: not supported");

Page 79: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

79

Toast.makeText(getApplicationContext(),"El seu dispositiu

no soporta el Bluetooth",

Toast.LENGTH_LONG).show();

} else {

text = (TextView) findViewById(R.id.text);

onBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

on(v);

}

});

offBtn = (Button)findViewById(R.id.turnOff);

offBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

off(v);

}

});

listBtn = (Button)findViewById(R.id.paired);

listBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

list(v);

}

});

findBtn = (Button)findViewById(R.id.search);

findBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

find(v);

}

});

myListView = (ListView)findViewById(R.id.listView1);

// crea una taula que contindra els dispositius, I els

// mostra en una

BTArrayAdapter = new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1);

myListView.setAdapter(BTArrayAdapter);

}

Page 80: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

80

}

public void on(View view){

if (!myBluetoothAdapter.isEnabled()) {

Intent turnOnIntent =

new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(turnOnIntent, REQUEST_ENABLE_BT);

Toast.makeText(getApplicationContext(),"Bluetooth activat"

Toast.LENGTH_LONG).show();

}

else{

Toast.makeText(getApplicationContext(),"Bluetooth ja

activat",

Toast.LENGTH_LONG).show();

}

}

@Override

protected void onActivityResult(int requestCode, int resultCode,

Intent data) {

// TODO Auto-generated method stub

if(requestCode == REQUEST_ENABLE_BT){

if(myBluetoothAdapter.isEnabled()) {

text.setText("Status: Enabled");

} else {

text.setText("Status: Disabled");

}

}

}

public void list(View view){

// mostra els dispositius ja aparellats

pairedDevices = myBluetoothAdapter.getBondedDevices();

for(BluetoothDevice device : pairedDevices)

BTArrayAdapter.add(device.getName()+ "\n" +

device.getAddress());

Toast.makeText(getApplicationContext(),"Mostra dispositius

aparellats",

Toast.LENGTH_SHORT).show();

}

final BroadcastReceiver bReceiver = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

// Quant el process descobreix un dispositiu

if (BluetoothDevice.ACTION_FOUND.equals(action)) {

// Obté un disposotiu des del “intent”

BluetoothDevice device =

intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)

Page 81: Estudi d'entorns de programació per a Android.deeea.urv.cat/public/PROPOSTES/pub/pdf/2268pub.pdf · Estudi d'entorns de programació per a Android. TITULACIÓ: Enginyeria Tècnica

81

// Afegeix la informació del dispositiu a la taula

BTArrayAdapter.add(device.getName() + "\n" +

device.getAddress());

BTArrayAdapter.notifyDataSetChanged();

}

}

};

public void find(View view) {

if (myBluetoothAdapter.isDiscovering()) {

// si es torna a premer el botó, el procés es cancel·la

myBluetoothAdapter.cancelDiscovery();

}

else {

BTArrayAdapter.clear();

myBluetoothAdapter.startDiscovery();

registerReceiver(bReceiver, new

IntentFilter(BluetoothDevice.ACTION_FOUND));

}

}

public void off(View view){

myBluetoothAdapter.disable();

text.setText("Estat: Desactivat");

Toast.makeText(getApplicationContext(),"Bluetooth desactivat",

Toast.LENGTH_LONG).show();

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

unregisterReceiver(bReceiver);

}

}