Páginas

quarta-feira, 21 de setembro de 2011

Criando Alertas: Alarm e Reminder


Bom, sou novo por aqui, e como não quero transformar esse post numa entrevista de emprego, vamos direto ao assunto :)

Sou iniciante em WP7, então meus posts talvez não sejam do interesse daqueles mais experientes. No entanto, sou do tipo que acha que sempre dá pra aprender um detalhezinho a mais sobre aquele assunto que você considerava dominado. E o assunto simples dessa vez vai ser a utilização de duas classes que, se não me engano, surgiram (ou se tornaram mais acessíveis) com a chegada do Mango: Alarm e Reminder.
Exemplo de Alarme no WP7. Imagem obtida de http://blogdogps.com.br/.

Estas classes podem ser muito úteis se você está desenvolvendo algo que necessite de avisos programados ao usuário. Esse foi o meu caso durante o desenvolvimento da minha primeira aplicação para WP7, um criador de alarmes pra remédios, fazendo com que o usuário não precise se preocupar em lembrar sempre de tomar esse ou aquele remédio – alarme vai tocar sempre na hora programada, e com a freqüência programada.


O uso dessas classes facilita enormemente esse trabalho, pois evita que a aplicação tenha que rodar em background de alguma forma, ou que tenha que ser iniciada (ou iniciar-se sozinha) sempre que o celular for ligado para que o alarme seja disparado no momento correto.
Vamos então à criação de um alarme:

             // Criando a instância do alarme
            var alarm = new Alarm("alarmName")
            {
                //Title = “My Alarm”,
                BeginTime = DateTime.Now.AddMinutes(5),
                Content = "Breve descrição textual",
                RecurrenceType = RecurrenceInterval.None
            };

A linha 2 contém a declaração e instanciação do alarme. O uso do “tipo” var é apenas por conveniência, mas poderia ser substituída por Alarm. Note que nessa linha, passamos no construtor uma string, que vai ser a chave desse alarme específico na lista de alarmes do Sistema. Quando quisermos procurar por um alarme específico, é ela que utilizaremos – mas, falarei disso mais adiante.

Em seguida, note que a linha 4 está comentada. Isso é porque, apesar do objeto Alarm possuir a propriedade Title, ela não pode ser alterada. No entanto, vale lembrar que essa restrição se aplica apenas a alarmes – lembretes (Reminders) podem ter seus títulos definidos. A linha 5 contém a hora em que o alarme deve soar. Nesse caso, foi definido que deve soar daqui a 5 minutos.

A 6ª linha é onde inserimos a mensagem que deve ser passada com esse alarme, o que o usuário deve ser informado quando a hora chegar.  Por fim, temos a freqüência com a qual o alarme deve se repetir. Nesse exemplo, foi definido que ele não deve se repetir com nenhuma freqüência, após tocar a primeira vez. Outros tipos de freqüência são Daily, Weekly, Monthly e Yearly.

É importante lembrar que existem outras propriedades pertencentes à classe Alarm, que também podem ser definidas. Essas propriedades são Sound e ExpirationTime. A primeira permite que você defina um som específico para ser tocado no horário determinado. Esse som deve ser referenciado a partir de algum lugar da sua aplicação, como no exemplo a seguir:
         Sound = new Uri("/Ringtones/Ring01.wma", UriKind.Relative);

Vale destacar que a propriedade Sound é exclusiva da classe Alarm, e não existe na classe Reminder. A segunda propriedade, como pode-se supor, define um DateTime no qual o alarme não será mais válido.
Exemplo de lembrete, que possui a 'função soneca'. Imagem obtida de http://www.kunal-chowdhury.com/.
Também é possível criar alarmes e lembretes de outra forma, como vou demonstrar a seguir, com a criação de um lembrete:
           Reminder
reminder = new Reminder(name);
            reminder.Title = titleTextBox.Text;
            reminder.Content = contentTextBox.Text;
            reminder.BeginTime = beginTime;
            reminder.ExpirationTime = expirationTime;
            reminder.RecurrenceType = recurrence;
            reminder.NavigationUri = navigationUri;
 
Veja que é possível setar as propriedades do lembrete (ou de um alarme) a qualquer momento após a sua criação. Veja também que ele possui a propriedade Title, como mencionado previamente, mas não dá a possibilidade de definir um som específico para ser tocado. Além disso, lembretes permitem ativar a famosa “função soneca”, adiando o alerta por períodos de tempo pré-definidos. Na sequência, lembretes também possibilitam que, quando o usuário tocar no conteúdo do alerta, seja levado a uma página específica da aplicação que criou o alarme, definida em NavigationUri.

