16

Desenvolvimento em Windows 8 - Curso Completo

Embed Size (px)

DESCRIPTION

Destinado a programadores e todos os interessados, este livro explora o novo ambiente WinRT para o desenvolvimento de aplicações para PC e tablets. Inclui inúmeros exemplos práticos.

Citation preview

Distribuição

Lidel – edições técnicas, lda

SEDE: R. D. Estefânia, 183, R/C Dto., 1049-057 LISBOA Internet: 21 354 14 18 – [email protected] / Revenda: 21 351 14 43 – [email protected] Formação/Marketing: 21 351 14 48 – [email protected] / [email protected] Ens. Línguas/Exportação: 21 351 14 42 – [email protected] Fax: 21 352 26 84

LIVRARIA:

Av. Praia da Vitória, 14 – 1000-247 LISBOA – Tel.: 21 354 14 18, e-mail: [email protected]

Copyright © janeiro de 2013

FCA – Editora de Informática, Lda.

ISBN: 978-972-722-754-9

Capa: Emília Calçada

Impressão e acabamento: Tipografia Lousanense, Lda. – Lousã

Depósito Legal N.º 353047/12

Livro segundo o Novo Acordo Ortográfico

Os nomes comerciais referenciados neste livro têm patente registada

Este pictograma merece uma explicação. O seu propósito é alertar o leitor para a ameaça que representa para o futuro da escrita, nomeadamente na área da edição técnica e universitária, o desenvolvimento massivo da fotocópia. O Código do Direito de Autor estabelece que é crime punido por lei, a fotocópia sem autorização dos proprietários do copyright. No entanto, esta prática generalizou-se sobretudo no ensino superior, provocando uma queda substancial na compra de livros técnicos. Assim, num país em que a literatura técnica é tão escassa, os autores não sentem motivação para criar obras inéditas e fazê-las publicar, ficando os leitores impossibilitados de ter bibliografia em português. Lembramos portanto, que é expressamente proibida a reprodução, no todo ou em parte, da presente obra sem autorização da editora.

Marcas Registadas de FCA – Editora de Informática, Lda. – ®

® ®

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

ÍÍNNDDIICCEE GGEERRAALL

AGRADECIMENTOS .............................................................................................. XV

PREFÁCIO...................................................................................................... XVII

0. INTRODUÇÃO ................................................................................................... 1

0.1 O que posso encontrar neste livro ................................................................................... 1 0.2 Requisitos ............................................................................................................................ 1 0.3 A quem se dirige este livro? ............................................................................................. 2 0.4 Código e samples ................................................................................................................. 2 0.5 Convenções ......................................................................................................................... 3 0.6 Organização do livro ......................................................................................................... 3

0.6.1 Capítulo 1: Introdução às Windows Store Apps ................................................... 3 0.6.2 Capítulo 2: Controlos ............................................................................................. 3 0.6.3 Capítulo 3: Layouts, Vistas e Navegação ............................................................. 4 0.6.4 Capítulo 4: Input ..................................................................................................... 4 0.6.5 Capítulo 5: Ficheiros .............................................................................................. 4 0.6.6 Capítulo 6: Data Binding ........................................................................................ 4 0.6.7 Capítulo 7: Networking ........................................................................................... 4 0.6.8 Capítulo 8: Tiles, Badges e Toasts ........................................................................... 5 0.6.9 Capítulo 9: Contratos ............................................................................................. 5 0.6.10 Capítulo 10: Multimédia ....................................................................................... 5 0.6.11 Capítulo 11: Periféricos e Sensores ...................................................................... 5 0.6.12 Capítulo 12: Animações ........................................................................................ 6 0.6.13 Capítulo 13: Aplicações ......................................................................................... 6

0.7 Suporte ................................................................................................................................. 6

1. INTRODUÇÃO ÀS WINDOWS STORE APPS ............................................................... 7

1.1 Uma visita guiada à nova interface gráfica .................................................................... 7 1.1.1 Introdução ao ecrã inicial ...................................................................................... 7 1.1.2 Introdução às aplicações Windows Store ........................................................... 10

1.2 Ambiente de runtime e SDK ............................................................................................ 19 1.2.1 WinRT e metadata ................................................................................................ 21

1.3 Anatomia de um projeto WinRT .................................................................................... 22 1.3.1 Design de uma aplicação ..................................................................................... 37

