desenvolvimento mobile com visual studio 2008, por onde começar?
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
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
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
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
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
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 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
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);
}}