desenvolvimento mobile com visual studio 2008, por onde começar?

38

Upload: stefanini

Post on 12-Dec-2014

6.077 views

Category:

Technology


0 download

DESCRIPTION

Apresentarção do .NET Compact Framework.Explicitando principais recursos do desenvolvimento mobile com framework 3.5, acesso a dados, replicação e gerenciamento do dispositivo.

TRANSCRIPT

Desenvolvimento para Windows Mobile – Por onde começar?

Marcus Dorbaçã[email protected]

Agenda

• Introdução

• Plataforma Windows Mobile

• Introdução ao .NET Compact Framework

3.5

• Por onde começar?

• “Hello World !”

• Packaging & Deployment

• GUI (Graphical User Interface)

Agenda

• SQL Server Mobile 2005

• API´S de interação com o dispositivo

• Dicas, truques e boas práticas

• Conclusão

• Links

Introdução

As pessoas precisam de informação nas pontas dos dedos, em qualquer lugar, à qualquer hora.

Acesso a informação não é o suficiente. É preciso inteligência na aquisição.

Plataforma Windows Mobile

Devices

Existem basicamente três tipos de dispositivos.- Pocket PC- Smartphone- Pocket PC Phone Edition

Plataforma Windows Mobile

Arquitetura

Windows CE

API Win32 comum a todos os dispositivos. Acesso simplificado e padronizado aos recursos

de Hardware

Versão “móvel” de ferramentas de produtividade.- Excel Mobile, Word Mobile, Pocket Outlook

Introdução ao .NET CF 3.5

Framework, Compact Framework e Micro Framework

Desenvolvido para trazer o mundo de código gerenciado para a plataforma windows mobile.

Mesma família de classes e hierarquia de Namespaces da framework.

O .NET CF representa 30% da framework completa.

Introdução ao .NET CF 3.5

O que tem e o que não tem?.NET CF 3.5 .Net Framework 3.5

Serialization Não Sim

Extensible Stylesheet Language Transformations (XSLT). Não Sim

XML Sim Sim

LINQ Apenas LINQ To Data Set e LINQ To XML Sim

Por onde começar?

• Windows Mobile Device Center 6.1– ActiveSync 4.5 para Windows XP & Server 2003

• Visual Studio 2008 Professional– Versões Express e Standard não suportam o

desenvolvimento para Windows Mobile– Suporta .NET CF 2.0 e 3.5– Versão 2005 suporta .NET CF 1.0 e 2.0– Versão 2003 suporta .NET CF 1.0– Opções para desenvolvimento sem Visual Studiohttp://www.codeproject.com/KB/mobile/WiMoSansVS.aspx

Por onde começar?

• A instalação do VS inclui...– Remote Tools

• Remote Registry Editor• Remote File Viewer• Remote Process Viewer• Remote Zoom In• ...

Por onde começar?

• SDKs das plataformas a suportar– Windows Mobile 2003 & 5.0 SDK

• incluído na instalação do VS2008

– Windows Mobile 6 SDKhttp://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&displaylang=en

• Professional para equipamentos com tela sensível ao toque

– Inclui equipamentos ‘Classic’ (sem telefone)

• Standard para equipamentos sem tela sensível ao toque• Inclui Device Emulator Manager, Cellular Emulator,

FakeGPS, Samples

Hello World !

DemoCriando meu Hello World !

Hello World !

• Executar no emulador• Executar direto no device• Depuração

Packaging & Deployment

Criação do ficheiro CAB• Modelo .CAB para instalação nos equipamentos

Windows Mobile– Permite instalação directa no equipamento

• A partir de cartão de memória (c/ eventual auto-instalação na inserção do cartão)

• Cópia manual• Envio por mail• Download (directo ou página criada para o efeito)

– Link directo pode ser enviado por SMS

• Com o .CAB pode-se...– Copiar ficheiros para pastas próprias e de sistema– Criar atalhos– Inserir valores no Registry

Packaging & Deployment

DemoDistribuindo a aplicação com ficheiros CAB

Packaging & Deployment

Distribuindo a aplicação com ficheiro CAB• Definindo o projeto que será instalado

• Application Folder• Programs Folder

Packaging & Deployment

Distribuindo a aplicação com ficheiro CAB• Instalando a aplicação no meu device

• Instalando pelo SD card

• Instalando pela internet

API´S de interação com o dispositivo

• Microsoft.WindowsMobile.PocketOutlook

Sessão de Outlook

Logs into databaseImportante fazer o disposeLogs into databaseImportante fazer o dispose

OutlookSessionClass

Properties

AppointmentsContactsEmailAccountsSmsAccountTasks

Methods

Dispose (+ 1 overload)OutlookSession

Informação pessoal

Contactos Compromissos

Tarefas

API´S de interação com o dispositivo

• Microsoft.WindowsMobile.PocketOutlook

Sessão de Outlook

