SlideShare a Scribd company logo
1 of 105
Download to read offline
Apps Android e Hibridas
16 horas de explanação, diálogo e prática
Julho 2016
por Luiz Henrique Rauber Rodrigues
luizrauber@gmail.com - fb.com/luizrauber
Exceto onde tiver outra referência, este material é Creative Commons com Atribuição-CompartilhaIgual (CC
BY-SA). Pode copiar, alterar e redistribuir à vontade, mesmo para fins comerciais, mas desde que me cite e
licenciem as novas criações sob termos idênticos. Like Free Software :)
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 2/105
Mas primeiro….
Conselhos Richard Feynman (1918-1988), Nobel de Física em 1965
2 tipos de sabedoria: “Saber o nome de algo” e o “Saber algo”
1) Escolha um conceito; tema ou objetivo do que quer saber
2) Escreva-o como se estivesse ensinando uma criança; nada subentendido
3) Volte no tema e pesquise sobre ele; especifique o 1-2 da forma 2)
4) Revise e simplifique ainda mais; sem jargões e sabendo usar analogias
http://www.bbc.com/portuguese/geral-36750825
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 3/105
Manifesto para o desenvolvimento ágil de software
Estamos descobrindo maneiras melhores de desenvolver software fazendo-o
nós mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a
valorizar:
Indivíduos e interação entre eles mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à
esquerda.
http://www.manifestoagil.com.br/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 4/105
Coding Dojo - Turma 2015-2016 – Tec Informática Senac
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 5/105
O quê?
Onde?
Como?
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 6/105
Touchscreem Resistivo/ Capacitivo
Sensores internos e acopláveis
SO parcialmente opensource
Versões por Google e por fabricantes
Intergração serviços Google
“Apps” via Google Play/ Lojas Terceiros/ .apk numa sandbox
SDK padrão e com o QEMU
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 7/105
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 8/105
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 9/105
Go https://www.android.com/intl/pt-BR_br/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 10/105
Aprofundando
SILBERCHATZ, 2013
Android/Linux
Java - JVM
Multithread
Sai swap entra
application state
...
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 11/105http://source.android.com/source/index.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 12/105
Mais (ou menos) em https://www.android.com/intl/pt-BR_br/history/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 13/105
https://developer.android.com
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 14/105
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 15/105
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 16/105
javac -version
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-
downloads-2133151.html
android-studio/bin/studio.sh
dependências lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
Bora instalar? (Enquanto isso, mais teoria)
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 17/105
2005 – comprou startup Android, Inc. (SO para câmeras)
2006 – Protótipo “Sooner” mirando em BlackBerry
2007 – Mirarão no IPhone*
2007 – Fundação Open Handset Alliance (Google, HTC, Dell,
Intel, Motorola, Qualcomm, Texas Instruments, Samsung, LG,
T-Mobile, Nvidia…
https://pt.wikipedia.org/wiki/Open_Handset_Alliance)
2007 – Primeira SDK para desenvolver Android
2007 – Google registrou várias patentes sobre smartphone
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 18/105
2008 – HTC Dream/ T-Mobile G/ G1
com Android
2010 – Linha Nexus (HTC, Samsung, LG,
Asus, Motorola)
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 19/105
http://www.androidpit.com.br/evolucao-dos-smartphones-a-linha-nexus
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 20/105
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 21/105
http://www.gadgetdetail.com/androi
d-version-market-share-
distribution/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 22/105
http://www.gadgetdetail.com/androi
d-version-market-share-
distribution/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 23/105
http://www.for
bes.com/sites/
eladnatanson/
2016/06/06/br
eaking-the-
android-ios-
duopoly-will-
android-and-
ios-ever-get-
a-serious-
third-
competitor/#e
62c5104cad0
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 24/105
http://www.for
bes.com/sites/
eladnatanson/
2016/06/06/br
eaking-the-
android-ios-
duopoly-will-
android-and-
ios-ever-get-
a-serious-
third-
competitor/#e
62c5104cad0
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 25/105
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 26/105
https://github.com/googlesamples/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 27/105
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 28/105
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 29/105
fonte: developer.android.com
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 30/105
Resumo de
https://developer.android.com/guide/components/fundamentals.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 31/105
Os “aplicativos” são feitos na linguagem Java. Para desenvolver é
necessário o SDK Android que compila e gera um Android Package
(.apk).
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 32/105
Os “apps” são adaptáveis em “tempo de execução” a vários
tamanhos de telas, se tiver vários XML de layout de tela, e
configurações de hardware (como presença/ ausência giroscópio,
câmera, gps…).
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 33/105
Cada “apps” rodando tem um ID de processo diferente sobre o Linux
e um JVM própria, por isso isolando os componentes e evitando
conflito de apps (princípio do privilégio mínimo).
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 34/105
Os “apps” são baseados e desenvolvidos orientados à
“componentes”, definidos como subclasses, que podem trabalhar
individualmente ou em conjunto, e a conexão de componentes é por
“intenção”.
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 35/105
O sistema operacional e os padrões de desenvolvimento, idealizam
o reaproveitamento de componentes, evitando redundância.
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 36/105
Quando um aplicativo requer o uso de um recurso, e já existe um
componente que pode entregar este recurso, o aplicativo, via
componente, envia uma intenção de uso ao Android solicitando o
recurso de um outro componente, se havendo a possilibidade, o
recurso é entregue.
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 37/105
As intenções por padrão são implícitas, sem definir qual mas sim
quais tipos de componentes lhe são úteis. Assim se uma aplicação
pede um recurso, e se existente mais de um componente que pode
entregar tal recurso, o usuário seleciona qual “aplicação” que irá
usar pra entregar o recurso a aplicação inicial.
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 38/105
As “comunicações” entre componentes são em “tempo de
execução”, via processos individuais, e direcionadas a um
componente em específico ou só ao tipo dele via intenções.
+https://developer.android.com/guide/components/intents-filters.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 39/105
4 tipos de componentes, sendo os 3 primeiros ativados por object
intent, o outro pode ser 1 por aplicativo*
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 40/105
4.1
Activity: foca na interação com o usuário, logo a interface de cada de
ação. Um único app pode ter vários componentes de atividades, que
podem ser compartilhadas (entre sí ou outros apps).
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 41/105
4.2
Service: realiza a entrega para o usuário, sem a necessidade de
uma interface diretamente. Roda em background (segundo plano)
podendo manter-se ou não vinculada a uma atividade e/ou se ligar a
outras que sejam iniciadas posteriormente.
+https://developer.android.com/guide/components/services.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 42/105
4.3
BroadcastReceiver: Fazem as notificações internamente no Android,
enviando ou recebendo dados para uma mesma, ou outra aplicação,
de acordo com alguma condição. Podem ou não, gerar notificação
para o usuário. Sempre vinculado a outros componentes.
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 43/105
4.4
ContentProvider: Compartilham e gerenciam o conteúdo do
aplicativo, lendo e gravando dados no local de persistência indicado
(dado, SQLite, cartão, nuvem…)
+https://developer.android.com/guide/topics/providers/content-
providers.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 44/105
Todo aplicativo Android tem o AndroidManifest.xml, onde estão
informados as compatibilidades de dispositivos, recursos externos
necessários pra execução, definições e requisitos dos aplicativos
que também devem ser mencionados ao “publicar” algo em uma loja
de aplicativos...
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 45/105
… e lista todos os componentes necessários pra aplicação funcionar,
indexando tipos, intenções e portanto é lido a cada chamada ao
aplicativo ou a um componente para verificar se o mesmo é
necessário.
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 46/105
Também lista e identifica: os usuários e permissões, as API e seus
níveis (versões Android) com suas respectivas bibliotecas, os
recursos de hardware e software necessários, outras informações
pertinentes como versão, desenvolver, licença…
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 47/105
… e por fim
Escalonamento padrão é pilha, setado através das indentações nas
Activities, sendo uma destas a “principal” que substitui a ideia de um
procedimento “main”.
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 48/105
E ai do mundo
Atenção a API Level, tamanho de tela e recursos (hw, sw, língua)
Mesma aplicação pode dar suporte a estes tipos, reconhecendo em
run-time as especificações do app, mas tem que estar res/
Ciclo de vida da atividade é importante
https://developer.android.com/training/basics/activity-
lifecycle/index.html (tá pt_br)
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 49/105
Ciclo de vida da atividade é importante
https://developer.android.com/training/basics/activity-lifecycle/index.html (tá pt_br)
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 50/105
Tutorial Introdução
https://developer.android.com/training/basics/firstapp/index.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 51/105
Tutorial Fragmentos
https://developer.android.com/training/basics/fragments/index.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 52/105
http://www.cyanogenmod.org/
+400 modelos
https://wiki.cyanogenmod.org/w/About
https://wiki.cyanogenmod.org/w/Main_Page
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 53/105
http://www.replicant.us/
Nexus S (I902x) Galaxy S (I9000) Galaxy S 2 (I9100) Galaxy Note
(N7000) Galaxy Nexus (I9250) Galaxy S 3 (I9300) Galaxy Note
(N7000) Galaxy Note 2 (N7100) Galaxy Tab 2 10.1 (P51xx) Galaxy
Tab 2 7.0 (P31xx) Galaxy Tab 2 10.1 (P51xx) Galaxy Tab 2 10.1
(P51xx) Uncompleted devices GTA04 Unmaintained devices
Dream/Magic Nexus One
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 54/105
https://www.tizen.org/
Mobile + Wearable + TV + IVI
https://source.tizen.org/
https://www.tizen.org/about/about-linux-foundation
Android + HTLM5 +Jquery + Bada + Cordova + River Trail
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 55/105
https://cordova.apache.org/
Fonte: Loiane Groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 56/105
Fonte: Loiane Groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 57/105
Fonte: Loiane Groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 58/105
Fonte: Loiane Groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 59/105
Fonte: Loiane Groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 60/105
Fonte: Loiane Groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 61/105
Fonte: Loiane Groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 62/105
Fonte: Loiane Groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 63/105
https://cordova.apache.org/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 64/105
https://cordova.apache.org/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 65/105
https://cordova.apache.org/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 66/105
https://cordova.apache.org/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 67/105
https://cordova.apache.org/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 68/105
jQuery é uma biblioteca JavaScript cross-browser desenvolvida
para simplificar os scripts client side que interagem com o HTML.
[1] … Usada por cerca de 77% dos 10 mil sites mais visitados do
mundo, jQuery é a mais popular das bibliotecas JavaScript.[2]
[3] ... A sintaxe do jQuery foi desenvolvida para tornar mais
simples a navegação do documento HTML, a seleção de
elementos DOM, criar animações, manipular eventos e
desenvolver aplicações AJAX. A biblioteca também oferece a
possibilidade de criação de plugins sobre ela. Fazendo uso de tais
facilidades, os desenvolvedores podem criar camadas de
abstração para interações de mais baixo nível, simplificando o
desenvolvimento de aplicações web dinâmicas de grande
complexidade.
https://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 69/105
Ajax (acrônimo em língua inglesa de Asynchronous Javascript and
XML[1] , em português "Javascript e XML Assíncrono") é o uso
metodológico de tecnologias como Javascript e XML, providas por
navegadores, para tornar páginas Web mais interativas com o
usuário, utilizando-se de solicitações assíncronas de informações.
Foi inicialmente desenvolvida pelo estudioso Jessé James Garret
e mais tarde por diversas associações. Apesar do nome, a
utilização de XML não é obrigatória (JSON é frequentemente
utilizado) e as solicitações também não necessitam ser
assíncronas[2] .
https://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 70/105
JSON (com a pronúncia ['d ejz n], J-son em inglês, (Jay-son)), umʒ ə
acrônimo para "JavaScript Object Notation", é um formato leve para
intercâmbio de dados computacionais. JSON é um subconjunto da
notação de objeto de JavaScript, mas seu uso não requer JavaScript
exclusivamente.[1] [2] O formato JSON foi originalmente criado por
Douglas Crockford e é descrito no RFC 4627. O media-type oficial do
JSON é application/json e a extensão é .json.
A simplicidade de JSON tem resultado em seu uso difundido,
especialmente como uma alternativa para XML em AJAX. Uma das
vantagens reivindicadas de JSON sobre XML como um formato para
intercâmbio de dados neste contexto, é o fato de ser muito mais fácil
escrever um analisador JSON. Em JavaScript mesmo, JSON pode ser
analisado trivialmente usando a função eval(). Isto foi importante para a
aceitação de JSON dentro da comunidade AJAX devido a presença
deste recurso de JavaScript em todos os navegadores web atuais.
https://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 71/105
PhoneGap é uma plataforma para desenvolvimento de aplicativos
móveis em código aberto. Ela se utiliza da tecnologia Apache Cordova
para acessar a funções dos aparelhos móveis como acelerômetro,
câmera e geolocalização, e permite por meio de alguns que os
desenvolvedores criem aplicações utilizando HTML5, CSS3 e JavaScript
sem a necessidade de depender de APIs específicas. Os aplicativos
criados são compatíveis com iOS, Windows Phone e Android.
https://pt.wikipedia.org/wiki/PhoneGap
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 72/105
PhoneGap is Adobe’s productized version and ecosystem on top of
Cordova. Like PhoneGap, many other tools and frameworks are also
built on top of Cordova, including Ionic,[8] Monaca, TACO, the Intel XDK,
[9] and the Telerik Platform.[10] These tools use Cordova, and not
PhoneGap for their core tools.
Contributors to the Apache Cordova project include Adobe, BlackBerry,
Google, IBM, Intel, Microsoft, Mozilla, and others.[11]
https://en.wikipedia.org/wiki/Apache_Cordova
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 73/105
https://pt.wikipedia.org/wiki/PhoneGap
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 74/105
Dá até pra transformar site html5 -> app html5 -> app nativo :D
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 75/105
https://cordova.apache.org/docs/en/latest/config_ref/index.html
app/www/config.xml
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 76/105
www/index.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 77/105
apt-get install npn :)
https://nodejs.org/en/download/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 78/105
apt-get install npn :)
https://nodejs.org/en/download/
Fonte: Rodrigo Branas
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 79/105
apt-get install npn :)
https://nodejs.org/en/download/
Fonte: Rodrigo Branas
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 80/105
npm install -g cordova
cordova create hello com.example.hello HelloWorld
cordova platform add ios --save
cordova platform add android --save
cordova platform ls
cordova requirements
cordova build
cordova build ios
cordova build android
cordova emulate android
cordova run android
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 81/105
https://cordova.apache.org/plugins/ (1382 result(s) found)
cordova plugin search camera
cordova plugin add cordova-plugin-camera
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 82/105
https://cordova.apache.org/docs/en/latest/plugin_ref/plugman.html
npm install -g plugman
plugman install --platform <ios|android|blackberry10|wp8> --project
<directory> --plugin <name|url|path> [--plugins_dir <directory>] [--www
<directory>] [--variable <name>=<value> [--variable
<name>=<value> ...]]
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 83/105
https://netbeans.org/kb/docs/webclient/html5-gettingstarted_pt_BR.html
https://netbeans.org/kb/docs/webclient/cordova-
gettingstarted_pt_BR.html
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 84/105
npm install -g ionic
ionic start appnome blank
http://tableless.com.br/tutorial-ionic-meu-primeiro-app/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 85/105
http://www.cssreflex.com/2015/11/xamarin-vs-cordova-main-
counterpoints.html/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 86/105
Publicando Google Play
Criar e validar uma conta de desenvolvedor
https://play.google.com/apps/publish/signup/
Login com tua conta Google
Concordar e estar disposto a associar o meu registo de conta ao
Contrato de Distribuição para Programadores do Google Play.
Pagar 25 dolares
Enviar
https://play.google.com/apps/publish/ "Produção", "Beta" ou "Alfa"
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 87/105
Configurar testes Alfa/Beta na Google Play Developer Console
Enviar APK como Teste e vai pra testadores (até 20 listas de 2 mil)
As versões Beta abertas e fechadas do seu app não terão avaliações
públicas.
Google recomenda um Alfa fechado e um Beta aberto.
Fechado vai link via Google (CSV ou manual), Aberto na Google Play
“O relatório de pré-lançamento no seu Google Play Developer Console
identifica falhas, problemas de exibição e vulnerabilidades de
segurança.”
Versões novas em teste não derrubam a de produção.
Ainda tem lançamento gradual, via porcentagem aleatória
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 88/105
Fonte: Loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 89/105
Facilitando
http://fabricadeaplicativos.com.br/
http://www.appmachine.com/pt-pt/
http://www.apps-builder.com/pt/home
http://pt.goodbarber.com/
http://www.shoutem.com/
https://www.easyeasyapps.net/
http://webrobotapps.com/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 90/105
Mais links
http://appinventor.mit.edu/explore/
http://zeptojs.com/
http://handlebarsjs.com/
https://software.intel.com/pt-br/intel-xdk
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 91/105
Detalhes de divulgação da Google Play X Apple AppStore
Avaliações de todas as versões X Avaliações do app, atualizou zerou
Título com 30 caracteres X Título com 255 | keywords ambos
8 screenshots atualizáveis aloca X 5 screenshots só em nova versão
Mais texto e vídeo de minutos X Menores e 100 palavras chave
Pagou entrou X Pagou, revisam e ai entram
~Maioria grátis X ~Maioria pago (90% entre US$ 0,99 e 1,99)
Maioria usuários BRICS X Maioria US
Mais downloads X Mais rentabilidade
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 92/105
http://corporate.canaltech.com.br/noticia/desenvolvedores/quanto-os-
desenvolvedores-ganham-por-cada-aplicativo-criado-9931/
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 93/105
http://www.w3schools.com/html/html5_intro.asp
HTML5 API's (Application Programming Interfaces)
HTML Geolocation
HTML Drag and Drop
HTML Local Storage
HTML Application Cache
HTML Web Workers
HTML SSE
HTML5 Elements
semantic elements like <header>, <footer>, <article>, and <section>.
form control attributes like number, date, time, calendar, and range.
graphic elements: <svg> and <canvas>.
multimedia elements: <audio> and <video>.
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 94/105
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
</head>
<body>
Content of the document......
</body>
</html>
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 95/105
<!DOCTYPE html>
<html>
<head>
<script>document.createElement("myHero")</script>
<style>
myHero {
display: block;
background-color: #dddddd;
padding: 50px;
font-size: 30px;
}
</style>
</head>
<body>
<h1>A Heading</h1>
<p>A paragraph.</p>
<myHero>My Hero Element</myHero>
</body>
</html>
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 96/105
Acceleration
function onSuccess(acceleration) {
alert('Acceleration X: ' + acceleration.x + 'n' +
'Acceleration Y: ' + acceleration.y + 'n' +
'Acceleration Z: ' + acceleration.z + 'n' +
'Timestamp: ' + acceleration.timestamp + 'n');
};
!
function onError() {
alert('onError!');
};
!
navigator.accelerometer.getCurrentAcceleration(onSuccess,
onError);
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 97/105
Capturar Foto
function capturePhoto() {
navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
destinationType: destinationType.DATA_URL });
}
Capturar Foto com Edição
function capturePhotoEdit() {
navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20,
allowEdit: true,
destinationType: destinationType.DATA_URL });
}
Busca Foto do Dispositivo
function getPhoto(source) {
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
destinationType: destinationType.FILE_URI,
sourceType: source });
}
<button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">Biblioteca</button><br>
<button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">Album de Fotos</button>
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 98/105
Compass/Bússula
function onSuccess(heading) {
alert('Heading: ' + heading.magneticHeading);
};
!
function onError(error) {
alert('CompassError: ' + error.code);
};
!
navigator.compass.getCurrentHeading(onSuccess, onError);
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 99/105
Conexão
function checkConnection() {
var networkState = navigator.connection.type;
!
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
!
alert('Connection type: ' + states[networkState]);
}
!
checkConnection();
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 100/105
Propriedades do Dispositivo
function onDeviceReady() {
var element = document.getElementById('deviceProperties');
!
element.innerHTML = 'Device Name: ' + device.name + '<br />' +
'Device Cordova: ' + device.cordova + '<br />' +
'Device Platform: ' + device.platform + '<br />' +
'Device UUID: ' + device.uuid + '<br />' +
'Device Model: ' + device.model + '<br />' +
'Device Version: ' + device.version + '<br />';
}
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 101/105
In App Browser
var ref = window.open('http://loiane.com', '_blank', 'location=yes');
ref.addEventListener('loadstart', function() { alert('start: ' + event.url); });
ref.addEventListener('loadstop', function() { alert('stop: ' + event.url); });
ref.addEventListener('exit', function() { alert(event.type); });
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 102/105
Notification - Alert
navigator.notification.alert(
'Alerta!', // message
alertDismissed,
// callback
'Titulo',
// title
'Botão'
// buttonName
);
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 103/105
Notification - Confirm
function showConfirm() {
navigator.notification.confirm(
'Confirmar?', // message
onConfirm,
// callback to invoke with index of button pressed
'Titulo',
// title
'OK,Cancel'
// buttonLabels
);
}
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 104/105
Notification - Beep
// Beepa 3 vezes
function playBeep() {
navigator.notification.beep(3);
}
Não funciona no iOS
fonte: loiane groner
CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 105/105
Notification - Vibrar
// Vibra por 2 segundos
function vibrate() {
navigator.notification.vibrate(2000);
}
fonte: loiane groner

