phonegap

106
Phonegap JS

Upload: lucas-aquiles

Post on 19-Nov-2014

4.078 views

Category:

Technology


0 download

DESCRIPTION

apresentação sobre Phonegap na semana academia de computação do IFPI - 2012

TRANSCRIPT

Page 1: Phonegap

Phonegap JS

Page 2: Phonegap

About me

● @Lucas_Aquiles● [email protected]● lucasaquiles.com.br/

Page 3: Phonegap

Roteiro1º dia

i. Introdução a computação móvelii. Mundo mobile

iii. Desenvolvendo com Android1. Instalação e configuração

iv. Conceitos básicos da plataforma

2º dia

v. WTF Phonegap?vi. Quem usa? onde isso roda?

vii. Instalação e configuraçãoviii. Recursos do PhonegapAPI

ix. HTML5 + CSS3 + Javascript

3º dia

i. Aplicação de Exemplo

Page 4: Phonegap

Introdução a computação móvel

● Computação Móvel

○ Acesso a informação em qualquer lugar, a qualquer momento

○ "Usuários móveis"

Page 5: Phonegap

Introdução a computação móvel

● Computação pervasiva○ acesso conveniente a informações relevantes e a

habilidade de realizar ações sobre as mesmas quando e onde for necessário (IBM).

Page 6: Phonegap

Introdução a computação móvel

● Computação ubíqua○ Basea-se na detecção de gestos , movimentos, fala,

movimentação dos olhos ...

http://youtu.be/9c6W4CCU9M4

Page 7: Phonegap

Introdução a computação móvel

● Junta tudo

Pervasiva

Ubíqua Móvel

Page 8: Phonegap

Introdução a computação móvel

● Princípios da computação móvel

○ Descentralizaçãouma grande variedade de pequenos dispositivos cooperam estabelecendo uma rede dinamica de relacionamento

Page 9: Phonegap

Introdução a computação móvel

● Princípios da computação móvel

○ Diversificação■ mesma informação em diferentes modelos

Page 10: Phonegap

Introdução a computação móvel

● Princípios da computação móvel

○ Conectividade

■ bluetooth, wlan, 4G, WiMax■ troca de informação■ descoberta de serviços■ delegação de tarefas

Page 11: Phonegap

Introdução a computação móvel

● Princípios da computação móvel

○ Simplicidade

■ "computadores móveis" são mais especificos e mais simples em configuração

■ touch-screen■ reconhecimento de voz e escrita

Page 12: Phonegap

Introdução a computação móvel

● Aceitação das tecnologias

○ TV preto e branco - 20 anos○ TV em cores - 9 anos○ VCR - 8 anos○ PC - 6 anos○ Celular - 2 anos e meio○ acesso a internet por dispositivos móveis ultrapassou os

dispositivos convencionais

Page 13: Phonegap

Introdução a computação móvel

● Algumas aplicações em computação móvel

○ m-commerce○ m-business○ segurança○ tratamento médico○ serviços de resgate○ aplicações militares○ comércio○ serviços de geolocalização

Page 14: Phonegap

Impactos da computação móvel

● Mudanças sociais ?● novo paradigma computacional amplicando os

conceitos de computação distribuida

● ambientes de programação● banco de dados● rede de computadores● sistemas operacionais

Page 15: Phonegap
Page 16: Phonegap
Page 17: Phonegap
Page 18: Phonegap
Page 19: Phonegap

Exemplos de aplicações

candysoldiersertaogames.com

Contador de caloriasSkyScanner

Page 20: Phonegap

Difusão da tecnologia celular

Page 21: Phonegap

Difusão da tecnologia celular

Page 22: Phonegap

Mundo Mobile

● usuários querem mais recursos em seus dispositivos

● aplicações móveis no mundo corporativo● necessidade de plataformas mais modernas para

desenvolvimento

Page 23: Phonegap
Page 24: Phonegap
Page 25: Phonegap

O que é android?

● Sistema operacional baseado no kernel do linux● possui uma versão enxuta da JVM - Dalvik● Código aberto e livre● Plataforma fléxivel e poderosíssima de

desenvolvimento

● customizável

Page 26: Phonegap

Open Handset alliance

● Definir uma plataforma única e aberta● plataforma moderna e flexível para desenvolvedores● usuários, fabricantes e desenvolvedores se beneficiam com o

grupo

Page 27: Phonegap

Android e os competidores

● IOs● BlackBerry● JME● Windows Phone

Page 28: Phonegap

Porque linux no android?

● Abstração de hardware● gerencia memória, processos● usuários não veem o linux e os apps não fazem

