faesa computação móvel: introducao a phonegap e cordova

89
PhoneGap/Cordova Loiane Groner http://loiane.com

Upload: loiane-groner

Post on 16-Jul-2015

534 views

Category:

Technology


17 download

TRANSCRIPT

Page 1: FAESA Computação Móvel: Introducao a Phonegap e Cordova

PhoneGap/Cordova

Loiane Groner http://loiane.com

Page 2: FAESA Computação Móvel: Introducao a Phonegap e Cordova

• 9+ XP TI

• Ciência da Computação 2008/2

• Java, Sencha, Phonegap

• http://loiane.com

• Livros:

Loiane Groner

Page 3: FAESA Computação Móvel: Introducao a Phonegap e Cordova

O que é

Phonegap

Cordova?

Page 4: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Motivação

Page 5: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Preciso de uma APP

Page 6: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 7: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 8: FAESA Computação Móvel: Introducao a Phonegap e Cordova

IDE Emulador Store Usuário final

IDE Emulador Store Usuário final

IDE Emulador Store Usuário final

Page 9: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 10: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap

Page 11: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Framework open source para desenvolvimento de apps mobile híbridas

Page 12: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Framework open source para desenvolvimento de apps mobile híbridas

Page 13: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Híbrido?

Page 14: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 15: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Nativo Web

Page 16: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 17: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 18: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 19: FAESA Computação Móvel: Introducao a Phonegap e Cordova

http://phonegap.com/app/browserquest/

Page 20: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Como funciona

Page 21: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Seu Código

Page 22: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Web View Nativa (Browser)Seu Código

Page 23: FAESA Computação Móvel: Introducao a Phonegap e Cordova

APIs Nativas

Web View Nativa (Browser)Seu Código

Page 24: FAESA Computação Móvel: Introducao a Phonegap e Cordova

App Nativa: .apk, .ipa, etcAPIs Nativas

Web View Nativa (Browser)Seu Código

Page 25: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 26: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Interface de uma app phonegap

É uma instância do browser nativo

100% largura e altura

Browser nativo (WebView)sem barra de favoritos

sem barra para mudar url

Page 27: FAESA Computação Móvel: Introducao a Phonegap e Cordova

O que instalar

Page 28: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap CLI Corvova CLI

Page 29: FAESA Computação Móvel: Introducao a Phonegap e Cordova

http://nodejs.org/

Page 30: FAESA Computação Móvel: Introducao a Phonegap e Cordova

sudo npm install -g cordova

sudo npm install -g phonegap

Linux ou Mac OS

Page 31: FAESA Computação Móvel: Introducao a Phonegap e Cordova

npm install -g cordova

npm install -g phonegap

Windows

Page 32: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap Phonegap Dev App

Phonegap Build Phonegap Enterprise

Cordova Comunidade Código fonte

Plugins APIs

Ponte com plataforma nativa

Page 33: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Criando um projeto

Page 34: FAESA Computação Móvel: Introducao a Phonegap e Cordova

phonegap create hello com.loiane.hello HelloWorld

cordova create hello com.loiane.hello HelloWorld

Page 35: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Testando com Phonegap developer app

Page 36: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Testando com Phonegap Dev app

Page 37: FAESA Computação Móvel: Introducao a Phonegap e Cordova

phonegap serve

Page 38: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Testando e emulando localmente

Page 39: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 40: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Trabalhando com Views

Page 41: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 42: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Topcoat

DOM

Architecture

UI

Full Stack

Page 43: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Plugins:

acesso recursos do device

Page 44: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 45: FAESA Computação Móvel: Introducao a Phonegap e Cordova

cordova plugin add org.apache.cordova.camera

phonegap plugin add org.apache.cordova.camera

Page 46: FAESA Computação Móvel: Introducao a Phonegap e Cordova

function capturePhoto() { navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, destinationType: destinationType.DATA_URL }); }

Page 47: FAESA Computação Móvel: Introducao a Phonegap e Cordova

function capturePhoto() { navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, destinationType: destinationType.DATA_URL }); }

function onPhotoDataSuccess(imageData) { var smallImage = document.getElementById('smallImage'); smallImage.style.display = 'block'; smallImage.src = "data:image/jpeg;base64," + imageData; }

Page 48: FAESA Computação Móvel: Introducao a Phonegap e Cordova

function capturePhoto() { navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, destinationType: destinationType.DATA_URL }); }

function onPhotoDataSuccess(imageData) { var smallImage = document.getElementById('smallImage'); smallImage.style.display = 'block'; smallImage.src = "data:image/jpeg;base64," + imageData; }

<button onclick="capturePhoto();">Capturar foto</button> <br> <img style="display:none;" id="smallImage" src="" />

Page 49: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 50: FAESA Computação Móvel: Introducao a Phonegap e Cordova

import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;

public class MyCameraActivity extends Activity { private static final int CAMERA_REQUEST = 1888; private ImageView imageView;

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.imageView = (ImageView)this.findViewById(R.id.imageView1); Button photoButton = (Button) this.findViewById(R.id.button1); photoButton.setOnClickListener(new View.OnClickListener() {

@Override public void onClick(View v) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_REQUEST); } }); }

protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); imageView.setImageBitmap(photo); } } }

Page 51: FAESA Computação Móvel: Introducao a Phonegap e Cordova