Por fim, com os alarmes e lembretes criados, devemos adicioná-los ao escalonador do Sistema, para que ele faça o trabalho sujo por nós (ficar monitorando a hora e soar o alarme quando for pertinente). Isso é feito da mesma forma, tanto para alarmes como para lembretes:

            ScheduledActionService.Add(reminder);
            ScheduledActionService.Add(alarm);
 
Ah, é interessante dizer também como pode ser feita a
remoção de um alarme/lembrete. O método é muito simples. Lembra daquela chave
(string) que passamos para o construtor do alarme? É ela que utilizaremos para
referenciar o alarme na hora de removê-lo. É exatamente por isso que é
importante sempre definir alarmes com nomes diferentes, pois a inserção de
alarmes com o mesmo nome, se não for tratada corretamente, pode levar a um erro
na sua aplicação. O código de remoção é o seguinte:
            ScheduledActionService.Remove(name); 
Bom, esse é o básico da criação de alarmes e lembretes. Sua utilização pode ser a mais variada, dependendo do aplicativo. Espero que esse post tenha sido claro, apesar de não tão objetivo. Obviamente, ele é apenas uma introdução a essas classes. Quem tiver interesse em se aprofundar mais, pode ler e tentar reproduzir o exemplo desse link:


Bom trabalho! :)

Luca Bezerra

Microsoft Certified Professional (MCP - 70-536)
Graduado em Análise e Desenvolvimento de Sistemas - IFPE
Mestrando em Ciência da Computação - UFPE

Leia Mais >>

Digitando com o teclado do PC no WP7

Bom dia Galera... 
Agora vou dar uma dica muito interessante para quem ainda não está acostumado a desenvolver com Windows Phone 7, o emulador vem com uma funcionalidade muito produtiva, principalmente na hora de testar sua aplicação... usamos no próprio o click nas teclas. Porem podemos testar com o teclado pro seu próprio pc, a unica funcionalidade que deseja ser ativada,




:::::::::::::::::::: é só clicar no Pause/Beace.:::::::::::::::::::::::::::::::::::::::::::





Márcio Abrantes


   

Leia Mais >>

Instalando Ambiente de Desenvolvimento para WP7

Bom dia pessoas, venho para mostra como montar o ambiente para seu desenvolvimento com a plataforma Mobile.
Primeiro você tem que está com o sp1 do Visual Studio instalado, cuidado, pois muita gente vem reclamando de prolemas na hora de instalar...
se ainda não estiver instalado ai vai o link pra o baixar o Sp1 do seu Visual Studio
http://www.microsoft.com/download/en/details.aspx?id=23691


após a instalação do sp1 você irá baixar também a maquina virtual do wp7, que se encontra no link
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27153


quando terminar o download dê dois clicks no arquivo vm_web2.exe para instalar. 


em seguida abrirá uma janela:



a instalação sendo concluída, aparecerá a seguinte telas:


pronto, agora vc está apto para começar a desenvolver para windows Phone 7....
pratico fácil e rápido(Dependendo da sua internet).



Márcio Abrantes


   



Leia Mais >>

segunda-feira, 5 de setembro de 2011

3D em Silverlight

Olá pessoal, hoje vou mostrar para vocês um exemplo de como manipular uma imagem em 3D usando Silverlight.

--> Abram o Visual Studio / Silverlight / Phone Application.


--> Agora adicionamos 3 componentes Sliders, 1 Image, e 1 StackPanel, direto da Toobox.






--> Agora precisamos fazer uma organização e adicionar mais código no nosso projeto, mas antes cabem algumas explicações.

  • O Slider ele vai nos ajudar a pegar os valores que o usuário vai selecionar, no nosso exemplo, vamos adicionar duas propriedades: O Maximun e o Minimun com valores de "360" e "-360".
A função dessas propriedades é limitar um valor Maximo e Minimo para os Slider, como vamos usar esses valores para locomover uma imagem no mundo 3D usaremos o valor referencia o "360", que como de costume significa uma volta completa no eixo.

OBS: Estamos usando 3 Sliders, pois cada um vai representar o eixo X,Y,Z do plano 3D.


  • Clique da na Tag <Image> e busque pela sua imagem no painel do lado direito embaixo.