chamadas diretas a ele

● suportes a gráficos 3D, OpenGL

Page 29: Phonegap

Dalvik Virtual Machine

● JVM otimizada para dispositivos móveis● bytecodes (.class) são convertidos em arquivos .

dex (um dalvik executável)

● os .dex são compactados em um arquivo .apk, que é a app final.

● pro desenvolvedor não muda nada!

Page 30: Phonegap

Frameworks existentes

● Roboguice: Dependence Injection para Android

○ http://code.google.com/p/roboguice/

● Sencha Touch: HTML5 + Javascript = Apps para Android, IOs, Blackberry

○ http://www.sencha.com/

● Phonegap: HTML5 + javascript, praticamente as “mesmas” ideias do Sencha Touch

phonegap.com

● LibGDX – Desenvolvimento de Gameshttp://code.google.com/p/libgdx/

Page 31: Phonegap

Frameworks existentes

● Roboguice: Dependence Injection para Android

○ http://code.google.com/p/roboguice/

● Sencha Touch: HTML5 + Javascript = Apps para Android, IOs, Blackberry

○ http://www.sencha.com/

● Phonegap: HTML5 + javascript, praticamente as “mesmas” ideias do Sencha Touch

phonegap.com

Page 32: Phonegap

Preparando o terreno!

●Requisitos

○ Java SDK

○ Android SDK

○ Eclipse IDE

○ Plugin ADT

Page 33: Phonegap

Preparando o terreno!

●Instalação do JDK no Linux (Ubuntu)

●Com o comando

●sudo apt-get install openjdk-6-jdk && sudo apt-get install sun-java6-jdk

●Após a instalação entre via console e digite: java –v

●A saída deve ser a versão do java instalado.

Page 34: Phonegap

Preparando o terreno!

●Instalação do JDK no Linux (Ubuntu)

●Com o comando

●sudo apt-get install openjdk-6-jdk && sudo apt-get install sun-java6-jdk

●Após a instalação entre via console e digite: java –v

●A saída deve ser a versão do java instalado.

Page 35: Phonegap

Preparando o terreno!

●Instalação do JDK no Linux (Ubuntu)

●Com o comando

●sudo apt-get install openjdk-6-jdk && sudo apt-get install sun-java6-jdk

●Após a instalação entre via console e digite: java –v

●A saída deve ser a versão do java instalado.

Page 36: Phonegap

Preparando o terreno!

1. escolhe a versão do JDK 3. escolhe a versão pro seu S.O

2. aceita os termos de uso

Page 37: Phonegap

Preparando o terreno!

no site www.android.com escolher a opção developers

Page 38: Phonegap

Preparando o terreno!

2. Escolha a opção SDK de acordo com o S.O

A versão atual é a 4.0.3 (para tablet e smartphone)

Page 39: Phonegap

Preparando o terreno!

2. Escolha a opção SDK de acordo com o S.O

A versão atual é a 4.0.3 (para tablet e smartphone)

Page 40: Phonegap

Preparando o terreno!

● Localize o arquivo e descompacte-o.● No windows basta executar o arquivo “SDK

Manager.exe” localizado na pasta raiz do sdk● No linux ou Mac, acesse pelo terminal a pasta raiz

do sdk e execute o comando ./tools/android

Page 41: Phonegap

Preparando o terreno!

● Localize o arquivo e descompacte-o.● No windows basta executar o arquivo “SDK

Manager.exe” localizado na pasta raiz do sdk● No linux ou Mac, acesse pelo terminal a pasta raiz

do sdk e execute o comando ./tools/android

Page 42: Phonegap

Preparando o terreno!

irá aparacer o Android SDK Manager.

Page 43: Phonegap

Preparando o terreno!

Marque o pacote“tools” e as APIs do Android e clique em “Install Packages”

Page 44: Phonegap

Preparando o terreno!

Aceite todos e clique em “install”

Page 45: Phonegap

Preparando o terreno!

1. Acesse o site www.eclipse.org e vá na sessão “Downlods”

2. Escolha a versão do Eclipse IDE for Java Developers

Page 46: Phonegap

Preparando o terreno!

Faça o download

Page 47: Phonegap

Preparando o terreno!

Faça o download

Page 48: Phonegap

Preparando o terreno!

Após o download localize o arquivo ,

descompacte-o e execute o arquivo “eclipse.

exe”

No ubunto é apenas “eclipse”

Obs: no linux é necessário permissão para executar o arquivo

Page 49: Phonegap

Preparando o terreno!

Inicie o eclipse e vá em “help”, “install new software”

