SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Qt Mobile
    Sviluppo mobile con Python e Qt Framework

    7 Maggio 2010 @ PyCon 4
    Andrea Grandi



1
Agenda

• QtMobility
• MeeGo
• QtCreator 2
• PySide
• Generazione dei binding (Boost --> Shiboken)
• Stato del progetto
• Sviluppi futuri
• Come iniziare a sviluppare in Python e Qt per Maemo
• Esempi di codice con PySide
• Conclusioni



2
Qt Mobile




3
QtMobility

• Bearer Management
• Contacts
• Location
• Messaging
• Multimedia
• Publish and Subscribe
• Service Framework
• System Information
• Sensors
• Versit



4
QtMobility: Bearer Management

• Controlla lo stato di connettività del sistema
• Permette alle applicazioni di sapere quando una particolare
  connessione diventa disponibile e di redirezionare il traffico su di
  essa
• Restituisce informazioni dettagliate sulle connessioni configurate
  nel sistema e su quelle disponibili
• Consente alle applicazioni di scegliere la configurazione di rete piu'
  appropriata a seconda che ci si trovi ad utilizzare una rete pubblica
  o privata




5
QtMobility: Contacts

• Permette di accedere ai Contatti presenti sul dispositivo
• Supporto per i piu' diffusi formati di memorizzazione dei contatti
• Le applicazioni possono utilizzare questa API per memorizzare un
  particolare tipo di informazione personalizzata all'interno di un
  contatto: un'applicazione di instant messaging ad esempio
  potrebbe utilizzare questa API per memorizzare il nome utente
  dell'account (Skype, Gtalk, MSN ecc...)
• Supporto per operazioni asincrone quando si accede ai contatti,
  per facilitare le applicazioni di sincronizzazione remota




6
QtMobility: Location

• Ottenere la posizione geografica corrente (tramite GPS, celle GSM
  ecc...)
• Trasmissione dell'aggiornamento della posizione
• Possibilità di notifica se ci si trova all'interno di una certa area
• Possibilità di accedere alle informazioni dettagliate sul segnale dei
  satelliti




7
QtMobility: Messaging

• Lettura ed invio di diversi tipi di messaggi: SMS, MMS, email …
• Possibilità di filtrare i messaggi e recuperarli in base a determinati
  parametri
• Accesso alle informazioni sugli account configurati nel dispositivo




8
QtMobility: Multimedia

• Riproduzione e registrazione di audio / video
• Supporto per radio FM
• Possibilità di riprodurre un file da una posizione remota (streaming
  audio / video)




9
QtMobility: Publish / Subscribe

• Sistema gerarchico di rappresentazione dei dati che è possibile
  condividere fra le varie applicazioni
• Possibilità di ricevere una notifica quando un dato viene modificato
  da un'altra applicazione




10
QtMobility: Service Framework

• I client possono scoprire quali servizi sono disponibili ed interagire
  con essi
• Permette di creare applicazioni che separino il client dal servizio
  stesso che offrono




11
QtMobility: System Information

• Permette di accedere alle informazioni di sistema e di essere
  notificati se avviene qualche cambiamento (stato della batteria,
  connettività, ecc...)
• Si possono creare applicazioni che si comportino in maniera
  differente a seconda dello stato di sistema. Prevedere ad esempio
  una modalità di risparmio della potenza della CPU nel caso il
  dispositivo stia funzionando a batteria o sia alimentato a corrente




12
QtMobility: Sensors

• Accesso ai sensori hardware (accelerometro ad esempio)
• Notifica del cambio di orientamento del dispositivo (landscape /
  portrait)
• Permette di scrivere applicazioni che reagiscano in maniera
  differente a seconda della posizione in cui si trova il dispositivo




13
QtMobility: Versit

• Permette di leggere e scrivere documenti vCard
• Esporta/importa da e verso QContacts e vCard




14
MeeGo

• Maemo e Moblin si fondono
• Una nuova distribuzione Linux
  pensata per netbook, palmari e
  smartphone
• UI basata sulle librerie Qt
• Sistema di pacchetti RPM
• Completamente opensource
• Supporto per Intel/Atom e ARM
• Disponibile dal secondo quarto
  del 2010




15
MeeGo: architettura




16
QtCreator 2