2. CONTROLOS .................................................................................................. 39

2.1 Introdução aos controlos ................................................................................................. 39 2.2 Controlos intrínsecos ....................................................................................................... 39

DDEESSEENNVVOOLLVVIIMMEENNTTOO EEMM WWIINNDDOOWWSS 88

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

VIII

2.2.1 Estilos predefinidos ............................................................................................. 41 2.2.2 Interação a partir de JavaScript ........................................................................... 50

2.3 Controlos WinJS ................................................................................................................ 52 2.3.1 Rating ..................................................................................................................... 53

2.3.1.1 Abordagem imperativa ........................................................................ 63 2.3.2 DatePicker e TimePicker ..................................................................................... 64 2.3.3 ToggleSwitch ......................................................................................................... 66 2.3.4 FlipView ................................................................................................................ 66

2.3.4.1 Outras propriedades, métodos e eventos ......................................... 72 2.3.4.2 Estilos CSS .............................................................................................. 73

2.3.5 ListView ................................................................................................................. 73 2.3.5.1 Agrupamento de itens ......................................................................... 79 2.3.5.2 Carregamentos de dados ..................................................................... 84 2.3.5.3 Seleção de itens ..................................................................................... 86 2.3.5.4 Observações finais ................................................................................ 88

2.3.6 SemanticZoom ...................................................................................................... 89 2.3.7 Flyout ..................................................................................................................... 92 2.3.8 MessageDialog ...................................................................................................... 95 2.3.9 AppBar ................................................................................................................... 97

2.3.9.1 Personalização do aspeto dos comandos ........................................ 103 2.3.9.2 Modificação dos comandos apresentados em runtime .................. 104 2.3.9.3 Personalização do layout .................................................................... 106 2.3.9.4 Observações finais .............................................................................. 108

2.3.10 Menu .................................................................................................................... 108 2.3.11 PopupMenu .......................................................................................................... 111 2.3.12 Tooltip .................................................................................................................. 114 2.3.13 SettingsPane ........................................................................................................ 115 2.3.14 HtmlControl ........................................................................................................ 115 2.3.15 Page ...................................................................................................................... 116

3. LAYOUTS, VISTAS E NAVEGAÇÃO ...................................................................... 117

3.1 Layouts .............................................................................................................................. 117 3.1.1 Flexible Box ........................................................................................................... 117 3.1.2 Grid ....................................................................................................................... 121 3.1.3 Multicolumn ......................................................................................................... 124 3.1.4 Regiões CSS3 ....................................................................................................... 126

3.2 Vistas ................................................................................................................................ 129 3.2.1 Media queries ........................................................................................................ 130 3.2.2 Adaptação através do tratamento de eventos ............................................... 131

3.2.2.1 Snapping ................................................................................................ 132 3.2.2.2 Orientação do ecrã .............................................................................. 135

ÍÍNNDDIICCEE GGEERRAALL

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

IX

3.3 Navegação ....................................................................................................................... 138 3.3.1 Navegação básica ............................................................................................... 138

3.3.1.1 Contexto local vs. contexto Web ........................................................ 142 3.3.1.2 Navegação entre páginas internas e externas ................................ 144

3.3.2 Controlo HtmlControl ....................................................................................... 144 3.3.3 Fragmentos .......................................................................................................... 144

3.3.3.1 Funcionamento interno dos fragmentos ......................................... 148 3.3.4 Controlo Page ..................................................................................................... 150

3.3.4.1 Método render ..................................................................................... 152 3.3.4.2 Instanciação como controlo ............................................................... 153 3.3.4.3 Ciclo de vida de um controlo Page .................................................. 155

3.3.5 Suporte à navegação .......................................................................................... 161 3.3.5.1 Navegação com fragmentos .............................................................. 161 3.3.5.2 Navegação com controlos Page ........................................................ 167

4. INPUT ....................................................................................................... 171

4.1 Interação com o utilizador ............................................................................................ 171 4.1.1 Desenho baseado no toque (touch) .................................................................. 171 4.1.2 Experiência com base no toque (touch) ........................................................... 172 4.1.3 Windows 8 Touch Language ................................................................................ 173 4.1.4 Teclado e rato num desenho baseado no toque ............................................ 175