Page 50: Phonegap

Preparando o terreno!

Clique em add e uma nova janela irá aparecer

Em “name” coloque “ADT Plugin” e em “location” adicione ADT Plugin - https://dl-ssl.google.com/android/eclipse/ e clique em “ok”

Page 51: Phonegap

Preparando o terreno!

Selecione “ADT Plugin” na lista de sites, marque a opção “Developers Tools” e clique em “next”.

Page 52: Phonegap

Preparando o terreno!● Irá aparecer uma lista com todos os item a serem

instalados.

● Clique em "Next" novamente. Na próxima tela, escolha a

opção "I accept the the terms of the licence agreements"

e clique em 'Finish'.

● Após o processo de instação do plugin o Eclipse irá

reiniciar.

Page 53: Phonegap

Preparando o terreno!

Page 54: Phonegap

Preparando o terreno!

Quando o eclipse iniciar será pedida a localização do Android SDK.

Page 55: Phonegap

Preparando o terreno!

Criando uma ADV

Page 56: Phonegap

Pronto! Ambiente configurado!

Page 57: Phonegap

Hello Word!

estrutura do projeto

como rodar o projeto?

Page 58: Phonegap

Hello Word!

Page 59: Phonegap

Conceitos básicos do Android: Activity

● Uma Activy representa uma tela da App○ android.app.Activity

● Controla a passagem de parametros de um layout○ uma tela pode ser criada via arquivo .xml○ ou via código Java definido na Activity

● Implementa métodos para tratar eventos dos componentes

● Semelhante ao JFrame do javax.swing.*

Page 60: Phonegap

Conceitos básicos do Android: Activity

● Uma Activy representa uma tela da App○ android.app.Activity

● Controla a passagem de parametros de um layout○ uma tela pode ser criada via arquivo .xml○ ou via código Java definido na Activity

● Implementa métodos para tratar eventos dos componentes

● Semelhante ao JFrame do javax.swing.*

Page 61: Phonegap

Conceitos básicos do Android: Activity

Page 62: Phonegap

Conceitos básicos do Android: View

● São componentes simples (botões, checkboxes, imagens) ou componentes compostos○ Atuam como gerenciadores de layout○ Podem conter várias views filhas (outro componentes)

● O arquivo main.xml é um arquivo de layout padrão● Vários layouts podem ser definidos

Page 63: Phonegap

Conceitos básicos do Android: View

Page 64: Phonegap

Conceitos básicos do Android: View

● O médoto setContentView faz a ligação entre a activity e a view

● A view passada como parâmetro está definida no arquivo main.xml (pode ser mudado)

○ é referenciada via o arquivo R.java como uma constante

Page 65: Phonegap

Conceitos básicos do Android: A classe R

Page 66: Phonegap

Conceitos básicos do Android: AndroidManifest.xml

● Base da aplicação e semelhante ao web.xml de aplicações web java

Page 67: Phonegap

Conceitos básicos do Android: AndroidManifest.xml

● As Activities devem ser definidas no arquivo

● Para que o usuário possa interagir, pelo menos uma Activity deve

ser definida no arquivo

● A configuração de uma Activity como ponto de partida para a

aplicação é ilustrada abaixo:

Page 68: Phonegap

Conceitos básicos do Android: AndroidManifest.xml

● As Activities devem ser definidas no arquivo

● Para que o usuário possa interagir, pelo menos uma Activity deve

ser definida no arquivo

● A configuração de uma Activity como ponto de partida para a

aplicação é ilustrada abaixo:

Page 69: Phonegap

Ciclo de vida de uma Activivy

Page 70: Phonegap

Ciclo de vida de uma ActivivyonCreate:

– Obrigatório e chamado uma única vez.

– Deve-se setar a view

• onStart: é chamado quando uma activity está ficando visível e já tem uma view

definida

• onRestart: chamado quando uma activity foi parada temporariamente e está

retornando à execução

• onResume:

– Quando uma activity está executando.

– Pode ser chamada também para recuperação de dados quando foi

interrompida e volta a execução

onPause: chamado quando a activity está sendo tirada do topo da execução. Usado

para salvar o estado da aplicação

onStop:

– A aplicação não está mais visível e está em segundo plano.

– Caso fique por muito tempo em 2o Plano e falte recursos, o S.O. pode remover

completamente da pilha de execução

onDestroy: encerra literalmente a activity

Page 71: Phonegap

Ciclo de vida de uma ActivivyonCreate:

– Obrigatório e chamado uma única vez.

• onStart: é chamado quando uma activity está ficando visível e já tem uma view