More Related Content

Viewers also liked

Adobe phonegap / Cordova API
Adobe phonegap / Cordova APIAdobe phonegap / Cordova API
Adobe phonegap / Cordova APIYamil Lambert
 
Sistemas Operativos Moviles, Android y IOs
Sistemas Operativos Moviles, Android y IOsSistemas Operativos Moviles, Android y IOs
Sistemas Operativos Moviles, Android y IOsJesus Jimenez
 
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Wennder Santos
 
Sistemas Operativos Moviles
Sistemas Operativos MovilesSistemas Operativos Moviles
Sistemas Operativos MovilesFacilitador -Tic
 
Phonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationPhonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationMuhammad Hakim A
 
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicCurso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicFelipe Blini
 
Coresic2016 - Desarrollo de aplicaciones Multiplataforma con Visual Studio
Coresic2016 - Desarrollo de aplicaciones Multiplataforma con Visual StudioCoresic2016 - Desarrollo de aplicaciones Multiplataforma con Visual Studio
Coresic2016 - Desarrollo de aplicaciones Multiplataforma con Visual StudioMoises Alexander Salazar Vila
 

Viewers also liked (8)

Adobe phonegap / Cordova API
Adobe phonegap / Cordova APIAdobe phonegap / Cordova API
Adobe phonegap / Cordova API
 