• IDE per lo sviluppo Qt
• Multi piattaforma (Windows,
  Linux, OSX)
• Supporta lo sviluppo di
  applicazioni per palmari,
  smartphone (Maemo/MeeGo,
  Symbian)
• Emulatore Maemo e Symbian
  integrato
• Supporta al momento solo C++
  (in futuro anche Python)
• Integrazione con QtQuick (Qt
  User Interface Creation Kit)

17
QtQuick




18
PySide

• Bindings ufficiali di Nokia per le librerie Qt
• Sviluppato e mantenuto da OpenBossa
• Licenza LGPL
• Pensato per Maemo (MeeGo) ma senza escludere le altre
  piattaforme (Windows, Linux, OSX).




19
Generazione dei bindings

• Inizialmente generati tramite Boost
     • Serviva un metodo veloce per iniziare
     • I binding generati erano troppo grandi
     • Prestazioni inferiori a PyQt

• Passaggio a Shiboken
     • Possibilità di generare binding per qualsiasi libreria C++
     • Dimensione nettamente inferiore dei binding generati
     • Maggiore flessibilità di utilizzo
     • Gestire sia i binding PySide che il generatore stesso




20
Stato del progetto

• Moduli disponibili
     • QtCore
     • QtGui
     • QtNetwork
     • QtSvg
     • QtWebkit
     • QtTest
     • Phonon
     • QtHelp
     • QtScript
• Codice da ottimizzare (prestazioni e dimensioni)
• Completare il passaggio da Boost a Shiboken



21
Sviluppi futuri

• Ulteriore ottimizzazione per i dispositivi con meno risorse di calcolo
  (palmari, cellulari ecc...)
• Porting per OSX e Windows (ci sono volontari?)
• Integrazione con QtCreator
• Strumenti per iniziare a creare velocemente un binding
  (probabilmente un plugin per QtCreator)




22
Come iniziare

• Conoscenze di base
     • Python
     • Qt
     • Linee guida di Maemo (per la UI)