definida

• onRestart: chamado quando uma activity foi parada temporariamente e está

retornando à execução

• onResume:

– Quando uma activity está executando.

– Pode ser chamada também para recuperação de dados quando foi

interrompida e volta a execução

onPause: chamado quando a activity está sendo tirada do topo da execução. Usado

para salvar o estado da aplicação

onStop:

– A aplicação não está mais visível e está em segundo plano.

– Caso fique por muito tempo em 2o Plano e falte recursos, o S.O. pode remover

completamente da pilha de execução

onDestroy: encerra literalmente a activity

Page 72: Phonegap

Activities x Intents● Activities são as "telas"

● Uma aplicação pode ter várias activities:

● – geralmente independentes,

● – contudo elas podem precisar se cooperar e trocar dados entre si

● Numa aplicação tradicional, uma activity deve ser definida como "main" e será executada ao rodar a

aplicação

● Indo de uma activity para outra é possível pedindo para a atual executar uma intent

Page 73: Phonegap

Intents

Page 74: Phonegap

Intents

android.content.Intent

• Representa uma mensagem da aplicação para o S.O.

• Solicita que algo seja realizado e serve para integrar aplicações

• Ex:

– Chamar outra tela (já visto)

– Solicitar que o S.O. ligue para um número;

– Abrir o browser em um determinado endereço

– Exibir algum endereço, localização ou rota num mapa

– Executar processamento em segundo plano

– Enviar mensagem para outras aplicações realizarem tarefas

específicas

Page 75: Phonegap

Intents

android.content.Intent

• Representa uma mensagem da aplicação para o S.O.

• Solicita que algo seja realizado e serve para integrar aplicações

• Ex:

– Chamar outra tela (já visto)

– Solicitar que o S.O. ligue para um número;

– Abrir o browser em um determinado endereço

– Exibir algum endereço, localização ou rota num mapa

– Executar processamento em segundo plano

– Enviar mensagem para outras aplicações realizarem tarefas

específicas

Page 76: Phonegap

Intents

São chamadas pelos métodos:

startActivity(intent) = Executa uma activity

starActivityForResult(intent) = Executa uma activity

que pode retornar valores

startService(intent) or bindService(intent, …) =

Inicia ou se comunica comum serviço de segundo plano

sendBroadcast(intent) = Envia uma intent que pode ser

"capturada" por serviçoses pecíficos

Page 77: Phonegap

Intents definidas

Page 78: Phonegap

Permissões

● Algumas intents necessitam de permissão explicita para executar

● Deve-se adicionar as permissões no arquivo AndroidManifest.xml

Page 79: Phonegap

Usando intents pré-definidas

● Algumas intents necessitam de permissão explicita para executar

● Deve-se adicionar as permissões no arquivo AndroidManifest.xml

Page 80: Phonegap

Algumas permissões

●Permissão para executar navegação: INTERNET

●Ligações telefônicas: CALL_PHONE

●Leitura à lista de contatos: READ_CONTACTS

Page 81: Phonegap

Exemplo: Intent chamando o navegador

●Tipo ACTION_VIEW

●...

●Uri uri = Uri.parse("http://www.android.com");

●Intent it = new Intent(Intent.ACTION_VIEW, uri);

●startActivity(it);

●l...

● É necessária a permissão INTERNET

Page 82: Phonegap

Let's practice!!

Page 83: Phonegap

O Que é o Phonegap?

● HTML5 + CSS3 + Javascript● "Ponte entre browser e recursos nativos do S.O"

Page 84: Phonegap

Aplicações de exemplo

MobileDiary

Page 85: Phonegap

Aplicações de exemplo

Orbium - Pluzzle game

Page 86: Phonegap

Básico pro phonegap funcionar

● Baixar o phonegap (www.phonegap.com)● configurar as ferramentas especificas de cada

plataforma○ ex: (xcode para Iphone, android sdk, etc)

● Inclui as bibliotecas do phonegap no seu workset de desenvolvimento

Page 87: Phonegap

Configurando pro android

● Crie um novo "Android project" no eclipse● cria uma pasta chamada "libs"● dentro da pasta "assets" cria uma subpasta

chamada "www"

● copie o arquivo "phonegap.jar" para a pasta "libs"

● copie o arquivo "phonegap.js" para pasta "www"

● Mude a Activivy gerada pelo ATD para:○ public class MyActivivy extends DroidGap{

...}

Page 88: Phonegap

Configurando pro android

● A Activity deve ficar mais ou menos assim

Page 89: Phonegap

Configurando pro android

