apps android e hibridas
TRANSCRIPT
Apps Android e Hibridas16 horas de explanação, diálogo e prática
Julho 2016
por Luiz Henrique Rauber [email protected] - 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 [email protected] || fb.com/luizrauber 2/105
Mas primeiro….
Conselhos Richard Feynman (1918-1988), Nobel de Física em 19652 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 [email protected] || 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 ferramentasSoftware em funcionamento mais que documentação abrangenteColaboração com o cliente mais que negociação de contratosResponder 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 [email protected] || fb.com/luizrauber 4/105
Coding Dojo - Turma 2015-2016 – Tec Informática Senac
CC BY-SA [email protected] || fb.com/luizrauber 6/105
Touchscreem Resistivo/ CapacitivoSensores 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 [email protected] || fb.com/luizrauber 7/105
CC BY-SA [email protected] || fb.com/luizrauber 8/105
CC BY-SA [email protected] || fb.com/luizrauber 9/105
Go https://www.android.com/intl/pt-BR_br/
CC BY-SA [email protected] || fb.com/luizrauber 10/105
Aprofundando
SILBERCHATZ, 2013
Android/Linux
Java - JVM
Multithread
Sai swap entra application state
...
CC BY-SA [email protected] || fb.com/luizrauber 11/105http://source.android.com/source/index.html
CC BY-SA [email protected] || fb.com/luizrauber 12/105
Mais (ou menos) em https://www.android.com/intl/pt-BR_br/history/
CC BY-SA [email protected] || fb.com/luizrauber 13/105
https://developer.android.com
CC BY-SA [email protected] || fb.com/luizrauber 14/105
CC BY-SA [email protected] || fb.com/luizrauber 15/105
CC BY-SA [email protected] || fb.com/luizrauber 16/105
javac -version http://www.oracle.com/technetwork/java/javase/downloads/jdk8-
downloads-2133151.html
android-studio/bin/studio.shdependências lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
Bora instalar? (Enquanto isso, mais teoria)
CC BY-SA [email protected] || 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 [email protected] || 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 [email protected] || fb.com/luizrauber 19/105
http://www.androidpit.com.br/evolucao-dos-smartphones-a-linha-nexus
CC BY-SA [email protected] || fb.com/luizrauber 20/105
CC BY-SA [email protected] || fb.com/luizrauber 21/105
http://www.gadgetdetail.com/android-version-market-share-distribution/
CC BY-SA [email protected] || fb.com/luizrauber 22/105
http://www.gadgetdetail.com/android-version-market-share-distribution/
CC BY-SA [email protected] || fb.com/luizrauber 23/105
http://www.forbes.com/sites/eladnatanson/2016/06/06/breaking-the-android-ios-duopoly-will-android-and-ios-ever-get-a-serious-third-competitor/#e62c5104cad0
CC BY-SA [email protected] || fb.com/luizrauber 24/105
http://www.forbes.com/sites/eladnatanson/2016/06/06/breaking-the-android-ios-duopoly-will-android-and-ios-ever-get-a-serious-third-competitor/#e62c5104cad0
CC BY-SA [email protected] || fb.com/luizrauber 25/105
CC BY-SA [email protected] || fb.com/luizrauber 26/105https://github.com/googlesamples/
CC BY-SA [email protected] || fb.com/luizrauber 27/105
CC BY-SA [email protected] || fb.com/luizrauber 28/105
CC BY-SA [email protected] || fb.com/luizrauber 29/105
fonte: developer.android.com
CC BY-SA [email protected] || fb.com/luizrauber 30/105
Resumo de https://developer.android.com/guide/components/fundamentals.html
CC BY-SA [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || fb.com/luizrauber 41/105
4.2Service: 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 [email protected] || fb.com/luizrauber 42/105
4.3BroadcastReceiver: 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 [email protected] || fb.com/luizrauber 43/105
4.4ContentProvider: 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 é importantehttps://developer.android.com/training/basics/activity-
lifecycle/index.html (tá pt_br)
CC BY-SA [email protected] || fb.com/luizrauber 49/105
Ciclo de vida da atividade é importantehttps://developer.android.com/training/basics/activity-lifecycle/index.html (tá pt_br)
CC BY-SA [email protected] || fb.com/luizrauber 50/105
Tutorial Introdução
https://developer.android.com/training/basics/firstapp/index.html
CC BY-SA [email protected] || fb.com/luizrauber 51/105
Tutorial Fragmentos
https://developer.android.com/training/basics/fragments/index.html
CC BY-SA [email protected] || fb.com/luizrauber 52/105
http://www.cyanogenmod.org/
+400 modeloshttps://wiki.cyanogenmod.org/w/About
https://wiki.cyanogenmod.org/w/Main_Page
CC BY-SA [email protected] || 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 [email protected] || 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 [email protected] || fb.com/luizrauber 55/105
https://cordova.apache.org/Fonte: Loiane Groner
CC BY-SA [email protected] || fb.com/luizrauber 56/105
Fonte: Loiane Groner
CC BY-SA [email protected] || fb.com/luizrauber 57/105
Fonte: Loiane Groner
CC BY-SA [email protected] || fb.com/luizrauber 58/105
Fonte: Loiane Groner
CC BY-SA [email protected] || fb.com/luizrauber 59/105
Fonte: Loiane Groner
CC BY-SA [email protected] || fb.com/luizrauber 60/105
Fonte: Loiane Groner
CC BY-SA [email protected] || fb.com/luizrauber 61/105
Fonte: Loiane Groner
CC BY-SA [email protected] || fb.com/luizrauber 62/105
Fonte: Loiane Groner
CC BY-SA [email protected] || fb.com/luizrauber 63/105
https://cordova.apache.org/
CC BY-SA [email protected] || fb.com/luizrauber 64/105
https://cordova.apache.org/
CC BY-SA [email protected] || fb.com/luizrauber 65/105
https://cordova.apache.org/
CC BY-SA [email protected] || fb.com/luizrauber 66/105
https://cordova.apache.org/
CC BY-SA [email protected] || fb.com/luizrauber 67/105
https://cordova.apache.org/
CC BY-SA [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || 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 [email protected] || fb.com/luizrauber 73/105
https://pt.wikipedia.org/wiki/PhoneGap
CC BY-SA [email protected] || fb.com/luizrauber 74/105
Dá até pra transformar site html5 -> app html5 -> app nativo :D
CC BY-SA [email protected] || fb.com/luizrauber 75/105
https://cordova.apache.org/docs/en/latest/config_ref/index.htmlapp/www/config.xml
CC BY-SA [email protected] || fb.com/luizrauber 76/105
www/index.html
CC BY-SA [email protected] || fb.com/luizrauber 77/105
apt-get install npn :)https://nodejs.org/en/download/
CC BY-SA [email protected] || fb.com/luizrauber 78/105
apt-get install npn :)https://nodejs.org/en/download/
Fonte: Rodrigo Branas
CC BY-SA [email protected] || fb.com/luizrauber 79/105
apt-get install npn :)https://nodejs.org/en/download/
Fonte: Rodrigo Branas
CC BY-SA [email protected] || fb.com/luizrauber 80/105
npm install -g cordovacordova create hello com.example.hello HelloWorld
cordova platform add ios --savecordova platform add android --save
cordova platform lscordova requirements
cordova buildcordova build ios
cordova build androidcordova emulate android
cordova run android
CC BY-SA [email protected] || 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 [email protected] || fb.com/luizrauber 82/105
https://cordova.apache.org/docs/en/latest/plugin_ref/plugman.htmlnpm 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 [email protected] || 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 [email protected] || 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 [email protected] || fb.com/luizrauber 85/105
http://www.cssreflex.com/2015/11/xamarin-vs-cordova-main-counterpoints.html/
CC BY-SA [email protected] || 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
Enviarhttps://play.google.com/apps/publish/ "Produção", "Beta" ou "Alfa"
CC BY-SA [email protected] || fb.com/luizrauber 87/105
Configurar testes Alfa/Beta na Google Play Developer ConsoleEnviar 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 [email protected] || fb.com/luizrauber 88/105
Fonte: Loiane groner
CC BY-SA [email protected] || 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 [email protected] || 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 [email protected] || 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 zerouTítulo com 30 caracteres X Título com 255 | keywords ambos
8 screenshots atualizáveis aloca X 5 screenshots só em nova versãoMais 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 USMais downloads X Mais rentabilidade
CC BY-SA [email protected] || fb.com/luizrauber 92/105
http://corporate.canaltech.com.br/noticia/desenvolvedores/quanto-os-desenvolvedores-ganham-por-cada-aplicativo-criado-9931/
CC BY-SA [email protected] || 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 Elementssemantic 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 [email protected] || 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 [email protected] || 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 [email protected] || fb.com/luizrauber 96/105
Accelerationfunction 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 [email protected] || fb.com/luizrauber 97/105
Capturar Fotofunction capturePhoto() {navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,destinationType: destinationType.DATA_URL });}
Capturar Foto com Ediçãofunction capturePhotoEdit() {navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20,allowEdit: true,destinationType: destinationType.DATA_URL });}
Busca Foto do Dispositivofunction 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 [email protected] || fb.com/luizrauber 98/105
Compass/Bússulafunction onSuccess(heading) {alert('Heading: ' + heading.magneticHeading);};!function onError(error) {alert('CompassError: ' + error.code);};!navigator.compass.getCurrentHeading(onSuccess, onError);
fonte: loiane groner
CC BY-SA [email protected] || fb.com/luizrauber 99/105
Conexãofunction 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 [email protected] || fb.com/luizrauber 100/105
Propriedades do Dispositivofunction 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 [email protected] || fb.com/luizrauber 101/105
In App Browservar 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 [email protected] || fb.com/luizrauber 102/105
Notification - Alertnavigator.notification.alert('Alerta!', // messagealertDismissed,// callback'Titulo',// title'Botão'// buttonName);
fonte: loiane groner
CC BY-SA [email protected] || fb.com/luizrauber 103/105
Notification - Confirmfunction showConfirm() {navigator.notification.confirm('Confirmar?', // messageonConfirm,// callback to invoke with index of button pressed'Titulo',// title'OK,Cancel'// buttonLabels);}
fonte: loiane groner
CC BY-SA [email protected] || fb.com/luizrauber 104/105
Notification - Beep// Beepa 3 vezesfunction playBeep() {navigator.notification.beep(3);}Não funciona no iOS
fonte: loiane groner
CC BY-SA [email protected] || fb.com/luizrauber 105/105
Notification - Vibrar// Vibra por 2 segundosfunction vibrate() {navigator.notification.vibrate(2000);}
fonte: loiane groner