- (BOOL) startCameraControllerFromViewController: (UIViewController*) controller usingDelegate: (id <UIImagePickerControllerDelegate, UINavigationControllerDelegate>) delegate { if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera] == NO) || (delegate == nil) || (controller == nil)) return NO; UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init]; cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera; // Displays a control that allows the user to choose picture or // movie capture, if both are available: cameraUI.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType: UIImagePickerControllerSourceTypeCamera]; // Hides the controls for moving & scaling pictures, or for // trimming movies. To instead show the controls, use YES. cameraUI.allowsEditing = NO; cameraUI.delegate = delegate; [controller presentModalViewController: cameraUI animated: YES]; return YES;}

Page 52: FAESA Computação Móvel: Introducao a Phonegap e Cordova

// Check to see if the camera is available on the device.if (PhotoCaptureDevice.AvailableSensorLocations.Contains(CameraSensorLocation.Back) || PhotoCaptureDevice.AvailableSensorLocations.Contains(CameraSensorLocation.Front)){ // Initialize the camera, when available. if (PhotoCaptureDevice.AvailableSensorLocations.Contains(CameraSensorLocation.Back)) { // Use the back camera. System.Collections.Generic.IReadOnlyList<Windows.Foundation.Size> SupportedResolutions = PhotoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back); Windows.Foundation.Size res = SupportedResolutions[0]; this.captureDevice = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Back, res); } else { // Otherwise, use the front camera. System.Collections.Generic.IReadOnlyList<Windows.Foundation.Size> SupportedResolutions = PhotoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Front); Windows.Foundation.Size res = SupportedResolutions[0]; this.captureDevice = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Front, res); } ... ... ...

//Set the VideoBrush source to the camera. viewfinderBrush.SetSource(this.captureDevice);

// The event is fired when the shutter button receives a half press. CameraButtons.ShutterKeyHalfPressed += OnButtonHalfPress;

// The event is fired when the shutter button receives a full press. CameraButtons.ShutterKeyPressed += OnButtonFullPress;

// The event is fired when the shutter button is released. CameraButtons.ShutterKeyReleased += OnButtonRelease; }else{ // The camera is not available. this.Dispatcher.BeginInvoke(delegate() { // Write message. txtDebug.Text = "A Camera is not available on this phone."; });}

Page 53: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Fazendo build

Page 54: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Enviando pra App Store

Page 55: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 56: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap Build

apps open source: grátis (github)apps código privado: pago

Page 57: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 58: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap não converte seu código HTML5 em código nativo

Page 59: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap não gera projeto web, gera projeto nativo que encapsula código web

Phonegap não converte seu código HTML5 em código nativo

Page 60: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap não gera projeto web, gera projeto nativo que encapsula código web

App Nativa: .apk, .ipa, etcAPIs Nativas

Web View Nativa (Browser)Seu Código

Phonegap não converte seu código HTML5 em código nativo

Page 61: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap não tem componente, não se integra com server (php, java)

Page 62: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap não tem componente, não se integra com server (php, java)

Phonegap é Container do código HTML5 e oferece APIs de acesso ao device

Page 63: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Phonegap não tem componente, não se integra com server (php, java)

Phonegap é Container do código HTML5 e oferece APIs de acesso ao device

Page 64: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Processo de build e processo de enviar para apps store é nativo

Page 65: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Processo de build e processo de enviar para apps store é nativo

Mas e o phonegap dev app e phonegap build?

Page 66: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Processo de build e processo de enviar para apps store é nativo

Mas e o phonegap dev app e phonegap build?

Page 67: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Não serve pra qualquer app

Page 68: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Não serve pra qualquer app

Page 69: FAESA Computação Móvel: Introducao a Phonegap e Cordova

<div id="jogador">

Não serve pra qualquer app

Page 70: FAESA Computação Móvel: Introducao a Phonegap e Cordova

http://phonegap.com/app/fruit-salad/

Page 71: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 72: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Exemplos de Apps

Page 73: FAESA Computação Móvel: Introducao a Phonegap e Cordova

http://phonegap.com/app/

Page 74: FAESA Computação Móvel: Introducao a Phonegap e Cordova

http://showcase.ionicframework.com/

Page 75: FAESA Computação Móvel: Introducao a Phonegap e Cordova

http://www.jqmgallery.com/

Page 76: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 77: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Quero Aprender!

Page 78: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 79: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Topcoat

DOM

Architecture

UI

Full Stack

Page 80: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 81: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Noções beeeem básicas

Page 82: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Estudante de Computação

Meus próximos 5 anos…

Page 83: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Estudante de Computação

Meus próximos 5 anos… E daqui a 20 anos…

Bacharel

Page 84: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Estudante de Computação

Meus próximos 5 anos… E daqui a 20 anos…

Bacharel

Programador:Profissional que mais se atualiza

Page 85: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 86: FAESA Computação Móvel: Introducao a Phonegap e Cordova
Page 87: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Workshop 21 março

Phonegap/Cordova

Page 88: FAESA Computação Móvel: Introducao a Phonegap e Cordova

http://loiane.com

fb.com/loianegroner

@loiane

https://github.com/loiane

youtube.com/user/Loianeg

Page 89: FAESA Computação Móvel: Introducao a Phonegap e Cordova

Obrigada!