Depois de adicionado a imagem, vamos para a parte mais importante.
  • O StackPanel vai ter a função no nosso projeto de renderizar o plano para que a imagem seja deslocada no eixo, por isso temos que inserir a tag <Image> dentro do StackPanel.
Depois de colocar a imagem dentro do StackPanel, temos que "habilitar" uma propriedade chamada PlaneProjection, é ela a responsável pelo plano. O seu projeto deve estar assim:



O RotationX,Y,Z são os valores responsavéis por fazer "girar" a imagem ou tudo que estiver dentro da StackPanel, eu defini o valor como Zero, pois ela vai ser alterada pelo valor que o usuario selecionar no Slider, mas se você está muito curioso tente botar um valor e veja o resultado ;D.

  • Seu Projeto deve estar aparentemente assim:



  • Agora vamos dar vida ao nosso projeto indo no arquivo .cs da aplicação.
--> Clique no primeiro Slider e no canto inferior da tela do lado direito habilite o evento ValueChanged.


Faça isso com cada Slider exatamente igual.

  • Adicionamos os seguintes códigos:


  • Antes de apertamos F5  quero explicar cada linha dessa para vocês.

Chamamos o nosso StackPanel pelo seu nome, no meu caso o "stackVirar", convertemos ele para um tipo PlaneProjection e dizemos que o valor da rotação do eixo X vai ser igual o valor atual do que foi escohido no Slider, como vocês podem ver o evento retorna um valor double, então pegamos esse valor e jogamos no nosso PlaneProjection, a mesma ideia se usa para as outras duas, como vocês podem perceber só mudamos o eixo.

  • Apertamos F5 e seu App deve estar igual a esse:



Como vocês puderam perceber eu usei o Slider e mudei a posiçao da imagem no plano 3D.Lembrando que o primeiro Slider controla o eixo X , o segundo, o eixo Y, e o terceiro o eixo Z.

Espero que vocês tenham aprendido e curtido meu tópico, a minha área é mais em 3D, então vou trazer mais posts pra vocês geralmente relacionado a conteúdo 3D no Silverlight.

Ah, toda esse exemplo está disponivel para dowload nesse link. Qualquer dúvida podem perguntar :D

Alison de Andrade - Estudante .NET

Leia Mais >>

domingo, 4 de setembro de 2011

Hello Windows Phone....

Olá pessoal, 

Inaugurando o nosso blog, nada melhor que um Hello Windows Phone, para poder dar tudo certo e continuarmos nossos desenvolvimentos felizes.
Então vamos lá iniciando o desenvolvimento...
#Dica: se você só tem o Visual Studio na sua maquina. é aconselhado que você instale também o Expression Blend, para poder manipular melhor as imagens e também não perder muito tempo desenvolvendo direto no código.

Vamos lá.
Crie um novo projeto no VS que você estiver instalado na maquina... por favor, se não estiver instalado o VS, nem o Blend, baixe e instale para pode dar continuidade no post.

criando o projetoWP7:
File->New Project.


logo após irá abrir uma caixa de dialogo para vocês escolher o template da sua aplicação.
escolha:
Silverlight to Windows Phone->Windows Phone Application
escolha: o nome da sua aplicação, e da solução, pronto... click ok.


agora você já tem sua tela com os códigos XAML, abrindo a solução você vai identificar todos os arquivos que o Windows Phone Application vai precisar para o desenvolvimento na plataforma como mostra a seguir.
seguindo alguns padrões, a camada de View dele é o arquivo *.xaml, e o C# só é expandi-lo 




   pronto, você já tem um app Windows Phone.


agora para coloca o Hello Windows Phone 7, vamos usar os controles do SilverLight...
Você vai na abinha do ToolBox, escolhe o controle TextBlock e arrasta para o Grid abaixo do page name
ex: 


agora só tecla F5, e ser feliz com o primeiro app no Windows Phone 7...






alguns detalhes que serão para as próximas aulas.
#FicaDicaAntecipadas:
para vc tratar os códigos digitado no C#, você vai usar o x:Name do controle, por isso fique atento e coloque sempre uma coisa nome com logica, para quando você for programar vai saber em que está mexendo, e ainda fica fácil para identificar.
#Flw a todos.... 
até a próxima.


Márcio Abrantes
Technology in Consultant   



Leia Mais >>

Populares

Marcadores

Contador

  ©WP7 Pernambuco - Todos os direitos reservados.

Criado por Dicas Blogger | Topo  

Real Time Web Analytics