Herramientas para Desarrollo de Aplicaciones Moviles
Herramientas para Desarrollo de Aplicaciones MovilesHerramientas para Desarrollo de Aplicaciones Moviles
Herramientas para Desarrollo de Aplicaciones Moviles
 
Sistemas Operativos Moviles, Android y IOs
Sistemas Operativos Moviles, Android y IOsSistemas Operativos Moviles, Android y IOs
Sistemas Operativos Moviles, Android y IOs
 
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
 
Sistemas Operativos Moviles
Sistemas Operativos MovilesSistemas Operativos Moviles
Sistemas Operativos Moviles
 
Phonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationPhonegap/Cordova vs Native Application
Phonegap/Cordova vs Native Application
 
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicCurso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
 
Coresic2016 - Desarrollo de aplicaciones Multiplataforma con Visual Studio
Coresic2016 - Desarrollo de aplicaciones Multiplataforma con Visual StudioCoresic2016 - Desarrollo de aplicaciones Multiplataforma con Visual Studio
Coresic2016 - Desarrollo de aplicaciones Multiplataforma con Visual Studio
 

Similar to Apps Android e Hibridas

Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livreelliando dias
 
Open Social + Perguntas
Open Social + PerguntasOpen Social + Perguntas
Open Social + Perguntasdmaiavieira
 