● dentro do método onCreate() altere a view principal para:○ substitua o setContentView() por

super.loadUrl(“file:///android_asset/www/index.html”);

○ dentro da pasta "www", crie um arquivo "index.html"○ inclua na pasta "res/xml" o arquivo "plugins.xml"

Page 90: Phonegap

Alterando o AndroidManifest.xml

<uses-permission android:name=”android.permission.CAMERA” />

<uses-permission android:name=”android.permission.VIBRATE” />

<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION” />

<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />

<uses-permission android:name=

“android.permission.ACCESS_LOCATION_EXTRA_COMMANDS” />

<uses-permission android:name=”android.permission.READ_PHONE_STATE” />

<uses-permission android:name=”android.permission.INTERNET” />

<uses-permission android:name=”android.permission.RECEIVE_SMS” />

<uses-permission android:name=”android.permission.RECORD_AUDIO” />

<uses-permission android:name=”android.permission.MODIFY_AUDIO_SETTINGS” />

<uses-permission android:name=”android.permission.READ_CONTACTS” />

<uses-permission android:name=”android.permission.WRITE_CONTACTS” />

<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />

<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />

Page 91: Phonegap

Ambiente configurado!!

agora é só rodar o emulador!

Page 92: Phonegap

Quem usa?

● Quem usa?○ Alcatel○ Zynga○ Microsoft○ Adobe○ Travelocity○ Vodaphone○ Wikipedia○ ...

Page 93: Phonegap

Plataformas suportadas

Page 94: Phonegap

Dificuldades de cada plataforma

● Android● IOs● Blackberry

Page 95: Phonegap

Overview HTML5 + CSS3 + Javascript

● HTML5○ ultima especificação do HTML○ <!DOCTYPE html>○ suportes a recursos como geolocalização, localstorage,

webworkers e websockets

Page 96: Phonegap

Overview HTML5 + CSS3 + Javascript

● CSS3○ seletores

■ #idName■ .className ■ :pseudo-class■ {

/* propriedades de estilos ficam aqui! */}

Page 97: Phonegap

Overview HTML5 + CSS3 + Javascript

● CSS3○ Scrolling○ viewports - <meta name="viewport content="width=device-width,initial-scale=1.0"/>

Page 98: Phonegap

Dificuldades de cada plataforma

● Android - Java (Dalvik)● IOs - Objective-C● Blackberry - Java● Windows mobile (.Net / C++)

Page 99: Phonegap

Eventos

● eventos espeificos do phonegap○ backbutton○ deviceready○ menubutton○ pause○ resume○ searchbutton○ online○ offline

Page 100: Phonegap

Eventos

● eventos específicos do phonegap○ backbutton○ deviceready○ menubutton○ pause○ resume○ searchbutton○ online○ offline

Page 101: Phonegap

Eventos● deviceready

○ dentre os eventos citados, ele é o mais importante. é ele que me garante que os recurso do phonegap foram completamente carregados

○ semelhante ao .ready(function(){}) do jQuery○ usar deviceready garante que os DOMs da página foram

carregados e que os recursos da API estão disponíveis pra uso

○ todo evento deve ser registrado no deviceready function

Page 102: Phonegap

Eventos● Usando eventos

<script type=”text/javascript” charset=”utf-8” src=”phonegap.js”></script>

<script type=”text/javascript” charset=”utf-8”>

document.addEventListener(“deviceready”, onDeviceReady, false);

function onDeviceReady() {

// call the phonegap api

}

</script>

Page 103: Phonegap

Eventos● Adicionando eventos

document.addEventListener(“deviceready”, onDeviceReady, false);

function onDeviceReady() {

// call the phonegap api

document.addEventListener(“pause”, onPause, false);

document.addEventListener(“resume”, onResume, false);

}

function onPause(){

}

function onResume(){

}

Page 104: Phonegap

Entendendo cada tipo● backbutton - disparado quando usuário

pressiona o botão backbutton do dispositivo

● deviceready - o mais importante entre eles, deve ser o primeiro evento a ser chamado

● menubutton - disparado quando pressionado o menu do dispositivo

● pause - quando a aplicação é colocada em segundo plano

● resume - quando a aplicação sai da pausa e volta para o primeiro plano

Page 105: Phonegap

Entendendo cada tipo● searchbutton- disparado quando usuário

pressiona o botão de busca no dispositivo

● online- quando o dispositivo está conectado a internet

● offline - sem conectividade com a internet

Page 106: Phonegap

Recuperando informações do dispositivo

● device.name● device.phonegap● device.platform● device.version