Logs into databaseImportante fazer o disposeLogs into databaseImportante fazer o dispose

OutlookSessionClass

Properties

AppointmentsContactsEmailAccountsSmsAccountTasks

Methods

Dispose (+ 1 overload)OutlookSession

Informação pessoal

Contactos Compromissos

Tarefas

API´S de interação com o dispositivo

DemoMonitorando SMS de um contato

API´S de interação com o dispositivo

API´S de interação com o dispositivo

OutlookSession outlookSession = new OutlookSession();

cmbContatos.DataSource = outlookSession.Contacts.Items;cmbContatos.DisplayMember = "FirstName";cmbContatos.ValueMember = "ItemId“;

Microsoft.WindowsMobile.PocketOutlook

Carregando os contatos...

API´S de interação com o dispositivo

interceptorSMS = new MessageInterceptor();

interceptorSMS.InterceptionAction = InterceptionAction.Notify;interceptorSMS.MessageReceived += new MessageInterceptorEventHandler(interceptorSMS_MessageReceived);

void interceptorSMS_MessageReceived(object sender, MessageInterceptorEventArgs e){

Contact contato = (Contact)cmbContatos.SelectedItem;

if (e.Message.From.Address.Contains(contato.MobileTelephoneNumber))lblContato.Text = GetMessage(contato, e);

elselblContato.Text = "";

}

Microsoft.WindowsMobile.PocketOutlook.MessageInterceptor

API´S de interação com o dispositivo

Device State and Notification SystemState

StateBase

Class

Properties

ApplicationArgumentsApplicationLaunchIdApplicationToLaunchBitMaskComparisonTypeComparisonValueCurrentValueProperty

Methods

DisableApplicationLauncher (+ 1 overload)DisposeEnableApplicationLauncher (+ 2 overloads)GetValueIsApplicationLauncherEnabledSystemState (+ 3 overloads)

Events

Changed

Messaging Telefone

Compromissos Media Player Hardware disponível

Mais de 150 estados pré-definidos

Abordagem consistente

Rede

API´S de interação com o dispositivo

DemoInterceptando uma ligação

API´S de interação com o dispositivoMicrosoft.WindowsMobile.Status

API´S de interação com o dispositivo

private SystemState telefone; //Global

this.telefone = new SystemState(SystemProperty.PhoneTalkingCallerContact, true);this.telefone.Changed += new ChangeEventHandler(telefone_Changed);

void telefone_Changed(object sender, ChangeEventArgs args) { if (args.NewValue != null) { OutlookSession outlookSession = new OutlookSession();

ItemId itemId = new ItemId((int)args.NewValue); Contact contact = new Contact(itemId);

lblNome.Text = contact.FirstName; lblTelefone.Text = contact.MobileTelephoneNumber.ToString(); lblInicio.Text = DateTime.Now.ToString(); } else { lblFim.Text = DateTime.Now.ToString(); this.Activate(); }

}

Microsoft.WindowsMobile.Status

API´S de interação com o dispositivo

DemoCaptura de elementos multimidia

API´S de interação com o dispositivoCaptura de elementos multimidia

• Microsoft.WindowsMobile.Forms• Interatividade com a câmera do device

const string path = @"Arquivos de Programas\MobileToolKit";

CameraCaptureDialog camera = new CameraCaptureDialog();

camera.Mode = CameraCaptureMode.Still;camera.StillQuality = CameraCaptureStillQuality.High;

camera.InitialDirectory = path;camera.DefaultFileName = @"foto.jpg";

if (camera.ShowDialog() == DialogResult.OK){

Bitmap bitmap = new Bitmap(string.Format(@"{0}\{1}", path, camera.DefaultFileName));

pictureBox1.Image = bitmap;}

GUI – Graphical User interface

GUI – Graphical User interface

DemoGUI – Carregando uma TreeView

GUI – Graphical User interface

Populando TreeView

Usando XMLDocument()

Leitura de arquivo

GUI – Graphical User Interface

const string filePath = @"Arquivos de Programas\TreeViewBasica\TreeView.xml";

XmlDocument xmlDocument = new XmlDocument();xmlDocument.Load(filePath);XmlNodeList xmlNodeList = xmlDocument.DocumentElement.ChildNodes;Populate(treeView1.Nodes, xmlNodeList);

XmlDocument xmlDocument = new XmlDocument();private void Populate(TreeNodeCollection treeNodeCollection, XmlNodeList xmlNodeList){

foreach (XmlNode item in xmlNodeList){

TreeNode treeNode = new TreeNode(item.Name);treeNodeCollection.Add(treeNode);

if (item.HasChildNodes)Populate(treeNode.Nodes, item.ChildNodes);

}}

SQL Server Compact Edition 3.5

DemoNorthwind – Inserting, selecting & replication

SQL Server Compact Edition 3.5

SQL Server Compact Edition 3.5

SQL Server Compact Edition 3.5