Oficina inpe sadeck
Oficina inpe sadeckOficina inpe sadeck
Oficina inpe sadeckLuis Sadeck
 
Primeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor androidPrimeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor androidMessias Batista
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portaisFelipe Perin
 
Apresentação realidade aumentada para aplicações web e mobile
Apresentação   realidade aumentada para aplicações web e mobileApresentação   realidade aumentada para aplicações web e mobile
Apresentação realidade aumentada para aplicações web e mobileRWTH Aachen University
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4Jose Berardo
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPRamon Ribeiro Rabello
 
Desenvolvimento Mobile Web & Software Livre - Flisol cg
Desenvolvimento Mobile Web & Software Livre - Flisol cgDesenvolvimento Mobile Web & Software Livre - Flisol cg
Desenvolvimento Mobile Web & Software Livre - Flisol cgBruno Fernandes "PorKaria"
 
Solução web de scrum para o apoio a comunicação entre equipes remotas
Solução web de scrum para o apoio a  comunicação entre equipes remotasSolução web de scrum para o apoio a  comunicação entre equipes remotas
Solução web de scrum para o apoio a comunicação entre equipes remotasfelipe bastosweb
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3Fabrício Basto
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Alvaro Viebrantz
 

Similar to Apps Android e Hibridas (20)

Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
 
Open Social + Perguntas
Open Social + PerguntasOpen Social + Perguntas
Open Social + Perguntas
 
Oficina inpe sadeck
Oficina inpe sadeckOficina inpe sadeck
Oficina inpe sadeck
 
Primeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor androidPrimeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor android
 
Open Social
Open SocialOpen Social
Open Social
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portais
 
Apresentação realidade aumentada para aplicações web e mobile
Apresentação   realidade aumentada para aplicações web e mobileApresentação   realidade aumentada para aplicações web e mobile
Apresentação realidade aumentada para aplicações web e mobile
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
Desenvolvimento Mobile Web & Software Livre - Flisol cg
Desenvolvimento Mobile Web & Software Livre - Flisol cgDesenvolvimento Mobile Web & Software Livre - Flisol cg
Desenvolvimento Mobile Web & Software Livre - Flisol cg
 
Solução web de scrum para o apoio a comunicação entre equipes remotas
Solução web de scrum para o apoio a  comunicação entre equipes remotasSolução web de scrum para o apoio a  comunicação entre equipes remotas
Solução web de scrum para o apoio a comunicação entre equipes remotas
 
Desenvolvimento Mobile Web e o PHP
Desenvolvimento Mobile Web e o PHPDesenvolvimento Mobile Web e o PHP
Desenvolvimento Mobile Web e o PHP
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Explicando um monte de coisa
Explicando um monte de coisaExplicando um monte de coisa
Explicando um monte de coisa
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
slidesuab
slidesuabslidesuab
slidesuab
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces
 
Palestra
PalestraPalestra
Palestra
 

More from Luiz Henrique Rauber Rodrigues

Meus 7 anos no Tchelinux. Pq entrei? Q ganhei? E algumas dicas
Meus 7 anos no Tchelinux. Pq entrei? Q ganhei? E algumas dicasMeus 7 anos no Tchelinux. Pq entrei? Q ganhei? E algumas dicas
Meus 7 anos no Tchelinux. Pq entrei? Q ganhei? E algumas dicasLuiz Henrique Rauber Rodrigues
 
Pelo empoderamento do Hacker/ Maker/ Educador e Nerds afins!
Pelo empoderamento do Hacker/ Maker/ Educador e Nerds afins!Pelo empoderamento do Hacker/ Maker/ Educador e Nerds afins!
Pelo empoderamento do Hacker/ Maker/ Educador e Nerds afins!Luiz Henrique Rauber Rodrigues
 
De Hackerspaces a Comunidades, e como participo disto?
De Hackerspaces a Comunidades, e como participo disto?De Hackerspaces a Comunidades, e como participo disto?
De Hackerspaces a Comunidades, e como participo disto?Luiz Henrique Rauber Rodrigues
 
ENSINO DE LÓGICA DE PROGRAMAÇÃO À CRIANÇAS DO 5o ANO DA ESCOLA DA URI, UTILIZ...
ENSINO DE LÓGICA DE PROGRAMAÇÃO À CRIANÇAS DO 5o ANO DA ESCOLA DA URI, UTILIZ...ENSINO DE LÓGICA DE PROGRAMAÇÃO À CRIANÇAS DO 5o ANO DA ESCOLA DA URI, UTILIZ...
ENSINO DE LÓGICA DE PROGRAMAÇÃO À CRIANÇAS DO 5o ANO DA ESCOLA DA URI, UTILIZ...Luiz Henrique Rauber Rodrigues
 
Vendo o óbvio do não óbvio do Python imediatamente!
Vendo o óbvio do não óbvio do Python imediatamente!Vendo o óbvio do não óbvio do Python imediatamente!
Vendo o óbvio do não óbvio do Python imediatamente!Luiz Henrique Rauber Rodrigues
 