4.2 Identificação de dispositivos ........................................................................................ 176 4.2.1 Deteção do rato ................................................................................................... 177 4.2.2 Deteção do teclado ............................................................................................. 177 4.2.3 Deteção de toque ................................................................................................ 178 4.2.4 Deteção de dispositivos do tipo pointer .......................................................... 178

4.3 Exemplos práticos: desenhar para o toque ................................................................. 180 4.3.1 Scrolling, panning e zooming ............................................................................... 180

4.3.1.1 Snappoints ............................................................................................. 182 4.3.1.2 Zooming ................................................................................................. 185

4.3.2 Pointers ................................................................................................................. 186 4.3.2.1 Integração com scrolling e zooming ................................................... 189

4.3.3 Gestos (Gestures) ................................................................................................. 194 4.3.3.1 Eventos do tipo static gestures ........................................................... 195 4.3.3.2 Eventos do tipo dynamic gestures ...................................................... 195 4.3.3.3 Cenários avançados: GestureRecognizer ........................................ 199

5. FICHEIROS .................................................................................................. 205

5.1 Introdução aos ficheiros em WinRT ............................................................................ 205 5.1.1 Zonas de acesso a ficheiros ............................................................................... 206 5.1.2 API de acesso ...................................................................................................... 207

DDEESSEENNVVOOLLVVIIMMEENNTTOO EEMM WWIINNDDOOWWSS 88

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

X

5.1.3 StorageFile e StorageFolder .............................................................................. 208 5.2 Acesso a ficheiros ........................................................................................................... 208

5.2.1 Acesso de dados à zona app data ...................................................................... 209 5.2.1.1 Definições da aplicação ...................................................................... 215 5.2.1.2 Definições da aplicação – parte II ..................................................... 218

5.2.2 Acesso de ficheiros em libraries ........................................................................ 222 5.2.2.1 Agrupamento por álbum ................................................................... 226 5.2.2.2 Filtragem por género .......................................................................... 228 5.2.2.3 Músicas de um álbum ........................................................................ 231 5.2.2.4 E a música, toca? ................................................................................. 234

5.2.3 Pickers ................................................................................................................... 236 5.2.3.1 Gravação de ficheiros ......................................................................... 238 5.2.3.2 Pastas .................................................................................................... 240 5.2.3.3 Future-access list (FAL)........................................................................ 240 5.2.3.4 Most-recently used list (MRU) ............................................................. 243

5.2.4 Download e upload de ficheiros .......................................................................... 245 5.3 File Open Picker Contract ................................................................................................ 252

5.3.1 File Save Picker Contract ...................................................................................... 263 5.4 Associação de ficheiros e AutoPlay .............................................................................. 265

5.4.1 Associação de uma aplicação a um tipo de ficheiro ..................................... 268 5.4.2 AutoPlay ............................................................................................................... 272

6. DATA BINDING ............................................................................................ 281

6.1 Introdução ao data binding ............................................................................................ 281 6.2 Data binding declarativo ................................................................................................ 281

6.2.1 Atualização de dados ........................................................................................ 284 6.2.2 Inicializadores ..................................................................................................... 285 6.2.3 Conversores ......................................................................................................... 287 6.2.4 Criação de objetos observáveis ........................................................................ 288

6.3 Binding bidirecional ....................................................................................................... 290 6.4 Binding programático ..................................................................................................... 291

6.4.1 Notificação de alterações ................................................................................... 292 6.5 Templates .......................................................................................................................... 293

6.5.1 Renderização de vários templates ..................................................................... 295 6.6 Objetos data source .......................................................................................................... 296

6.6.1 Configuração dos serviços da Google .............................................................. 298 6.6.2 Construção do objeto data source ...................................................................... 300

7. NETWORKING .............................................................................................. 307

7.1 A rede e o manifesto de uma aplicação ...................................................................... 307 7.2 Deteção de rede .............................................................................................................. 309

ÍÍNNDDIICCEE GGEERRAALL

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

XI

7.2.1 Perfil de ligação à rede ...................................................................................... 309 7.2.1.1 Estatísticas de uso local ...................................................................... 317

7.2.2 Deteção de ligação à rede .................................................................................. 318 7.3 Interação com Web services ............................................................................................ 320

7.3.1 Evitar o caching ................................................................................................... 325 7.3.2 Timeouts ................................................................................................................ 326