• Strumenti necessari
     • PC con Linux (per il momento)
     • Maemo SDK
     • PySide (non distribuito di default con l'SDK)




23
Domande Frequenti

• PySide supporta QtMobility?
• QtCreator avrà il supporto per Python e PySide?
• PySide è compatibile con PyQt a livello di API?
• QtUiTools è disponibile su PySide? In particolare è possibile
  disegnare la propria UI tramite QtDesigner ed utilizzarla da
  PySide?
• Perchè non si è scelto di utilizzare PyQt?
• PySide supporta solo Maemo o anche il nuovo Symbian?




24
Riferimenti

• Web
     • PySide: http://www.pyside.org
     • Maemo: http://www.maemo.org
     • MeeGo: http://www.meego.com
     • Qt: http://qt.nokia.com

• IRC
     • #pyside @ FreeNode
     • #maemo @ FreeNode
     • #meego @ FreeNode

• Andrea Grandi
     • a.grandi@gmail.com
     • http://www.andreagrandi.it
25
Grazie!




26

Más contenido relacionado

Destacado

Spyppolare o non spyppolare
Spyppolare o non spyppolareSpyppolare o non spyppolare
Spyppolare o non spyppolarePyCon Italia
 
Feed back report 2010
Feed back report 2010Feed back report 2010
Feed back report 2010PyCon Italia
 
Undici anni di lavoro con Python
Undici anni di lavoro con PythonUndici anni di lavoro con Python
Undici anni di lavoro con PythonPyCon Italia
 
socket e SocketServer: il framework per i server Internet in Python
socket e SocketServer: il framework per i server Internet in Pythonsocket e SocketServer: il framework per i server Internet in Python
socket e SocketServer: il framework per i server Internet in PythonPyCon Italia
 
Python: ottimizzazione numerica algoritmi genetici
Python: ottimizzazione numerica algoritmi geneticiPython: ottimizzazione numerica algoritmi genetici
Python: ottimizzazione numerica algoritmi geneticiPyCon Italia
 
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"PyCon Italia
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.PyCon Italia
 
Django è pronto per l'Enterprise
Django è pronto per l'EnterpriseDjango è pronto per l'Enterprise
Django è pronto per l'EnterprisePyCon Italia
 
Foxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoFoxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoPyCon Italia
 
OpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonOpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonPyCon Italia
 

Destacado (13)

Spyppolare o non spyppolare
Spyppolare o non spyppolareSpyppolare o non spyppolare
Spyppolare o non spyppolare
 
Feed back report 2010
Feed back report 2010Feed back report 2010
Feed back report 2010
 
Undici anni di lavoro con Python
Undici anni di lavoro con PythonUndici anni di lavoro con Python
Undici anni di lavoro con Python
 
socket e SocketServer: il framework per i server Internet in Python
socket e SocketServer: il framework per i server Internet in Pythonsocket e SocketServer: il framework per i server Internet in Python
socket e SocketServer: il framework per i server Internet in Python
 
Python idiomatico
Python idiomaticoPython idiomatico
Python idiomatico
 
Python: ottimizzazione numerica algoritmi genetici
Python: ottimizzazione numerica algoritmi geneticiPython: ottimizzazione numerica algoritmi genetici
Python: ottimizzazione numerica algoritmi genetici
 
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
 
Os Goodger
Os GoodgerOs Goodger
Os Goodger
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.
 
Effective EC2
Effective EC2Effective EC2
Effective EC2
 
Django è pronto per l'Enterprise
Django è pronto per l'EnterpriseDjango è pronto per l'Enterprise
Django è pronto per l'Enterprise
 
Foxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoFoxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automatico
 
OpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonOpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con Python
 

Similar a Qt mobile PySide bindings

Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Andrea Tosato
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioGiuneco S.r.l
 
Azure Bot Service with Node.js
Azure Bot Service with Node.jsAzure Bot Service with Node.js
Azure Bot Service with Node.jsMaurizio Moriconi
 
Qt roadmap: the future of Qt
Qt roadmap: the future of QtQt roadmap: the future of Qt
Qt roadmap: the future of QtDeveler S.r.l.
 
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessiInternet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessiWhymca
 
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile MessagingWhymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile MessagingWhymca
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...Codemotion
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspLaura Camellini
 
Da Zero all'open per PA e PMI
Da Zero all'open per PA e PMIDa Zero all'open per PA e PMI
Da Zero all'open per PA e PMINaLUG
 
Il futuro di Windows Phone
Il futuro di Windows PhoneIl futuro di Windows Phone
Il futuro di Windows PhoneMatteo Pagani
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneGiulio Collura
 
Creare un Information Radiator con Delphi
Creare un Information Radiator con DelphiCreare un Information Radiator con Delphi
Creare un Information Radiator con DelphiMarco Breveglieri
 
Realizzare Accessori iOS con Bluetooth Low Energy e Arduino
Realizzare Accessori iOS con Bluetooth Low Energy e ArduinoRealizzare Accessori iOS con Bluetooth Low Energy e Arduino
Realizzare Accessori iOS con Bluetooth Low Energy e Arduinofibasile
 

Similar a Qt mobile PySide bindings (20)

Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018
 
Mobile e Smart Client
Mobile e Smart ClientMobile e Smart Client
Mobile e Smart Client
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
 
Azure Bot Service with Node.js
Azure Bot Service with Node.jsAzure Bot Service with Node.js
Azure Bot Service with Node.js
 
Qt roadmap: the future of Qt
Qt roadmap: the future of QtQt roadmap: the future of Qt
Qt roadmap: the future of Qt
 
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessiInternet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
 
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile MessagingWhymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcsp
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Da Zero all'open per PA e PMI
Da Zero all'open per PA e PMIDa Zero all'open per PA e PMI
Da Zero all'open per PA e PMI
 
Da 0 all'open per PA e PMI
Da 0 all'open per PA e PMIDa 0 all'open per PA e PMI
Da 0 all'open per PA e PMI
 
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
 
A.rodolfi perugia 4.0
A.rodolfi perugia 4.0A.rodolfi perugia 4.0
A.rodolfi perugia 4.0
 
Il futuro di Windows Phone
Il futuro di Windows PhoneIl futuro di Windows Phone
Il futuro di Windows Phone
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphone
 
Creare un Information Radiator con Delphi
Creare un Information Radiator con DelphiCreare un Information Radiator con Delphi
Creare un Information Radiator con Delphi
 
SIMarket_Massimo La Morgia
SIMarket_Massimo La MorgiaSIMarket_Massimo La Morgia
SIMarket_Massimo La Morgia
 
Realizzare Accessori iOS con Bluetooth Low Energy e Arduino
Realizzare Accessori iOS con Bluetooth Low Energy e ArduinoRealizzare Accessori iOS con Bluetooth Low Energy e Arduino
Realizzare Accessori iOS con Bluetooth Low Energy e Arduino
 

Más de PyCon Italia

Python in the browser
Python in the browserPython in the browser
Python in the browserPyCon Italia
 
PyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyCon Italia
 
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCon Italia
 
New and improved: Coming changes to the unittest module
 	 New and improved: Coming changes to the unittest module 	 New and improved: Coming changes to the unittest module
New and improved: Coming changes to the unittest modulePyCon Italia
 
Monitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopMonitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopPyCon Italia
 
Jython for embedded software validation
Jython for embedded software validationJython for embedded software validation
Jython for embedded software validationPyCon Italia
 
Comet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedComet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedPyCon Italia
 
Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1PyCon Italia
 

Más de PyCon Italia (8)

Python in the browser
Python in the browserPython in the browser
Python in the browser
 
PyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fast
 
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
 
New and improved: Coming changes to the unittest module
 	 New and improved: Coming changes to the unittest module 	 New and improved: Coming changes to the unittest module
New and improved: Coming changes to the unittest module
 
Monitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopMonitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntop
 
Jython for embedded software validation
Jython for embedded software validationJython for embedded software validation
Jython for embedded software validation
 
Comet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedComet web applications with Python, Django & Orbited
Comet web applications with Python, Django & Orbited
 
Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1
 

Último

Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 

Último (6)

Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 

Qt mobile PySide bindings

  • 1. Qt Mobile Sviluppo mobile con Python e Qt Framework 7 Maggio 2010 @ PyCon 4 Andrea Grandi 1
  • 2. Agenda • QtMobility • MeeGo • QtCreator 2 • PySide • Generazione dei binding (Boost --> Shiboken) • Stato del progetto • Sviluppi futuri • Come iniziare a sviluppare in Python e Qt per Maemo • Esempi di codice con PySide • Conclusioni 2
  • 4. QtMobility • Bearer Management • Contacts • Location • Messaging • Multimedia • Publish and Subscribe • Service Framework • System Information • Sensors • Versit 4
  • 5. QtMobility: Bearer Management • Controlla lo stato di connettività del sistema • Permette alle applicazioni di sapere quando una particolare connessione diventa disponibile e di redirezionare il traffico su di essa • Restituisce informazioni dettagliate sulle connessioni configurate nel sistema e su quelle disponibili • Consente alle applicazioni di scegliere la configurazione di rete piu' appropriata a seconda che ci si trovi ad utilizzare una rete pubblica o privata 5
  • 6. QtMobility: Contacts • Permette di accedere ai Contatti presenti sul dispositivo • Supporto per i piu' diffusi formati di memorizzazione dei contatti • Le applicazioni possono utilizzare questa API per memorizzare un particolare tipo di informazione personalizzata all'interno di un contatto: un'applicazione di instant messaging ad esempio potrebbe utilizzare questa API per memorizzare il nome utente dell'account (Skype, Gtalk, MSN ecc...) • Supporto per operazioni asincrone quando si accede ai contatti, per facilitare le applicazioni di sincronizzazione remota 6
  • 7. QtMobility: Location • Ottenere la posizione geografica corrente (tramite GPS, celle GSM ecc...) • Trasmissione dell'aggiornamento della posizione • Possibilità di notifica se ci si trova all'interno di una certa area • Possibilità di accedere alle informazioni dettagliate sul segnale dei satelliti 7
  • 8. QtMobility: Messaging • Lettura ed invio di diversi tipi di messaggi: SMS, MMS, email … • Possibilità di filtrare i messaggi e recuperarli in base a determinati parametri • Accesso alle informazioni sugli account configurati nel dispositivo 8
  • 9. QtMobility: Multimedia • Riproduzione e registrazione di audio / video • Supporto per radio FM • Possibilità di riprodurre un file da una posizione remota (streaming audio / video) 9
  • 10. QtMobility: Publish / Subscribe • Sistema gerarchico di rappresentazione dei dati che è possibile condividere fra le varie applicazioni • Possibilità di ricevere una notifica quando un dato viene modificato da un'altra applicazione 10
  • 11. QtMobility: Service Framework • I client possono scoprire quali servizi sono disponibili ed interagire con essi • Permette di creare applicazioni che separino il client dal servizio stesso che offrono 11
  • 12. QtMobility: System Information • Permette di accedere alle informazioni di sistema e di essere notificati se avviene qualche cambiamento (stato della batteria, connettività, ecc...) • Si possono creare applicazioni che si comportino in maniera differente a seconda dello stato di sistema. Prevedere ad esempio una modalità di risparmio della potenza della CPU nel caso il dispositivo stia funzionando a batteria o sia alimentato a corrente 12
  • 13. QtMobility: Sensors • Accesso ai sensori hardware (accelerometro ad esempio) • Notifica del cambio di orientamento del dispositivo (landscape / portrait) • Permette di scrivere applicazioni che reagiscano in maniera differente a seconda della posizione in cui si trova il dispositivo 13
  • 14. QtMobility: Versit • Permette di leggere e scrivere documenti vCard • Esporta/importa da e verso QContacts e vCard 14
  • 15. MeeGo • Maemo e Moblin si fondono • Una nuova distribuzione Linux pensata per netbook, palmari e smartphone • UI basata sulle librerie Qt • Sistema di pacchetti RPM • Completamente opensource • Supporto per Intel/Atom e ARM • Disponibile dal secondo quarto del 2010 15
  • 17. QtCreator 2 • IDE per lo sviluppo Qt • Multi piattaforma (Windows, Linux, OSX) • Supporta lo sviluppo di applicazioni per palmari, smartphone (Maemo/MeeGo, Symbian) • Emulatore Maemo e Symbian integrato • Supporta al momento solo C++ (in futuro anche Python) • Integrazione con QtQuick (Qt User Interface Creation Kit) 17
  • 19. PySide • Bindings ufficiali di Nokia per le librerie Qt • Sviluppato e mantenuto da OpenBossa • Licenza LGPL • Pensato per Maemo (MeeGo) ma senza escludere le altre piattaforme (Windows, Linux, OSX). 19
  • 20. Generazione dei bindings • Inizialmente generati tramite Boost • Serviva un metodo veloce per iniziare • I binding generati erano troppo grandi • Prestazioni inferiori a PyQt • Passaggio a Shiboken • Possibilità di generare binding per qualsiasi libreria C++ • Dimensione nettamente inferiore dei binding generati • Maggiore flessibilità di utilizzo • Gestire sia i binding PySide che il generatore stesso 20
  • 21. Stato del progetto • Moduli disponibili • QtCore • QtGui • QtNetwork • QtSvg • QtWebkit • QtTest • Phonon • QtHelp • QtScript • Codice da ottimizzare (prestazioni e dimensioni) • Completare il passaggio da Boost a Shiboken 21
  • 22. Sviluppi futuri • Ulteriore ottimizzazione per i dispositivi con meno risorse di calcolo (palmari, cellulari ecc...) • Porting per OSX e Windows (ci sono volontari?) • Integrazione con QtCreator • Strumenti per iniziare a creare velocemente un binding (probabilmente un plugin per QtCreator) 22
  • 23. Come iniziare • Conoscenze di base • Python • Qt • Linee guida di Maemo (per la UI) • Strumenti necessari • PC con Linux (per il momento) • Maemo SDK • PySide (non distribuito di default con l'SDK) 23
  • 24. Domande Frequenti • PySide supporta QtMobility? • QtCreator avrà il supporto per Python e PySide? • PySide è compatibile con PyQt a livello di API? • QtUiTools è disponibile su PySide? In particolare è possibile disegnare la propria UI tramite QtDesigner ed utilizzarla da PySide? • Perchè non si è scelto di utilizzare PyQt? • PySide supporta solo Maemo o anche il nuovo Symbian? 24
  • 25. Riferimenti • Web • PySide: http://www.pyside.org • Maemo: http://www.maemo.org • MeeGo: http://www.meego.com • Qt: http://qt.nokia.com • IRC • #pyside @ FreeNode • #maemo @ FreeNode • #meego @ FreeNode • Andrea Grandi • a.grandi@gmail.com • http://www.andreagrandi.it 25