Da Academia ao Mercado de Trabalho passando por Eventos e Hackerspaces - FGSL...
Da Academia ao Mercado de Trabalho passando por Eventos e Hackerspaces - FGSL...Da Academia ao Mercado de Trabalho passando por Eventos e Hackerspaces - FGSL...
Da Academia ao Mercado de Trabalho passando por Eventos e Hackerspaces - FGSL...Luiz Henrique Rauber Rodrigues
 
Interações Software Livre/ Mercado/ Academia/ Escola/ Jogos
Interações Software Livre/ Mercado/ Academia/ Escola/ JogosInterações Software Livre/ Mercado/ Academia/ Escola/ Jogos
Interações Software Livre/ Mercado/ Academia/ Escola/ JogosLuiz Henrique Rauber Rodrigues
 
Na busca da cura do câncer com o OpenSource Cytoscape (Bioinformática)
Na busca da cura do câncer com o OpenSource Cytoscape (Bioinformática)Na busca da cura do câncer com o OpenSource Cytoscape (Bioinformática)
Na busca da cura do câncer com o OpenSource Cytoscape (Bioinformática)Luiz Henrique Rauber Rodrigues
 
Explore o que os outros não exploram do LibreOffice na sua escola/ universidade
Explore o que os outros não exploram do LibreOffice na sua escola/ universidadeExplore o que os outros não exploram do LibreOffice na sua escola/ universidade
Explore o que os outros não exploram do LibreOffice na sua escola/ universidadeLuiz Henrique Rauber Rodrigues
 

More from Luiz Henrique Rauber Rodrigues (20)

Meus 7 anos no Tchelinux. Pq entrei? Q ganhei? E algumas dicas
Meus 7 anos no Tchelinux. Pq entrei? Q ganhei? E algumas dicasMeus 7 anos no Tchelinux. Pq entrei? Q ganhei? E algumas dicas
Meus 7 anos no Tchelinux. Pq entrei? Q ganhei? E algumas dicas
 
Pelo empoderamento do Hacker/ Maker/ Educador e Nerds afins!
Pelo empoderamento do Hacker/ Maker/ Educador e Nerds afins!Pelo empoderamento do Hacker/ Maker/ Educador e Nerds afins!
Pelo empoderamento do Hacker/ Maker/ Educador e Nerds afins!
 
PHP e WordPress
PHP e WordPressPHP e WordPress
PHP e WordPress
 
Plataforma e Lingaguem Java + Swing
Plataforma e Lingaguem Java + SwingPlataforma e Lingaguem Java + Swing
Plataforma e Lingaguem Java + Swing
 
.Net (dotnet) e C# (csharp)
.Net (dotnet) e C# (csharp).Net (dotnet) e C# (csharp)
.Net (dotnet) e C# (csharp)
 
De Hackerspaces a Comunidades, e como participo disto?
De Hackerspaces a Comunidades, e como participo disto?De Hackerspaces a Comunidades, e como participo disto?
De Hackerspaces a Comunidades, e como participo disto?
 
Hackerspaces e Makerspaces, e tu com isso?
Hackerspaces e Makerspaces, e tu com isso?Hackerspaces e Makerspaces, e tu com isso?
Hackerspaces e Makerspaces, e tu com isso?
 
Pequenos hackers: Programação para as crianças!
Pequenos hackers: Programação para as crianças!Pequenos hackers: Programação para as crianças!
Pequenos hackers: Programação para as crianças!
 
ENSINO DE LÓGICA DE PROGRAMAÇÃO À CRIANÇAS DO 5o ANO DA ESCOLA DA URI, UTILIZ...
ENSINO DE LÓGICA DE PROGRAMAÇÃO À CRIANÇAS DO 5o ANO DA ESCOLA DA URI, UTILIZ...ENSINO DE LÓGICA DE PROGRAMAÇÃO À CRIANÇAS DO 5o ANO DA ESCOLA DA URI, UTILIZ...
ENSINO DE LÓGICA DE PROGRAMAÇÃO À CRIANÇAS DO 5o ANO DA ESCOLA DA URI, UTILIZ...
 
Dá para ganhar dinheiro com Software Livre?
Dá para ganhar dinheiro com Software Livre?Dá para ganhar dinheiro com Software Livre?
Dá para ganhar dinheiro com Software Livre?
 
Vendo o óbvio do não óbvio do Python imediatamente!
Vendo o óbvio do não óbvio do Python imediatamente!Vendo o óbvio do não óbvio do Python imediatamente!
Vendo o óbvio do não óbvio do Python imediatamente!
 
Da Academia ao Mercado de Trabalho passando por Eventos e Hackerspaces - FGSL...
Da Academia ao Mercado de Trabalho passando por Eventos e Hackerspaces - FGSL...Da Academia ao Mercado de Trabalho passando por Eventos e Hackerspaces - FGSL...
Da Academia ao Mercado de Trabalho passando por Eventos e Hackerspaces - FGSL...
 
Participa emrede
Participa emredeParticipa emrede
Participa emrede
 
Interações Software Livre/ Mercado/ Academia/ Escola/ Jogos
Interações Software Livre/ Mercado/ Academia/ Escola/ JogosInterações Software Livre/ Mercado/ Academia/ Escola/ Jogos
Interações Software Livre/ Mercado/ Academia/ Escola/ Jogos
 
Na busca da cura do câncer com o OpenSource Cytoscape (Bioinformática)
Na busca da cura do câncer com o OpenSource Cytoscape (Bioinformática)Na busca da cura do câncer com o OpenSource Cytoscape (Bioinformática)
Na busca da cura do câncer com o OpenSource Cytoscape (Bioinformática)
 
Explore o que os outros não exploram do LibreOffice na sua escola/ universidade
Explore o que os outros não exploram do LibreOffice na sua escola/ universidadeExplore o que os outros não exploram do LibreOffice na sua escola/ universidade
Explore o que os outros não exploram do LibreOffice na sua escola/ universidade
 
Ti verde sem mimimi, vamos é economizar dinheiro
Ti verde sem mimimi, vamos é economizar dinheiroTi verde sem mimimi, vamos é economizar dinheiro
Ti verde sem mimimi, vamos é economizar dinheiro
 
Busonme brief
Busonme briefBusonme brief
Busonme brief
 
Oficio Patrocinador Tchelinux
Oficio Patrocinador TchelinuxOficio Patrocinador Tchelinux
Oficio Patrocinador Tchelinux
 
TCC Especialização Gerenciamento de Projetos
TCC Especialização Gerenciamento de ProjetosTCC Especialização Gerenciamento de Projetos
TCC Especialização Gerenciamento de Projetos
 

Recently uploaded

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 

Recently uploaded (8)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 