7.4 Syndication ....................................................................................................................... 326 7.4.1 Modificação de uma feed ................................................................................... 329

7.5 Autenticação com WebAuthenticationBroker ........................................................... 337 7.6 Serviços Live .................................................................................................................... 342 7.7 Sockets ............................................................................................................................... 345

7.7.1 TCP vs. UDP ........................................................................................................ 346 7.7.2 Tipos de sockets ................................................................................................... 346 7.7.3 Informação estatística ........................................................................................ 347 7.7.4 Streamsocket: Um exemplo prático ................................................................... 348 7.7.5 DatagramSocket ................................................................................................. 357 7.7.6 Web Sockets ........................................................................................................... 361 7.7.7 Ligação de proximidade .................................................................................... 363

7.8 Transferência de dados em background ....................................................................... 363

8. TILES, BADGES E TOASTS ............................................................................... 365

8.1 Tiles ................................................................................................................................... 365 8.1.1 Tile predefinido ................................................................................................... 367 8.1.2 Envio de notificações ......................................................................................... 369

8.1.2.1 Envio de notificações para diferentes tipos de tile ......................... 371 8.1.2.2 Uso de imagens em notificações ....................................................... 372 8.1.2.3 Pilha de notificações ........................................................................... 374 8.1.2.4 Tempo de vida de uma notificação .................................................. 376 8.1.2.5 Uso de tags ........................................................................................... 376 8.1.2.6 Notificações periódicas ...................................................................... 376 8.1.2.7 Notificações calendarizadas .............................................................. 377 8.1.2.8 Notificações push ................................................................................. 378

8.1.3 Tile secundário .................................................................................................... 387 8.1.3.1 Enumerar tiles ...................................................................................... 391 8.1.3.2 Envio de notificações .......................................................................... 391 8.1.3.3 Ativação de uma aplicação ................................................................ 393

8.2 Badges ............................................................................................................................... 394 8.2.1 Tempo de vida de um badge ............................................................................. 396 8.2.2 Notificações periódicas ...................................................................................... 397 8.2.3 Notificações push ................................................................................................ 397 8.2.4 Tiles secundários ................................................................................................. 398

DDEESSEENNVVOOLLVVIIMMEENNTTOO EEMM WWIINNDDOOWWSS 88

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

XII

8.3 Toasts ................................................................................................................................ 398 8.3.1 Geração de um toast ........................................................................................... 399 8.3.2 Sons usados nos toasts ....................................................................................... 401 8.3.3 Parâmetros de ativação ..................................................................................... 403 8.3.4 Notificações calendarizadas ............................................................................. 404 8.3.5 Notificações push ................................................................................................ 405

8.4 Lock Screen ........................................................................................................................ 405 8.4.1 Declaração da intenção de usar o lock screen .................................................. 407 8.4.2 Background tasks .................................................................................................. 407 8.4.3 Personalização da aplicação no lock screen ..................................................... 408

9. CONTRATOS ................................................................................................ 411

9.1 Introdução aos contratos ............................................................................................... 411 9.2 Background tasks .............................................................................................................. 413

9.2.1 Exemplo prático .................................................................................................. 418 9.3 Contact Picker ................................................................................................................... 424 9.4 Search ................................................................................................................................ 432 9.5 Settings ............................................................................................................................. 443 9.6 Share target ....................................................................................................................... 448

9.6.1 Aplicação-fonte ................................................................................................... 451 9.6.2 Aplicação-alvo .................................................................................................... 456

10. MULTIMÉDIA ............................................................................................. 463

10.1 Introdução à multimédia .......................................................................................... 463 10.2 Introdução ao vídeo e ao áudio ............................................................................... 464 10.3 Play to ........................................................................................................................... 470 10.4 Efeitos .......................................................................................................................... 472 10.5 Média em background ................................................................................................. 473

10.5.1 Competição pelo som ................................................................................. 477 10.6 Media Controls ............................................................................................................. 478 10.7 Reprodução Stereo 3D ................................................................................................ 480 10.8 DRM ............................................................................................................................. 481 10.9 Captura de imagem e de som .................................................................................. 482

10.9.1 MediaCapture ............................................................................................... 486 10.9.1.1 Definições de captura ................................................................. 491 10.9.1.2 Rotação ......................................................................................... 495 10.9.1.3 Mirroring ...................................................................................... 496 10.9.1.4 Aplicação de efeitos .................................................................... 497 10.9.1.5 Áudio ............................................................................................ 498

