Coletânea de Aplicativos para Windows Phone

Transcrição

Coletânea de Aplicativos para Windows Phone
Coletânea de Aplicativos para
Windows Phone
Edições Brasil
Jundiaí/SP
www.edicoesbrasil.com.br
[email protected]
Faculdade de Tecnologia de Jundiaí
CARLOS EDUARDO SCHUSTER
CLÁUDIO LUIS VIEIRA OLIVEIRA
LUCIANA FERREIRA BAPTISTA
ORGANIZADORES
AUTORES:
Profa. Dra. Viviane Rezi Dobarro
Prof. Ms. Carlos Eduardo Schuster
Prof. Ms. Cláudio Luís V. Oliveira
Profa. Ms. Luciana Ferreira Baptista
Profa. Ms. Adaní Cusin Sacilotti
Profa. Ms. Ângela Cristina de Oliveira Lühmann
Prof. Ms. Benedito Cristiano Aparecido Petroni
Amanda Mayara de Araujo
George Petz
Gustavo da Silva Oliveira
João Henrique Felício Barreto
Kelly Sabará
Rafael de Oliveira Sales
Reginaldo Bernardo Antonietti
Coletânea de Aplicativos para
Windows Phone
1ª Edição
Jundiaí/SP
Edições Brasil
2013
© Edições Brasil - 2013
Supervisão: Marlene Rodrigues da Silva Aguiar
Capa e figuras : Cláudio Luis Vieira Oliveira
Editoração Eletrônica: João José Ferreira de Aguiar
Revisão ortográfica: Organizadores da Obra
Conselho Editorial: Prof. Ms. João José Ferreira de Aguiar
Prof. Ms. João Carlos dos Santos
Profª Dra. Teresa Helena Buscato Martins
Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/1973. Todas as
informações contidas nesta obra são de exclusiva responsabilidade dos autores.
As figuras deste livro foram produzidas pelo autor Cláudio Luis Vieira Oliveira.
Nenhuma parte deste livro poderá ser reproduzida ou transmitida por qualquer tipo
de meio empregado (eletrônicos, mecânicos, fotográficos, fotocópias, digitalização,
gravação, ou qualquer outro), sem previa autorização por escrito da editora. O mesmo se
aplica às características gráficas e à editoração eletrônica desta obra.
Alguns nomes de empresas e respectivos produtos e/ou marcas foram citadas apenas
para fins didáticos, não havendo qualquer vínculo das mesmas com a obra.
Dentro dos códigos de programação, algumas palavras não foram acentuadas por
questões técnicas relacionadas ao hardware e/ou softwares utilizados pelos leitores.
A editora e os autores acreditam que todas as informações apresentadas nesta obra estão
corretas. Contudo, não há qualquer tipo de garantia de que o uso das mesmas resultará
no esperado pelo leitor, principalmente por se tratar de linguagem de programação. Caso
seja(m) necessária(s), a editora disponibilizará errata(s) em seu site.
Dados Internacionais de Catalogação na Publicação (CIP)
OL41c
Oliveira, Claudio Luis Vieira
Coletânea de Aplicativos para Windows Phone / Cláudio
Luis Vieira Oliveira, Carlos Eduardo Schuster, Luciana
Ferreira Baptista - Jundiaí: Edições Brasil, 2013.
168 p. : il.
ISBN: 978-85-65364-17-1
1. Linguagem - Windows Phone. 2. Programação. I.
Schuster, Carlos Eduardo. II. Baptista, Luciana Ferreira.
III. Título
CDD: 005.133
Bibliotecária responsável Marinês de Campos Ribeiro CRB8/7227
Depósito legal na Biblioteca Nacional, conforme Decreto 1.823/1907.
Versão eletrônica - e-book
[email protected] - www.edicoesbrasil.com.br
Coletânea de Aplicativos para Windows Phone
Sumário
1. Prefácio........................................................................................... 7
2. A Faculdade de Tecnologia de Jundiaí (FATEC Jundiaí)................... 9
3. Introdução..................................................................................... 11
4. Desenvolvimento para Windows Phone....................................... 13
5. Área Geométrica........................................................................... 19
6. Carrossel........................................................................................ 27
7. Controle de Ciclo Menstrual......................................................... 31
8. Controle de Glicemia..................................................................... 39
9. Conversor de Temperatura........................................................... 51
10. Cronômetro................................................................................. 59
11. Desafios de Lógica........................................................................ 75
12. Diabetes Calculator...................................................................... 83
13. FuelManager................................................................................ 91
14. Jogo da Memória....................................................................... 107
15. RescisãoCLT............................................................................... 117
16. Tabuada..................................................................................... 125
17. Todos os Aplicativos Desenvolvidos e Publicados..................... 133
5
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
6
Coletânea de Aplicativos para Windows Phone
1.Prefácio
Prefácio
Prof. Ms. Benedito Cristiano Aparecido Petroni
Motivados pelo resultado considerado surpreendente da
parceria entre a Faculdade de Tecnologia de Jundiaí (FATEC Jundiaí) e
o Instituto Nokia de Tecnologia (INdT), professores e alunos dos Cursos
Superiores de Tecnologia em Análise e Desenvolvimento de Sistemas
e Gestão da Tecnologia da Informação, elaboraram essa coletânea
de aplicativos desenvolvidos como resultado dos dois treinamentos
sobre Windows Phone realizados pelo INdT nas dependências da
FATEC Jundiaí. Esse curso possibilitou aos participantes da instituição
o contato com uma tecnologia cada vez mais crescente na vida das
pessoas e no próprio mercado de trabalho.
Todos nós sabemos que a comunicação móvel atualmente faz
parte da vida de muitas pessoas e está presente em praticamente
todos os locais do planeta e em todos os setores. Com isso pode-se
afirmar que não se trata apenas de uma invenção bem sucedida – a
dos dispositivos móveis, mas de uma revolução sem precedentes no
que se destina à suas necessidades de uso que possibilita praticidade
e disponibilidade de informações. Dentro deste contexto, esta
obra apresenta uma série de aplicativos criados, e que tomaram
como referência todos os tópicos técnicos abordados durante os
treinamentos.
Essa obra apresenta vários aplicativos que podem a princípio
parecerem simples, e na verdade são, mas muito úteis no dia-a-dia e
em um contexto mais abrangente, observa-se que o aproveitamento
do recurso tecnológico por mais simples que pareça, pode fazer a
diferença para muitas pessoas.
Agradecemos primeiramente a Nokia do Brasil, especficamente
o Instituto Nokia de Tecnologia (INdT) pela oferta da capacitação
técnica especializada, a Direção da FATEC Jundiaí pela oportunidade
da realização, aos professores e principalmente aos alunos,
pelo empenho, interesse e dedicação, razão da existência de
7
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
toda a comunidade acadêmica da FATEC Jundiaí. Por último, um
agradecimento a Allan Bezerra, Gerente de Projetos no Instituto Nokia
de Tecnologia e ao Jackson Feijó, Pesquisador do Instituto Nokia de
Tecnologia que ministrou os treinamentos na FATEC Jundiaí.
8
Coletânea de Aplicativos para Windows Phone
2. A Faculdade de Tecnologia de Jundiaí (FATEC Jundiaí)
Profa. Dra. Viviane Rezi Dobarro
Diretora da Faculdade de Tecnologia de Jundiaí
A FATEC Jundiaí é uma faculdade pública paulista vinculada ao
Centro Estadual de Educação Tecnológica Paula Souza (CEETEPS), que é
uma autarquia do Governo do Estado de São Paulo, estando vinculada
à Secretaria de Desenvolvimento Econômico, Ciência e Tecnologia. Foi
instalada no ano de 2002 na cidade de Jundiaí e conta atualmente com
mais de 1.200 alunos. Atualmente contribui para a formação de mãode-obra qualificada no setor de informática, logística, gestão ambiental
e eventos.
Como uma instituição pública, o ensino da FATEC Jundiaí é
gratuito e o ingresso se dá por meio de concurso público (vestibular)
semestral, aberto a qualquer pessoa que tenha concluído ou esteja em
vias de concluir o Ensino Médio.
Atualmente oferece cinco cursos superiores:
(Fonte: http://www.vestibularfatec.com.br/)
O Tecnólogo em Análise e Desenvolvimento de Sistemas
analisa, projeta, documenta, especifica, testa, implanta e mantém
sistemas computacionais de informação. Esse profissional trabalha,
também, com ferramentas computacionais, equipamentos de
informática e metodologia de projetos na produção de sistemas.
Raciocínio lógico, emprego de linguagens de programação e de
metodologias de construção de projetos, preocupação com a
qualidade, usabilidade, robustez, integridade e segurança de
programas computacionais são fundamentais à atuação desse
profissional.
O Tecnólogo em Eventos atua em instituições de eventos, de
turismo e em meios de hospedagem, prestando serviços especializados
no planejamento, organização e execução de eventos de negócios,
sociais, esportivos, culturais, científicos, artísticos, de lazer e outros.
Deve ter o domínio dos códigos funcionais e dos processos de
interação dinâmica de todos os agentes integrados ao turismo e os
variados aspectos culturais, econômicos e sociais da região em que
atua, com consciência crítica acerca das orientações éticas, ambientais
9
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
e legais.
O Tecnólogo em Gestão Ambiental planeja, gerencia e executa
as atividades de diagnóstico, avaliação de impacto, proposição de
medidas mitigadoras - corretivas e preventivas -, recuperação de
áreas degradadas, acompanhamento e monitoramento da qualidade
ambiental. Regulação do uso, controle, proteção e conservação do
meio ambiente, avaliação de conformidade legal, análise de impacto
ambiental, elaboração de laudos e pareceres são algumas das
atribuições deste profissional, podendo elaborar e implantar ainda
políticas e programas de educação ambiental, contribuindo assim para
a melhoria da qualidade de vida e a preservação da natureza.
O Tecnólogo em Gestão da Tecnologia da Informação atua num
segmento da área de informática que abrange a administração dos
recursos de infraestrutura física e lógica dos ambientes informatizados.
O profissional egresso desse curso define parâmetros de utilização
de sistemas, gerencia os recursos humanos envolvidos, implanta
e documenta rotinas, controla os níveis de serviço de sistemas
operacionais e banco de dados, gerenciando os sistemas implantados.
O Tecnólogo em Logística é o profissional especializado em
armazenagem, distribuição e transporte. Atuando na área logística
de uma organização, planeja e coordena a movimentação física e
de informações sobre as operações multimodais e intermodais de
transporte, incluindo o gerenciamento de pessoas para proporcionar
fluxo otimizado ao longo da cadeia de suprimentos. Ele projeta e
gerencia redes de distribuição e unidades logísticas, estabelecendo
processos de compras, identificando fornecedores, negociando
e estabelecendo padrões de recebimento, armazenamento,
movimentação e embalagem de materiais. Ocupa-se ainda do
inventário e gerenciamento estratégico de estoques, sistemas de
abastecimento, programação, monitoramento do fluxo de pedidos,
cálculo de custos de fretes e transbordos, sistemas de tráfego e
gerenciamento de transportes urbano de carga e passageiros, que
envolvam os modais rodoviário, ferroviário, aeroviário, dutoviário e
aquaviário.
FATEC Jundiaí
Av. União dos Ferroviários, 1760. Centro
CEP 13201-160 - Jundiaí/SP
Tel/Fax: (11) 4522-7549 / 4523-0092
http://www.fatecjd.edu.br
10
Coletânea de Aplicativos para Windows Phone
3. Introdução
Prof. Ms. Carlos Eduardo Schuster
Prof. Ms. Cláudio Luís V. Oliveira
Profa. Ms. Luciana Ferreira Baptista
O Windows Phone é o sistema operacional da Microsoft para
smartphones que apresenta novos recursos de usabilidade, muitos
recursos de integração com computadores Windows e também com o
console de jogos XBOX 360.
A presente obra apresenta uma coletânea de aplicativos, para
o Windows Phone, desenvolvidos pelos professores e alunos da
Faculdade de Tecnologia de Jundiaí (FATEC Jundiaí) durante o segundo
semestre de 2012 e primeiro semestre de 2013.
Os aplicativos resultam da parceria entre o Instituto Nokia de
Tecnologia (INdT) e a FATEC Jundiaí a qual propiciou o treinamento de
8 docentes e cerca de 75 alunos dos cursos de Tecnologia em Análise e
Desenvolvimento de Sistemas e Gestão da Tecnologia da Informação.
Com treinamentos realizados em novembro de 2012 e abril de
2013, ambos ministrados pelo instrutor Jackson Feijó do INdT.
Figura 3.1 - Turma de Abril/2013
11
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Os objetivos principais dos treinamentos ministrados são
capacitar o corpo docente e discente no desenvolvimento para
Windows Phone, bem como incentivar a criação de aplicativos para
esta plataforma, que poderão ser comercializados pelos alunos por
meio da loja da Microsoft.
Ao todo trinta e um aplicativos foram desenvolvidos e
publicados na loja da Microsoft sendo que destes, doze são
apresentados em detalhes nesta coletânea. No último capítulo
desta obra também se encontram relacionados todos os aplicativos
desenvolvidos.
12
Coletânea de Aplicativos para Windows Phone
4. Desenvolvimento para Windows Phone
Profa. Ms. Ângela Cristina de Oliveira Lühmann
Prof. Ms. Benedito Cristiano Aparecido Petroni
Prof. Ms. Cláudio Luís Vieira Oliveira
O Windows Phone oferece um conjunto de soluções que
facilitam o desenvolvimento de aplicativos para a plataforma.
Fundamentado sobre o conceito de desenvolvimento da interface
sobre um padrão XML, no caso, o Microsoft Silverlight e utilizando a
linguagem de programação C#.
Para o desenvolvimento de aplicativos para o Windows Phone
é necessário instalar o Visual Studio Express for Windows Phone que
encontra-se disponível gratuitamente para download em http://dev.
windowsphone.com.
A base de funcionamento do Visual Studio é o conceito de
projeto. Um Projeto (Project) pode ser entendido como um grupo de
classes, formulários e recursos diversos, como arquivos de imagens e
sons entre outros, necessários à criação de um programa.
Figura 4.1 – Localização do Visual Studio
13
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Desta forma, após abrir o Visual Studio, a primeira etapa na
construção de um aplicativo para Windows Phone consiste em realizar
a criação de um projeto. Para isso, escolha no menu principal a opção
File e depois New Project:
Figura 4.2 – Modelos de Aplicativos
Nosso primeiro exemplo, que será criado com o intuito de
ilustrar o funcionamento básico do Visual Studio, consiste em uma
“Windows Phone Application” e será chamada de “Ola”. Em seguida,
selecione a plataforma desejada:
Figura 4.3 – Definição da Versão do Sistema Operacional
14
Coletânea de Aplicativos para Windows Phone
O Visual Studio irá exibir a aplicação criada, a esquerda podemos
observar como a mesma será exibida na tela de um smartphone com
Windows Phone. A parte central consiste no código fonte da página
principal em Silverlight for Windows Phone. Na direita temos a Solution
Explorer e a Properties.
Figura 4.4 – Janela principal do Visual Studio
Quando trabalhamos com o Silverlight for Windows Phone,
a base de qualquer aplicativo são as páginas XAML (eXtensible
Application Markup Language), que consiste uma linguagem
fundamentada sobre XML (eXtensible Markup Language) e permite a
especificação do layout e dos componentes da página.
Quando criamos uma página a estrutura básica já é apresentada,
desta forma, identifique no código fonte da aplicação o seguinte
trecho:
<!--LayoutRoot is the root grid where all page content is
placed-->
<Grid x:Name=”LayoutRoot” Background=”Transparent”>
<Grid.RowDefinitions>
<RowDefinition Height=”Auto”/>
<RowDefinition Height=”*”/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and
page title-->
15
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
<StackPanel x:Name=”TitlePanel” Grid.Row=”0”
Margin=”12,17,0,28”>
<TextBlock x:Name=”ApplicationTitle”
Text=”MY APPLICATION” Style=”{StaticResource
PhoneTextNormalStyle}”/>
<TextBlock x:Name=”PageTitle” Text=”page
name” Margin=”9,-7,0,0” Style=”{StaticResource
PhoneTextTitle1Style}”/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name=”ContentPanel” Grid.Row=”1”
Margin=”12,0,12,0”></Grid>
</Grid>
Este código representa a definição dos gerenciadores de
layout que serão adotados, este exemplo, Grid e StackPanel. A
área reservada para o título da aplicação e para o título da página
utilizarão o elemento TextBlock, o qual permite a exibição de texto
estático na página. Altere a propriedade Text do TextBlock chamado
ApplicationTitle para “EXEMPLO DE APLICATIVO” e, em seguida
modifique a propriedade Text do TexBlock chamado PageName para
“olá”.
Após concluir as alterações no programa, gravar as alterações
realizadas. O passo seguinte consiste em compilar a solução, para
isso, podemos utilizar a opção do menu Build e depois Build Solution,
também pode-se utilizar a tecla de atalho F6 para realizar o mesmo
processo.
Após finalizar a construção da aplicação é importante observar
na parte inferior da IDE se ocorreram erros ou avisos.
Figura 4.5 – Lista de Erros
16
Coletânea de Aplicativos para Windows Phone
Quando a compilação não apresentar erros a mesma poderá ser
executada através do menu Debug utilizando os itens Start Debugging
(F5). O emulador será iniciado e o resultado da execução do programa
deverá ser similar ao ilustrado pela Figura 4.6.
Figura 4.6 – Emulador
Vamos adicionar um novo TextBlock ao ContentPanel, conforme
mostrado a seguir.
<!--ContentPanel - place additional content here-->
<Grid x:Name=”ContentPanel” Grid.Row=”1”
Margin=”12,0,12,0”>
<TextBlock Text=”Bem-vindo” />
</Grid>
Na Figura 4.7 podemos visualizar a execução do aplicativo na
tela do emulador, sendo importante observar que todo novo objeto
17
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
da página deve ser colocado dentro do ContentPanel para que seja
exibido.
Figura 4.7 – Tela do aplicativo
18
Coletânea de Aplicativos para Windows Phone
5. Área Geométrica
Gustavo da Silva Oliveira
Introdução
A proposta deste aplicativo é calcular a área geométrica de
algumas figuras. O conceito básico consiste no usuário indicar umas
das figuras pré-cadastradas: quadrado, triângulo e trapézio dentre
outras também, e suas dimensões como, por exemplo, altura, largura
e base. A partir disto, o aplicativo tem informações suficientes para
efetuar o cálculo e retornar a área da figura.
Projeto
O elemento principal da aplicação consiste no usuário selecionar
qual figura ele deseja calcular a área. Na aplicação o usuário pode
calcular a área das seguintes figuras:
Figura 5.1 – Figuras suportadas pelos aplicativos
Após selecionar uma das figuras, o usuário é levado à outra
página onde informações sobre como o cálculo é feito serão exibidas,
podendo assim entender o conceito e indicar as informações
necessárias para que a aplicação efetue o devido cálculo.
19
Gustavo da Silva Oliveira
Figura 5.2 - Página do Quadrado
Figura 5.3 - Página do Quadrado
Figura 5.4 - Área do Quadrado
Figura 5.5 – Cálculo da Área
20
Coletânea de Aplicativos para Windows Phone
Desenvolvimento
Condiderando as dimensões reduzidas da tela de um
smartphone, será utilizado um controle do tipo Panorama de forma a
conseguirmos maximizar a área da aplicação permitindo, desta forma,
realizar a disposição das figuras de modo a não ficarmos limitados
exclusivamente à área física da tela. No trecho de programa a seguir,
é possível observar a implementação de um PanoramaItem dentro da
página MainPage.xaml, dentro deste elemento será utilizado o Grid
para organizar as figuras.
<!--Panorama item one-->
<controls:PanoramaItem Header=”selecione”>
<Grid>
<Image
HorizontalAlignment=”Left”
Height=”150”
VerticalAlignment=”Top” Width=”150” Source=”/Img/Quadrado.
png” Stretch=”Fill” Margin=”132,0,0,0” Tap=”Image_Tap_1”/>
<Image
HorizontalAlignment=”Left”
Height=”150”
VerticalAlignment=”Top” Width=”400” Source=”/Img/Quadrado.
png” Stretch=”Fill” Margin=”10,230,0,0” Tap=”Image_Tap_2”/>
<TextBlock HorizontalAlignment=”Left”
TextWrapping=”Wrap” Text=”Quadrado” VerticalAlignment=”Top”
Margin=”126,155,0,0” FontSize=”35”/>
<TextBlock HorizontalAlignment=”Left”
TextWrapping=”Wrap” Text=”Retângulo”
VerticalAlignment=”Top” Margin=”126,385,0,0”
FontSize=”35”/>
</Grid>
</controls:PanoramaItem>
O resultado final da página principal, que pode ser observado
nas Figuras 5.6, 5.7, 5.8 e 5.9, consistindo em quatro PanoramaItem
contendo, cada um, duas figuras.
21
Gustavo da Silva Oliveira
Figura 5.6 - Quadrados e Retângulos
Figura 5.8 - Triângulo e Losango
Figura 5.7 - Círculo e Anel
Figura 5.9 – Trapézio e Paralelograma
22
Coletânea de Aplicativos para Windows Phone
Uma nova página da aplicação pode ser aberta através do
método Navigate disponível na classe NavigationService. A seguir
podemos observar seu uso no desenvolvimento do evento Tap da
figura Quadrado:
private void imgQuadrado_Tap(object sender,
GestureEventArgs e)
{
NavigationService.Navigate(new Uri(“/Quadrado.xaml”,
UriKind.Relative));
}
Após desenvolver o layout da página principal, vamos definir
o layout das páginas secundárias, onde o cálculo vai ser realizado,
seguindo o mesmo padrão da MainPage, com PanoramaItem.
<!--Panorama item one-->
<controls:PanoramaItem Header=”fórmula”>
<Grid>
<Image HorizontalAlignment=”Left” Height=”194”
VerticalAlignment=”Top” Width=”192” Source=”/Img/Mod/
Quadrado.png”/>
<TextBlock HorizontalAlignment=”Left”
TextWrapping=”Wrap” VerticalAlignment=”Top”
Margin=”207,10,0,0” Height=”178” Width=”213” FontSize=”47”>
<Run Text=”A = Área;”/>
<LineBreak/>
<Run Text=”L = Lado;”/>
<LineBreak/>
<Run Text=”A = L * L”/>
</TextBlock>
<TextBox HorizontalAlignment=”Left” Height=”234”
TextWrapping=”Wrap” Text=”O Quadrado é uma figura plana que
possui quatro lados iguais e quatro ângulos retos (90°).”
VerticalAlignment=”Top” Width=”420” Margin=”0,199,0,0”
IsReadOnly=”True” FontSize=”33” TextAlignment=”Left”/>
</Grid>
</controls:PanoramaItem>
23
Gustavo da Silva Oliveira
<!--Panorama item two-->
<controls:PanoramaItem Header=”calcular”>
<Grid>
<TextBlock HorizontalAlignment=”Left”
TextWrapping=”Wrap” Text=”Insira o valor de L”
VerticalAlignment=”Top” FontSize=”40” Margin=”56,10,0,0”/>
<TextBox x:Name=”txtL” MaxLength=”6”
HorizontalAlignment=”Left” Height=”94” TextWrapping=”Wrap”
VerticalAlignment=”Top” Width=”420” Margin=”0,90,0,0”
FontSize=”40” TextAlignment=”Center” InputScope=”Number”
Tap=”txtL_Tap” TextChanged=”txtL_TextChanged”
LostFocus=”txtL_LostFocus”/>
<TextBlock x:Name=”txtbRes”
HorizontalAlignment=”Left” TextWrapping=”Wrap” Text=”A
área é:” VerticalAlignment=”Top” FontSize=”40”
Margin=”130,220,0,0”/>
<TextBox x:Name=”txtRes” HorizontalAlignment=”Left”
Height=”94” TextWrapping=”Wrap” VerticalAlignment=”Top”
Width=”420” Margin=”0,298,0,0” FontSize=”40”
TextAlignment=”Center” InputScope=”Number”
IsReadOnly=”True”/>
</Grid>
</controls:PanoramaItem>
Cada layout está associado a uma classe C# onde podemos
programar diretamente. Nas páginas secundárias, o método Calcular é
responsável por fazer o cálculo da área.
public partial class Quadrado : PhoneApplicationPage
{
private void calcular()
{
try
{
if ((txtL.Text != “”) && (txtL.Text != “.”) &&
(txtL.Text != “0”) && (txtL.Text != “0.0”))
{
txtRes.Text = (Math.Pow((double.Parse(
txtL.Text)), 2)).ToString();
24
Coletânea de Aplicativos para Windows Phone
}
}
catch
{
txtRes.Text = “Desculpe. Não foi possível Calcular”;
}
}
}
Quando o usuário digita os valores necessários ao cálculo,
automaticamente o método é chamado e o usuário poderá visualizar o
resultado da área do objeto escolhido.
private void txtL_TextChanged(object sender,
TextChangedEventArgs e)
{
calcular();
}
Considerações Finais
A aplicação consiste em uma versão do que aprendemos na
escola sobre geometria. Apresenta como principais características, a
facilidade e a usabilidade. O uso do recurso Panorama View apresenta
novas perspectivas em relação ao layout de aplicações, pois, apresenta
uma solução bastante funcional em relação às limitações de tamanho
de tela existentes nos smartphones.
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/pt-br/
store/app/%C3%A1rea-gemom%C3%A9trica/2419a705-ed19-4cb08db0-d16495bcfe96
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 15 de agosto de 2013.
25
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
26
Coletânea de Aplicativos para Windows Phone
6. Carrossel
Profa. Ms. Luciana Ferreira Baptista
Introdução
A proposta deste aplicativo é a apresentação dos personagens
da novela Carrossel do SBT, com a possibilidade de ouvir a música tema
da novela.
Projeto
O projeto consiste em apresentar os desenhos dos personagens
(Figura 6.1) da novela Carrossel em ordem alfabética (Figura 6.2), com
a possibilidade de ouvir a música tema “Carro Céu” quando clicar na
imagem da Nota Musical.
Figura 6.1 – Tela inicial
27
Luciana Ferreira Baptista
Figura 6.2 – Tela de apresentação dos personagens
Clicando-se novamente na imagem da Nota Musical, a música é
pausada.
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone
e utilizando, para isso, o Silverlight para Windows Phone.
Devido às dimensões reduzidas da tela de um smartphone, será
utilizado um controle do tipo Panorama de forma a conseguirmos
maximizar a área da aplicação permitindo, desta forma, realizar a
disposição de todos os personagens. No trecho de programa a seguir,
podemos observar a implementação de um PanoramaItem dentro
da página MainPage.xaml, dentro desta elemento será utilizado o
StackPanel com a propriedade Orientation igual a Horizontal para
organizar as imagens dos personagens e o botão que contém a imagem
da Nota Musical.
28
Coletânea de Aplicativos para Windows Phone
<controls:PanoramaItem Header=”Personagens”>
<StackPanel Orientation=”Horizontal”>
<Image Source=”/Carrossel;component/imagens/persons.
jpg” Height=”438” Width=”372” />
<Button Name=”btnSom1” Content=”som” Height=”60”
Width=”60” VerticalAlignment=”Bottom” Click=”btnSom_Click”>
<Button.Background>
<ImageBrush ImageSource=”/Carrossel;component/
imagens/som.jpg” Stretch=”Uniform” />
</Button.Background>
</Button>
</StackPanel>
</controls:PanoramaItem>
Ao clicar na imagem da Nota Musical é verificado o estado da
música, ou seja, se ela deverá iniciar, se ela já iniciou e está pause
(portanto deverá voltar do ponto que parou), ou se ela está tocando e
deverá pausar:
private void btnSom_Click(object sender, RoutedEventArgs e)
{
if (MediaPlayer.State == MediaState.Paused)
{
MediaPlayer.Resume();
}
else
{
if (MediaPlayer.State == MediaState.Playing)
{
MediaPlayer.Pause();
}
else
{
PlaySound(“/carroceu.mp3”);
}
}
}
Para tocar a música pela primeira vez é chamado o método
PlaySound, passando a música tema da novela:
29
Luciana Ferreira Baptista
public void PlaySound(string pathToMp3)
{
Song song = Song.FromUri(“nome”, new Uri(pathToMp3,
UriKind.Relative));
FrameworkDispatcher.Update();
MediaPlayer.Play(song);
}
Considerações Finais
A aplicação consiste em uma versão simples para visualizar
os personagens da novela Carrossel, ouvindo também, se desejar, a
música tema da novela.
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/pt-br/
store/app/carrossel/e4553915-11d7-4088-80ca-87a4c423045a
Melhorias futuras na aplicação consistem em acrescentar a
descrição das características de cada personagem.
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 26.ago.2013.
SBT. Carrossel. Disponível em <http://www.sbt.com.br/carrossel/
personagens/>. Acesso em 10.mai.2013.
30
Coletânea de Aplicativos para Windows Phone
7. Controle de Ciclo Menstrual
Profa. Ms. Adaní Cusin Sacilotti
Prof. Ms. Carlos Eduardo Schuster
Kelly Sabará
Introdução
A proposta deste aplicativo é fornecer conforme seu ciclo
menstrual, a data aproximada da ovulação e seu período fértil. Embora
este método de tabelinha não seja 100% confiável, pode ser utilizado,
para se ter uma ideia das datas férteis. Ao ser digitado pelo usuário a
data da última menstruação, o aplicativo calcula as datas de início da
ovulação, fim da ovulação, dia mais fértil e próxima menstruação.
Projeto
A aplicação consiste em efetuar cálculos com datas referentes
ao período fértil, a partir da data inserida da última menstruação,
considerando um ciclo de 28 dias.
No campo para inserir a data da última menstruação é oferecido
ao usuário um calendário, para que ele selecione o mês, o dia e o ano.
Como facilidade para o usuário, é salvo no aplicativo a data da última
menstruação.
A aplicação possui uma página inicial, contendo as informações
do aplicativo, conforme a Figura 7.1.
31
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
Figura 7.1 – Tela inicial
O usuário ao clicar no botão Acessar, irá para a tela de Cálculo do
Ciclo, onde deverá informar a data da última menstruação e clicar no
botão Calcular Datas, onde serão exibidos os cálculos de acordo com o
ciclo de 28 dias, conforme a Figura 7.2.
32
Coletânea de Aplicativos para Windows Phone
Figura 7.2 – Cálculo do Ciclo
Ao clicar no campo para atualizar a data da última menstruação,
que exibe a data atual extraída do sistema operacional ou a data da
última menstruação gravada no aplicativo, é exibido um calendário
para o usuário. Com facilidade, podem-se rolar os meses, dias e anos e
selecioná-los (Figura 7.3).
33
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
Figura 7.3 - Calendário
Ao clicar no botão Calcular Datas, em relação à data digitada
da última menstruação, a data de início da ovulação é acrescida de 11
dias. A data de fim da ovulação é acrescida de 17 dias. A data do dia
mais fértil á crescida de 14 dias, e a data da próxima menstruação é
acrescida de 28 dias. Conforme é exibido na Figura 7.4.
34
Coletânea de Aplicativos para Windows Phone
Figura 7.4 – Cálculo do Ciclo com os resultados
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone
sendo utilizado, para isso, o Silverlight para Windows Phone.
Devido aos cálculos efetuados pelo aplicativo com datas, o
trecho de programa a seguir exibe a criação da variável dtIni, através
do DatePicker e sua formatação.
<StackPanel x:Name=”ContentPanel” Grid.Row=”1”
Margin=”12,0,12,0”>
<TextBlock Text=”Data da última mestruação:”/>
<toolkit:DatePicker Name=”dtIni” ValueStringFormat=”{}
{0:dd-MM-yyyy}” />
<Button Content=”Calcular Datas” Click=”Button_Click”/>
<Grid >
<TextBlock Text=”Inicio da Ovulação”
Margin=”10,0,142,0” FontSize=”28” />
<TextBlock Name=”txtDtiniO” Height=”38”
Margin=”298,0,6,0” TextAlignment=”Right” FontSize=”28”
VerticalAlignment=”Top” Foreground=”#FF760000” />
35
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
<TextBlock FontSize=”28” Margin=”10,46,142,-46”
Text=”Fim da Ovulação” />
<TextBlock Name=”txtDtfimO” FontSize=”28”
Foreground=”#FF760000” Height=”38” Margin=”298,46,6,0”
TextAlignment=”Right” VerticalAlignment=”Top” />
<TextBlock FontSize=”28” Margin=”10,92,142,-46”
Text=”Dia mais Fértil “ />
<TextBlock Name=”txtDtfertil” FontSize=”28”
Foreground=”#FF760000” Height=”38” Margin=”298,92,6,0”
TextAlignment=”Right” VerticalAlignment=”Top” />
<TextBlock FontSize=”28” Margin=”10,138,142,-46”
Text=”Próxima Mestruação” />
<TextBlock Name=”txtDtprox” FontSize=”28”
Foreground=”#FF760000” Height=”38” Margin=”298,138,6,0”
TextAlignment=”Right” VerticalAlignment=”Top” />
</Grid>
</StackPanel>
Após desenvolver o layout da página principal, vamos definir
a classe que irá definir os cálculos efetuados referentes ao ciclo
menstrual, o carregamento da data da última menstruação gravada no
aplicativo ou a data atual extraída do sistema operacional.
namespace ciclo
{
public partial class calculo : PhoneApplicationPage
{
public calculo()
{
InitializeComponent();
string text;
if (loadText(“diaM.txt”, out text))
{
dtIni.Value = Convert.ToDateTime(text);
}
}
private void Button_Click(object sender,
RoutedEventArgs e)
36
Coletânea de Aplicativos para Windows Phone
{
DateTime dt = Convert.ToDateTime(dtIni.Value);
saveText(“diaM.txt”, dt.ToString());
txtDtiniO.Text =
dt.AddDays(11).ToString(“dd/MM/yyyy”);
txtDtfimO.Text =
dt.AddDays(17).ToString(“dd/MM/yyyy”);
txtDtfertil.Text =
dt.AddDays(14).ToString(“dd/MM/yyyy”);
txtDtprox.Text =
dt.AddDays(28).ToString(“dd/MM/yyyy”);
}
private void saveText(string filename, string text)
{
using (IsolatedStorageFile isf =
IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream rawStream =
isf.CreateFile(filename))
{
StreamWriter writer = new
StreamWriter(rawStream);
writer.Write(text);
writer.Close();
}
}
}
private bool loadText(string filename, out string
result)
{
result = “”;
using (IsolatedStorageFile isf =
IsolatedStorageFile.GetUserStoreForApplication())
{
if (isf.FileExists(filename))
{
try
{
using (IsolatedStorageFileStream
37
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
rawStream = isf.OpenFile(filename,
System.IO.FileMode.Open))
{
StreamReader reader =
new StreamReader(rawStream);
result = reader.ReadToEnd();
reader.Close();
}
}
catch
{
return false;
}
}
else
{
return false;
}
}
return true;
}
}
}
Considerações Finais
A aplicação consiste em uma versão que funciona para ciclos
menstruais de 28 dias. Apresenta como principais características,
a possibilidade de alerta e informação ao usuário, e a ampliação dos
cálculos para os mais variados ciclos menstruais.
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/pt-br/
store/app/ciclo/3652aa54-9a7e-4e20-a306-b70e129de0aa.
Melhorias futuras na aplicação consistem em realizar os cálculos para
ciclos menstruais diferenciados.
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 15 jun. 2013.
38
Coletânea de Aplicativos para Windows Phone
8. Controle de Glicemia
Amanda Mayara de Araujo
Introdução
O objetivo deste aplicativo é criar um histórico diário com
os dados glicêmicos dos usuários que possuem Diabetes Tipo 1 e
necessitam estar sempre realizando o teste de glicemia. O usuário
informa o valor glicêmico obtido no teste, bem como a data e
momento, por exemplo, em jejum e antes do almoço entre outros. Os
dados são armazenados em um histórico no qual pode ser visualizado
pelo usuário a qualquer momento.
Projeto
A aplicação apresenta um pequeno questionário, no qual
dados serão requisitados aos usuários. Esses dados serão salvos e
apresentados em um histórico.
Há uma página principal, onde é usado três controles PivotItem,
um para captar os dados, outro para o histórico e um terceiro
reservado para informações sobre o aplicativo e seu desenvolvedor.
Esta página principal (MainPage) pode ser observada na Figura 8.1.
Figura 8.1 – Estrutura da aplicação
39
Amanda Mayara de Araujo
A página Adicionar Dados possui campos a serem preenchidos
pelo usuário, são eles data, valor glicêmico (mg/dL) e o momento
em que o teste foi realizado, conforme ilustrado na Figura 8.2. Um
botão está disponível para o usuário confirmar, adicionando os dados
fornecidos. Também há um botão de criar um novo histórico, caso seja
a vontade do usuário.
Figura 8.2 - Adicionar Dados
Após os dados serem salvos, estes serão apresentados ao
usuário na página em que contém o histórico. O usuário poderá
visualizar dados recentemente armazenados ao pressionar o botão
Atualizar. Também poderá apagar o histórico pelo botão Apagar. Uma
ilustração dessa página pode ser observada na Figura 8.3.
40
Coletânea de Aplicativos para Windows Phone
Figura 8.3 - Histórico
Todos os dados serão armazenados na memória do telefone pelo
Isolatedtorage.
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone,
versão 7.1, sendo utilizado o SilverLight para Windows Phone.
É usado o recurso Pivot, o qual conterá “três páginas em
apenas uma”. Este recurso permite utilizar um espaço maior além das
dimensões do aparelho e uma navegação mais rápida pelo aplicativo.
Neste caso, usamos três controles PivotItem para disponibilizar os
conteúdos de “Adicionar Dados”, “Histórico” e “Sobre” em uma única
página, a MainPage.xaml.
Dentro dessa MainPage.xaml, temos um PivoItem para
Adicionar dados. Foi usado um ScrollViewer que permite a rolagem da
página. Também foram utilizados dois StackPanel, um para organizar
a disposição dos textos e campos e outro para organizar os Radio
Buttons, que selecionam o momento escolhido pelo usuário.
<controls:PivotItem Header=”Add Dados” FontFamily=”Comic
Sans MS” FontSize=”24” Foreground=”White”>
<ScrollViewer Visibility=”Visible”>
<StackPanel>
41
Amanda Mayara de Araujo
<TextBlock Text=”Data” HorizontalAlignment=”Center”
Margin=”0,5” FontSize=”28” />
<toolkit:DatePicker x:Name=”Date” Value=””
Background=”#E1DFEEF8” />
<TextBlock Name=”txtDate” Visibility=”Collapsed” />
<TextBlock Text=”Valor Glicêmico (mg/dL)”
HorizontalAlignment=”Center” FontSize=”28” />
<TextBox Name=”txtValor” InputScope=”Number”
Margin=”0,5” Background=”#E1DFEEF8”/>
<TextBlock Text=”Momento do Teste”
HorizontalAlignment=”Center” FontSize=”28” />
<StackPanel HorizontalAlignment=”Center” Width=”300”
Background=”#43151519”>
<RadioButton Name=”rbJejum” Content=”Jejum”
HorizontalAlignment=”Left” Foreground=”White”
Background=”#C7FFFFFF” />
<RadioButton Name=”rb1” Content=”Depois Café da
Manhã” HorizontalAlignment=”Left” Foreground=”White”
Background=”#C7FFFFFF” />
<RadioButton Name=”rb2” Content=”Antes do
Almoço” HorizontalAlignment=”Left” Foreground=”White”
Background=”#C7FFFFFF” />
<RadioButton Name=”rb3” Content=”Depois do
Almoço” HorizontalAlignment=”Left” Foreground=”White”
Background=”#C7FFFFFF” />
<RadioButton Name=”rb4” Content=”Antes do
Jantar” HorizontalAlignment=”Left” Foreground=”White”
Background=”#C7FFFFFF” />
<RadioButton Name=”rb5” Content=”Depois do
Jantar” HorizontalAlignment=”Left” Foreground=”White”
Background=”#C7FFFFFF” />
</StackPanel>
<TextBlock Name=”txtMomento” Visibility=”Collapsed”
/>
<Button Name=”btnAdd” Content=”Adicionar”
Click=”btnAdd_Click” Foreground=”White”
Background=”#91193D6C” BorderBrush=”White” />
<Button Name=”btnNovo” Content=”Novo
Histórico” Click=”btnNovo_Click” Foreground=”White”
Background=”#DF8428DE” BorderBrush=”White” />
</StackPanel>
</ScrollViewer>
</controls:PivotItem>
42
Coletânea de Aplicativos para Windows Phone
O resultado deste tópico pode ser observado pela Figura 8.4.
Figura 8.4 - Resultado final da página Add Dados
Com o ScrowViewer, a página pode ser rolada para que o usuário
possa ter acesso a todos os dados e os botões. Um seguno PivotItem
foi usado para criar o histórico.
<controls:PivotItem Header=”Histórico”>
<ScrollViewer Visibility=”Visible” MaxHeight=”100000”>
<StackPanel Background=”#81151519” >
<StackPanel Orientation=”Horizontal”>
<Button Name=”btnAtualizar”
Content=”Atualizar”
Click=”btnAtualizar_Click”
HorizontalContentAlignment=”Center” Width=”150”
Background=”#DF8428DE” Foreground=”White”
BorderBrush=”White” />
<Button Name=”btnApagar” Content=”Apagar”
HorizontalContentAlignment=”Center” Click=”btnApagar_Click”
Width=”150” Foreground=”White” Background=”#F9134DA2”
BorderBrush=”White” />
</StackPanel>
<StackPanel>
<TextBlock Name=”txtConteudo” TextWrapping=”Wrap”
FontFamily=”Arial” Foreground=”White” FontSize=”24” />
43
Amanda Mayara de Araujo
</StackPanel>
</StackPanel>
</ScrollViewer>
</controls:PivotItem>
Neste PivotItem, também foi utilizado um ScrowViewer, assim
como um StackPanel com orientação horizontal para organizar os
botões de Atualizar e Apagar neste sentido. O resultado pode ser
observado pela Figura 8.5.
Figura 8.5 - Resultado final do Histórico
Após o layout ser definido, vamos implementar as
funcionlidades dos botões e o histórico, no MainPage.xaml.cs. O botão
Novo histórico irá armazenar os dados fornecidos pelo usuário em um
IsolatedStorage. Ao ser pressionado, será criado um novo histórico,
substituindo o já existente.
private const string fileName = “historico.txt”;
private const string folderName = “WP7Files”;
private string filePath = System.IO.Path.Combine(folderName,
fileName);
private void btnNovo_Click(object sender, RoutedEventArgs
e)
{
44
Coletânea de Aplicativos para Windows Phone
StreamResourceInfo streamResourcenInfo =
Application.GetResourceStream(new Uri(filePath,
UriKind.Relative));
using (var myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
string directoryName =
System.IO.Path.GetDirectoryName(filePath);
if (!string.IsNullOrEmpty(directoryName) &&
!myIsolatedStorage.DirectoryExists(directoryName)
)
{
myIsolatedStorage.CreateDirectory(directoryName);
}
MessageBoxResult resultado = MessageBox.Show(“Deseja
iniciar um novo histórico?”, “Atenção”, MessageBoxButton.
OKCancel);
if (resultado == MessageBoxResult.OK)
{
using (IsolatedStorageFileStream fileStream =
myIsolatedStorage.OpenFile(filePath,
System.IO.FileMode.Create,
System.IO.FileAccess.Write))
{
using (StreamWriter writer =
new StreamWriter(fileStream))
{
DateTime date =
Convert.ToDateTime(Date.Value);
txtDate.Text = date.ToString();
if (rbJejum.IsChecked == true)
txtMomento.Text =
rbJejum.Content.ToString();
else if (rb1.IsChecked == true)
txtMomento.Text = rb1.Content.ToString();
else if (rb2.IsChecked == true)
txtMomento.Text = rb2.Content.ToString();
else if (rb3.IsChecked == true)
txtMomento.Text = rb3.Content.ToString();
45
Amanda Mayara de Araujo
else if (rb4.IsChecked == true)
txtMomento.Text = rb4.Content.ToString();
else if (rb5.IsChecked == true)
txtMomento.Text = rb5.Content.ToString();
string someTextData =
“__________________________________ \n\n” +
“Dia: “ + txtDate.Text +
“\nValor Glicêmico: “ +
txtValor.Text + “\nMomento: “ +
txtMomento.Text;
writer.WriteLine(someTextData);
writer.Close();
MessageBox.Show(“Histórico criado com sucesso!”,
“Atenção”, MessageBoxButton.OK);
}
}
}
else
{
return;
}
}
Limpar();
}
O botão Atualizar também armazenará dados em um
IsolatedStorage, gravando-os no histórico existente.
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
using (IsolatedStorageFile myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists(filePath))
{
using (IsolatedStorageFileStream fileStream =
myIsolatedStorage.OpenFile(filePath,
FileMode.Open, FileAccess.Write))
{
using (StreamWriter writer =
46
Coletânea de Aplicativos para Windows Phone
new StreamWriter(fileStream))
{
DateTime date =
Convert.ToDateTime(Date.Value);
txtDate.Text = date.ToString();
if (rbJejum.IsChecked == true)
txtMomento.Text =
rbJejum.Content.ToString();
else if (rb1.IsChecked == true)
txtMomento.Text = rb1.Content.ToString();
else if (rb2.IsChecked == true)
txtMomento.Text = rb2.Content.ToString();
else if (rb3.IsChecked == true)
txtMomento.Text = rb3.Content.ToString();
else if (rb4.IsChecked == true)
txtMomento.Text = rb4.Content.ToString();
else if (rb5.IsChecked == true)
txtMomento.Text = rb5.Content.ToString();
string someTextData =
“__________________________________ \n\n” +
“Dia: “ + txtDate.Text +
“\nValor Glicêmico: “ +
txtValor.Text + “\nMomento: “ +
txtMomento.Text;
writer.BaseStream.Seek(0, SeekOrigin.End);
writer.WriteLine(someTextData);
writer.Close();
MessageBox.Show(“Dados salvos com sucesso!”,
“Atenção”, MessageBoxButton.OK);
}
}
}
else
{
MessageBox.Show(“Não há um histórico a ser editado.
Crie um novo histórico.”, “Atenção”, MessageBoxButton.OK);
}
}
Limpar();
}
47
Amanda Mayara de Araujo
É criado o método Limpar, usado para criar um novo histórico e
para atualizar, esse método deverá limpar o campo do Valor Glicêmico
e o item que foi selecionado para o Momento.
private void Limpar()
{
rbJejum.IsChecked = false;
rb1.IsChecked = false;
rb2.IsChecked = false;
rb3.IsChecked = false;
rb4.IsChecked = false;
rb5.IsChecked = false;
txtValor.Text = string.Empty;
}
No controle do Histórico, há o botão atualizar, que ao ser
pressionado, deverá mostrar os novos dados que foram armazenados
pelo usuário no IsolatedStorage.
private void btnAtualizar_Click(object sender,
RoutedEventArgs e)
{
using (IsolatedStorageFile myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists(filePath))
{
using (IsolatedStorageFileStream fileStream =
myIsolatedStorage.OpenFile(filePath,
FileMode.Open, FileAccess.Read))
{
using (StreamReader reader =
new StreamReader(fileStream))
{
txtConteudo.Text = reader.ReadToEnd();
}
}
}
else
48
Coletânea de Aplicativos para Windows Phone
{
MessageBox.Show(“Histórico não encontrado. Crie um
novo histórico.”, “Atenção”, MessageBoxButton.OK);
}
}
}
Por fim, temos o botão Apagar elimina todos os dados o
histórico.
private void btnApagar_Click(object sender, RoutedEventArgs
e)
{
MessageBoxResult resultado = MessageBox.
Show(“Deseja realmente apagar o histórico?”, “Atenção”,
MessageBoxButton.OKCancel);
if (resultado == MessageBoxResult.OK)
{
txtConteudo.Text = string.Empty;
using (IsolatedStorageFile myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists(filePath))
{
myIsolatedStorage.DeleteFile(filePath);
MessageBox.Show(“Histórico excuído com sucesso”,
“Atenção”, MessageBoxButton.OK);
}
else
{
MessageBox.Show(“Não há dados a serem apagados.”,
“Atenção”, MessageBoxButton.OK);
}
}
}
}
49
Amanda Mayara de Araujo
Considerações Finais
A aplicação foi desenvolvida especialmente para portadores do
Diabete Tipo 1, os quais necessitam estar sempre realizando seu teste
glicêmico e possuir de maneira organizada os dados desse teste para
um melhor controle de sua glicemia e ter uma saúde equilibrada.
Foi utilizado o recurso Pivot, para o usuário ter uma maior
facilidade no uso e na visualização dos componentes do aplicativo.
A aplicação foi submetida e provada, sendo publicada no
Windows Phone MarketPlace, estando disponível para download pelo
endereço http://www.windowsphone.com/s?appid=b4525d80-eb184875-a177-adbbf03227ab.
Há futuras melhorias previstas para esta aplicação, nas quais
serão adicionados mais recursos que poderão ser usados, para
proporcionar um maior controle aos seus usuários finais.
Referências Bibliográficas
Microsoft. Pivot control for Windows Phone. Disponível em <http://
msdn.microsoft.com/en-us/library/windowsphone/develop/
ff941098(v=vs.105).aspx >. Acesso em 3.Ago. 2013.
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us> . Acesso em 3.Ago.2013.
50
Coletânea de Aplicativos para Windows Phone
9. Conversor de Temperatura
George Petz
Introdução
O desenvolvimento deste aplicativo tem como principal proposta
ser um conversor de temperatura de fácil uso. Seu funcionamento
básico inicia com o usuário informando uma temperatura em uma
medida e através de cálculos físicos é retornado a mesma temperatura
em outra medida.
Projeto
A princípio, é exibido ao usuário um menu contento todas as
opções possíveis de conversão, assim que usuário selecionar uma
delas uma nova tela é exibida, essas novas telas, se comparadas, são
parecidas, pois a única informação que muda é o nome da unidade de
medida (ºC, ºF e K), porém cada uma possui um cálculo diferente.
Figura 9.1 - Estrutura do Projeto
51
George Petz
O projeto possui ao todo sete telas sendo elas o Menu e uma
tela para cada tipo de conversão.
Desenvolvimento
Para o desenvolvimento do projeto foi utilizado o ambiente de
desenvolvimento Microsoft Visual Studio 2010 Express for Windows
Phone, com Silverlight para Windows Phone. A linguagem escolhida foi
a C#.
Como as diversas telas do aplicativo possuem poucas
informações ao usuário, foi escolhido para todas as telas o controle do
tipo Windows Phone Application, esse tipo de tela funciona como uma
simples página.
A primeira interface que o usuário utiliza é o menu, os
elementos encontrados nessa tela são organizados por um Grid
(espécie de tabela).
<!--ContentPanel - place additional content here-->
<Grid x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”>
<Button Content=”ºC to ºF” FontSize=”32” Height=”100”
HorizontalAlignment=”Left” Margin=”0,6,0,0” Name=”btnCtoF”
VerticalAlignment=”Top” Width=”456” Click=”btnCtoF_Click” />
<Button Content=”ºC to K” FontSize=”32” Height=”100”
HorizontalAlignment=”Left” Margin=”0,93,0,0” Name=”btnCtoK”
VerticalAlignment=”Top” Width=”456” Click=”btnCtoK_Click” />
<Button Content=”ºF to ºC” FontSize=”32” Height=”100”
HorizontalAlignment=”Left” Margin=”0,179,0,0” Name=”btnFtoC”
VerticalAlignment=”Top” Width=”456” Click=”btnFtoC_Click” />
<Button Content=”ºF to K” FontSize=”32” Height=”100”
HorizontalAlignment=”Left” Margin=”0,268,0,0” Name=”btnFtoK”
VerticalAlignment=”Top” Width=”456” Click=”btnFtoK_Click” />
<Button Content=”K to ºC” FontSize=”32” Height=”100”
HorizontalAlignment=”Left” Margin=”0,356,0,0” Name=”btnKtoC”
VerticalAlignment=”Top” Width=”456” Click=”btnKtoC_Click” />
<Button Content=”K to ºF” FontSize=”32” Height=”100”
HorizontalAlignment=”Left” Margin=”0,445,0,0” Name=”btnKtoF”
VerticalAlignment=”Top” Width=”456” Click=”btnKtoF_Click” />
</Grid>
52
Coletânea de Aplicativos para Windows Phone
O resultado da implementação deste código é esta interface
ilustrada pela Figura 9.2:
Figura 9.2 – Menu
Por trás desta interface existe um código que basicamente
utiliza a classe chamada NavigationService, nessa classe há o método
chamado Navigate, que possui a funcionalidade de navegar entre
páginas. Este método é chamado quando o evento Click de cada botão
é disparado.
private void btnCtoF_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(“/CtoF.xaml”,
UriKind.Relative));
}
private void btnCtoK_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(“/CtoK.xaml”,
UriKind.Relative));
}
private void btnFtoC_Click(object sender, RoutedEventArgs e)
{
53
George Petz
NavigationService.Navigate(new Uri(“/FtoC.xaml”,
UriKind.Relative));
}
private void btnFtoK_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(“/FtoK.xaml”,
UriKind.Relative));
}
private void btnKtoC_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(“/KtoC.xaml”,
UriKind.Relative));
}
private void btnKtoF_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(“/KtoF.xaml”,
UriKind.Relative));
}
Quando, por exemplo, o botão “btnCtoF” é clicado a tela “CtoF”
é carregada e exibida.
As interfaces de conversão de temperatura são parecidas, sendo
assim, sua organização é feita através de um Grid. Será mostrada como
exemplo a tela de conversão ºC para ºF (CtoF.xaml).
<Grid x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”>
<TextBlock Height=”44” HorizontalAlignment=”Left”
Margin=”12,61,0,0” Name=”textBlock1” Text=”ºC :”
FontSize=”30” VerticalAlignment=”Top” Width=”92” />
<TextBox InputScope=”Number” Height=”74”
Margin=”110,47,89,0” Name=”txtC” Text=””
VerticalAlignment=”Top” Tap=”txtKm_Tap” TextChanged=”txtC_
TextChanged” LostFocus=”txtC_LostFocus” />
<Button Content=”Converter” Height=”99”
HorizontalAlignment=”Left” Margin=”0,212,0,0”
54
Coletânea de Aplicativos para Windows Phone
Name=”btnConverter” FontSize=”40” VerticalAlignment=”Top”
Width=”450” Click=”btnConverter_Click” />
<TextBlock FontSize=”30” Height=”44”
HorizontalAlignment=”Left” Margin=”12,365,0,0”
Name=”textBlock2” Text=”ºF :” VerticalAlignment=”Top”
Width=”92” />
<TextBox Height=”74” Margin=”0,351,89,0” Name=”txtF”
VerticalAlignment=”Top” HorizontalAlignment=”Right”
Width=”257” IsEnabled=”False” />
<my:AdControl AdUnitId=”10051848”
ApplicationId=”a85b90ad-23d2-494e-9b47-e66e4c9e1dc5”
Height=”80” HorizontalAlignment=”Left” Margin=”-12,530,0,0”
Name=”adControl1” VerticalAlignment=”Top” Width=”480” />
<CheckBox Content=”Negative” Height=”72”
HorizontalAlignment=”Left” Margin=”12,134,0,0”
Name=”chkNegative” VerticalAlignment=”Top” Width=”355” />
</Grid>
Com esse código mostrado é criada a interface ilustrada pela
Figura 9.3.
55
George Petz
Figura 9.3 - Tela ºC para ºF
Nesta tela o usuário informa o valor da temperatura em ºC
e clica no botão “Converter”, com isso, o sistema através de cálculos
retorna a mesma temperatura na escala ºF. Existe o checkbox
Negativo, para que o usuário check caso a temperatura informada seja
negativa. O aplicativo ainda contém a prevenção de erros, como por
exemplo, efetuar o cálculo com números com mais de uma vírgula. A
implementação deste modelo em formato de código é feita da seguinte
forma:
float C;
float F;
private void btnConverter_Click(object sender,
RoutedEventArgs e)
{
if (VereficarPonto(txtC.Text) > 1)
56
Coletânea de Aplicativos para Windows Phone
{
MessageBox.Show(“It can’t calculate a value with more
than one point(.)!”, “Attention!”, MessageBoxButton.OK);
}
else
{
if (string.IsNullOrEmpty(txtC.Text))
{
txtC.Text = “0”;
}
if (chkNegative.IsChecked == true)
{
C = float.Parse(“-” + txtC.Text);
}
else
{
C = float.Parse(txtC.Text);
}
F = (float)(C * 1.8 + 32);
txtF.Text = Convert.ToString(F);
}
}
private int VereficarPonto(string texto)
{
int ponto = 0;
for (int i = 0; i < texto.Length; i++)
{
if (texto.ElementAt(i) == ‘.’)
{
ponto += 1;
}
}
return ponto;
}
A diferença de maior importância entre as telas de conversão
de temperatura é o calculo realizado. A seguir estão relacionados os
cálculos para as respectivas conversões:
57
George Petz
•
•
•
•
•
•
ºC para ºF à F = (C * 1.8 + 32);
ºC para K à K = (C + 273.15);
ºF para ºC à C = ((F - 32) / 1.8);
ºF para K à K = ((F + 459.67) / 1.8);
K para ºC à C = (K - 273.15);
K para ºF à F = (K * 1.8 - 459.67);
Considerações Finais
A escolha de um conversor de temperatura como ideia para
o desenvolvimento do aplicativo foi acatada, pois os conversores
existentes no Windows Phone Marketplace não são tão simples sendo,
que a simplicidade é algo que deve se salientar em um projeto desta
natureza.
Após o desenvolvimento a aplicação foi submetida e
aprovada para publicação, estando disponível para download
no
endereço:
http://www.windowsphone.com/pt-br/store/app/
temperatures/97e7eec7-5973-49a7-87ca-abc8b6fae169
Referências Bibliográficas
Microsoft. How to create your first app for Windows Phone. Disponível
em: http://msdn.microsoft.com/en-us/library/windowsphone/develop/
ff402526(v=vs.105).aspx Acessado em 24 de Agosto de 2013.
58
Coletânea de Aplicativos para Windows Phone
10. Cronômetro
Rafael de Oliveira Sales
Introdução
A proposta desta aplicação é desenvolver um cronômetro onde
o usuário terá as funções iniciar, parar, reiniciar ou zerar o cronômetro.
A aplicação consiste em uma ferramenta onde o usuário pode escolher
entre dois idiomas: inglês e português. Também é possível salvar os
seus resultados, por exemplo, uma volta em certo circuito ou certa
distância em uma lista.
Projeto
O elemento principal é o relógio que é usado para realizar
a função de cronômetro e uma lista para armazenar os resultados
cronometrados. Os comandos que o usuário pode aplicar são os
seguintes:
Figura 10.1 - Botões e suas funcionalidades.
59
Rafael de Oliveira Sales
Primeiramente o usuário deve selecionar o idioma desejado. A
Figura 10.2 mostra a tela de seleção do idioma.
Figura 10.2 - Tela de seleção de linguagem
Após ter feito a sua escolha o usuário é levado a uma tela
contendo o relógio, com a lista e com os seguintes botões:
60
Coletânea de Aplicativos para Windows Phone
Figura 10.3 - Tela em português
Figura 10.4 - Tela em inglês
Quando o usuário “apertar” o botão Começar ou GO!!!,
conforme o idioma selecionado, o relógio começa a contagem, neste
momento, o botão Começar/GO!!! será escondido, dando lugar ao
botão Recomeçar/Resume e habilitará o botão Parar/Stop.
61
Rafael de Oliveira Sales
Figura 10.5 - Tela em português do
cronômetro rodando
Figura 10.6 - Tela em inglês do
cronômetro rodando
Na tela acima o usuário vai ter as seguintes ações disponíveis:
Salvar o tempo ou Parar o relógio. Se o usuário clicar em Salvar Tempo
ou Save time o aplicativo vai gravar, em forma de lista, os tempos no
momento do clique, como mostram as Figura 10.7 e 10.8:
62
Coletânea de Aplicativos para Windows Phone
Figura 10.8 - Tela salvando o tempo
em inglês
Figura 10.7 - Tela salvando o tempo
em português
Já se o usuário clicar no botão no botão Parar ou Stop, o relógio
pausa o tempo e aguarda uma decisão do usuário entre duas ações
possíveis: Recomeçar/Resume que vai continuar o tempo no momento
que o usuário clicou no Parar/Stop ou; o botão Zerar/Clear que vai
apagar todos os resultados da lista e também vai zerar o relógio e
assim retornando a mesma tela da Figura 10.3 ou da Figura 10.4.
63
Rafael de Oliveira Sales
Figura 10.10 - Tela do cronômetro
pausado em inglês
Figura 10.9 - Tela do cronômetro
pausado em português
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone
e utilizando, para isso, o Silverlight para Windows Phone.
Para o desenvolvimento da interface foi utilizado a tela padrão
de aplicação para o Windows Phone, chamada de Phone Aplicattion
ou Portrait Page. No trecho de programa a seguir, podemos observar
o código XAML dentro da página MainPage.xaml, será utilizado o Grid
para organizar os botões na tela.
<!--ContentPanel - place additional content here-->
<Grid x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”
Background=”{x:Null}”>
<Button Name=”btnComeçar” Content=”Começar” Height=”72”
HorizontalAlignment=”Left” Margin=”15,529,0,0”
VerticalAlignment=”Top” Width=”206” Click=”btnComeçar_
Click” Foreground=”GreenYellow” />
<Button Name=”btnParar” Content=”Parar” Height=”72”
HorizontalAlignment=”Left” Margin=”243,529,0,0”
VerticalAlignment=”Top” Width=”206” Click=”button1_Click”
Foreground=”GreenYellow” />
64
Coletânea de Aplicativos para Windows Phone
<Button Name=”btnRec” Content=”Recomeçar” Height=”72”
HorizontalAlignment=”Left” Margin=”15,529,0,0”
VerticalAlignment=”Top” Width=”206” IsEnabled=”True”
Click=”btnRec_Click” Visibility=”Visible”
Foreground=”GreenYellow” />
<Button Name=”btnVolta” Content=”Salvar tempo”
Height=”72” HorizontalAlignment=”Left” Margin=”15,529,0,0”
VerticalAlignment=”Top” Width=”206” Click=”btnVolta_Click”
Foreground=”GreenYellow” />
<Button Name=”btnZerar” Content=”Zerar” Height=”72”
HorizontalAlignment=”Left” Margin=”243,529,0,0”
VerticalAlignment=”Top” Width=”206” Click=”btnZerar_Click”
Foreground=”GreenYellow” />
<Button Name=”btnResume” Content=”Resume” Height=”72”
HorizontalAlignment=”Left” Margin=”15,529,0,0”
VerticalAlignment=”Top” Width=”206” Click=”btnResume_Click”
Foreground=”GreenYellow” />
<Button Name=”btnPortu” Content=”Português” Height=”72”
HorizontalAlignment=”Left” Margin=”146,246,0,0”
VerticalAlignment=”Top” Width=”182” Click=”btnPortu_Click”
Foreground=”GreenYellow” />
<Button Name=”btnEng” Content=”English” Height=”72”
HorizontalAlignment=”Left” Margin=”146,324,0,0”
VerticalAlignment=”Top” Width=”182” Click=”btnEng_Click”
Foreground=”GreenYellow” />
<TextBlock Name=”txbMin” Height=”129”
HorizontalAlignment=”Left” Margin=”182,25,0,0” Text=”00”
VerticalAlignment=”Top” Width=”112” FontSize=”100”
TextAlignment=”Center” Foreground=”GreenYellow” />
<TextBlock Name=”txbHrs” Height=”129”
HorizontalAlignment=”Left” Margin=”61,25,0,0”
Text=”00” VerticalAlignment=”Top” FontSize=”100”
TextAlignment=”Center” TextWrapping=”NoWrap”
FlowDirection=”RightToLeft” Foreground=”GreenYellow” />
<TextBlock Name=”txbP2” Height=”134”
HorizontalAlignment=”Left” Margin=”168,20,0,0” Text=”:”
VerticalAlignment=”Top” TextAlignment=”Center”
FontSize=”100” Foreground=”GreenYellow” />
<TextBlock Name=”txbP1” Height=”127”
HorizontalAlignment=”Left” Margin=”283,19,0,0” Text=”:”
VerticalAlignment=”Top” Width=”32” FontSize=”100”
TextAlignment=”Center” Foreground=”GreenYellow” />
65
Rafael de Oliveira Sales
<TextBlock Name=”txbVolta” Text=”” Height=”30”
HorizontalAlignment=”Left” Margin=”15,172,0,0”
VerticalAlignment=”Top” Width=”128”
Foreground=”GreenYellow” />
<TextBlock Name=”txbLingua” Text=”Escolha o idioma/
Choose Language” Height=”30” HorizontalAlignment=”Left”
Margin=”80,208,0,0” VerticalAlignment=”Top”
Foreground=”GreenYellow” />
<TextBlock Name=”txbCro” HorizontalAlignment=”Center”
Margin=”300,25,44,0” Text=”00” Width=”112” FontSize=”100”
VerticalAlignment=”Top” TextAlignment=”Center” Height=”121”
Foreground=”GreenYellow” />
<TextBlock Name=”txbtempo” Text=”” Height=”30”
HorizontalAlignment=”Left” Margin=”35,25,0,0”
VerticalAlignment=”Top” />
<TextBlock Name=”txbDias” Text=”” Height=”30”
HorizontalAlignment=”Right” Margin=”0,23,261,0”
VerticalAlignment=”Top” />
<ListBox Name=”ltbVolta” Height=”271”
HorizontalAlignment=”Right” Margin=”0,208,5,0”
VerticalAlignment=”Top” Width=”437” Background=”Black”
ItemsSource=”{Binding}” TabNavigation=”Local” FontSize=”30”
UseLayoutRounding=”False” Foreground=”#FFF51F1F”></ListBox>
</Grid>
</Grid>
O resultado final da página principal, que pode ser observado
na Figura 10.10, sendo que os outros botões, a lista e as outras
mensagens ficam ocultos até que ocorra a escolha do idioma.
66
Coletânea de Aplicativos para Windows Phone
Figura 10.11 - Resultado Final
Após desenvolver o layout da página principal, vamos ocultar
os botões, a lista e os textos e também declarar uma variável do tipo
TimeSpan e definir o seu intervalo.
btnRec.Visibility = Visibility.Collapsed;
btnVolta.Visibility = Visibility.Collapsed;
btnZerar.Visibility = Visibility.Collapsed;
btnParar.IsEnabled = false;
btnRec.IsEnabled = false;
btnResume.IsEnabled = false;
tempo.Interval = new TimeSpan(0, 0, 0, 1);
btnComeçar.Visibility = Visibility.Collapsed;
btnParar.Visibility = Visibility.Collapsed;
txbCro.Visibility = Visibility.Collapsed;
txbHrs.Visibility = Visibility.Collapsed;
txbMin.Visibility = Visibility.Collapsed;
txbP1.Visibility = Visibility.Collapsed;
txbP2.Visibility = Visibility.Collapsed;
txbVolta.Visibility = Visibility.Collapsed;
ltbVolta.Visibility = Visibility.Collapsed;
btnResume.Visibility = Visibility.Collapsed;
67
Rafael de Oliveira Sales
Agora vamos definir o código do botão Começar ou Go!!!,
conforme podemos observar a seguir:
private void btnComeçar_Click(object sender,
RoutedEventArgs e)
{
tempo.Start();
tempo.Tick += delegate
{
seg++;
if (seg < 10)
{
txbCro.Text = “0” + seg.ToString();
}
if (seg >= 10)
{
txbCro.Text = seg.ToString();
}
if (seg == 60)
{
seg = 0;
min++;
txbCro.Text = “00”;
if (min < 10)
{
txbMin.Text = “0” + min.ToString();
}
if (min > 10)
{
txbMin.Text = min.ToString();
}
if (min == 60)
{
min = 0;
hrs++;
txbMin.Text = “00”;
if (hrs < 10)
{
txbHrs.Text = “0” + hrs.ToString();
}
68
Coletânea de Aplicativos para Windows Phone
if (hrs >= 10)
{
txbHrs.Text = hrs.ToString();
}
if (hrs == 24)
{
hrs = 0;
dia++;
txbHrs.Text = “00”;
if(btnEng.IsEnabled==true)
{
if (dia == 1)
{
txbDias.Text = dia.ToString()
}
if (dia > 1)
{
txbDias.Text = dia.ToString()
}
}
if (btnPortu.IsEnabled==true)
{
if (dia == 1)
{
txbDias.Text = dia.ToString()
}
if (dia > 1)
{
txbDias.Text = dia.ToString()
}
}
}
+ “day”;
+ “days”;
+ “ dia”;
+ “ dias”;
}
}
};
btnComeçar.Visibility = Visibility.Collapsed;
btnVolta.Visibility = Visibility.Visible;
btnParar.IsEnabled = true;
}
69
Rafael de Oliveira Sales
No cófigo-fonte a seguir temos a programação para o evento
click do botão Parar/Stop que faz com que a contagem de tempo pare,
além de ocultar e deixar visível alguns botões.
private void button1_Click(object sender, RoutedEventArgs e)
{
tempo.Stop();
btnParar.Visibility =
System.Windows.Visibility.Collapsed;
if (btnRec.IsEnabled == true)
{
btnRec.Visibility =
System.Windows.Visibility.Visible;
}
if (btnResume.IsEnabled == true)
{
btnResume.Visibility = Visibility.Visible;
}
btnVolta.Visibility = Visibility.Collapsed;
btnZerar.Visibility = Visibility.Visible;
}
O botão Recomeçar/Resume volta a iniciar a variável tempo
e deixa visível os botões Parar/Recomeçar e oculta o próprio botão
Recomeçar e o botão Zerar/Clear.
private void btnRec_Click(object sender, RoutedEventArgs e)
{
tempo.Start();
btnRec.Visibility =
System.Windows.Visibility.Collapsed;
btnParar.Visibility =
System.Windows.Visibility.Visible;
btnZerar.Visibility = Visibility.Collapsed;
btnVolta.Visibility = Visibility.Visible;
btnParar.IsEnabled = true;
btnRec.Content = “Recomeçar”;
}
70
Coletânea de Aplicativos para Windows Phone
private void btnResume_Click(object sender, RoutedEventArgs
e)
{
tempo.Start();
btnResume.Visibility =
System.Windows.Visibility.Collapsed;
btnParar.Visibility =
System.Windows.Visibility.Visible;
btnZerar.Visibility = Visibility.Collapsed;
btnVolta.Visibility = Visibility.Visible;
btnParar.IsEnabled = true;
btnResume.Content = “Resume”;
}
O botão Salvar Tempo/Save Time adiciona o tempo atual do
relógio na lista.
private void btnVolta_Click(object sender, RoutedEventArgs
e)
{
i++;
ltbVolta.Items.Add(“ “ + i + “: “ + txbHrs.Text + “:” +
txbMin.Text +
“:” + txbCro.Text);
}
O botão Zerar/Clear limpa todas as variáveis e a lista.
private void btnZerar_Click(object sender, RoutedEventArgs
e)
{
i = 0;
seg = 0;
min = 0;
hrs = 0;
ltbVolta.Items.Clear();
txbCro.Text = “00”;
txbMin.Text = “00”;
71
Rafael de Oliveira Sales
txbHrs.Text = “00”;
if (btnRec.IsEnabled == true)
{
btnRec.Content = “Começar”;
}
if (btnResume.IsEnabled == true)
{
btnResume.Content = “Go!!!”;
}
btnParar.Visibility=Visibility.Visible;
btnZerar.Visibility = Visibility.Collapsed;
btnParar.IsEnabled = false;
}
A seguir podemos observar os códigos de atribuição dos textos
nos botões e nos campos textos também de acordo com o idioma
escolhido.
private void btnPortu_Click(object sender, RoutedEventArgs
e)
{
PageTitle.Text = “cronômetro”;
btnComeçar.Visibility = Visibility.Visible;
btnParar.Visibility = Visibility.Visible;
txbCro.Visibility = Visibility.Visible;
txbHrs.Visibility = Visibility.Visible;
txbMin.Visibility = Visibility.Visible;
txbP1.Visibility = Visibility.Visible;
txbP2.Visibility = Visibility.Visible;
txbVolta.Visibility = Visibility.Visible;
ltbVolta.Visibility = Visibility.Visible;
btnEng.Visibility = Visibility.Collapsed;
btnPortu.Visibility = Visibility.Collapsed;
txbLingua.Visibility = Visibility.Collapsed;
72
Coletânea de Aplicativos para Windows Phone
btnRec.IsEnabled = true;
btnEng.IsEnabled = false;
txbVolta.Text = “Tempo Salvo”;
}
private void btnEng_Click(object sender, RoutedEventArgs e)
{
PageTitle.Text = “chronometer”;
txbCro.Visibility = Visibility.Visible;
txbHrs.Visibility = Visibility.Visible;
txbMin.Visibility = Visibility.Visible;
txbP1.Visibility = Visibility.Visible;
txbP2.Visibility = Visibility.Visible;
txbVolta.Visibility = Visibility.Visible;
ltbVolta.Visibility = Visibility.Visible;
btnComeçar.Visibility = Visibility.Visible;
btnParar.Visibility = Visibility.Visible;
btnEng.Visibility = Visibility.Collapsed;
btnPortu.Visibility = Visibility.Collapsed;
txbLingua.Visibility = Visibility.Collapsed;
btnResume.IsEnabled = true;
btnPortu.IsEnabled = false;
txbVolta.Text = “Time saved”;
btnComeçar.Content = “Go!!!”;
btnParar.Content = “Stop”;
btnZerar.Content = “Clear”;
btnVolta.Content = “Save time”;
}
Considerações Finais
A aplicação consiste em cronometrar o tempo e suas principais
características é que qualquer usuário, independentemente do seu
nível de conhecimento, vai conseguir usar o aplicativo, pois, o mesmo
foi desenvolvido de forma simples e objetiva.
73
Rafael de Oliveira Sales
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/pt-br/
store/app/cronometro/fc52ee24-1e9a-4742-a67f-c390fcfb81e2
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 21 de agosto de 2013.
74
Coletânea de Aplicativos para Windows Phone
11. Desafios de Lógica
Profa. Ms. Adaní Cusin Sacilotti
Prof. Ms. Carlos Eduardo Schuster
Kelly Sabará
Introdução
A proposta deste aplicativo é o desenvolvimento de um teste de
raciocínio e lógica com níveis de dificuldade. O conceito básico consiste
em mostrar uma determinada questão e as opções de resposta em
relação ao nível de dificuldade selecionado. Após o usuário clicar sobre
alguma opção de resposta, ele tem a possibilidade de verificar qual é
a resposta correta. O aplicativo indica se a opção selecionada está
correta ou não, caso a resposta assinalada esteja incorreta, ele exibe
a mensagem de Resposta Incorreta - tente novamente, oferecendo a
oportunidade ao usuário de tentar solucionar o problema novamente.
Projeto
A aplicação consiste em um conjunto de três desafios de lógica
para cada nível de dificuldade (fácil, médio, difícil). As questões são
exibidas de acordo com o nível de dificuldade selecionado e o usuário
pode selecionar qual desafio responder.
As opções de respostas, logo abaixo de cada questão, estão no
formato de teste. O usuário a qualquer momento poderá escolher o
nível de dificuldade e a questão a ser respondida.
Quando o usuário selecionar uma opção de resposta correta,
o aplicativo exibe a mensagem de Resposta Correta, seguida de uma
breve explicação sobre a solução da questão.
A aplicação possui uma página inicial, contendo os objetivos do
aplicativo, conforme a Figura 11.1.
75
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
Figura 11.1 – Tela inicial
Cada nível de dificuldade dos Desafios de Lógica será exibido
em um PivotItem. Cada PivotItem irá exibir três desafios (questões),
conforme ilustrado na Figura 11.2:
76
Coletânea de Aplicativos para Windows Phone
Figura 11.2 - Nível de dificuldade fácil
Os níveis médio e difícil apresentam o mesmo modelo
apresentado no nível fácil (Figura 11.2).
São exibidos três desafios (desafio1, desafio2, desafio3). O
usuário, ao clicar no desafio escolhido, tem a visão da questão com as
opções de resposta no formato teste. Ao clicar na opção desejada, o
usuário pode checar se a sua resposta está correta, clicando no botão
Verificar Resposta (Figura 11.3).
77
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
Figura 11.3 - Nível de dificuldade fácil, primeiro desafio
Se a resposta estiver correta, é exibida uma mensagem de
Resposta Correta e, uma breve explicação sobre a resolução (Figura
11.4). Se a reposta estiver errada, será exibida uma mensagem
alertando o usuário.
78
Coletânea de Aplicativos para Windows Phone
Figura 11.4 – Verificar Resposta do primeiro desafio
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone
e utilizado, para isso, o Silverlight para Windows Phone.
Devido às dimensões reduzidas da tela de um smartphone, em
algumas páginas que apresentavam textos longos, foi utilizado um
controle de rolagem vertical de tela. No trecho de programa a seguir,
podemos observar a implementação VerticalScrollBarVisibility em um
ScrollViewer, dentro da página referente a questão de texto longo,
onde o elemento utilizado é o StackPanel para organizar as linhas.
<StackPanel x:Name=”ContentPanel” Grid.Row=”1”
Margin=”12,0,12,0”>
<ScrollViewer MaxHeight=”600”
VerticalScrollBarVisibility=”Visible”>
<StackPanel>
79
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
Após desenvolver o layout da página principal, vamos definir a
classe que irá definir o nível de dificuldade e a questão escolhida para
responder:
public partial class niveis: PhoneApplicationPage
{
public niveis()
{
InitializeComponent();
}
private void StackPanel_Tap(object sender,
GestureEventArgs e)
{
if (sender == f1) NavigationService.Navigate(new
Uri(“/desafios/f1.xaml”, UriKind.Relative));
if (sender == f2) NavigationService.Navigate(new
Uri(“/desafios/f2.xaml”, UriKind.Relative));
if (sender == f3) NavigationService.Navigate(new
Uri(“/desafios/f3.xaml”, UriKind.Relative));
if (sender == m1) NavigationService.Navigate(new
Uri(“/desafios/m1.xaml”, UriKind.Relative));
if (sender == m2) NavigationService.Navigate(new
Uri(“/desafios/m2.xaml”, UriKind.Relative));
if (sender == m3) NavigationService.Navigate(new
Uri(“/desafios/m3.xaml”, UriKind.Relative));
if (sender == d1) NavigationService.Navigate(new
Uri(“/desafios/d1.xaml”, UriKind.Relative));
if (sender == d2) NavigationService.Navigate(new
Uri(“/desafios/d2.xaml”, UriKind.Relative));
if (sender == d3) NavigationService.Navigate(new
Uri(“/desafios/d3.xaml”, UriKind.Relative));
}
}
Outra classe que foi desenvolvida, de acordo com o desafio
escolhido, checa a opção de resposta selecionada e exibe mensagem
ao usuário.
80
Coletânea de Aplicativos para Windows Phone
public partial class d1 : PhoneApplicationPage
{
public d1()
{
InitializeComponent();
}
private void btnResposta_Click(object sender,
RoutedEventArgs e)
{
int indice = -1;
for (int i = 0; i < stackradios.Children.Count; i++)
{
RadioButton rb =
stackradios.Children.ElementAt(i)
as RadioButton;
if (rb.IsChecked == true)
indice = i;
}
if (indice == 0)
{
txtCertoErrado.Text = “Resposta Correta”;
txtResp.Text = “A sequência correta é: Rafael, Jorge,
Anderson, Cláudio e Humberto”;
txtResp1.Text = “”;
}
else
{
txtCertoErrado.Text = “Resposta Incorreta”;
txtResp.Text = “”;
txtResp1.Text = “Tente Novamente”;
}
}
}
Na MainPage será carregada a página com os níveis de
dificuldade dos desafios de lógica.
81
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void bt1_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(“/niveis.xaml”,
UriKind.Relative));
}
}
Considerações Finais
A aplicação consiste em uma versão bem simples de testes
de lógica encontrados em livros e revistas de lógica, olimpíadas
de matemática e concursos públicos. Apresenta como principais
características, a possibilidade de customização de vários temas e
questões como também a seleção de diferentes níveis de dificuldades,
que possam ser implementados.
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/pt-br/
store/app/desafios/1f6d3254-b2bb-40b9-957e-f175c7cad167 .
Melhorias futuras na aplicação consistem em realizar a
randomização de questões, temas e níveis de dificuldade.
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 15 jun. 2013.
82
Coletânea de Aplicativos para Windows Phone
12. Diabetes Calculator
Profa. Ms. Adaní Cusin Sacilotti
Prof. Ms. Carlos Eduardo Schuster
Kelly Sabará
Introdução
O objetivo deste aplicativo é auxiliar as pessoas com diabetes,
em especial a Diabetes Mellitus Tipo 1 (DM1) - insulino dependentes,
e que seguem a dieta baseada na contagem de carboidratos (CHO)
ingeridos. Basicamente o aplicativo funciona como uma calculadora
especificamente projetada para calcular a quantidade de unidades de
insulina que deve ser aplicada de acordo com a quantidade de CHO
ingerida pela pessoa com diabetes.
Resumidamente, o dia-a-dia de um diabético (DM1) que utiliza a
técnica de contagem de carboidratos é, antes de cada refeição do dia,
1) realizar a medição de sua glicemia de jejum por meio de dispositivo
próprio; 2) alimentar-se, tomando o cuidado de verificar a quantidade
de carboidratos de cada alimento ou bebida; 3) transformar essa
quantidade de carboidratos em valor glicêmico, pois estes se
transformarão em glicose no corpo; 4) somar com a glicemia medida
antes dessa refeição; 5) subtrair este valor da glicemia final desejada
e 6) converter este resultado em unidades de insulina a ser aplicada
em seguida. Lembramos que esta é uma das técnicas comuns, existem
outras com maior ou menor variação.
Projeto
O aplicativo pode ser dividido em 5 módulos principais:
Figura 12.1 – Módulos do Aplicativo
Por se tratar de um aplicativo que lida com a saúde das pessoas
a primeira preocupação é alertar o usuário a respeito de seu uso em
83
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
relação às indicações médicas, portanto, a primeira vez que o aplicativo
é iniciado, a seguinte mensagem aparece: “O uso deste aplicativo não
substitui em hipótese alguma as orientações de seu médico, trata-se
apenas de uma ferramenta que automatiza o processo matemático que
envolve a técnica de contagem de carboidratos. Consulte seu médico
antes de utilizar este aplicativo”, juntamente com sua tradução para o
inglês: “Take careful: not in any way replace your doctor orientation,
it’s just a system that automates the mathematical process from Carb
Counting technique. Consult your doctor before using this aplication.”.
O Módulo Configuração consiste no cadastro e
armazenamento de 4 variáveis: 1) a Razão Insulina UI / CHO que
significa quantas gramas de carboidrato são reduzidas aplicandose uma unidade de insulina rápida. 2) o Fator de Sensibilidade nos
informa quanto uma unidade de insulina rápida ou ultrarrápida reduz
a glicemia. 3) a Meta Glicêmica Mínima indica o mínimo valor de
glicemia aceitável e 4) a Meta Glicêmica Ideal corresponde ao valor
máximo desejável. Lembrando que tais variáveis devem provir de
orientação médica. A Figura 12.2 resume as 4 variáveis com alguns
valores comumente utilizados.
Figura 12.2 – Variáveis necessárias para o cálculo
O Módulo Calculadora permite que o usuário insira
até 8 valores diferentes de quantidades em gramas de carboidratos
ingeridos. Supostamente o usuário poderia então lançar os valores de
até 8 alimentos diferentes, como por exemplo, a quantidade de CHO
de um suco de laranja, de duas colheres de arroz, uma colher de farofa
temperada e uma colher de feijão, resultando 4 valores diferentes. O
sistema fará a somatória e a exibirá.
84
Coletânea de Aplicativos para Windows Phone
Além da possibilidade de inserção dos carboidratos ingeridos o
usuário poderá inserir o valor atual de sua glicemia em mg/dl.
O aplicativo, de posse do valor da glicemia e quantidades de
CHO inseridos e, de acordo com os parâmetros registrados no módulo
“Configuração”, poderá calcular a quantidade de insulina a ser aplicada.
Como normalmente as unidades de insulinas são números inteiros, o
aplicativo deverá exibir o valor inteiro mais próximo acima e abaixo
do resultado e respectivo valor glicêmico final. Figura 12.3 ilustra o
cálculo.
Figura 12.3 – Cálculos Realizados
O Módulo Regra de 3 é útil quando consumimos
alimentos ou bebidas cuja informação nutricional não informa o valor
total de carboidratos do produto ou quando é consumido apenas uma
parte do mesmo. Para exemplificar, vamos supor que um “pacote de
salgadinho” de 55g informa que a cada 25g consumidas contém 14g de
carboidrato, logo um cálculo simples de regra de 3 deve ser realizado
para se calcular o total de carboidratos do pacote todo, supondo o
consumo total do mesmo. Este valor calculado pode ser transportado
para um dos campos de consumo de carboidrato do módulo
calculadora.
85
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
O Módulo Ajuda tem a intenção apenas de esclarecer
e exemplificar os módulos citados anteriormente para que não fiquem
dúvidas em como proceder em relação à entrada dos dados e forma de
cálculo.
O Módulo Idioma permite alternar todo o aplicativo
para o idioma Inglês ou Português. Optou-se pela interface também
em inglês para que o aplicativo possa abranger um público maior.
Desenvolvimento
Este aplicativo foi desenvolvido especificamente para o
dispositivo Windows Phone OS 7.1 utilizando-se a IDE Microsoft Visual
Studio 2010 Express juntamente com Microsoft Expression Blend 4.
Um dos desafios deste aplicativo seria em como proceder
quanto à tradução para o idioma inglês. Como o sistema não é
considerado muito grande e complexo optou-se por, após finalizado a
versão para publicação, criar uma cópia exata do sistema em uma pasta
específica denominada “english” e em cada interface trocar as palavras
do português para o inglês, incluindo o módulo de ajuda.
Figura 12.4 – Pasta ‘english’ contendo o sistema traduzido para o idioma inglês
86
Coletânea de Aplicativos para Windows Phone
A primeira vez que o aplicativo é executado o usuário escolhe
o idioma, imediatamente uma variável é salva como IsolatedStorage,
assim, sempre que executar o aplicativo o idioma selecionado será o
padrão. Em seguida é realizado o redirecionamento para a página
principal do idioma selecionado.
private void ptVersion(object sender,
System.Windows.Input.GestureEventArgs e)
{
saveText(“idioma”, “pt”);
NavigationService.Navigate(new
Uri(string.Format(“/MainPage1.xaml”),
UriKind.Relative));
}
private void enVersion(object sender,
System.Windows.Input.GestureEventArgs e)
{
saveText(“idioma”, “en”);
NavigationService.Navigate(new
Uri(string.Format(“/english/MainPage_en.xaml”),
UriKind.Relative));
}
Figura 12.5 – Tela inicial de escolha do idioma
Uma vez selecionado o idioma nesta tela inicial, ela não mais
abrirá. O aplicativo redireciona para a tela inicial de um dos dois
idiomas.
87
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
Para tal verificação inicial no code-behind de App.xaml
acrescentou-se a verificação do idioma escolhido.
void RootFrame_Navigating(object sender,
NavigatingCancelEventArgs e)
{
if (e.Uri.ToString().Contains(“/MainPage.xaml”) != true)
return;
e.Cancel = true;
RootFrame.Dispatcher.BeginInvoke(delegate
{
string text;
loadText(“idioma”, out text);
if (text == “pt”)
RootFrame.Navigate(new Uri(“/MainPage1.xaml”,
UriKind.Relative));
if (text == “en”)
RootFrame.Navigate(new
Uri(“/english/MainPage_en.xaml”,
UriKind.Relative));
if (text != “pt” && text != “en”)
RootFrame.
Navigate(new Uri(“/entrada.xaml”,
UriKind.Relative));
});
}
No Módulo Calculadora, todos os campos são possuem o seu
InputScope setado para “Number”. Ainda assim foi necessário uma
rotina para impedir o uso do caracter “.” (ponto) para inserção de casas
decimais. Para tal criou-se um método para cada campo que faz a
verificação dos caracteres pressionados e se for um “ponto” o mesmo
será trocado por um texto de tamanho zero.
88
Coletânea de Aplicativos para Windows Phone
private void KeyUp(object
sender, System.Windows.Input.
KeyEventArgs e)
{
TextBox txt =
(TextBox)sender;
if (txt.Text.Contains(‘.’))
{
txt.Text =
txt.Text.Replace(“.”,
“”);
txt.SelectionStart =
txt.Text.Length;
}
}
Figura 12.6 – Tela da
calculadora
Considerações Finais
Normalmente no cotidiano de um diabético infantil,
principalmente, os cuidados em relação à dieta baseada na contagem
de carboidratos ocorrem dentro de sua casa, com a supervisão de seus
pais que utilizam, normalmente, uma calculadora para auxiliar nos
cálculos. Quando não se está em casa e, principalmente quando não há
a calculadora disponível, o uso do aplicativo se torna muito prático.
Figura 12.7 – Ícone e Avaliação do Aplicativo
89
Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará
Este aplicativo está disponível no Windows Phone Marketplace,
pelo
endereço
http://www.windowsphone.com/pt-br/store/app/
diabetes-calculator/5c4f803a-8965-42ad-a86d-99968f8a1e92. Pode-se
também digitar a palavra “diabetes” no campo de busca por aplicativos
do site para retornar o aplicativo. Até o momento este sistema tem
aparecido como um dos primeiros em relação à relevância de procura.
Isto demonstra a necessidade e até mesmo a oportunidade de se
publicar mais apps em relação ao assunto.
Futuras implementações podem ser realizadas tais como o
registro diário das medições e consumo de carboidratos.
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 10.mar.2013.
90
Coletânea de Aplicativos para Windows Phone
13. FuelManager
João Henrique Felício Barreto
Introdução
A proposta deste aplicativo é o desenvolvimento de um
aplicativo para o gerenciamento de combustível. O conceito básico
consiste em selecionar a opção desejada: verificar combustível,
verificar consumo ou fazer histórico e, posteriormente, fazer os
cálculos ou as anotações segundo o parecer do usuário.
Projeto
O projeto será baseado em quatro “paginas”, sendo elas
o “Menu” que será a pagina principal; “Verificar”, onde ocorrera
o calculo referente ao melhor combustível a ser abastecido,
considerando seu custo/beneficio; “Consumo”, onde será feito o
calculo do consumo do carro a partir da quantidade de litros pela
distancia percorrida; “Dados”, onde será dada ao usuário a opção
de fazer um histórico dos dados dos abastecimentos realizados.
Portanto, estará dividida em duas por uma pagina “Pivot”. Sendo
assim, uma será destinada para o preenchimento dos dados e a outra
para o salvamento dos mesmos, assim como na Figura 13.1.
91
João Henrique Felício Barreto
Figura 13.1 - Estrutura do Aplicativo
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone
e utilizando, para isso, o Silverlight para Windows Phone.
Na pagina principal, foi utilizado o “Windows Phone Application”
para criar o menu. No código a seguir, são definidas as configurações
dos elementos contidos no “TitlePanel”, ou seja, o topo da página.
<!--TitlePanel contains the name of the application and
page title-->
<StackPanel x:Name=”TitlePanel” Grid.Row=”0”
Margin=”12,17,0,28” Background=”{x:Null}”>
<TextBlock x:Name=”ApplicationTitle” Text=”Fuel Manager”
Style=”{StaticResource PhoneTextNormalStyle}”/>
<TextBlock x:Name=”PageTitle” Text=”Menu”
Margin=”9,-7,0,0” Style=”{StaticResource
PhoneTextTitle1Style}” Foreground=”White” />
</StackPanel>
92
Coletânea de Aplicativos para Windows Phone
Aqui, se inicia a parte de organização da página. Nela existem
dois “StackPanel” onde podemos formatar melhor a pagina e um “Grid.
Background” onde é definida a imagem de fundo do aplicativo.
<!--ContentPanel - place additional content here-->
<StackPanel x:Name=”ContentPanel” Grid.Row=”1”
Margin=”12,0,12,0”>
<StackPanel.Background>
<ImageBrush/>
</StackPanel.Background>
</StackPanel>
<StackPanel Orientation=”Vertical”
VerticalAlignment=”Center” Margin=”12,50,12,297” Grid.
Row=”1”>
<Button Name=”btn1” Content=”Vantagem” Width=”250”
Click=”btn1_Click” />
<Button Name=”btn4” Content=”Consumo” Width=”250”
Click=”btn4_Click”/>
<Button Name=”btn3” Content=”Dados”
Width=”250”
Click=”btn3_Click” />
</StackPanel>
<Grid.Background>
<ImageBrush ImageSource=”/App1;component/road.jpg”
Stretch=”UniformToFill” />
</Grid.Background>
O resultado final da página principal, que pode ser observado na
Figura 13.2, irá consistir em um Windows Form Application contendo
três botões.
93
João Henrique Felício Barreto
Figura 13.2 - Resultado Final
Para cada botão, é necessário fazer uma referencia para a
página desejada dentro do evento “Click” do respectivo botão. Isso
pode ser feito através do método Navigate disponível na classe
NavigationService. Para chegar ao evento do botão pode ser usado
a tecla de atalho F7 ou clique com o botão direito do mouse em
Click=”btn1_Click” e selecione “Navigate to event handler”.
private void btn1_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(“/Verificar.xaml”,
UriKind.Relative));
}
Após isso, será desenvolvida a página “Verificar”, onde será
realizado o cálculo do combustível mais vantajoso. Para isso, criase outro Windows Form Application, onde mudaremos apenas o
ContentPanel. As configurações do TitlePanel são as mesmas.
Nesta página serão criados alguns “TextBlock”, para
identificação, organização e resposta, e dois “TextBox” para a entrada
94
Coletânea de Aplicativos para Windows Phone
de dados. Alem disso, serão criados ainda dois botões, um para apagar
os valores e outro para realizar o cálculo.
<StackPanel x:Name=”ContentPanel” Grid.Row=”1”
Margin=”12,0,12,0”>
<!—TextBlock e TextBox 1 -->
<TextBlock Text=”Informe o preço do álcool:”
HorizontalAlignment=”Center”/>
<StackPanel Orientation=”Horizontal”
HorizontalAlignment=”Center”>
<TextBlock Text=”R$” FontSize=”40”/>
<TextBox Name=”Valor1”
Width=”200”
InputScope=”Number”
TextChanged=”Valor2_TextChanged”/>
</StackPanel>
<!—TextBlock e TextBox 2 -->
<TextBlock Text=”Informe o preço da gasolina:”
HorizontalAlignment=”Center”/>
<StackPanel Orientation=”Horizontal”
HorizontalAlignment=”Center”>
<TextBlock Text=”R$” FontSize=”40”/>
<TextBox Name=”Valor2”
Width=”200”
InputScope=”Number”
TextChanged=”Valor2_TextChanged”/>
</StackPanel>
<!—Botoes-->
<StackPanel Orientation=”Horizontal”
HorizontalAlignment=”Center”>
<Button Name=”btn3” Width=”200” Content=”Novo”
Click=”btn3_Click” IsEnabled=”False”/>
<Button Name=”btn2” Width=”200” Content=”Resultado”
Click=”btn2_Click” IsEnabled=”False”/>
</StackPanel>
<!—Apresentacao do resultado -->
<TextBlock Name=”txtresultado” Text = “É melhor colocar
Álcool” HorizontalAlignment=”Center” Foreground=”#FF1AEA20”
FontSize=”32” OpacityMask=”#FFF2C0C0” Margin=”0,60,0,0”
Visibility=”Collapsed”/>
<TextBlock Name=”txtresultado2”
HorizontalAlignment=”Center” Foreground=”#FFF5E516”
FontSize=”32” OpacityMask=”#FFDBCDCD” Margin=”0,60,0,0”
95
João Henrique Felício Barreto
Text = “É melhor colocar Gasolina” Visibility=”Collapsed”/>
</StackPanel>
<Grid.Background>
<ImageBrush ImageSource=”/App1;component/Images/road.png”
Stretch=”UniformToFill” />
</Grid.Background>
Agora, será desenvolvida a ação dos botões, “Novo” e
“Resultado”, dentro do evento “Click” dos respectivos botões. O cálculo
é feito dividindo o preço do álcool pelo da gasolina. Se o resultado for
igual ou maior que 0,70 o álcool é mais vantajoso, senão é a gasolina.
private void
{
double X =
double Y =
double Z =
btn2_Click(object sender, RoutedEventArgs e)
Convert.ToDouble(Valor1.Text);
Convert.ToDouble(Valor2.Text);
X / Y;
if (Z <= 0.7)
{
txtresultado.Visibility = Visibility.Visible;
txtresultado2.Visibility = Visibility.Collapsed;
}
else
{
txtresultado2.Visibility = Visibility.Visible;
txtresultado.Visibility = Visibility.Collapsed;
}
btn3.IsEnabled = Valor1.Text.Length > 0 &&
Valor2.Text.Length > 0;
}
No código acima, primeiramente, é preciso converter os valores
informados para “double]” e depois realizar o cálculo. A apresentação
dos resultados é feita através dos “txtresultado” e “txtresultado2”
que são os nomes dos “TextBlock” definidos na pagina Verificar.xaml.
A propriedade “Visibility” controla qual estará visível dependendo do
resultado da condição. Na Figura 13.3, o resultado após o termino do
desenvolvimento desta função do aplicativo.
96
Coletânea de Aplicativos para Windows Phone
Figura 13.3 - Resultado da pagina Verificar
O próximo passo é criar a função de verificação do consumo
do carro. Então, cria-se outra página Windows Form Application e
adicionamos os Texblock e Textbox para o design da interface e entrada
de dados e adicionamos também os botões para o cálculo do resultado
e limpar os textos, assim como anteriormente.
<TextBlock Margin=”0,50,0,0” Text=”Informe a quantidade de
litros:” HorizontalAlignment=”Center”/>
<TextBox Name=”txtLitros” InputScope=”Number” Width=”200”
TextChanged=”txtQuant_TextChanged” />
<TextBlock Text=”Quantidade de Km rodados:”
HorizontalAlignment=”Center”/>
<TextBox Name=”txtQuant” InputScope=”Number” Width=”200”
TextChanged=”txtQuant_TextChanged”/>
<StackPanel Orientation=”Horizontal”
HorizontalAlignment=”Center”>
<Button Name=”btnVerificar” Content=”Verificar”
Click=”btnVerificar_Click” Width=”200” IsEnabled=”False”/>
<Button Name=”btnNovo” Content=”Novo” Click=”btnNovo_
97
João Henrique Felício Barreto
Click” Width=”200” IsEnabled=”False” />
</StackPanel>
<TextBlock Name=”txtresultado” FontSize=”32”
Foreground=”#FFE6F803” />
</StackPanel>
<Grid.Background>
<ImageBrush ImageSource=”/App1;component/road.jpg”
Stretch=”UniformToFill” />
</Grid.Background>
Agora, novamente, devemos criar a ação dos botões. Para
limpar, deve-se simplesmente preencher os campos com uma string
“vazia”.
private void btnNovo_Click(object sender, RoutedEventArgs e)
{
txtLitros.Text = “”;
txtQuant.Text = “”;
txtresultado.Text = “”;
btnNovo.IsEnabled = false;
}
Para o botão de resultado, precisamos apenas dividir a
quantidade de quilometros percorridos pela quantidade de litros
abastecidos.
private void btnVerificar_Click(object sender,
RoutedEventArgs e)
{
double Litros = Convert.ToDouble(txtLitros.Text);
double km = Convert.ToDouble(txtQuant.Text);
double consumo = km / Litros;
double numeroRedondo = Math.Round(consumo,2);
txtresultado.Text = “Media de consumo: “ +
numeroRedondo + “Km/L”;
btnNovo.IsEnabled = txtLitros.Text.Length > 0
&& txtQuant.Text.Length > 0;
}
98
Coletânea de Aplicativos para Windows Phone
No código acima, depois de converter as variáveis, é necessário
limitar as casas decimais através do método Round da classe Math.
Depois de apresentar o resultado e se os TextBox estiverem vazios, o
botão irá ficar desabilitado através do IsEnabled. Na Figura 13.4, temos
o resultado da página.
Figura 13.4 - Resultado da pagina Consumo
Por ultimo, será desenvolvida a página Dados. Nesta página,
será utilizado outro recurso chamado Pivot. O Pivot é um controle de
navegação que existe no Windows Phone que facilita o gerenciamento
e exibição de dados para os usuários utilizando o toque e arraste para
esquerda ou direita.
O item 1 do Pivot será destinado ao preenchimento das
informações.
99
João Henrique Felício Barreto
<!--Pivot item one-->
<controls:PivotItem Header=”Dados”>
<StackPanel>
<TextBlock Text=”Data do Abastecimento”
HorizontalAlignment=”Center”/>
<toolkit:DatePicker x:Name=”datePicker” Value=””/>
<TextBlock Text=”Horário”
HorizontalAlignment=”Center”/>
<toolkit:TimePicker x:Name=”timePicker” Value=””/>
<TextBlock Name=”txtdatepicker”/>
<StackPanel Orientation=”Horizontal”>
<StackPanel HorizontalAlignment=”Center”>
<TextBlock Text=”Litros” Margin=”75,0,0,0”/>
<TextBox Name=”txtLitros” Width=”200”
InputScope=”Number” />
</StackPanel>
<StackPanel Margin=”20,0,0,0”>
<TextBlock Text=”Valor Gasto” Margin=”90,0,0,0”/>
<StackPanel Orientation=”Horizontal”>
<TextBlock Text=”R$” Width=”32” FontSize=”30”
Height=”40” />
<TextBox Name=”txtValorGasto” InputScope=”Number”
Width =”200” Margin=”5,0,0,0”/>
</StackPanel>
</StackPanel>
</StackPanel>
<TextBlock Text=”KM na hora do abastecimento:”
HorizontalAlignment=”Center”/>
<TextBox Name=”txtKMabastecimento” Width=”200”
InputScope=”Number”/>
<Button Name=”btnSalvar” Content=”Criar novo Historico”
Width=”400” Click=”btnSalvar_Click”/>
<StackPanel Orientation=”Horizontal”
HorizontalAlignment=”Center”>
<Button Name=”btnEditar” Width=”200”
Content=”Adicionar” Click=”Editar_Click”/>
<Button Content=”Limpar” Height=”72”
HorizontalAlignment=”Center” Name=”Apagar”
VerticalAlignment=”Top” Width=”200” Click=”Apagar_Click”/>
</StackPanel>
</StackPanel>
</controls:PivotItem>
100
Coletânea de Aplicativos para Windows Phone
Nesta página foi adicionado um toolkit para a data e horário.
Para ele funcionar é necessário primeiramente, baixar. Depois
adicionar a referencia para o projeto e adicionar ainda o código a
seguir no topo da pagina.
xmlns:toolkit=”clr-namespace:Microsoft.Phone.
Controls;assembly=Microsoft.Phone.Controls.Toolkit”
Agora, será feito a gravação e criação do histórico. O
armazenamento acontecerá no botão Criar novo histórico e para isto
será usado o IsolatedStorage.
private void btnSalvar_Click(object sender, RoutedEventArgs
e)
{
MessageBoxResult resultado = MessageBox.Show(“Deseja criar
novo historico?”, “Mensagem”, MessageBoxButton.OKCancel);
if (resultado == MessageBoxResult.Cancel)
{
return;
}
else
{
StreamResourceInfo streamResourceInfo =
Application.GetResourceStream(new Uri(filePath,
UriKind.Relative));
using (var myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
string directoryName =
System.IO.Path.GetDirectoryName(filePath);
if (!string.IsNullOrEmpty(directoryName) &&
!myIsolatedStorage.DirectoryExists(
directoryName))
{
myIsolatedStorage.CreateDirectory(
directoryName);
}
101
João Henrique Felício Barreto
using (IsolatedStorageFileStream fileStream =
myIsolatedStorage.OpenFile(filePath,
System.IO.FileMode.Create,
System.IO.FileAccess.Write))
{
using (StreamWriter writer = new
StreamWriter(fileStream))
{
DateTime dt =
Convert.ToDateTime(datePicker.Value);
txtdatepicker.Text = dt.ToString();
string someTextData = “Data e Horario : “ +
txtdatepicker.Text + “ Litros:” +
txtLitros.Text + “L” + “ \n KM: “ +
txtKMabastecimento.Text +
“ Valor Gasto: R$ “ + txtValorGasto.Text;
writer.WriteLine(someTextData);
MessageBox.Show(“Novo historico criado com
sucesso”, “Atenção”, MessageBoxButton.OK);
}
}
}
}
}
O histórico será feito na pagina Pivot 2. Para isso, antes é
necessário usar um método para verificar se um histórico já foi criado.
Isto acontecerá ao clicar no botão Atualizar.
private void Ler_Click(object sender, RoutedEventArgs e)
{
txtLeituraArquivo.Text = string.Empty;
using (IsolatedStorageFile myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists(filePath))
{
using (IsolatedStorageFileStream fileStream =
myIsolatedStorage.OpenFile(filePath, FileMode.Open,
102
Coletânea de Aplicativos para Windows Phone
FileAccess.Read))
{
using (StreamReader reader = new
StreamReader(fileStream))
{
txtLeituraArquivo.Text = reader.ReadToEnd();
}
}
}
else
{
MessageBox.Show(“Arquivo não encontrado”, “Atenção”,
MessageBoxButton.OK);
}
}
}
Para o botão Apagar, basta apenas preencher as variáveis como
vazio. Assim como já realizado anteriormente. Por ultimo, mostrar os
dados na pagina ao clicar no botão Adicionar.
private void Editar_Click(object sender, RoutedEventArgs e)
{
txtLeituraArquivo.Text = string.Empty;
using (IsolatedStorageFile myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists(filePath))
{
using (IsolatedStorageFileStream fileStream =
myIsolatedStorage.OpenFile(filePath,
FileMode.Open, FileAccess.Write))
{
using (StreamWriter writer =
new StreamWriter(fileStream))
{
DateTime dt =
Convert.ToDateTime(datePicker.Value);
txtdatepicker.Text = dt.ToString();
103
João Henrique Felício Barreto
string someTextData = “Data e Horario : “ +
txtdatepicker.Text + “ Litros:” +
txtLitros.Text + “L” + “ \n KM: “ +
txtKMabastecimento.Text +
“ Valor Gasto: R$ “ + txtValorGasto.Text;
writer.BaseStream.Seek(0, SeekOrigin.End);
writer.WriteLine(someTextData);
writer.Close();
MessageBox.Show(“Arquivo salvo com sucesso”,
“Atenção”, MessageBoxButton.OK);
}
}
}
else
{
MessageBox.Show(“Não existe arquivo para ser
editado”, “Atenção”, MessageBoxButton.OK);
}
}
}
Na Figura 13.5 temos o resultado da página ao final do processo
de desenvolvimento.
104
Coletânea de Aplicativos para Windows Phone
Figura 13.5 - Resultado da página Dados
Considerações Finais
A aplicação consiste em um gerenciador de combustível e,
tem como principal característica, a possibilidade de criação de um
histórico detalhado do abastecimento. No entanto, apresenta funções
bastante úteis no dia-a-dia do usuário. O uso dos recursos Windows
Form Application e principalmente o Pivot Control apresentam novas
perspectivas em relação ao layout de aplicações, pois, apresentam
soluções bastante eficazes no design de interfaces.
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/pt-br/
store/app/fuelmanager/45891be0-2555-4c3b-bf91-45e5689eb3ec
Esta é a segunda versão do aplicativo e está sujeita a melhorias
futuras, como correção de texto e melhorias no seu design.
105
João Henrique Felício Barreto
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 20.jun.2013.
106
Coletânea de Aplicativos para Windows Phone
14. Jogo da Memória
Prof. Ms. Benedito Cristiano Aparecido Petroni
Prof. Ms. Cláudio Luís Vieira Oliveira
Introdução
A proposta deste aplicativo é o desenvolvimento de um jogo
de memória com elementos associativos. O conceito básico consiste
em mostrar um determinado número de peças em relação ao nível de
dificuldade selecionado e, após escondê-las, o usuário deverá clicar
sobre as peças desejadas. Ao formar o par correto as peças ficarão
visíveis, caso contrário, o par é escondido novamente.
Projeto
O elemento principal da aplicação consiste em um conjunto de
peças, cada uma contendo um valor distinto, conforme o tema que foi
escolhido pelo usuário. Estas peças terão o seu conteúdo exibido por
padrão, de modo a permitir que o usuário consiga memoriza-las. O
usuário a qualquer momento poderá iniciar um novo jogo, quando isso
ocorrer o progresso atual do jogo será descartado, voltando ao início.
Os demais requisitos da aplicação estão relacionados ao número
de peças, o qual irá determinar o nível de dificuldade, podendo ser 8,
16 ou 24 peças. Também deve ser permitido ao usuário habilitar ou
não os efeitos sonoros e também realizar a troca do tema.
A aplicação também possui, conforme ilustrado na Figura 14.1,
uma página para ajuste das configurações do jogo (Setup) e também
outra página que exibe informações sobre o jogo e os autores (About).
107
Benedito Petroni e Cláudio Oliveira
Figura 14.1 - O jogo
O nível de dificuldade do jogo também é determinado pela
quantidade de PanoramaItem que serão exibidos, ou seja, no nível
fácil serão mostradas 8 peças em apenas um PanoramaItem, conforme
ilustrado na Figura 14.2:
Figura 14.2 - Nível de dificuldade fácil
No nível médio temos dois PanoramaItem sendo exibidos,
conforme pode ser observado na Figura 14.3. No nível difícil os três
108
Coletânea de Aplicativos para Windows Phone
PanoramaItem são exibidos.
Figura 14.3 - Nível de dificuldade médio
O diagrama de classes, mostrado na Figura 14.4, mostra como as
páginas MainPage, About e Setup encontram-se implementadas. Além
da classe Peca que tem a função de realizar a associação entre duas
peças na área do jogo, a classe Tema carrega as informações das peças
com base no tema que foi selecionado pelo usuário. O armazenamento
das peças correspondentes a cada tema é realizado localmente.
Figura 14.4 - Diagrama de Classes
109
Benedito Petroni e Cláudio Oliveira
Cada par é armazenado considerando o valor de cada peça e as
respectivas cores, sendo todos os elementos separados por ponto-evírgula, por exemplo:
Water;#00FF00;Glass;#00FF00;
A pontuação, na aplicação, é calculada com base no critério
de que cada acerto irá adicionar 10 pontos e a cada erro subtrai 10
pontos. O jogo tem início com o usuário começando com zero ponto.
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone
e utilizando, para isso, o Silverlight para Windows Phone.
Devido às dimensões reduzidas da tela de um smartphone, na
página principal, foi utilizado um controle do tipo Panorama de forma
a conseguirmos maximizar a área da aplicação permitindo, desta
forma, realizar a disposição das peças do jogo de modo a não ficarmos
limitados exclusivamente à área física da tela. No trecho de programa
a seguir, podemos observar a implementação de um PanoramaItem
dentro da página MainPage.xaml, dentro desta elemento foi utilizado o
StackPanel para organizar os botões em linhas e outro StackPanel com
a propriedade Orientation igual a Horizontal para as colunas.
<controls:PanoramaItem Header=”first page”>
<!--Double line list with text wrapping-->
<StackPanel>
<StackPanel Orientation=”Horizontal”>
<Button Name=”btnPeca00” Content=”1” Width=”215”
Height=”85” Background=”Red” BorderThickness=”0”
Click=”Jogar_Click” />
<Button Name=”btnPeca01” Content=”2” Width=”215”
Background=”Red” BorderThickness=”0” Click=”Jogar_Click” />
</StackPanel>
<StackPanel Orientation=”Horizontal”>
<Button Name=”btnPeca02” Content=”3” Width=”215”
Height=”85” Background=”Red” BorderThickness=”0”
Click=”Jogar_Click” />
<Button Name=”btnPeca03” Content=”4” Width=”215”
110
Coletânea de Aplicativos para Windows Phone
Background=”Red” BorderThickness=”0” Click=”Jogar_Click” />
</StackPanel>
<!-- Demais elementos a serem implementados-->
</StackPanel>
</controls:PanoramaItem>
O resultado final da página principal, que pode ser observado
na Figura 14.5 consiste em três PanoramaItem contendo, cada um, 8
botões. A primeiro PanoramaItem possui também os botões New,
Start, Setup e About além de um espaço reservado para publicidade no
rodapé.
Figura 14.5 - Resultado final
Uma nova página da aplicação pode ser aberta através do
método Navigate disponível na classe NavigationService. A seguir
podemos observar seu uso no desenvolvimento do evento click do
botão About:
private void btnAbout_Click(object sender, RoutedEventArgs
e)
{
NavigationService.Navigate(new Uri(“/About.xaml”,
UriKind.Relative));
}
111
Benedito Petroni e Cláudio Oliveira
Após desenvolver o layout da página principal, vamos definir a
classe Peca que define o conteúdo dos pares, a respectiva posição na
área do jogo e também se o usuário já descobriu o local do par:
public class Peca
{
public int Posicao1 { set; get; }
public string Conteudo1 { set; get; }
public int Posicao2 { set; get; }
public string Conteudo2 { set; get; }
public bool Acerto { set; get; }
}
A outra classe desenvolvida obtém as peças associadas a
determinado tema. O método criar armazena em um IsolatedStorage
um conjunto de dados pré-definidos exemplificando um tema.
public class Tema
{
private const string fileName = “ThemeData.txt”;
private const string folderName = “MemoryGame”;
private string filePath =
System.IO.Path.Combine(folderName, fileName);
public void Criar()
{
StreamResourceInfo streamResourceInfo =
Application.GetResourceStream(new Uri(filePath,
UriKind.Relative));
using (var myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
string directoryName =
System.IO.Path.GetDirectoryName(filePath);
if (!string.IsNullOrEmpty(directoryName) &&
!myIsolatedStorage.DirectoryExists(
directoryName))
{
myIsolatedStorage.CreateDirectory(
112
Coletânea de Aplicativos para Windows Phone
directoryName);
}
using (IsolatedStorageFileStream fileStream =
myIsolatedStorage.OpenFile(filePath,
FileMode.Create, FileAccess.Write))
{
using (StreamWriter writer =
new StreamWriter(fileStream))
{
string someTextData =
“Water;#00FF00;Glass;#00FF00;” +
“Penguin;#00FF00;Antarctica;#00FF00;” +
“Cat;#00FF00;Dog;#00FF00;” +
“Feather;#00FF00;Bird;#00FF00;” +
“Student;#00FF00;Teacher;#00FF00;” +
“Mathematics ;#00FF00;Science;#00FF00;” +
“Relativity;#00FF00;Einstein;#00FF00;” +
“Catholic;#00FF00;Francisco;#00FF00”;
writer.WriteLine(someTextData);
}
}
}
}
public string Ler()
{
string conteudo = string.Empty;
using (IsolatedStorageFile myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists(filePath))
{
using (IsolatedStorageFileStream fileStream =
myIsolatedStorage.OpenFile(filePath,
FileMode.Open, FileAccess.Read))
{
using (StreamReader reader =
new StreamReader(fileStream))
{
conteudo = reader.ReadToEnd();
}
113
Benedito Petroni e Cláudio Oliveira
}
}
else
{
MessageBox.Show(“O arquivo não existe!”,
“Atenção”, MessageBoxButton.OK);
}
}
return (conteudo);
}
}
O método Ler, desta mesma classe, deve retornar o conteúdo
armazenado no IsolatedStorage em uma string. Em seguida, passamos
para o desenvolvimento da MainPage. O primeiro passo consiste em
definir os atributos desta classe:
private
private
private
private
private
Peca[] peca;
bool iniciar = false;
bool verificar = false;
bool efeitoSom = true;
int[] par = { -1, -1 };
Agora no método construtor da MainPage a classe Tema deve
ser instanciada. O método Carregar armazena o conteúdo no vetor de
objetos da classe Peca enquanto, o método Embaralhar, deve misturar
as peças na área do jogo.
public MainPage()
{
InitializeComponent();
DataContext = App.ViewModel;
this.Loaded +=
new RoutedEventHandler(MainPage_Loaded);
Tema tema = new Tema();
tema.Criar();
Carregar(tema.Ler());
Embaralhar();
}
114
Coletânea de Aplicativos para Windows Phone
O botão Start deve, através do método AtualizarPecas, esconder
as peças de modo a dar início ao jogo:
private void btnStart_Click(object sender, RoutedEventArgs
e)
{
AtualizarPecas();
verificar = false;
iniciar = true;
}
Quando o usuário pressiona um dos botões que corresponde a
uma das peças, o atributo verificar define se é a primeira peça do par
que o usuário está exibindo ou não. Quando é a segunda peça que está
sendo exibida, deve ser realizada a verificação se houve o acerto do
par, neste caso, as peças devem ficar visíveis, caso contrário, devem ser
escondidas novamente.
private void Jogar_Click(object sender, RoutedEventArgs e)
{
if (iniciar)
{
Button btnTmpPeca = (Button)sender;
btnTmpPeca.Foreground =
new SolidColorBrush(Colors.White);
if (!verificar)
RegistrarJogada(0, btnTmpPeca);
else
{
RegistrarJogada(1, btnTmpPeca);
VerificarJogada();
iniciar = !VerificarFimJogo();
}
verificar = !verificar;
}
else
MessageBox.Show(“Please, press the START Button!”,
“Attention”, MessageBoxButton.OK);
}
115
Benedito Petroni e Cláudio Oliveira
O método VerificarFimJogo é chamado sempre após a
verificação do par escolhido pelo usuário e irá indicar se existem ou
não peças a serem exibidas.
Considerações Finais
A aplicação consiste em uma versão do popular jogo de memória
e, apresenta como principais características, a possibilidade de
customização de vários temas e também a seleção de diferentes níveis
de dificuldade. O uso do recurso Panorama View apresenta novas
perspectivas em relação ao layout de aplicações, pois, apresenta uma
solução bastante funcional em relação as limitações de tamanho de
tela existentes nos smartphones.
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/pt-br/
store/app/memory-game/5d57d42d-1884-423a-9719-9f89c64ed251
Melhorias futuras na aplicação consistem em realizar a
atualização automática do conjunto de temas através do acesso a rede.
Outra melhoria prevista é a utilização de imagens nas peças.
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 6.jun.2013.
116
Coletânea de Aplicativos para Windows Phone
15. RescisãoCLT
Reginaldo Bernardo Antonietti
Introdução
A proposta deste aplicativo móvel, chamado “RescisãoCLT”, é dar
ao trabalhador brasileiro a chance de saber antecipadamente, quanto
irá receber de seus direitos trabalhista, em uma eventual rescisão de
contrato de trabalho. O aplicativo na sua versão 1.x é voltado a pessoas
físicas e fornece além dos cálculos, acesso as tabelas oficiais do Brasil
do INSS, IR (Imposto de Renda Pessoa Física) e Seguro-Desemprego.
Esta APP tem seus cálculos centrados na CLT Brasileira, ou seja, a
Consolidação das Leis do Trabalho 2013.
Projeto
O aplicativo nasceu dentro do curso de Windows Phone
ministrado pela FATEC Jundiaí (Faculdade de Tecnologia de Jundiaí) em
parceria com o INdT (Insituto Nokia de Tecnologia) em abril de 2013.
Sendo assim, este aplicativo foi desenvolvido para dispositivos móveis
que executam o Sistema Operacional Windows Phone 7.1 em diante. O
curso foi ministrado pelo excelente instrutor Jackson da Nokia, que não
deixou margem de dúvidas ao seu conhecimento e também ao passar
para nós, alunos.
Durante o trajeto do curso, cada aluno tinha que desenvolver
algum aplicativo, demonstrando com isso o aprendizado obtido e
obviamente fazendo jus ao certificado de conclusão do mesmo.
Este meu aplicativo obviamente não teve sua conclusão completa
dentro do curso, pois acabou se tornando um projeto que demorou
aproximadamente quase dois meses após o fim do mesmo, devido às
inúmeras rotinas de cálculos que são necessárias para se chegar ao
valor bruto e líquido do valor da rescisão a receber, bem os descontos
por lei. Também as inúmeras telas e homologação por parte de um
Contador profissional da área de Recursos Humanos (RH) foram
117
Reginaldo Bernardo Antonietti
necessárias, causando a demora na publicação. Ufa, confesso que não
imaginava que minha ideia iria se estender tanto.
A aplicação possui conforme ilustrado na Figura 15.1, a tela
principal onde se pode ver além do título, três botões que dão acesso
as telas de cálculo, as tabelas INSS, IR e Seguro-Desemprego e aos
créditos da APP. Nota-se também um aviso dizendo que a APP é de uso
exclusivo para a CLT do Brasil e o ano vigente.
Figura 15.1 – Tela Principal
Ao clicar no botão “Mensalista” e estando o dispositivo móvel
configurado para a região do Brasil, a tela do “Cálculo Mensalista”
abrirá para o devido cálculo da rescisão para trabalhadores que
percebem salários fixos que podem ser MENSAIS, QUINZENAIS ou
SEMANAIS, conforme a Figura 15.2:
118
Coletânea de Aplicativos para Windows Phone
Figura 15.2 – Tela de Cálculo para Salário Fixo
Excetuando os campos das HORAS EXTRAS, o resto é
OBRIGATÓRIO. Após o preenchimento dos campos, dá-se um Tap
(clique) no botão “Calcular” para que o aplicativo faça o cálculo
da rescisão. Uma tela de “Resultados” conforme a Figura 15.3 se
apresentará automaticamente após o cálculo concluído.
119
Reginaldo Bernardo Antonietti
Figura 15.3 – Resultado da Rescisão
Este aplicativo tem no botão “Calcular” seu principal evento.
Segue um trecho do código como são realizados os cálculos após o
usuário clicar no respectivo botão.
public void rb_Calcula_Rescisao_Click(object sender,
RoutedEventArgs e)
{
// Inicializa as variáveis TOTALIZADORAS
(Application.Current as App).v_valor_bruto = 0;
(Application.Current as App).v_valor_liq = 0;
.
.
.
// CONSISTÊNCIAS
(Application.Current as App).v_ult_salario =
Single.Parse(ed_UltSalario.Text);
120
Coletânea de Aplicativos para Windows Phone
(Application.Current as App).v_num_dependentes =
byte.Parse(ed_NumDependentes.Text);
(Application.Current as App).v_qtde_ferias_vencidas =
byte.Parse(ed_NumFeriasVencidas.Text);
(Application.Current as App).dt_admissao =
String.Format(“{0:dd/MM/yyyy}”, datePicker1.Value);
(Application.Current as App).dt_admissao =
(Application.Current as App).dt_admissao.Substring(
0, 10);
(Application.Current as App).dt_demissao =
String.Format(“{0:dd/MM/yyyy}”, datePicker2.Value);
(Application.Current as App).dt_demissao =
(Application.Current as App).dt_demissao.Substring(
0, 10);
// Separa a DATA DE ADMISSÃO em dia, mês e ano
(Application.Current as App).v_dia_admissao =
Convert.ToInt16((Application.Current as
App).dt_admissao.Substring(0, 2));
(Application.Current as App).v_mes_admissao =
Convert.ToInt16((Application.Current as
App).dt_admissao.Substring(3, 2));
(Application.Current as App).v_ano_admissao =
Convert.ToInt16((Application.Current as
App).dt_admissao.Substring(6, 4));
// Separa a DATA DE DEMISSÃO em dia, mês e ano
(Application.Current as App).v_dia_demissao =
Convert.ToInt16((Application.Current as
App).dt_demissao.Substring(0, 2));
(Application.Current as App).v_mes_demissao =
Convert.ToInt16((Application.Current as
App).dt_demissao.Substring(3, 2));
(Application.Current as App).v_ano_demissao =
Convert.ToInt16((Application.Current as
App).dt_demissao.Substring(6, 4));
// ANOS TRABALHADOS para cálculo dos dias do AVISO
// PRÉVIO que prevê 3 dias a mais a partir do 2º ano
// de trabalho
121
Reginaldo Bernardo Antonietti
(Application.Current as App).v_anos_trabalhados =
(Application.Current as App).v_ano_demissao –
(Application.Current as App).v_ano_admissao;
// CÁLCULO DA RESCISÃO - MENSALISTA
// SALDO DE SALÁRIO (dias trabalhados no mês da
// rescisão)
(Application.Current as App).v_saldo_salario = 0;
(Application.Current as App).v_saldo_salario =
((Application.Current as App).v_ult_salario / 30) *
(Application.Current as App).v_dia_demissao;
// HORAS EXTRAS (Se existirem) - Base 220 Horas
// Mensais
(Application.Current as App).v_total_horas_extras =
0;
// HORA EXTRA 50 %
(Application.Current as App).v_hora_extra50 = 0;
(Application.Current as App).v_qtde_Hr_Extras50 = 0;
(Application.Current as App).v_total_hora_extra50 = 0;
if (cb_HoraExtra_50.IsChecked == true)
{
// Acha o valor da HORA EXTRA com 50% de acréscimo
(Application.Current as App).v_hora_extra50 =
(((Application.Current as App).v_ult_salario /
220) * 1.50);
// Valor TOTAL das HORAS EXTRAS trabalhadas
(Application.Current as App).v_qtde_Hr_Extras50 =
Convert.ToDouble(ed_Horas_50.Text);
(Application.Current as App).v_total_hora_extra50 =
(Application.Current as App).v_qtde_Hr_Extras50 *
(Application.Current as App).v_hora_extra50;
}
// HORA EXTRA 100 %
(Application.Current as App).v_hora_extra100 = 0;
(Application.Current as App).v_qtde_Hr_Extras100 = 0;
122
Coletânea de Aplicativos para Windows Phone
(Application.Current as App).v_total_hora_extra100 =
0;
if (cb_HoraExtra_100.IsChecked == true)
{
// Acha o valor da HORA EXTRA com 100% de acréscimo
(Application.Current as App).v_hora_extra100 =
(((Application.Current as App).v_ult_salario /
220) * 2.00);
// Valor TOTAL das HORAS EXTRAS trabalhadas
(Application.Current as App).v_qtde_Hr_Extras100 =
Convert.ToDouble(ed_Horas_100.Text);
(Application.Current as
App).v_total_hora_extra100 =
(Application.Current as
App).v_qtde_Hr_Extras100 *
(Application.Current as App).v_hora_extra100;
}
// Soma das HORAS EXTRAS trabalhadas
(Application.Current as App).v_total_horas_extras =
(Application.Current as App).v_total_hora_extra50 +
(Application.Current as App).v_total_hora_extra100;
.
.
.
}
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone
como já mencionado e utilizando, portanto, o Silverlight para Windows
Phone.
Devido às dimensões reduzidas da tela de um smartphone,
procurei arranjar os componentes da melhor forma que fosse possível
sua operação bem como sua leitura por parte dos usuários. Também
foi dada uma atenção no que diz respeito a usar o mínimo de
componentes possível para que a tela não ficasse sobrecarregada bem
como a disposição em uma ordem natural na entrada de dados.
123
Reginaldo Bernardo Antonietti
Considerações Finais
A aplicação consiste em dar uma ferramenta para o usuário
que está debaixo das regras da CLT do Brasil. Seja ele trabalhador,
profissionais da área de RH, sindicatos, advogados trabalhistas ou
quem mais precisar do cálculo de uma rescisão de contrato de trabalho
CLT. É um aplicativo que não precisou de recursos avançados de
animação e imagem, mas que em uma versão mais completa poderá
vir a utilizar.
Outros recursos tais como listboxes e gráficos de apresentação
de resultados serão com o tempo acrescido, tornando mais rico a
apresentação do cálculo e mais atraente para sua leitura. O uso do
recurso Panorama View em futuras versões será utilizado para dar
novas perspectivas em relação ao layout de aplicações, pois, apresenta
uma solução bastante funcional em relação às limitações de tamanho
de tela existentes nos smartphones.
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/pt-br/
store/app/rescis%C3%A3oclt/4ad1ea8a-f518-4ed0-aea5-6932ffc142b7
Melhorias futuras no aplicativo podem consistir, por exemplo,
em realizar o cálculo baseado nos outros tipos de dispensa do trabalho
e também para cálculo de trabalhadores horistas.
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 17.ago.2013.
124
Coletânea de Aplicativos para Windows Phone
16. Tabuada
Profa. Ms. Luciana Ferreira Baptista
Introdução
A proposta deste aplicativo é a apresentação da tabuada de um
número. O conceito básico consiste em solicitar o número e apresentar
o resultado da tabuada desse número, iniciando-a do número 1 até o
número 10.
Projeto
O elemento principal da aplicação consiste em solicitar um
número ao usuário e apresentar a tabuada desse número.
A aplicação inicia com a escolha do idioma: inglês (default),
português ou espanhol, o qual será utilizado para mensagens que
poderão ser apresentadas ao usuário (Figura 16.1).
Figura 16.1 – Tela inicial: escolha do idioma
Ao clicar no botão Continue é apresentada a tela para o usuário
digitar o número que deseja visualizar a tabuada (Figura 16.2).
125
Luciana Ferreira Baptista
Figura 16.2 – Tela para digitação do número para o cálculo de sua tabuada
O resultado da tabuada é apresentado logo abaixo da digitação
do número desejado (Figura 16.3).
Figura 16.3 – Apresentação da tabuada de acordo com o número digitado
126
Coletânea de Aplicativos para Windows Phone
Desenvolvimento
A aplicação foi desenvolvida para a plataforma Windows Phone
e utilizando, para isso, o Silverlight para Windows Phone.
Foram desenvolvidas duas páginas, a MainPage.xaml, onde
o usuário escolhe o idioma por meio do RadioButton, o qual já vem
selecionado no idioma inglês. Após clicar em Continue, é chamada a
página Tabuada.xaml, passando como parâmetro o idioma selecionado
no evento Click do RadioButton:
private void btnContinuar_Click(object sender,
RoutedEventArgs e)
{
var queryData = string.Format(“?idioma={0}”, idioma,
“ Maestro”);
NavigationService.Navigate(new Uri(“/Tabuada.xaml” +
queryData, UriKind.Relative));
}
private void rbIngles_Click(object sender, RoutedEventArgs
e)
{
idioma = “I”;
}
private void rbPortugues_Click(object sender,
RoutedEventArgs e)
{
idioma = “P”;
}
private void rbEspanhol_Click(object sender,
RoutedEventArgs e)
{
idioma = “S”;
}
Na página seguinte (Tabuada.xaml) é recuperado o parâmetro
idioma:
127
Luciana Ferreira Baptista
public string idioma { get; set; }
Os textos são apresentados na página de acordo com o idioma
selecionado:
protected override void OnNavigatedTo( System.Windows.
Navigation.NavigationEventArgs e)
{
var data = this.NavigationContext.QueryString;
//Verifica se existe a Chave idioma
if (data.ContainsKey(“idioma”))
idioma = data[“idioma”];
switch (idioma)
{
case “I”:
ApplicationTitle.Text = “MULTIPLICATION TABLE”;
txbNumero.Text = “Number”;
txbResultado.Text = “Result”;
erroMensagem = “Enter a number”;
erroTitulo = “Attention”;
break;
case “P”:
ApplicationTitle.Text = “TABUADA”;
txbNumero.Text = “Número”;
txbResultado.Text = “Resultado”;
erroMensagem = “Entre um número”;
erroTitulo = “Atenção”;
break;
case “S”:
ApplicationTitle.Text = “TABUADA”;
txbNumero.Text = “Número”;
txbResultado.Text = “Resultar”;
erroMensagem = “Entre un número”;
erroTitulo = “¡Atención”;
}
base.OnNavigatedTo(e);
}
128
Coletânea de Aplicativos para Windows Phone
Ao clicar no botão OK, o resultado da tabuada é apresentado.
Mas se o número digitado contiver ponto, o resultado da tabuada é
formatado para apresentação de somente dois dígitos após o ponto
(Figura 16.4), além da apresentação da vírgula para a separação de
milhares de acordo com o padrão americano (Figura 16.5).
private void btnOk_Click(object sender, RoutedEventArgs e)
{
double resp;
int encontrar;
string respFormat;
try
{
lstResultado.Items.Clear();
for (int i = 1; i <= 10; i++)
{
resp = i * double.Parse(txtNumero.Text);
encontrar = txtNumero.Text.IndexOf(“.”);
if (encontrar >= 0)
respFormat = resp.ToString(“###,##0.00”);
else
respFormat = resp.ToString(“###,##0”);
lstResultado.Items.Add(i + “ X “ + txtNumero.Text
+ “ = “ + respFormat);
}
}
catch (Exception)
{
MessageBox.Show(erroMensagem, erroTitulo,
MessageBoxButton.OK);
}
}
A seguir podemos visualizar as Figuras 16.4 e 16.5 que ilustram a
formatação dos números.
129
Luciana Ferreira Baptista
Figura 16.4 – Apresentação do resultado com ponto flutuante
Figura 16.5 – Resultado da tabuada com separação de milhares
Porém, caso o usuário digite um número inválido, uma
130
Coletânea de Aplicativos para Windows Phone
mensagem é apresentada (Figura 16.6) de acordo com o idioma
selecionado.
Figura 16.6 – Mensagem para número inválido
Considerações Finais
A aplicação consiste em uma versão simples para visualizar
a tabuada de qualquer número. Sendo que os textos na página são
apresentados de acordo com um dos três idiomas selecionados
inicialmente.
Após o desenvolvimento a aplicação foi submetida e aprovada
para publicação no Windows Phone Marketplace, estando disponível
para download no endereço http://www.windowsphone.com/
pt-br/store/app/multiplicationtable/28b3e480-1231-46b6-88a4c9f4898dde45
Melhorias futuras na aplicação consistem em acrescentar outros
idiomas, a fim de que qualquer pessoa do mundo possa ler os textos
que são apresentados e consequentemente fazer melhor uso do
produto.
131
Luciana Ferreira Baptista
Referências Bibliográficas
Microsoft. Windows Phone Dev Center. Disponível em <http://dev.
windowsphone.com/en-us>. Acesso em 26.ago.2013.
132
Coletânea de Aplicativos para Windows Phone
17. Todos os Aplicativos Desenvolvidos e Publicados
Prof. Ms. Carlos Eduardo Schuster
Prof. Ms. Cláudio Luís Vieira Oliveira
Profa. Ms. Luciana Ferreira Baptista
Muitos projetos ainda estão sendo desenvolvidos pelos
professores e alunos da FATEC Jundiaí. E poderão ser baixados no
Windows Phone Marketplace.
Para ajudar a encontrá-los, o Quadro 17.1 contém a identificação
dos autores, que apresentaram os seus projetos de forma detalhada
nesta obra, como distribuidores no site do Windows Phone
Marketplace, bem como o endereço para sua localização.
Autor – Identificação no Windows Phone Marketplace
Endereço
Amanda Mayara de Araujo - Amanda Mayara
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=Aman
da%2BMayara&appId=b4525d80-eb18-4875-a177-adbbf03227ab
Benedito Cristiano Aparecido Petroni
Cláudio Luís Vieira Oliveira – clvoliveira
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=clvoli
veira&appId=fc52ee24-1e9a-4742-a67f-c390fcfb81e2
George Petz – George Petz
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=Georg
e%2BPetz&appId=97e7eec7-5973-49a7-87ca-abc8b6fae169
Gustavo da Silva Oliveira – Gustavo Silva
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=Gusta
vo%2BSilva&appId=bbf5c243-90a6-49b8-9211-ffdb0d948a97
133
Carlos Schuster, Cláudio Oliveira e Luciana Baptista
Autor – Identificação no Windows Phone Marketplace
Endereço
João Henrique Felício Barreto - JoaoHenrique
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=Joao
Henrique&appId=fc52ee24-1e9a-4742-a67f-c390fcfb81e2
Adaní Cusin Sacilotti
Carlos Eduardo Schuster
Kelly Sabará – KSA, ASK e S&S Systems
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=KSA&
appId=995b1b69-3adc-450b-9442-6c8ee4fb6913 (KSA)
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=ask&
appId=fc52ee24-1e9a-4742-a67f-c390fcfb81e2 (ASK)
Luciana Ferreira Batpista – lubap
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=lubap
&appId=400c49e6-45a4-4043-a8d2-65e1acce0ca6
Rafael de Oliveira Sales – Rafael Sales
http://www.windowsphone.com/pt-BR/store/publishers?publisherId=Rafae
l%2BSales&appId=fc52ee24-1e9a-4742-a67f-c390fcfb81e2
Reginaldo Bernardo Antonietti – Reginaldo Antonietti
http://www.windowsphone.com/pt-BR/store/
publishers?publisherId=Reginaldo%20Antonietti&appId=995b1b69-3adc450b-9442-6c8ee4fb6913
Quadro 17.1 – Localização dos projetos por autores
A seguir se encontram relacionados alguns dos aplicativos
desenvolvidos e que são frutos da parceria entre a FATEC Jundiaí e o
Insituto Nokia de Tecnologia (INdT).
134
Coletânea de Aplicativos para Windows Phone
Álcool no Sangue
Autor: Gustavo Silva
Calcule a Concentração de Álcool no seu Sangue com este aplicativo
fácil e intuitivo.
Figura 17.1 – Álcool no Sangue
Download:
http://www.windowsphone.com/pt-br/store/app/%C3%A1lcool-no-sangue/
bbf5c243-90a6-49b8-9211-ffdb0d948a97
135
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Animais Raros
Autora: Giovanna Schiavi
Visualize figuras de animais raros e extintos em seu celular!
Figura 17.2 – Animais Raros
Download:
http://www.windowsphone.com/pt-br/store/app/animais-raros/3df04c20b842-4906-838c-18b5e9afd18c
136
Coletânea de Aplicativos para Windows Phone
Área Geométrica
Autor: Gustavo Silva
Aplicativo ótimo pra quem precisa realizar cálculos de áreas
geométricas sem perder tempo calculando no papel.
Figura 17.3 – Área Geométrica
Download:
h t t p : / / w w w. w i n d o w s p h o n e . c o m / p t - b r / s t o r e / a p p / % C 3 % A 1 r e a gemom%C3%A9trica/2419a705-ed19-4cb0-8db0-d16495bcfe96
137
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Book List
Autora: Mayara Thuany Alves do Livramento
Book List é um aplicativo para listar quais livros você já leu, quais
você deseja ler e quais estão pendentes na sua estante. Tudo de
forma simples.
Figura 17.4 – Book List
Download:
http://www.windowsphone.com/pt-br/store/app/book-list/e82bcd00-ebdb4662-8ad7-0a1cc1eb1c0e
138
Coletânea de Aplicativos para Windows Phone
Cálculo do Patrimônio Líquido
Autor: Rafael de Oliveira Sales
Faça o calculo do seu patrimônio líquido com essa ferramenta como
auxilio, basta colocar o seu Ativo (bens e direitos) e seu Passivo
(obrigações, contas e dívidas).
Figura 17.5 – Cálculo do Patrimônio Líquido
Download:
http://www.windowsphone.com/pt-br/store/app/c%C3%A1lculo-dopl/81554ca8-5938-441e-9348-02e64c46b9f6
139
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Cálculo do Seguro Desemprego
Autor: Rafael de Oliveira Sales
Esta ferramenta vai te auxiliar na hora de calcular o benefício do
seguro desemprego, basta colocar os seus 3 últimos salários que
software vai calcular os seu benefício, de acordo com a tabela
disponibilizada pelo Mte 01/12.
Figura 17.6 – Cálculo do Seguro Desemprego
Download:
http://www.windowsphone.com/pt-br/store/app/c%C3%A1lculo-do-segurodesemprego/82283612-a21f-4fb1-ad8d-1cdef8b75af4
140
Coletânea de Aplicativos para Windows Phone
Cálculos Trabalhistas
Autor: Ricardo Alves
Calcule os seus direitos trabalhistas e direitos de Seguro Desemprego
com essa simples APP.
Figura 17.7 – Cálculos Trabalhistas
Download:
h t t p : / / w w w. w i n d o w s p h o n e . c o m / p t - b r / s t o r e / a p p / c a l c u l o s trabalhistas/8e90393f-7421-4ae5-aac5-5cb254d01818
141
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Carrossel
Autora: Luciana Ferreira Baptista
Aplicativo que mostra os personagens da novela Carrossel do SBT,
com a música tema ao fundo.
Figura 17.8 – Carrossel
Download:
http://www.windowsphone.com/pt-br/store/app/carrossel/e4553915-11d74088-80ca-87a4c423045a
142
Coletânea de Aplicativos para Windows Phone
Ciclo
Autores: Adaní Cusin Sacilotti,
Carlos Eduardo Schuster
e Kelly Sabará
Esse aplicativo fornece, conforme seu ciclo, a data aproximada
da ovulação e seu período fértil considerando um ciclo de 28
dias.
Figura 17.9 – Ciclo
Download:
http://www.windowsphone.com/pt-br/store/app/ciclo/3652aa54-9a7e-4e20a306-b70e129de0aa
143
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Controle de Glicemia
Autora: Amanda Mayara de Araujo
Este aplicativo foi desenvolvido especialmente para portadores da
Diabete Tipo 1, criando um histórico com dados obtidos a partir
do teste glicêmico que é feito com frequência, proporcionando um
maior controle de seus resultados.
Figura 17.10 – Controle de Glicemia
Download:
http://www.windowsphone.com/pt-br/store/app/controledeglicemia/
b4525d80-eb18-4875-a177-adbbf03227ab
144
Coletânea de Aplicativos para Windows Phone
Crazy Fingers
Autor: André Luiz Carletti
How fast are you? play it and find out! Crazy Fingers is a funny game
that you are supposed to touch the spiral before it disappear. With
four different levels, this game is perfect for everyone. Challenge
your friends, reach the top of the highscores. Be the fast one.
Figura 17.11 – Crazy Fingers
Download:
http://www.windowsphone.com/en-us/store/app/crazy-fingers/b0c7f4a4-b0e145bc-b0ad-2d39483eb730
145
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Cronômetro
Autor: Rafael de Oliveira Sales
Esta ferramenta é simples e de fácil manuseio, exatidão na hora de
cronometrar é seu ponto forte.
Figura 17.12 – Cronômetro
Download:
http://www.windowsphone.com/pt-br/store/app/cronometro/fc52ee24-1e9a4742-a67f-c390fcfb81e2
146
Coletânea de Aplicativos para Windows Phone
Desafios
Autores: Adaní Cusin Sacilotti,
Carlos Eduardo Schuster
e Kelly Sabará
Desafie seu cérebro com esse aplicativo de desenvolvimento lógico,
com perguntas que ajudarão a melhorar seu raciocínio.
Figura 17.13 – Desafios
Download:
http://www.windowsphone.com/pt-br/store/app/desafios/1f6d3254-b2bb40b9-957e-f175c7cad167
147
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Diabetes Calculator
Autores: Adaní Cusin Sacilotti,
Carlos Eduardo Schuster
e Kelly Sabará
Calculadora auxiliar para contagem de carboidratos. O objetivo
deste aplicativo é auxiliar as pessoas com Diabetes Tipo 1 (DM1) insulino dependentes, e que seguem a dieta baseada na contagem
de carboidratos (CHO) ingeridos. Lembramos que este aplicativo não
substitui em hipótese alguma as orientações de seu médico, trata-se
apenas de uma ferramenta que automatiza o processo matemático
que envolve a técnica de contagem de carboidratos. Consulte seu
médico antes de utilizar este aplicativo.
Figura 17.14 – Diabetes Calculator
Download:
http://www.windowsphone.com/pt-br/store/app/diabetes-calculator/5c4f803a8965-42ad-a86d-99968f8a1e92
148
Coletânea de Aplicativos para Windows Phone
Donc
Autor: Edih Araújo
Através deste simples simulador o usuário será capaz de obter
informações como o valor pago pra cada km rodado, ou ainda,
quantos km o veículo pode rodar com dada quantidade de
combustível e também o consumo médio de combustível.
Figura 17.15 – Donc
Download:
http://www.windowsphone.com/pt-br/store/app/donc/806860a4-cd9b-451b9ec1-3225e05b527e
149
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
FuelManager
Autor: João Henrique Felício Barreto
Este aplicativo ajuda a ver qual combustível vale mais a pena
abastecer, calcula o consumo do carro e permite fazer um histórico
dos abastecimentos para um melhor controle do gasto e do
consumo.
Figura 17.16 – FuelManager
Download:
http://www.windowsphone.com/pt-br/store/app/fuelmanager/45891be0-25554c3b-bf91-45e5689eb3ec
150
Coletânea de Aplicativos para Windows Phone
Gloo RSS
Autor: Ricardo Alves
Gloo Rss é um leitor de rss de ótima qualidade vale a penas
experimentar está versão free. Nesta versão você poderá visualizar
alguns Feeds pré definidos e alterar algumas configurações. Notas da
versão: Agora você pode adicionar ou remover novos feeds.
Figura 17.17 – Gloo RSS
Download:
http://www.windowsphone.com/pt-br/store/app/gloo-rss/0f8a9f60-b422-4d04b5b6-bb5165612ee7
151
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Guitar Scale Pro
Autor: Ricardo Alves
Este App vai auxiliar você em relação com escalas e acordes de cada
tom, é um simples app que pode te ajudar muito na hora de mudar
o tom de uma musica. Recomendado principalmente para iniciantes
com música.
Figura 17.18 – Guitar Scale Pro
Download:
http://www.windowsphone.com/pt-br/store/app/guitar-scale-pro/36020230bde0-444f-bf51-406383089f4d
152
Coletânea de Aplicativos para Windows Phone
HarryPotterMania
Autora: Amanda Mayara de Araujo
Aplicativo para fãs de Harry Potter, com galeria de fotos, notícias e
um teste seletor para as quatro casas de Hogwarts.
Figura 17.19 – HarryPotterMania
Download:
http://www.windowsphone.com/pt-br/store/app/harrypottermania/8b0b5e4d5170-4861-a397-d2cf322b1f9d
153
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Lendas Urbanas
Autora: Giovanna Schiavi
O aplicativo reúne contos e lendas urbanas mais tradicionais,
folclóricas, nacionais e internacionais.
Figura 17.20 – Lendas Urbanas
Download:
http://www.windowsphone.com/pt-br/store/app/lendas-urbanas/5e446cd9e088-4842-94a9-a04f7f4c9e9a
154
Coletânea de Aplicativos para Windows Phone
Max Steel
Autora: Luciana Ferreira Baptista
Max Steel - Toys.
Figura 17.21 – Max Steel
Download:
http://www.windowsphone.com/pt-br/store/app/max-steel/d6191690-32d04f6b-9f9c-945beae61e5d
155
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Memory Game
Autores: Benedito Cristiano Aparecido Petroni
e Cláudio Luís Vieira Oliveira
Simple memory game with associative elements. Stay tuned for new
updates!
Figura 17.22 – Memory Game
Download:
http://www.windowsphone.com/pt-br/store/app/memory-game/5d57d42d1884-423a-9719-9f89c64ed251
156
Coletânea de Aplicativos para Windows Phone
Monster High
Autora: Luciana Ferreira Baptista
Monster High Students.
Figura 17.23 – Monster High
Download:
http://www.windowsphone.com/pt-br/store/app/monster-high/a6ad4ab6377a-4d14-aff9-ddd3d77c4d9c
157
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Multiplication Table
Autora: Luciana Ferreira Baptista
Application to display the multiplication table of a number entered.
Figura 17.24 – Multiplication Table
Download:
http://w w w.windowsphone.com/pt-br/store/app/
multiplicationtable/28b3e480-1231-46b6-88a4-c9f4898dde45
158
Coletânea de Aplicativos para Windows Phone
Qual é o Filme?
Autores: Gustavo Silva Oliveira
e Rafael de Oliveira Sales
Qual é o Filme? BETA é um Game onde você escuta um trecho de
10 segundos da trilha sonora de um filme e tenta adivinhar o nome
deste filme.
Figura 17.25 – Qual é o Filme?
Download:
http://www.windowsphone.com/pt-br/store/app/qual-%C3%A9-o-filme/
a41eaabc-0516-4a09-b4e3-1e4c65a61158
159
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Quiz Placas de Trânsito
Autor: Allan Massaretto
Você está preparado para fazer o exame teórico de trânsito do
DETRAN? Este aplicativo irá auxilia-lo a estudar as placas de trânsito
de uma forma divertida. Primeiramente estude as placas através da
opção Treinar e quando estiver preparado teste seus conhecimentos
através de um Quiz de perguntas e respostas. Novidades da versão
1.3: As perguntas do quiz em um game só se repetirão, caso a
quantidade de perguntas escolhidas na tela “Opções” for maior que
a quantidade de placas dos grupos de placas escolhidos, em outras
palavras, se todas as placas dos grupos de placas escolhidos pelo
jogador se esgotarem em um game, todas as placas voltarão a ser
sorteadas.
Figura 17.26 – Quiz Placas de Trânsito
Download:
http://www.windowsphone.com/pt-br/store/app/quiz-tr%C3%A2nsito/
d677844a-967e-44ec-8a3f-195bcc37a261
160
Coletânea de Aplicativos para Windows Phone
RecisãoCLT
Autor: Reginaldo Antonietti
Trabalhador saiba com antecedência quanto você irá receber de seus
direitos trabalhistas. Os cálculos estão centrados na CLT brasileira,
ou seja, a Consolidação das Leis do Trabalho. Nesta versão FREE
temos 2 opções: PEDIDO DE DEMISSÃO por parte do trabalhador e
DEMISSÃO SEM JUSTA CAUSA por parte do empregador e cálculo do
SEGURO-DESEMPREGO caso o trabalhador faça jus. A APP também
contém as tabelas oficiais do INSS, SEGURO-DESEMPREGO e IR
(Imposto de Renda). Novas versões estarão disponíveis quando
houver melhorias, correções OU NOVAS TABELAS de cálculos oficiais
do governo.
Figura 17.27 – RescisãoCLT
Download:
http://www.windowsphone.com/pt-br/store/app/rescisaoclt/4ad1ea8a-f5184ed0-aea5-6932ffc142b7
161
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Speed Converter
Autor: George Petz
Simple speed converter.
Figura 17.28 – Speed Converter
Download:
http://www.windowsphone.com/pt-br/store/app/speed-converter/e50bdcf4e2a3-4221-9ea7-14dcfae9065d
162
Coletânea de Aplicativos para Windows Phone
Tabuada
Autor: Gustavo Silva
Aplicativo para aqueles que precisam da tabuada na palma da mão,
mas não querem/podem calculá-la no momento.
Figura 17.29 – Tabuada
Download:
http://www.windowsphone.com/pt-br/store/app/tabuada/1d854a43-a9d040e6-8241-3b99a51634c1
163
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
Temperatures
Autor: George Petz
Simple temperature converter for easy use. Version 1.1: negative
values implemented e values with two or more points corrected.
Figura 17.30 – Temperatures
Download:
http://www.windowsphone.com/pt-br/store/app/temperatures/97e7eec75973-49a7-87ca-abc8b6fae169
164
Coletânea de Aplicativos para Windows Phone
Visualizador de Notas Antigas
Autora: Giovanna Schiavi
Visualize as notas antigas que saíram de circulação e que hoje fazem
parte da história.
Figura 17.31 – Visualizador de Notas Antigas
Download:
http://www.windowsphone.com/pt-br/store/app/visualizador-de-notas-antigas/
c95554d2-2d0a-4df1-8417-7a56e6a6bb8a
165
Ângela Lühmann, Benedito Petroni e Cláudio Oliveira
166
Coletânea de Aplicativos para Windows Phone
Edições Brasil
www.edicoesbrasil.com.br
167
Carlos Schuster, Cláudio Oliveira e Luciana Baptista
168