DESENVOLVENDO APLICAÇÕES ANDROID COM Qt · DESENVOLVENDO APLICAÇÕES ANDROID COM Qt Sandro...

of 53 /53
DESENVOLVENDO APLICAÇÕES ANDROID COM Qt Sandro Andrade – KDE/IFBA [email protected]

Embed Size (px)

Transcript of DESENVOLVENDO APLICAÇÕES ANDROID COM Qt · DESENVOLVENDO APLICAÇÕES ANDROID COM Qt Sandro...

  • DESENVOLVENDO APLICAES ANDROID COM QtSandro Andrade KDE/[email protected]

  • AGENDA DESTE TREINAMENTO

    O que o Qt? Porque utilizar o Qt no desenvolvimento para mobile? Mdulos do Qt voltados para mobile Anatomia de uma aplica o Qt para Android Hello world com QML e QtQuickControls 2 Acessando sensores e multimdia Construindo um leitor de feeds RSS Comunica o cliente-servidor via RESTful

  • OL!

    whoamiIFBA/KDE/KDE e.V.Fale comigo em [email protected] ou @andradesandrohttp://sandroandrade.org

    mailto:[email protected]

  • OL!

    quem so vocs? :)

  • 1.O QUE O Qt? http://www.qt.io

  • O Qt um toolkit para desenvolvimento multiplataformade aplicaes em diversos domnios, com foco em execuo nativa, excelente desempenho e produtividade

  • QUEM USA O Qt?

  • Qt - POR QUE USAR?

  • Qt - POR QUE USAR?TECNOLOGIA MADURA (desenvolvido h 22 anos)

  • Qt - POR QUE USAR?TECNOLOGIA MADURA (desenvolvido h 22 anos)ALTA PRODUTIVIDADE (mesmo com C++, melhor ainda com QML/JS)

  • Qt - POR QUE USAR?TECNOLOGIA MADURA (desenvolvido h 22 anos)ALTA PRODUTIVIDADE (mesmo com C++, melhor ainda com QML/JS)RICO EM FUNCIONALIDADES (47 mdulos, 1647 classes)

  • Qt - POR QUE USAR?TECNOLOGIA MADURA (desenvolvido h 22 anos)ALTA PRODUTIVIDADE (mesmo com C++, melhor ainda com QML/JS)RICO EM FUNCIONALIDADES (47 mdulos, 1647 classes)EFETIVO PARA DESENVOLVIMENTO MULTIPLATAFORMA

  • Qt - POR QUE USAR?TECNOLOGIA MADURA (desenvolvido h 22 anos)ALTA PRODUTIVIDADE (mesmo com C++, melhor ainda com QML/JS)RICO EM FUNCIONALIDADES (47 mdulos, 1647 classes)EFETIVO PARA DESENVOLVIMENTO MULTIPLATAFORMAEXCELENTE DOCUMENTA O E COMUNIDADE ATIVA

  • Qt - POR QUE USAR?TECNOLOGIA MADURA (desenvolvido h 22 anos)ALTA PRODUTIVIDADE (mesmo com C++, melhor ainda com QML/JS)RICO EM FUNCIONALIDADES (47 mdulos, 1647 classes)EFETIVO PARA DESENVOLVIMENTO MULTIPLATAFORMAEXCELENTE DOCUMENTA O E COMUNIDADE ATIVAEXCELENTE DESEMPENHO (acelera o via hardware no QML)

  • Qt - POR QUE USAR?TECNOLOGIA MADURA (desenvolvido h 22 anos)ALTA PRODUTIVIDADE (mesmo com C++, melhor ainda com QML/JS)RICO EM FUNCIONALIDADES (47 mdulos, 1647 classes)EFETIVO PARA DESENVOLVIMENTO MULTIPLATAFORMAEXCELENTE DOCUMENTA O E COMUNIDADE ATIVAEXCELENTE DESEMPENHO (acelera o via hardware no QML)DIVERSAS BIBLIOTECAS DE TERCEIROS (KF5, inqlude.org)

  • Qt - POR QUE USAR?TECNOLOGIA MADURA (desenvolvido h 22 anos)ALTA PRODUTIVIDADE (mesmo com C++, melhor ainda com QML/JS)RICO EM FUNCIONALIDADES (47 mdulos, 1647 classes)EFETIVO PARA DESENVOLVIMENTO MULTIPLATAFORMAEXCELENTE DOCUMENTA O E COMUNIDADE ATIVAEXCELENTE DESEMPENHO (acelera o via hardware no QML)DIVERSAS BIBLIOTECAS DE TERCEIROS (KF5, inqlude.org)OPEN GOVERNANCE COM LICEN A DUAL (LGPL e comercial)

  • Qt TECNOLOGIAS PARA UI/UX

    QtWiddgets: C++ (oficial), Python, C#, Go Haskell, Ruby QtQuick: QML + JavaScript QtWebEngine: HTML + CSS + JavaScript QtCharts/QtDataVisualization

  • Qt TECNOLOGIAS PARA UI/UX

    QtWiddgets: C++ (oficial), Python, C#, Go Haskell, Ruby QtQuick: QML + JavaScript QtWebEngine: HTML + CSS + JavaScript QtCharts/QtDataVisualization

  • QtQuick X QtWidgets X QtWebEngine

    QtQuick QtWidgets QtWebEngine

    Linguagem QML/JS C++ HTML/CSS/JS

    Looknfeel nativo

    Looknfeel customizado

    UI animadas e fluidas

    Suporte a touch screen

  • QtQuick X QtWidgets X QtWebEngine

    QtQuick QtWidgets QtWebEngine

    Widgets padro da indstria

    Model/View

    Prototipagem rpida de UX

    Acelera o via hardware

  • QtQuick X QtWidgets X QtWebEngine

    QtQuick QtWidgets QtWebEngine

    Efeitos grficos (partculas, etc)

    Rich text

    Integra o de contedo web

    existente

  • 2.Qt E MOBILE http://www.qt.io

  • 2006Qt/Embedded + Qtopia

    2006Qtopia em milhares de dispositivos (Sharp/Motorola)

    2009Lan amento do QML

    2010-2011Qt no Symbian e MeeGo

    Qt MOBILE - UMA LONGA HISTRIA

  • 2011Projeto Necessitas (KDE) e o primeiro port do KDE para Android

    2015QML Qt Location e QtQuick Controls for Embedded

    2013Primeiro tech-preview oficial do suporte a Android e iOS (BlackBerry, Sailfish/Jolla e Ubuntu Mobile)

    2016QtQuickControls 2, KDE Kirigami e Android services com Qt

    2014API QtPurchasing multiplataforma e suporte a Bluetooth LE

    Qt MOBILE - UMA LONGA HISTRIA

  • Qt - POR QUE USAREM PLATAFORMAS MVEIS?

  • Qt - POR QUE USAREM PLATAFORMAS MVEIS?UM CODEBASE, MLTIPLAS PLATAFORMAS

  • Qt - POR QUE USAREM PLATAFORMAS MVEIS?UM CODEBASE, MLTIPLAS PLATAFORMASALTO DESEMPENHO (nativo + acelera o via GPU)

  • Qt - POR QUE USAREM PLATAFORMAS MVEIS?UM CODEBASE, MLTIPLAS PLATAFORMASALTO DESEMPENHO (nativo + acelera o via GPU)BOA DOCUMENTA O

  • Qt - POR QUE USAREM PLATAFORMAS MVEIS?UM CODEBASE, MLTIPLAS PLATAFORMASALTO DESEMPENHO (nativo + acelera o via GPU)BOA DOCUMENTA OEST EM CONSTANTE EVOLU O, COM FOCO NESTAS PLATAFORMAS

  • Qt - POR QUE USAREM PLATAFORMAS MVEIS?UM CODEBASE, MLTIPLAS PLATAFORMASALTO DESEMPENHO (nativo + acelera o via GPU)BOA DOCUMENTA OEST EM CONSTANTE EVOLU O, COM FOCO NESTAS PLATAFORMASMELHOR GERENCIAMENTO DE MEMRIA

  • Qt - POR QUE USAREM PLATAFORMAS MVEIS?UM CODEBASE, MLTIPLAS PLATAFORMASALTO DESEMPENHO (nativo + acelera o via GPU)BOA DOCUMENTA OEST EM CONSTANTE EVOLU O, COM FOCO NESTAS PLATAFORMASMELHOR GERENCIAMENTO DE MEMRIAMESMA API E FUNCIONALIDADES EM VRIAS VERSES DO ANDROID

  • MDULOS DO Qt ESPECIFICAMENTE CRIADOS PARA MOBILE

    Qt Bluetooth (QML e C++)Android, iOS, Linux (BlueZ 4.x/5.x) e OS X

    Qt Graphical Effects (QML)

    Qt Positioning (QML e C++)Android, iOS, Linux (com GeoClue) e WinRT

    Qt Sensors (QML e C++)Android, iOS, SailFish e WinRT

    Qt Quick Extras

    Qt Android ExtrasQt Notifier

    Qt Mac Extras

  • ANATOMIA DE UMA APLICAO Qt PARA ANDROID

  • ANATOMIA DE UMA APLICAO Qt PARA ANDROID

    Solu o: QPA + JNI Uma aplica o Qt para Android

    formada por duas partes:

    A aplica o em si, criada pelo desenvolvedor

    Launcher da aplica o Android, gerada automaticamente pela IDE oficial do Qt (Qt Creator)

    O Qt Creator automatiza todo o processo de gera o (e assinatura) do .apk

  • ANATOMIA DE UMA APLICAO Qt PARA ANDROID

    Trs mtodos de implanta o: Todas as dependncias

    empacotadas no .apk

    Implanta o baseada no servi o Ministro

    Implanta o das dependncias em diretrio temporrio (para fins de debugging)

  • 3.HELLO Qt ANDROID http://www.qt.io

  • 2009O QML lan ado pelo Matthias Etrich no Qt Dev Days em Munique

    JavaScriptPrograma o imperativa pode ser feita com JavaScript

    Baixa curva de aprendizado uma linguagem declarativa para especifica o e programa o de UI

    Pode-se integrar com C++ e Java quando/se necessrio

    O QtQuick a biblioteca padro de tipos e funcionalidades bsicas do QML

    Excelente desempenho devido execu o em GPU

    INTRODUO AO QML

  • INTRODUO AO QML

    1. import QtQuick 2.32.3. Rectangle {4. width: 2005. height: 1006. color: "red"7.8. Text {9. anchors.centerIn: parent10. text: "Hello, World!"11. }12. }

    1. Rectangle {2. width: 2003. height: 1004. color: "red"5.6. Text {7. anchors.centerIn: parent8. text: "Hello, World!"9. }10.11. MouseArea {12. anchors.fill: parent13. onClicked: parent.color = "blue"14. }15. }

  • INTRODUO AO QML - PROPERTY BINDING

    1. Rectangle {2. width: 4003. height: 2004.5. Rectangle {6. width: parent.width / 27. height: parent.height8. color: "green"9. }10.11. Rectangle {12. width: parent.width / 213. height: parent.height14. x: parent.width / 215. color: "red"16. }17. }

  • METAS:

    LAB 1 MINI BROWSER

    Uso do mdulo WebView Prtica com ncoras e layouts Property bindings Signals e handlers cones e fontes

  • METAS:

    LAB 2 ACESSANDO O ACELERMETRO E SENSOR DE PROXIMIDADE

    Prtica com sensores Tratando diferentes densidades de pixels Anima es de propriedades Attached properties e signal handlers

  • METAS:

    LAB 3 ACESSANDO A CMERA

    Uso do mdulo de multimdia

  • METAS:

    LAB 4 CONSTRUINDO UM LEITOR DE FEEDS RSS

    Prtica com Model-View Acesso remoto via XmlListModel Navigation Drawer

  • METAS:

    LAB 5 CONSTRUINDO UMA APLICAO CLIENTE-SERVIDOR COM RESTful

    WebServices com RESTful Acesso remoto via JSONListModel SwipeView e StackView

  • QML ROCKS!

    Grandes casos de sucesso j esto por a

  • ALGUMAS DICAS

    Documenta oConsulte e confie na documenta o do Qt

    Arquitetura ainda importanteMuitos projetos QML sofrem de problemas arquiteturais

    Aprenda os fundamentosProperty bindings, signals e handlers, propriedades, etc

    C++ ainda importanteQML uma tecnologia para UI/UX

    D tempo ao tempoDemora um tempinho at voc aprender a pensar de forma declarativa

    No abuse de bindingsOu sua aplica o ter problemas de desempenho

  • OBRIGADO!

    Perguntas?Sandro Andrade KDE/[email protected]

    Slide 1THIS IS A SLIDE TITLESlide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28IN TWO OR THREE COLUMNSSlide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37A PICTURE IS WORTH A THOUSAND WORDSSlide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45YOU CAN ALSO SPLIT YOUR CONTENTSlide 47Slide 48Slide 49Slide 50WANT BIG IMPACT? Use big image.LETS REVIEW SOME CONCEPTSSlide 53