10.10 Transcoding .................................................................................................................. 498 10.10.1 Conversão de formato ................................................................................ 498

ÍÍNNDDIICCEE GGEERRAALL

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

XIII

10.10.2 Trimming ....................................................................................................... 502 10.11 Imagens ........................................................................................................................ 505

10.11.1 Escrita de metadatada ................................................................................ 508 10.11.2 Modificação dos píxeis ............................................................................... 510 10.11.3 Aplicação de efeitos extra .......................................................................... 513

11. PERIFÉRICOS E SENSORES ............................................................................ 517

11.1 Introdução aos dispositivos externos ..................................................................... 517 11.1.1 Enumeração de dispositivos ...................................................................... 518

11.1.1.1 Enumeração de outros dispositivos ......................................... 522 11.1.1.2 Enumeração “ativa” de dispositivos ....................................... 524 11.1.1.3 Enumeração de dispositivos PnP ............................................. 528

11.2 Impressão .................................................................................................................... 530 11.2.1 Impressão básica .......................................................................................... 530 11.2.2 Definições predefinidas no preview de impressão .................................. 533 11.2.3 Definições personalizadas no preview de impressão .............................. 535 11.2.4 Impressão alternativa .................................................................................. 537

11.3 Sensores de orientação e de movimento ................................................................ 538 11.3.1 Acelerómetro ................................................................................................ 538 11.3.2 Inclinómetro ................................................................................................. 541 11.3.3 Girómetro ...................................................................................................... 542 11.3.4 Compasso ...................................................................................................... 543 11.3.5 Sensor de orientação .................................................................................... 544

11.4 Sensores de luz ........................................................................................................... 545 11.5 Geolocalização ............................................................................................................ 545

11.5.1 Deteção da atualização da localização ...................................................... 549 11.6 SMS .............................................................................................................................. 550

11.6.1 Mensagens recebidas ................................................................................... 554 11.6.2 Notificação de mensagem recebida em background ................................ 556

12. ANIMAÇÕES .............................................................................................. 559

12.1 Introdução às animações .......................................................................................... 559 12.2 Biblioteca de animação .............................................................................................. 561

12.2.1 Navegação entre páginas ............................................................................ 561 12.2.2 Conteúdos ..................................................................................................... 564 12.2.3 Elementos suplementares da UI ................................................................ 568 12.2.4 Coleções ......................................................................................................... 573 12.2.5 Cenários de seleção ...................................................................................... 576

12.3 Observações finais ..................................................................................................... 579

13. APLICAÇÕES .............................................................................................. 581

DDEESSEENNVVOOLLVVIIMMEENNTTOO EEMM WWIINNDDOOWWSS 88

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

XIV

13.1 Ciclo de vida de uma aplicação ............................................................................... 581 13.1.1 Ativação de aplicações ................................................................................ 585

13.1.1.1 Splash Screen ................................................................................. 591 13.1.2 Suspensão de aplicações ............................................................................. 595 13.1.3 Resumo de aplicações ................................................................................. 596

13.2 Globalização e localização de aplicações ............................................................... 596 13.2.1 Recursos em markup .................................................................................... 597 13.2.2 Recursos em JavaScript ................................................................................ 600 13.2.3 Recursos provenientes de outros ficheiros .............................................. 601 13.2.4 Localização de imagens .............................................................................. 602 13.2.5 Recursos no manifesto ................................................................................ 605 13.2.6 Refrescamento da cultura usada ............................................................... 606 13.2.7 Operações de data binding ........................................................................... 607 13.2.8 Escolha programática da linguagem ........................................................ 607 13.2.9 Indicação explícita da língua usada num recurso .................................. 609 13.2.10 Recursos no contexto Web........................................................................... 609 13.2.11 Observações finais sobre globalização ..................................................... 612

13.3 Debugging de aplicações ............................................................................................ 615 13.4 Packaging ...................................................................................................................... 619 13.5 Windows Store .............................................................................................................. 623

13.5.1 Verificações pré-publicação ....................................................................... 625

BIBLIOGRAFIA ................................................................................................. 627

ÍNDICE REMISSIVO ........................................................................................... 629

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

1IINNTTRROODDUUÇÇÃÃOO

