32
Paulo Vitor Mira Fonseca

Apresentação Phonegap

Embed Size (px)

DESCRIPTION

Introdução ao PhoneGap.

Citation preview

Page 1: Apresentação Phonegap

Paulo Vitor Mira Fonseca

Page 2: Apresentação Phonegap

AGENDA

• Problema

• Introdução

• Como Funciona?

• Plugins

• Demonstração

• Agradecimentos

Page 3: Apresentação Phonegap

Diversas Plataformas

Page 4: Apresentação Phonegap

• Diversas plataformas

• Linguagens de programação

• Ambiente de desenvolvimento

• Despadronização de componentes básicos

PROBLEMAS

Page 5: Apresentação Phonegap

ALTERNATIVAS

• Phonegap

• PhoMobile

• Titanium

• WidgetPad

Page 6: Apresentação Phonegap

PHONEGAP

• Desenvolvimento sistemas mobile utilizando páginas web

• Acesso a recursos nativos

• Framework base: APACHE CORDOVA

• Open Source

Page 7: Apresentação Phonegap

PROCESSO DE DEPLOY

Wrap your app withPhoneGap

Deploy to multiple platforms!

Page 8: Apresentação Phonegap

APACHE CORDOVA

• Incubado pela Apache.

• OpenSource.

• Plataforma de construção de aplicações mobile nativas utilizando HTML, CSS e JavaScript.

• Utiliza o Browser nativo do dispositivo.

Page 9: Apresentação Phonegap

APACHE CORDOVA

Page 10: Apresentação Phonegap

• HTML 5

• CSS 3

APACHE CORDOVA

Page 11: Apresentação Phonegap

APACHE CORDOVA

Page 12: Apresentação Phonegap
Page 13: Apresentação Phonegap
Page 14: Apresentação Phonegap

FEATURES

Page 16: Apresentação Phonegap

CÂMERAnavigator.camera.getPicture(onSuccess, onFail, { quality: 50,    destinationType: Camera.DestinationType.DATA_URL });

function onSuccess(imageData) {    var image = document.getElementById('myImage');    image.src = "data:image/jpeg;base64," + imageData;}

function onFail(message) {    alert('Failed because: ' + message);}

Page 19: Apresentação Phonegap

GEOLOCALIZAÇÃOvar onSuccess = function(position) {    alert('Latitude: '          + position.coords.latitude          + '\n' +          'Longitude: '         + position.coords.longitude         + '\n' +          'Altitude: '          + position.coords.altitude          + '\n' +          'Accuracy: '          + position.coords.accuracy          + '\n' +          'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +          'Heading: '           + position.coords.heading           + '\n' +          'Speed: '             + position.coords.speed             + '\n' +          'Timestamp: '         + position.timestamp                + '\n');};

// onError Callback receives a PositionError object//function onError(error) {    alert('code: '    + error.code    + '\n' +          'message: ' + error.message + '\n');}

navigator.geolocation.getCurrentPosition(onSuccess, onError);

Page 20: Apresentação Phonegap

NOTIFICAÇÃO

function alertDismissed() {    // do something}

navigator.notification.alert(    'You are the winner!',  // message    alertDismissed,         // callback    'Game Over',            // title    'Done'                  // buttonName);

function onConfirm(buttonIndex) {    alert('You selected button ' + buttonIndex);}

// Show a custom confirmation dialog//function showConfirm() {    navigator.notification.confirm(        'You are the winner!',  // message        onConfirm,              // callback to invoke with index of button pressed        'Game Over',            // title        'Restart,Exit'          // buttonLabels    );}

navigator.notification.beep(2); navigator.notification.vibrate(2500);

Page 21: Apresentação Phonegap

STORAGEvar db = window.openDatabase("test", "1.0", "Test DB", 1000000);

function populateDB(tx) {     tx.executeSql('DROP TABLE IF EXISTS DEMO');     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');}

function errorCB(err) {    alert("Error processing SQL: "+err.code);}

function successCB() {    alert("success!");}

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);db.transaction(populateDB, errorCB, successCB);

Page 22: Apresentação Phonegap

STORAGE

function queryDB(tx) {    tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);}

function querySuccess(tx, results) {    var len = results.rows.length;    console.log("DEMO table: " + len + " rows found.");    for (var i=0; i<len; i++){        console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);    }}

function errorCB(err) {    alert("Error processing SQL: "+err.code);}

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);db.transaction(queryDB, errorCB);

Page 24: Apresentação Phonegap

APLICATIVOS

Page 25: Apresentação Phonegap

PLUGINS

• Acesso à funcionalidades específicas

• Componentes.

• Exemplo: Leitor de código de barras

• https://github.com/phonegap/phonegap-plugins

Page 26: Apresentação Phonegap

• Desvantagens:

• Existem plugins para plataformas específicas

• PhoneListener - Android

• MapKitPlug - IPhone

PLUGINS

Page 27: Apresentação Phonegap

PRÓS E CONTRASPHONEGAP

Page 28: Apresentação Phonegap

PRÓS

• Única aplicação para várias plataformas

• Conhecimentos em Html5, CSS3 e javascript VS Object-c, Java e C#.

• Aplicações em todos os markets (App Store, Google Play, ...).

Page 29: Apresentação Phonegap

CONTRAS

• Aplicativos nativos são mais rápidos

• Problemas de performance na construção de Jogos

• Customização dos componentes

Page 30: Apresentação Phonegap

DEMONSTRAÇÃO

Page 31: Apresentação Phonegap

DÚVIDAS ???

Page 32: Apresentação Phonegap

OBRIGADOPaulo Vitor Mira Fonseca

[email protected]

linkedin.com/in/pfonseca0

[email protected]

http://www.slideshare.net/paulovitormirafonseca/apresentacao-phonegap