Apps Android e Hibridas

  • 1. Apps Android e Hibridas 16 horas de explanação, diálogo e prática Julho 2016 por Luiz Henrique Rauber Rodrigues luizrauber@gmail.com - fb.com/luizrauber Exceto onde tiver outra referência, este material é Creative Commons com Atribuição-CompartilhaIgual (CC BY-SA). Pode copiar, alterar e redistribuir à vontade, mesmo para fins comerciais, mas desde que me cite e licenciem as novas criações sob termos idênticos. Like Free Software :)
  • 2. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 2/105 Mas primeiro…. Conselhos Richard Feynman (1918-1988), Nobel de Física em 1965 2 tipos de sabedoria: “Saber o nome de algo” e o “Saber algo” 1) Escolha um conceito; tema ou objetivo do que quer saber 2) Escreva-o como se estivesse ensinando uma criança; nada subentendido 3) Volte no tema e pesquise sobre ele; especifique o 1-2 da forma 2) 4) Revise e simplifique ainda mais; sem jargões e sabendo usar analogias http://www.bbc.com/portuguese/geral-36750825
  • 3. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 3/105 Manifesto para o desenvolvimento ágil de software Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar: Indivíduos e interação entre eles mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda. http://www.manifestoagil.com.br/
  • 4. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 4/105 Coding Dojo - Turma 2015-2016 – Tec Informática Senac
  • 5. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 5/105 O quê? Onde? Como?
  • 6. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 6/105 Touchscreem Resistivo/ Capacitivo Sensores internos e acopláveis SO parcialmente opensource Versões por Google e por fabricantes Intergração serviços Google “Apps” via Google Play/ Lojas Terceiros/ .apk numa sandbox SDK padrão e com o QEMU
  • 7. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 7/105
  • 8. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 8/105
  • 9. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 9/105 Go https://www.android.com/intl/pt-BR_br/
  • 10. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 10/105 Aprofundando SILBERCHATZ, 2013 Android/Linux Java - JVM Multithread Sai swap entra application state ...
  • 11. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 11/105http://source.android.com/source/index.html
  • 12. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 12/105 Mais (ou menos) em https://www.android.com/intl/pt-BR_br/history/
  • 13. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 13/105 https://developer.android.com
  • 14. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 14/105
  • 15. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 15/105
  • 16. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 16/105 javac -version http://www.oracle.com/technetwork/java/javase/downloads/jdk8- downloads-2133151.html android-studio/bin/studio.sh dependências lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6 Bora instalar? (Enquanto isso, mais teoria)
  • 17. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 17/105 2005 – comprou startup Android, Inc. (SO para câmeras) 2006 – Protótipo “Sooner” mirando em BlackBerry 2007 – Mirarão no IPhone* 2007 – Fundação Open Handset Alliance (Google, HTC, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung, LG, T-Mobile, Nvidia… https://pt.wikipedia.org/wiki/Open_Handset_Alliance) 2007 – Primeira SDK para desenvolver Android 2007 – Google registrou várias patentes sobre smartphone
  • 18. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 18/105 2008 – HTC Dream/ T-Mobile G/ G1 com Android 2010 – Linha Nexus (HTC, Samsung, LG, Asus, Motorola)
  • 19. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 19/105 http://www.androidpit.com.br/evolucao-dos-smartphones-a-linha-nexus
  • 20. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 20/105
  • 21. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 21/105 http://www.gadgetdetail.com/androi d-version-market-share- distribution/
  • 22. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 22/105 http://www.gadgetdetail.com/androi d-version-market-share- distribution/
  • 23. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 23/105 http://www.for bes.com/sites/ eladnatanson/ 2016/06/06/br eaking-the- android-ios- duopoly-will- android-and- ios-ever-get- a-serious- third- competitor/#e 62c5104cad0
  • 24. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 24/105 http://www.for bes.com/sites/ eladnatanson/ 2016/06/06/br eaking-the- android-ios- duopoly-will- android-and- ios-ever-get- a-serious- third- competitor/#e 62c5104cad0
  • 25. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 25/105
  • 26. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 26/105 https://github.com/googlesamples/
  • 27. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 27/105
  • 28. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 28/105
  • 29. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 29/105 fonte: developer.android.com
  • 30. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 30/105 Resumo de https://developer.android.com/guide/components/fundamentals.html
  • 31. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 31/105 Os “aplicativos” são feitos na linguagem Java. Para desenvolver é necessário o SDK Android que compila e gera um Android Package (.apk).
  • 32. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 32/105 Os “apps” são adaptáveis em “tempo de execução” a vários tamanhos de telas, se tiver vários XML de layout de tela, e configurações de hardware (como presença/ ausência giroscópio, câmera, gps…).
  • 33. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 33/105 Cada “apps” rodando tem um ID de processo diferente sobre o Linux e um JVM própria, por isso isolando os componentes e evitando conflito de apps (princípio do privilégio mínimo).
  • 34. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 34/105 Os “apps” são baseados e desenvolvidos orientados à “componentes”, definidos como subclasses, que podem trabalhar individualmente ou em conjunto, e a conexão de componentes é por “intenção”.
  • 35. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 35/105 O sistema operacional e os padrões de desenvolvimento, idealizam o reaproveitamento de componentes, evitando redundância.
  • 36. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 36/105 Quando um aplicativo requer o uso de um recurso, e já existe um componente que pode entregar este recurso, o aplicativo, via componente, envia uma intenção de uso ao Android solicitando o recurso de um outro componente, se havendo a possilibidade, o recurso é entregue.
  • 37. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 37/105 As intenções por padrão são implícitas, sem definir qual mas sim quais tipos de componentes lhe são úteis. Assim se uma aplicação pede um recurso, e se existente mais de um componente que pode entregar tal recurso, o usuário seleciona qual “aplicação” que irá usar pra entregar o recurso a aplicação inicial.
  • 38. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 38/105 As “comunicações” entre componentes são em “tempo de execução”, via processos individuais, e direcionadas a um componente em específico ou só ao tipo dele via intenções. +https://developer.android.com/guide/components/intents-filters.html
  • 39. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 39/105 4 tipos de componentes, sendo os 3 primeiros ativados por object intent, o outro pode ser 1 por aplicativo*
  • 40. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 40/105 4.1 Activity: foca na interação com o usuário, logo a interface de cada de ação. Um único app pode ter vários componentes de atividades, que podem ser compartilhadas (entre sí ou outros apps).
  • 41. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 41/105 4.2 Service: realiza a entrega para o usuário, sem a necessidade de uma interface diretamente. Roda em background (segundo plano) podendo manter-se ou não vinculada a uma atividade e/ou se ligar a outras que sejam iniciadas posteriormente. +https://developer.android.com/guide/components/services.html
  • 42. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 42/105 4.3 BroadcastReceiver: Fazem as notificações internamente no Android, enviando ou recebendo dados para uma mesma, ou outra aplicação, de acordo com alguma condição. Podem ou não, gerar notificação para o usuário. Sempre vinculado a outros componentes.
  • 43. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 43/105 4.4 ContentProvider: Compartilham e gerenciam o conteúdo do aplicativo, lendo e gravando dados no local de persistência indicado (dado, SQLite, cartão, nuvem…) +https://developer.android.com/guide/topics/providers/content- providers.html
  • 44. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 44/105 Todo aplicativo Android tem o AndroidManifest.xml, onde estão informados as compatibilidades de dispositivos, recursos externos necessários pra execução, definições e requisitos dos aplicativos que também devem ser mencionados ao “publicar” algo em uma loja de aplicativos...
  • 45. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 45/105 … e lista todos os componentes necessários pra aplicação funcionar, indexando tipos, intenções e portanto é lido a cada chamada ao aplicativo ou a um componente para verificar se o mesmo é necessário.
  • 46. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 46/105 Também lista e identifica: os usuários e permissões, as API e seus níveis (versões Android) com suas respectivas bibliotecas, os recursos de hardware e software necessários, outras informações pertinentes como versão, desenvolver, licença…
  • 47. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 47/105 … e por fim Escalonamento padrão é pilha, setado através das indentações nas Activities, sendo uma destas a “principal” que substitui a ideia de um procedimento “main”.
  • 48. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 48/105 E ai do mundo Atenção a API Level, tamanho de tela e recursos (hw, sw, língua) Mesma aplicação pode dar suporte a estes tipos, reconhecendo em run-time as especificações do app, mas tem que estar res/ Ciclo de vida da atividade é importante https://developer.android.com/training/basics/activity- lifecycle/index.html (tá pt_br)
  • 49. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 49/105 Ciclo de vida da atividade é importante https://developer.android.com/training/basics/activity-lifecycle/index.html (tá pt_br)
  • 50. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 50/105 Tutorial Introdução https://developer.android.com/training/basics/firstapp/index.html
  • 51. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 51/105 Tutorial Fragmentos https://developer.android.com/training/basics/fragments/index.html
  • 52. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 52/105 http://www.cyanogenmod.org/ +400 modelos https://wiki.cyanogenmod.org/w/About https://wiki.cyanogenmod.org/w/Main_Page
  • 53. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 53/105 http://www.replicant.us/ Nexus S (I902x) Galaxy S (I9000) Galaxy S 2 (I9100) Galaxy Note (N7000) Galaxy Nexus (I9250) Galaxy S 3 (I9300) Galaxy Note (N7000) Galaxy Note 2 (N7100) Galaxy Tab 2 10.1 (P51xx) Galaxy Tab 2 7.0 (P31xx) Galaxy Tab 2 10.1 (P51xx) Galaxy Tab 2 10.1 (P51xx) Uncompleted devices GTA04 Unmaintained devices Dream/Magic Nexus One
  • 54. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 54/105 https://www.tizen.org/ Mobile + Wearable + TV + IVI https://source.tizen.org/ https://www.tizen.org/about/about-linux-foundation Android + HTLM5 +Jquery + Bada + Cordova + River Trail
  • 55. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 55/105 https://cordova.apache.org/ Fonte: Loiane Groner
  • 56. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 56/105 Fonte: Loiane Groner
  • 57. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 57/105 Fonte: Loiane Groner
  • 58. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 58/105 Fonte: Loiane Groner
  • 59. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 59/105 Fonte: Loiane Groner
  • 60. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 60/105 Fonte: Loiane Groner
  • 61. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 61/105 Fonte: Loiane Groner
  • 62. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 62/105 Fonte: Loiane Groner
  • 63. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 63/105 https://cordova.apache.org/
  • 64. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 64/105 https://cordova.apache.org/
  • 65. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 65/105 https://cordova.apache.org/
  • 66. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 66/105 https://cordova.apache.org/
  • 67. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 67/105 https://cordova.apache.org/
  • 68. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 68/105 jQuery é uma biblioteca JavaScript cross-browser desenvolvida para simplificar os scripts client side que interagem com o HTML. [1] … Usada por cerca de 77% dos 10 mil sites mais visitados do mundo, jQuery é a mais popular das bibliotecas JavaScript.[2] [3] ... A sintaxe do jQuery foi desenvolvida para tornar mais simples a navegação do documento HTML, a seleção de elementos DOM, criar animações, manipular eventos e desenvolver aplicações AJAX. A biblioteca também oferece a possibilidade de criação de plugins sobre ela. Fazendo uso de tais facilidades, os desenvolvedores podem criar camadas de abstração para interações de mais baixo nível, simplificando o desenvolvimento de aplicações web dinâmicas de grande complexidade. https://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
  • 69. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 69/105 Ajax (acrônimo em língua inglesa de Asynchronous Javascript and XML[1] , em português "Javascript e XML Assíncrono") é o uso metodológico de tecnologias como Javascript e XML, providas por navegadores, para tornar páginas Web mais interativas com o usuário, utilizando-se de solicitações assíncronas de informações. Foi inicialmente desenvolvida pelo estudioso Jessé James Garret e mais tarde por diversas associações. Apesar do nome, a utilização de XML não é obrigatória (JSON é frequentemente utilizado) e as solicitações também não necessitam ser assíncronas[2] . https://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
  • 70. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 70/105 JSON (com a pronúncia ['d ejz n], J-son em inglês, (Jay-son)), umʒ ə acrônimo para "JavaScript Object Notation", é um formato leve para intercâmbio de dados computacionais. JSON é um subconjunto da notação de objeto de JavaScript, mas seu uso não requer JavaScript exclusivamente.[1] [2] O formato JSON foi originalmente criado por Douglas Crockford e é descrito no RFC 4627. O media-type oficial do JSON é application/json e a extensão é .json. A simplicidade de JSON tem resultado em seu uso difundido, especialmente como uma alternativa para XML em AJAX. Uma das vantagens reivindicadas de JSON sobre XML como um formato para intercâmbio de dados neste contexto, é o fato de ser muito mais fácil escrever um analisador JSON. Em JavaScript mesmo, JSON pode ser analisado trivialmente usando a função eval(). Isto foi importante para a aceitação de JSON dentro da comunidade AJAX devido a presença deste recurso de JavaScript em todos os navegadores web atuais. https://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)
  • 71. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 71/105 PhoneGap é uma plataforma para desenvolvimento de aplicativos móveis em código aberto. Ela se utiliza da tecnologia Apache Cordova para acessar a funções dos aparelhos móveis como acelerômetro, câmera e geolocalização, e permite por meio de alguns que os desenvolvedores criem aplicações utilizando HTML5, CSS3 e JavaScript sem a necessidade de depender de APIs específicas. Os aplicativos criados são compatíveis com iOS, Windows Phone e Android. https://pt.wikipedia.org/wiki/PhoneGap
  • 72. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 72/105 PhoneGap is Adobe’s productized version and ecosystem on top of Cordova. Like PhoneGap, many other tools and frameworks are also built on top of Cordova, including Ionic,[8] Monaca, TACO, the Intel XDK, [9] and the Telerik Platform.[10] These tools use Cordova, and not PhoneGap for their core tools. Contributors to the Apache Cordova project include Adobe, BlackBerry, Google, IBM, Intel, Microsoft, Mozilla, and others.[11] https://en.wikipedia.org/wiki/Apache_Cordova
  • 73. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 73/105 https://pt.wikipedia.org/wiki/PhoneGap
  • 74. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 74/105 Dá até pra transformar site html5 -> app html5 -> app nativo :D
  • 75. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 75/105 https://cordova.apache.org/docs/en/latest/config_ref/index.html app/www/config.xml
  • 76. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 76/105 www/index.html
  • 77. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 77/105 apt-get install npn :) https://nodejs.org/en/download/
  • 78. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 78/105 apt-get install npn :) https://nodejs.org/en/download/ Fonte: Rodrigo Branas
  • 79. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 79/105 apt-get install npn :) https://nodejs.org/en/download/ Fonte: Rodrigo Branas
  • 80. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 80/105 npm install -g cordova cordova create hello com.example.hello HelloWorld cordova platform add ios --save cordova platform add android --save cordova platform ls cordova requirements cordova build cordova build ios cordova build android cordova emulate android cordova run android
  • 81. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 81/105 https://cordova.apache.org/plugins/ (1382 result(s) found) cordova plugin search camera cordova plugin add cordova-plugin-camera
  • 82. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 82/105 https://cordova.apache.org/docs/en/latest/plugin_ref/plugman.html npm install -g plugman plugman install --platform <ios|android|blackberry10|wp8> --project <directory> --plugin <name|url|path> [--plugins_dir <directory>] [--www <directory>] [--variable <name>=<value> [--variable <name>=<value> ...]]
  • 83. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 83/105 https://netbeans.org/kb/docs/webclient/html5-gettingstarted_pt_BR.html https://netbeans.org/kb/docs/webclient/cordova- gettingstarted_pt_BR.html
  • 84. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 84/105 npm install -g ionic ionic start appnome blank http://tableless.com.br/tutorial-ionic-meu-primeiro-app/
  • 85. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 85/105 http://www.cssreflex.com/2015/11/xamarin-vs-cordova-main- counterpoints.html/
  • 86. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 86/105 Publicando Google Play Criar e validar uma conta de desenvolvedor https://play.google.com/apps/publish/signup/ Login com tua conta Google Concordar e estar disposto a associar o meu registo de conta ao Contrato de Distribuição para Programadores do Google Play. Pagar 25 dolares Enviar https://play.google.com/apps/publish/ "Produção", "Beta" ou "Alfa"
  • 87. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 87/105 Configurar testes Alfa/Beta na Google Play Developer Console Enviar APK como Teste e vai pra testadores (até 20 listas de 2 mil) As versões Beta abertas e fechadas do seu app não terão avaliações públicas. Google recomenda um Alfa fechado e um Beta aberto. Fechado vai link via Google (CSV ou manual), Aberto na Google Play “O relatório de pré-lançamento no seu Google Play Developer Console identifica falhas, problemas de exibição e vulnerabilidades de segurança.” Versões novas em teste não derrubam a de produção. Ainda tem lançamento gradual, via porcentagem aleatória
  • 88. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 88/105 Fonte: Loiane groner
  • 89. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 89/105 Facilitando http://fabricadeaplicativos.com.br/ http://www.appmachine.com/pt-pt/ http://www.apps-builder.com/pt/home http://pt.goodbarber.com/ http://www.shoutem.com/ https://www.easyeasyapps.net/ http://webrobotapps.com/
  • 90. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 90/105 Mais links http://appinventor.mit.edu/explore/ http://zeptojs.com/ http://handlebarsjs.com/ https://software.intel.com/pt-br/intel-xdk
  • 91. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 91/105 Detalhes de divulgação da Google Play X Apple AppStore Avaliações de todas as versões X Avaliações do app, atualizou zerou Título com 30 caracteres X Título com 255 | keywords ambos 8 screenshots atualizáveis aloca X 5 screenshots só em nova versão Mais texto e vídeo de minutos X Menores e 100 palavras chave Pagou entrou X Pagou, revisam e ai entram ~Maioria grátis X ~Maioria pago (90% entre US$ 0,99 e 1,99) Maioria usuários BRICS X Maioria US Mais downloads X Mais rentabilidade
  • 92. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 92/105 http://corporate.canaltech.com.br/noticia/desenvolvedores/quanto-os- desenvolvedores-ganham-por-cada-aplicativo-criado-9931/
  • 93. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 93/105 http://www.w3schools.com/html/html5_intro.asp HTML5 API's (Application Programming Interfaces) HTML Geolocation HTML Drag and Drop HTML Local Storage HTML Application Cache HTML Web Workers HTML SSE HTML5 Elements semantic elements like <header>, <footer>, <article>, and <section>. form control attributes like number, date, time, calendar, and range. graphic elements: <svg> and <canvas>. multimedia elements: <audio> and <video>.
  • 94. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 94/105 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title of the document</title> </head> <body> Content of the document...... </body> </html> fonte: loiane groner
  • 95. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 95/105 <!DOCTYPE html> <html> <head> <script>document.createElement("myHero")</script> <style> myHero { display: block; background-color: #dddddd; padding: 50px; font-size: 30px; } </style> </head> <body> <h1>A Heading</h1> <p>A paragraph.</p> <myHero>My Hero Element</myHero> </body> </html> fonte: loiane groner
  • 96. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 96/105 Acceleration function onSuccess(acceleration) { alert('Acceleration X: ' + acceleration.x + 'n' + 'Acceleration Y: ' + acceleration.y + 'n' + 'Acceleration Z: ' + acceleration.z + 'n' + 'Timestamp: ' + acceleration.timestamp + 'n'); }; ! function onError() { alert('onError!'); }; ! navigator.accelerometer.getCurrentAcceleration(onSuccess, onError); fonte: loiane groner
  • 97. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 97/105 Capturar Foto function capturePhoto() { navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, destinationType: destinationType.DATA_URL }); } Capturar Foto com Edição function capturePhotoEdit() { navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true, destinationType: destinationType.DATA_URL }); } Busca Foto do Dispositivo function getPhoto(source) { navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, destinationType: destinationType.FILE_URI, sourceType: source }); } <button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">Biblioteca</button><br> <button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">Album de Fotos</button> fonte: loiane groner
  • 98. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 98/105 Compass/Bússula function onSuccess(heading) { alert('Heading: ' + heading.magneticHeading); }; ! function onError(error) { alert('CompassError: ' + error.code); }; ! navigator.compass.getCurrentHeading(onSuccess, onError); fonte: loiane groner
  • 99. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 99/105 Conexão function checkConnection() { var networkState = navigator.connection.type; ! var states = {}; states[Connection.UNKNOWN] = 'Unknown connection'; states[Connection.ETHERNET] = 'Ethernet connection'; states[Connection.WIFI] = 'WiFi connection'; states[Connection.CELL_2G] = 'Cell 2G connection'; states[Connection.CELL_3G] = 'Cell 3G connection'; states[Connection.CELL_4G] = 'Cell 4G connection'; states[Connection.NONE] = 'No network connection'; ! alert('Connection type: ' + states[networkState]); } ! checkConnection(); fonte: loiane groner
  • 100. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 100/105 Propriedades do Dispositivo function onDeviceReady() { var element = document.getElementById('deviceProperties'); ! element.innerHTML = 'Device Name: ' + device.name + '<br />' + 'Device Cordova: ' + device.cordova + '<br />' + 'Device Platform: ' + device.platform + '<br />' + 'Device UUID: ' + device.uuid + '<br />' + 'Device Model: ' + device.model + '<br />' + 'Device Version: ' + device.version + '<br />'; } fonte: loiane groner
  • 101. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 101/105 In App Browser var ref = window.open('http://loiane.com', '_blank', 'location=yes'); ref.addEventListener('loadstart', function() { alert('start: ' + event.url); }); ref.addEventListener('loadstop', function() { alert('stop: ' + event.url); }); ref.addEventListener('exit', function() { alert(event.type); }); fonte: loiane groner
  • 102. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 102/105 Notification - Alert navigator.notification.alert( 'Alerta!', // message alertDismissed, // callback 'Titulo', // title 'Botão' // buttonName ); fonte: loiane groner
  • 103. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 103/105 Notification - Confirm function showConfirm() { navigator.notification.confirm( 'Confirmar?', // message onConfirm, // callback to invoke with index of button pressed 'Titulo', // title 'OK,Cancel' // buttonLabels ); } fonte: loiane groner
  • 104. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 104/105 Notification - Beep // Beepa 3 vezes function playBeep() { navigator.notification.beep(3); } Não funciona no iOS fonte: loiane groner
  • 105. CC BY-SA luizrauber@gmail.com || fb.com/luizrauber 105/105 Notification - Vibrar // Vibra por 2 segundos function vibrate() { navigator.notification.vibrate(2000); } fonte: loiane groner