O Windows 8 é a última evolução do sistema operativo cliente Windows desenvolvido pela Microsoft. Uma das suas principais novidades é a introdução de uma nova shell gráfica, inicialmente designada por Metro. Esta nova interface reutiliza a linguagem visual característica do Windows Phone e é suportada por uma nova plataforma, designada por WinRT, que estará disponível numa panóplia de dispositivos, desde o tradicional PC (Personal Computer) até ao tablet. Na prática, isto significa que as aplicações construídas sobre a plataforma WinRT podem correr em todos os dispositivos onde o Windows 8 estiver instalado. Estamos, portanto, perante aquele que será o marco mais importante da Microsoft desde o lançamento do Windows 95.

0.1 OO QQUUEE PPOOSSSSOO EENNCCOONNTTRRAARR NNEESSTTEE LLIIVVRROO

Neste livro, optámos por recorrer ao HTML5 e ao JavaScript para apresentar muitas das funcionalidades disponibilizadas pela plataforma WinRT que podem ser usadas na construção de aplicações Windows Store. Muitas destas funcionalidades são ilustradas através de vários exemplos práticos, que se concentram em apresentar estratégias e boas práticas associadas ao seu uso. Todos estes exemplos podem ser obtidos gratuitamente, a partir do site da editora FCA (http://www.fca.pt).

0.2 RREEQQUUIISSIITTOOSS

A utilização do código que acompanha este livro pressupõe o uso do sistema operativo Windows 8. Para além disso, o livro parte do princípio de que o leitor possui alguns conhecimentos sobre o desenvolvimento de aplicações Web. Por outras palavras, presume-se que o leitor possui alguns conhecimentos básicos sobre elementos HTML, aplicação de estilos CSS e uso de JavaScript.

Apesar de todo o código ter sido escrito com o Visual Studio 2012, na verdade, as ferramentas Express (que podem ser obtidas gratuitamente a partir de http://bit.ly/JLvqFA) são mais do que suficientes para criar e compilar as várias aplicações apresentadas ao longo do livro.

DDEESSEENNVVOOLLVVIIMMEENNTTOO EEMM WWIINNDDOOWWSS 88

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

2

Praticamente todas as aplicações criadas ao longo do livro podem ser executadas num PC ou no simulador Windows 8. Existem, contudo, alguns (poucos) exemplos que pressupõem o acesso a determinados dispositivos que podem não existir num PC tradicional. Por exemplo, a API (Application Programming Interface) de SMS é um desses casos e só pode ser testada num PC que possua um adaptador de rede móvel.

0.3 AA QQUUEEMM SSEE DDIIRRIIGGEE EESSTTEE LLIIVVRROO??

Este livro é dirigido a todos os leitores interessados em criar aplicações Windows

Store para Windows 8 através de HTML e JavaScript. É especialmente adequado aos leitores que se estão a iniciar, mas também é suficientemente abrangente para poder ser usado como referência por aqueles que já possuem alguns conhecimentos básicos sobre a plataforma e que procuram aprofundá-los.

Neste livro, optámos por construir as aplicações através de HTML5 e JavaScript por duas razões essenciais. Em primeiro lugar, porque o uso destas linguagens é uma das grandes novidades associadas ao desenvolvimento de aplicações Windows Store. Para além disso, a utilização destas tecnologias permite ao programador com experiência no desenvolvimento de aplicações Web reutilizar muitos dos conhecimentos obtidos nessa área. Com a explosão que a Web teve nos últimos anos, parece-nos que o uso de HTML5 e JavaScript é a opção que permite satisfazer o maior número de pessoas interessadas no desenvolvimento de aplicações deste tipo.

Convém ainda referir que muitos dos conceitos apresentados neste livro são transversais às várias linguagens que podem ser usadas na construção de aplicações Windows Store. Na prática, isso significa que a transposição do código JavaScript, apresentado em vários dos exemplos, para outra linguagem não deve oferecer muitas dificuldades ao leitor interessado em usar outra linguagem no desenvolvimento deste tipo de aplicações.

0.4 CCÓÓDDIIGGOO EE SSAAMMPPLLEESS

Todas as aplicações que acompanham este livro foram construídas com o Visual

Studio 2012. Apesar de o uso deste IDE (Integrated Development Environment) ser recomendado, na verdade, o leitor deverá ser capaz de utilizar o Visual Studio Express para criar ou compilar todas as aplicações apresentadas no livro. O leitor interessado pode obter todo o código que acompanha este livro a partir do site da editora FCA (http://www.fca.pt).

IINNTTRROODDUUÇÇÃÃOO

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

3

0.5 CCOONNVVEENNÇÇÕÕEESS

Ao longo do livro, optou-se por seguir um conjunto de convenções que devem facilitar a interpretação do texto e do código. Assim, todos os excertos de código são apresentados com a formatação que se segue:

<TextBlock Text=”Olá, mundo!” />

var c = 10;

O caráter � é usado para indicar que a linha atual não deve ser dividida em duas linhas (essa divisão ocorreu apenas porque a página física do livro não possui o espaço suficiente para apresentar numa única linha). Todas as notas e observações importantes poderão ser encontradas no interior de uma secção semelhante à seguinte:

Nota importante sobre um tópico.

0.6 OORRGGAANNIIZZAAÇÇÃÃOO DDOO LLIIVVRROO

O livro está dividido em vários capítulos e pode ser lido sequencialmente, levan-do o leitor numa “viagem“, que começa com uma breve apresentação sobre algumas das características marcantes da nova shell gráfica para, em seguida, se debruçar sobre várias das funcionalidades mais importantes introduzidas pela plataforma WinRT. Por outro lado, este livro também pode ser usado como referência, permitindo, assim, a leitura “desordenada” dos capítulos que mais interessam ao leitor num determinado momento.

0.6.1 CCAAPPÍÍTTUULLOO 11:: IINNTTRROODDUUÇÇÃÃOO ÀÀSS WWIINNDDOOWWSS SSTTOORREE AAPPPPSS

Este capítulo começa por efetuar uma visita guiada ao novo ecrã inicial disponi-bilizado pelo sistema operativo Windows 8. Introduzimos ainda a plataforma WinRT e os seus principais componentes e encerramos o capítulo com o estudo da anatomia de um projeto WinRT criado com HTML5 e JavaScript.

0.6.2 CCAAPPÍÍTTUULLOO 22:: CCOONNTTRROOLLOOSS

Os controlos desempenham um papel fundamental nas aplicações Windows Store. Neste capítulo, começamos por analisar o uso de alguns controlos HTML intrínsecos para, em seguida, apresentarmos detalhadamente os controlos Windows Store disponi-bilizados pela biblioteca WinJS.

DDEESSEENNVVOOLLVVIIMMEENNTTOO EEMM WWIINNDDOOWWSS 88

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

4

0.6.3 CCAAPPÍÍTTUULLOO 33:: LLAAYYOOUUTTSS,, VVIISSTTAASS EE NNAAVVEEGGAAÇÇÃÃOO

Neste capítulo, analisamos várias estratégias associadas à disposição de controlos numa página de uma aplicação Windows Store. O capítulo apresenta ainda várias funcionalidades disponibilizadas pela plataforma, que permitem ajustar a vista atual, e termina com uma abordagem aprofundada ao módulo de navegação, que pode ser usado numa aplicação WinRT construída com HTML5 e JavaScript.

0.6.4 CCAAPPÍÍTTUULLOO 44:: IINNPPUUTT

A introdução de dados desempenha um papel importante na construção de aplicações Windows Store. Para além do suporte melhorado aos dispositivos tradicionais (rato e teclado), toda a plataforma foi desenhada a pensar no uso do toque. É por isso que este capítulo se concentra em mostrar o papel fundamental do uso do toque no desenho da plataforma e quais as principais consequências que advieram dessa escolha.

0.6.5 CCAAPPÍÍTTUULLOO 55:: FFIICCHHEEIIRROOSS

O acesso a ficheiros e pastas constitui uma das principais funcionalidades disponibilizadas por um sistema operativo. Este capítulo dedica-se à apresentação da API disponibilizada pela plataforma que nos permite interagir com o sistema de ficheiros. Para além das operações básicas, o capítulo apresenta os princípios associados ao uso e à implementação de pickers e mostra como podemos adicionar AutoPlay ou associar ficheiros a uma aplicação.

0.6.6 CCAAPPÍÍTTUULLOO 66:: DDAATTAA BBIINNDDIINNGG

Nos dias que correm, a apresentação de dados é um aspeto fundamental que é transversal a todas as aplicações. Neste capítulo, apresentamos várias funcionalidades disponibilizadas pela plataforma que simplificam o código necessário à apresentação de dados e à manutenção de sincronismo entre os objetos que fornecem esses dados e os controlos que os apresentam.

0.6.7 CCAAPPÍÍTTUULLOO 77:: NNEETTWWOORRKKIINNGG

Hoje em dia, o acesso a dados provenientes de diversas origens é um dos requisitos comuns a muitas aplicações. Neste capítulo, analisamos os vários objetos disponibilizados pela plataforma que definem a chamada stack de rede. Para além de analisarmos as classes de baixo nível que simplificam o código necessário à obtenção de

IINNTTRROODDUUÇÇÃÃOO

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

5

uma feed ou à invocação de um Web service remoto, discutimos o uso de Sockets e as vantagens inerentes ao novo conceito de perfil de rede.

0.6.8 CCAAPPÍÍTTUULLOO 88:: TTIILLEESS,, BBAADDGGEESS EE TTOOAASSTTSS

Nunca como agora foi tão fácil fornecer informação ao utilizador sobre uma determinada tarefa que está a ser desempenhada por uma aplicação quando esta está em background. Neste capítulo, começamos por analisar o papel desempenhado pelos tiles para, em seguida, abordarmos o uso de badges e de toasts. O capítulo não termina sem apresentar algumas considerações importantes sobre como podemos usar o lock screen para fornecer feedback ao utilizador final.

0.6.9 CCAAPPÍÍTTUULLOO 99:: CCOONNTTRRAATTOOSS

Os contratos e as extensões permitem estandardizar várias funcionalidades consideradas importantes e comuns a muitas aplicações. Neste capítulo, abordamos este tópico e apresentamos vários exemplos da implementação dos contratos disponibilizados pela plataforma WinRT.

0.6.10 CCAAPPÍÍTTUULLOO 1100:: MMUULLTTIIMMÉÉDDIIAA

A adição de vídeo, áudio e imagem desempenha cada vez um papel mais importante no desenvolvimento de aplicações. Ao longo deste capítulo, apresentamos várias das funcionalidades existentes que permitem a adição de multimédia a uma aplicação.

0.6.11 CCAAPPÍÍTTUULLOO 1111:: PPEERRIIFFÉÉRRIICCOOSS EE SSEENNSSOORREESS

Neste capítulo, analisamos o código necessário à interação com alguns dos periféricos mais comuns que podem ser ligados a um dispositivo que corre o Windows 8. Depois de apresentarmos o código necessário à impressão, abordamos ainda o uso de vários sensores numa aplicação. O capítulo termina com uma apresentação sobre o uso de geolocalização e com outra sobre as principais características disponibilizadas pela API de SMS.

DDEESSEENNVVOOLLVVIIMMEENNTTOO EEMM WWIINNDDOOWWSS 88

©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa

6

0.6.12 CCAAPPÍÍTTUULLOO 1122:: AANNIIMMAAÇÇÕÕEESS

A construção de aplicações fluidas e atrativas é um dos principais pressupostos associados às aplicações Windows Store. Neste capítulo, vemos como podemos recorrer às várias animações disponibilizadas pela plataforma para tornar as nossas aplicações ainda mais fluidas, contribuindo, assim, para uma melhoria da sua usabilidade.

0.6.13 CCAAPPÍÍTTUULLOO 1133:: AAPPLLIICCAAÇÇÕÕEESS

O livro termina com a apresentação de várias funcionalidades que serão trans-versais a muitas aplicações. Assim, o capítulo começa por apresentar as principais fases que constituem o ciclo de vida de uma aplicação Windows Store para, em seguida, se concentrar na globalização de aplicações. O capítulo apresenta ainda algumas considerações sobre o uso de debugging e sobre os passos necessários à distribuição de aplicações (packaging), encerrando com uma breve introdução à Windows Store.

0.7 SSUUPPOORRTTEE

Este livro foi escrito sobre a versão RTM (Release To Manufacturing) do Windows 8. Se, por acaso, o leitor encontrar informação que lhe pareça incorreta ou se tiver sugestões em relação ao conteúdo, não hesite e envie um e-mail com as suas questões para [email protected]. Eventuais atualizações e erratas serão publicadas no site da editora FCA, em http://www.fca.pt.