Tutoriais no Forno!


Olá a todos,

O tempo está meio curto, já que estou em epóca de monografia... Mas aviso que está vindo novos tutoriais no forno:


Um Tutorial sobre Desenvolvimento JavaME para Symbian;

Um Tutorial sobre Desenvolvimento Symbian C++ com Aplicações "Reais";

Um Tutorial sobre Desenvolvimento Python com Aplicações "Reais".

Aguardem!

Ps: O termo "Reais" significa aplicativos úteis! Inclusive há uma forte possibilidade de um forte candidato a ser desenvolvido é o To-do-list (web + celular) nessas 3 linguagens para mostrarmos o poder de JavaME, Symbian C++ e Python. Quem sabe Android/Java não entra nessa lista?
Bom tutorial com exemplo para download sobre a API JSR 234 (Advanced Media Supplements API) disponibilizada pelo site de Desenvolvedores da Sony Ericsson.

Ele extende a JSR-135 (MMAPI) e traz algumas novas funcionalidades como:

  1. Equalizador e Controle de Música
  2. Suporte a Audio 3D (3D sound)
  3. Suporte a Codificação de Imagens
  4. Suporte a Pós-processamento de Imagens: Efeitos e transformações em imagens
  5. Suporte Adicional à Câmera: Flash, focus, zoom functionality
  6. Suporte à Sintonizador de Rádio: Tuner functions for the radio

Mais informações, ver o artigo aqui.

Artigos em Inglês interessantes para JavaME

Aos desenvolvedores de JavaME em plantão, encontrei 2 artigos em inglês bem interessantes sobre desenvolvimento de interfaces gráficas de alto nível.

Seguem os links:


Introduction to the MIDlet User Interface, A First Look


Handling Life-Cycle Issues with the MIDlet User Interface


Boa leitura a todos!

Algumas referências bibliográficas


A figura ao lado mostra algumas referências bibliográficas bem interessantes para desenvolvedores JavaME.

O primeiro livro da esquerda pra direita é o Pro Java ME MMAPI (Multimidia Mobile API) JSR-135 e contém tutoriais e informações sobre desenvolvimento de aplicativos utilizando recursos multimídia disponíveis por essa API caso implementada no seu aparelho. O livro é da editora Apress e mais informações no site oficial do autor aqui.

O segundo livro é o mais legal e indicado para os iniciantes que estão começando agora a desenvolver para JavaME. O livro Beginning J2ME From Novice to Professional explica com detalhes as APIS disponíveis para desenvolvimento de aparelhos móveis. Cobre os profiles MIDP 2.0 e a configuração CLDC 1.1. Recomendo a todos esse livro! Também da editora Apress, mais informações aqui.

O terceiro livro (da direita) " Wireless Game Development in Java with MIDP" é um livro bem legal e fala sobre o desenvolvimento de games utilizando a API provida pela profile MIDP do JavaME. Muito legal o livro, porém recomendo mais para aqueles que estão interessados em saber sobre desenvolvimento de games ou trabalhar com interfaces gráficas (UI) em baixo nível (Canvas). Mais informações aqui.

O último livro (em pé) é o mais recente e é muito bom falando sobre a nova arquitetura (conjunto de APIS ) sendo implementadas nos aparelhos mais recentes : MSA (Mobile Service Architecture) JSR -248. Ele explica com detalhes sobre várias APIS e aborda recursos importantes disponíveis pela profile do MIDP 2.0. Mais informações podem ser encontradas aqui.


Existe outro livro, que ainda não chegou que é sobre o desenvolvimento em python para celulares Symbian S60. MobilePython é um livro muito legal e explica com tutoriais o desenvolvimento de aplicativos usando python para celulares Symbian.
Hehehe... fui só pensar na idéia e puft!

oa ela aí: Mobile Web Server Extensions- Windows Widgets.

mymobilesite_widgets1.png



Exatamente o que eu tinha falado. Widgets do yahoo que posso acessar informações do meu celular como:

(Retirado do blog Daily Mobile):

Battery widget:
Mobile battery status indicator.

Signal widget:
Signal strength indicator.

SMS widget:
SMS widget allows you to read and answer your messages from your desktop. The widget updates also the contact list regularly. If your eyes are tired then try out the text to speech feature (works only for SMS messages in English).

Phone Picture Frame widget:
See the Image Gallery of your phone on your desktop.

Call widget:
Instruct phone to call a number by Drag & drop any phone number on the Call widget. The contact book of the mobile is also uploaded to the widget or you can type in any phone number you like. Note that during a call the data connection between phone and PC is on hold except in case of 3G connection.


Mais informações como download e instruções para uso podem ser encontradas aqui.


Nokia lança o Text Messenger

Ao ver essa notícia no blog do Rodrigo Toledo sobre o lançamento do Nokia Text Messenger, indaguei algumas questões. De início, explicar o que é o Nokia Text Messenger!
Ele é um pequeno gadget (pequenos widgets ou mini- aplicativos que ficam na barra lateral direita do seu Desktop ) para o Windows Vista que mostra na tela do seu computador as últimas mensagens SMS quando o celular é conectado ao computador.
Fiquei pensando aqui... se já podemos ler os SMS's do celular, não faltará muito tempo para podermos acessar outras funcionalidades do aparelho pelo PC. Penso já em gadgets para acessar o álbum de imagens do celular (uma pasta em miniatura que você pode navegar pelas fotos tiradas do seu celular pelo PC), gadgets para acessar o GPS embutido do celular (obter a informação geográfica e exibir em um mini mapa lateral), mini-players de música (acessar vídeos e músicas do seu celular através de um player de rápido acesso no seu pc), agendas de contato, to-do-lists e assim vai! Até a câmera você poderia utilizar como webcam... vê que legal seria? Acho que no futuro é termos o pc quase ou totalmente integrado e sincronizado com seu celular de forma que você nem possa perceber se você está está realmente acessando os arquivos do seu celular ou do seu PC.
Nokia PC Gadgets: Mini Gadgets para ter o celular até no seu próprio desktop..

Vamos aguardar e ver o que a Nokia promete!
Para os desenvolvedores de Pluggins em plantão... aí vai uma boa oportunidade!

Se você tem qualquer idéia para o projeto NetBeans você já está apto a participar do programa, onde poderá ganhar até US$11.500. Seu projeto pode ser um módulo, uma aplicação em cima da plataforma NetBeans ou até mesmo não se tratar de código, como por exemplo um trabalho de tradução. Mais idéias do que pode ser feito podem ser encontradas em http://wiki.netbeans.org/GrantProjectIdeas

Serão escolhidos 10 prêmios para projetos grandes (no valor de US$11.500 cada) e 10 prêmios para projetos menores (US$2.000 para cada um dos escolhidos). Haverá ainda prêmios extras para as melhores implementações, no valor de US$20,000.


Mais informações nesse site http://www.netbeans.org/grant/

PS: Sei que é uma idéia um pouco audaciosa, mas gostaria de ver um pluggin para o Netbeans que integrasse o desenvolvimento do Pyhton para celulares S60 direto com os aparelhos ou emuladores. Seria uma mão na roda!
Imagine todo esse poder de gráfico 3D rodando no teu celular. Isso só a plataforma N-Gage lançada pela Nokia tem a oferecer. É impressionante! Vejam o vídeo abaixo.



Fonte: Rodrigostoledo.com
Não sei no Brasil... mas já nos EUA começaram a prestar atenção. E isso é só o início... Falta pouco para terem também pacotes ilimitados para trafégo de dados :



As concorrentes Verizon Wireless, AT&T e T-Mobile lançaram pacotes de telefonia celular de uso ilimitado.

Fonte: Info Exame

Aos interessados em JavaME, o evento que ocorreu recentemente na Califórnia organizada pela Sun (Mobile & Embedded Community) : Developer Days. Os vídeos do eventos estão disponíveis on-line gratuito. O link se encontra abaixo:


http://www.ustream.tv/Sun-Microsystems/videos

Os PodMaps : Nova Patente da Apple

A Apple não descansa... e já está atrás da sua nova aplicação: Os PodMaps!

A Apple em janeiro de 2007 registrou uma nova patente que fui publicada recentemente sobre uma variação de podcasts para podmaps. A patente descreve uma tecnologia que une mapas visuais e conteúdo multimídia que em conjunto pode ser gravado em aparelhos móveis.

Segundo o site Digital Trends, um usuário visitará um site, digitará o destino para o qual está indo e automaticamente receberá um mapa e instruções em áudio criadas via mecanismo "Text-to-Speech" de como chegar ao local.

Cada "podmap" ainda poderá ser dividido em pequenos trechos com os passos necessários para chegar ao destino, que serão acessados separadamente, pausados, reproduzidos ou repetidos quantas vezes o usuário achar necessário, noticiou o site AppleInsider.

A Apple ainda não anunciou oficialmente os podmaps, contudo a patente pode ser vista aqui.


Fonte: Geek
Um dos projetos que estou a vir desenvolver é o projeto MobTuner. Na verdade, esse aplicativo é um produto final teste para exemplificar o uso de detectores e analisadores de frequência dentro de um aparelho móvel. A idéia principal é embarcar o algoritmo FFT (Fast Fourier Transform) em celulares e smartphones. O foco inicial é desenvolver uma API disponível para os desenvolvedores tanto em C++, JavaMe ou Python, o qual possam desenvolver aplicativos que necessitem de recursos como reconhecimento de áudio. Além de ser um desafio, pois há diversos pós e contras existentes ao tentar embarcar um algoritmo FFT dentro de um aparelho móvel com recursos tão restritos.
O MobTuner seria um aplicativo desenvolvido em alguma linguagem de programação (ainda não definida) com o objetivo de poder auxiliar músicos no processo de afinar seus violões e guitarras em qualquer lugar usando seu próprio aparelho móvel. Com uma interface bem intuitiva, o músico afinaria seu violão tocando os acordes na frente do aparelho, e o mesmo ia reconhecendo os acordes e avisando conforme o grau de desafinação a necessidade de apertar/afrouxar as cordas.

Vale lembrar que como é um aparelho móvel, deve-se ser feita uma análise para verificar o desempenho desses aplicativos embarcados em sistemas móveis. Assim, pode-se avaliar se o algoritmo FFT com suas variações pode realmente desempenhar eficientemente a conversão de sinais em sinais digitais discretos para serem analisados internamente.

Uso do Wi-fi para fazer Festas!

Uma notícia bem legal que eu li no blog da editora Débora Fontes falando a respeito da tecnologia Wi-fi ajudando a fazer festas. Vejam o post:

A música da balada anda meio desanimada? Então coloque as faixas do seu player para tocar. É mais ou menos essa a proposta de um sistema desenvolvido na Universidade da Califórnia, o Smart Party.

A idéia é usar a tecnologia Wi-Fi para que os próprios convidados sejam os DJs da festa, com base nas faixas armazenadas em seus players, celulares, notebooks e companhia. Para isso, é preciso instalar um software no dispositivo. Por meio do Wi-Fi, as músicas vão para um computador conectado às caixas de som.

Com a discografia na mão, o próprio software pode fazer as estatísticas sobre o gênero de música mais popular entre os convidados e montar o repertório. Também dá para personalizar as listas de acordo com os diferentes ambientes da festa, controlando a movimentação dos convidados pelo Wi-Fi. A turma do heavy metal foi para a cozinha? Chance para os adeptos da MPB na sala.

O Smart Party ainda está na fase de protótipo e, por enquanto, ainda não funciona na prática com players e outros dispositivos, só mesmo com notebooks. Veja mais detalhes sobre o projeto, aqui.



A idéia bem original. Por sinal acho que comentei a respeito dessa idéia em um dos meus posts passados falando sobre o uso da tecnologia bluetooh para usar setlists de músicas dos celulares dos usuários em uma festa para serem usadas no player do DJ da festa. A idéia também era colocar um telão com informações das músicas onde os usuários pudessem enviar suas músicas. Essas músicas entrariam em duelo, e os participantes da festa poderiam votar através de SMS ou pelo próprio bluetooth qual música deveria ser a próxima tocada.

Bem que as boates poderiam fazer uma experiência nessa área utilizando a tecnologia mobile. Vamos aguardar...

Informações do seu vôo agora direto do celular!

Recebi um e-mail hoje sobre um serviço que foi lançado pela Praesto, empresa criadora do portal JMobi responsável pela criação de aplicativos como MKut (orkut para o celular), eMsn (msn para celular) e outros.
O novo serviço é o VoosMobile. Esse serviço permite que o usuário consulte através de um portal Wap ou por um aplicativo no seu celular informações sobre chegadas e partidas dos vôos nos aeroportos brasileiros. A consulta pode ser realizada por critérios como número do vôo, companhia aérea ou pelo aeroporto. Já vi alguns vídeos e demonstrações, e parece ser um serviço bastante interessante para os que viajam diariamente e precisam saber mais detalhes sobre seus vôos. E ele também atualiza informações sobre quando o vôo está atrasado, se foi cancelado, etc.

WAP


Veja o vídeo demonstração aqui.

Aplicativos sociais para celulares

Ao ler essa notícia no Geek, sobre a criação de aplicativos sociais para celulares, comecei a levantar alguns pensamentos e idéias que me levaram a lembrar de certas idéias que tive anteriormente.

A notícia fala sobre uma pesquisa que levou à criação de aplicativos como o CityWare (que permite ao usuário de um aparelho obter as crendenciais de outra pessoa ao se aproximar dela, e quando se logasse na rede online Facebook, acessar diretamente o perfil da pessoa encontrada) e o Little Bird, uma pequena ferramenta que levará informações atualizadas dos amigos e colegas de seu proprietário, diretamente ao seu aparelho.


Lembrei-me de uma idéia arcaica nos anos de 2005, sobre o WiFriend. O serviço que permite você localizar amigos e ver o que eles estão fazendo no momento. A idéia era integrar esse serviço junto a sua lista de contatos a fim de que você possa descobrir se seus amigos estão próximos ou se ele estão ocupados ou fazendo uma tarefa. Um serviço que permite tornar a lista de contatos do seu celular mais intuitiva e com aspecto dinâmico (atualizações em tempo real).
Aí surge a idéia de profiles e informações que são compartilhadas entre os usuários.

Aguardaremos, quem sabe essa idéia não cresce!
Real Wap BankingInteressante notícia que eu descobri hoje no site Mobile News! Parece que os bancos começaram a despertar e ver o poder do mobile payment e serviços bancários através de aparelhos celulares. O banco Real já fez sua estréia na área, quando lançou um aplicativo no celular que permite que seus clientes possam realizar operações financeiras pelo celular. O aplicativo é em Java e é gratuito!

O sistema permite ao cliente do Real consultar saldos e extratos, efetuar transferências e pagar contas, como faturas de telefone, luz e boletos bancários. Boa notícia!! Acho que outros bancos também seguirão essa tendência, não tenho dúvidas!

N96

Não tem o que descrever não.. basta ver o vídeo abaixo e entender porque o N96 (Nokia) vem para ser "O" celular!


Para os desenvolvedores do Android


Boas notícias aos desenvolvedores Java, especialmente interessados na plataforma Android lançada recentemente pela Google.

A primeira notícia é que foi lançado um portal de referência brasileiro com fóruns, artigos, notícias e tutoriais sobre o Android. O portalandroid.org - já está no ar! Cadastrem-se e aproveitem!

A segunda boa notícia é que alguns desenvolvedores se juntaram e desenvolveram um pluggin de desenvolvimento para o Android no NetBeans! Agora além da opção de desenvolver no Eclipse, você pode agora optar por desenvolver dentro da sua IDE favorita. O pluggin chamado Undroid está em fase de acabamento
e está disponível para o NetBeans 6.

A terceira notícia é que fizeram a comparação do Java disponível para desenvolvimento no Android com o Java disponível pela SUN. Você pode ver agora as diferenças de API disponíveis entre as duas aqui nesse site.

Fonte : PortalJava

FM Transmitter - Escute músicas do seu celular no rádio do seu automóvel

O novo aparelho lançado pela Nokia .. o N78 ... possui uma funcionalidade muito legal que é o FM transmitter. ELe permite transferir via alguma tecnologia sem fio (Rádio-Frequência) as músicas gravadas dentro do aparelho direto na rádio FM do seu carro. Impressionante, ein ?? Mais legal ainda é ver ele em funcionamento! Vejam o vídeo abaixo:



Fonte: Rodrigostoledo.com
Primeiros protótipos do Android já foram lançados durante o Mobile World Congress em Barcelona. Sem muitas firulas, apenas mostrando a escabilidade e uso do sistema operacional em aparelhos móveis. Sem dúvidas, não é nenhum Iphone, mas acho que tem muito ainda a crescer. Vamos aguardar até o próximo semestre (semestre o qual o Android S.O deve vir embarcado nos primeiros celulares comerciais) para retirarmos nossas dúvidas. Segue o vídeo abaixo com o protótipo do Android em execução:

PS: O Android é o sistema operacional para dispositivos móveis lançado pela Google. Permite o desenvolvimento de aplicativos em Java e faz parte da Open Handset Alliance,

Celulares de sucesso no Japão

Alguns celulares que andam fazendo sucesso no Japão... (Agradeço a Douglas Frari que postou esse vídeo no seu blog)

Quero destacar a cena do fim do vídeo, onde mostra a tela do celular exibindo canais disponíveis pela Tv Digital do Japão. O Brasil que também adotou o mesmo padrão da tv digital terá a possibilidade de sintonizar os canais digitais diretamente do celular. Vamos aguardar!



Celulares controlando até porta de banheiro... Essa é nova!! O que não fazer para segurar o vandalismo, ein?

Na tentativa de diminuir o vandalismo em dependências públicas, o governo finlandês implantou um sistema que exige que o usuário peça autorização via mensagem de texto (SMS) de seu celular para utilizar um banheiro público.

De acordo com o site The Register, o sistema chamado de SMS Lock System foi implantando em banheiros dispostos na estrada Highway One no início de fevereiro.

As portas de diversas dependências foram travadas e agora exibem uma mensagem que solicita ao usuário o envio de uma mensagem com a palavra OPEN (abrir) para um determinado número. A ligação custa o envio de uma mensagem SMS normal e, em poucos segundos, a porta do banheiro é aberta.

Com isto, os administradores da rodovia passam a ter um controle mais forte, com hora e número de telefone, dos usuários de seus banheiros, o que coíbe o vandalismo e permite identificar os responsáveis.

(...)

Fonte : Geek

Para os interessados em desenvolvimento de aplicações nativas em Symbian usando C++, seguem os links dos tutoriais que preparei. São artigos introdutórios que podem ajudar aos desenvolvedores mobile e curiosos. Fiquem à vontade para criticar, sugerir e opinar.

Links:

Linguagens disponíveis para desenvolvimento em Symbian OS


Desenvolvendo aplicações para Symbian OS Serie 60

Iniciando com o Symbian (Instalação das ferramentas e introdução)

Artigo: Symbian C++ ( Estrutura de um Aplicativo) : Parte 1

Artigo: Symbian C++ : (UI e Estrutura da Aplicação) : Parte 2

Artigo: Symbian C++ : (Desenvolvimento de um Aplicativo) : Parte 3

Artigo : Symbian C++: (Gerenciamento de Erros) : Autor: Fágner Araújo


Python também!!


Artigo: Symbian Python: (Como configurar o Python for S60 no seu emulador ?)


Em breve tutoriais mais avançados para Symbian C++, Python e JavaME... Aguardem !


Tutorial Symbian C++: Desenvolvimento de um Aplicativo (Final) : Parte 3

1. Desenvolvimento para Symbian C++

Dando continuidade ao tutorial sobre Symbianc C++, irei nessa seção explicar o desenvolvimento de um aplicativo em Symbian C++ para smarthphones Serie 60 (S60) usando a arquitetura tradicional através de um exemplo.

Interessados podem acompanhar a última parte deste tutorial , explicando toda a estrutura de um aplicativo Symbian e seus conceitos aqui.

10. Exemplo usando a arquitetura tradicional

Para ilustrar o uso da arquitetura tradicional foi desenvolvido um exemplo simples que escreve "Olá " na tela e quando o usuário apertar o botão "Próximo" , a mensagem é trocada para "Mundo" e o item do menu é trocado para "Voltar".
As mudanças de tela são controladas pelo softbutton da esquerda no celular. Softbuttons são teclas especiais (esquerda,direita e meio) que podem ter funções definidas pelo programador como por exemplo: aceitar, cancelar, sair ou ativar. A figura 1 abaixo ilustra os softbuttons presentes nos aparelhos S60.

Figure 1: Softbuttons presentes em um aparelho S60



Além das classes mostradas no tutorial anterior, existem ainda outros elementos que compõem a aplicação, como o arquivo de recuros, os arquivos de internacionalização, e os arquivos de definição de componentes e especificações de projeto. Esses elementos serão explicados através do próprio código da aplicação desenvolvida.


10.1 Estrutura das pastas de uma aplicação

Antes de detalhar a fundo os elementos da aplicação, é importante antes entender como está estruturada a aplicação. A figura abaixo ilustra a estrutura das pastas da aplicação utilizada nesse exemplo. Lembrar que esse é um padrão utilizado e os nomes das pastas são convenções utilizadas para desenvolvimento e testes nos emuladores S60.

O exemplo contém a seguinte estrutura de pastas:

Figure 2: Estrutura de Pastas do Exemplo HelloWorld


  • data, o qual contém os arquivos de recurso (.rss) que são usado para interface gráfica e localização (linguagens e internacionalização);

  • help, o qual contém arquivos para criação da documentação e arquivos de ajuda;

  • gfx, a pasta que abriga os arquivos gráficos usados no exemplo;

  • group, a pasta que contém os arquivos de configuração e especificação do projeto (.mmp e bld.inf) utilizados para definir as propriedades dos componentes do projeto de uma forma indenpendente de plataforma e compilador;

  • inc, pasta que contém os arquivos-cabeçalho (.h) do projeto (Neles contêm as declarações de classe e variáveis utilizadas nos arquivos - fonte (.cpp));

  • sis, pasta que abriga os arquivos de instalação e execução necessário (.sis) para instalar o aplicativo no aparelho móvel;

  • src, contém os arquivos-fonte da sua aplicação.



10.2 Arquivo de Recursos

O arquivo de recursos (.rss) é um arquivo texto encontrado na pasta data e é usado para especificar elementos visíveis para o usuário. Outra função é especificar layout de componentes como menus, caixa de diálogos e outros. A sintaxe é similar a de um arquivo C++, mas com algumas particularidades. os comentários são no mesmo formato e as declarações de pré-processamento como #include , #define, #if, #else e #endif são aceitas. O arquivo é dividido em cabeçalho e corpo.
O cabeçalho do arquivo de recurso do exemplo é mostrado na figura 3. Primeiro (linha 1) é o campo NAME que é um identificador de 4 letras que não deve ser igual a outro arquivo de recurso do programa ou do sistema. A área de include (linhas 2 a 7) funciona como em um arquivo C ou C++. O campo RSS_SIGNATURE (linha 8) pode ser deixado em branco pos seu conteúdo é ignorado, mas ele deve existir no arquivo para não causar um erro de compilação. Na linha 10, o recurso define o documento default usado pela aplicação. É obrigatório estar no cabeçalho , mesmo estando vazio.


Figure 3: Cabeçalho do Arquivo de Recurso (HelloWorld.rss)


Na linha 11, definimos o recurso EIK_APP_INFO, que é a estrutura padrão para a definição do itens a serem construídos (como o menu bar) e os botões (Control Button Area CBA) na tela usados na aplicação. A declaração na linha 13 (cba) usa propriedades existentes do arquivo avkon.rsg (R_AVKON_SOFTKEYS_OPTIONS_EXIT) , o que para o arquivo de recursos provê o texto "Options" em cima do botão esquerdo do aparelho e "Exit" do lado direito.


Figure 4: Menu Inicial do Exemplo


Para definir um menu, tipo o apresentado na figura 4 e quais itens devem aparecer nesse menu, é utilizado o recurso denominado MENU_BAR (linha 1) mostrado na figura 5. Normalmente, um MENU_BAR contém um único MENU_TITLE (linha 3). Ele especifica o título do menu e o nome do recurso que vai definir os itens do menu. No Série 60, o item txt que define o título não é utilizado e pode ser omitido no código. O MENU_PANE (linha 4) contém os itens do menu como mostra a parte de baixo da figura 5.


Figure 5: Declaração do Menu e itens no arquivo de recurso


Nesse menu existem 2 itens. O primeiro, após selecionado, avança e o outro volta à tela que o chamou. O MENU_ITEM tem dois campos, o nome no campo "txt" e o ID do comando (linhas 7 e 8). O comando indica qual evento deve ser retornado pelo framework da aplicação quando uma opção é selecionada e o nome txt provê o nome que será escrito no item do menu.

Os comandos são definidos em arquivos separados com a terminação .hrh e estão armazenados na pasta inc do projeto. Para não haver conflitos com os IDs dos comandos do sistema, é recomendável que os IDs definidos pelo usuário comecem com 0x600 como mostrado na figura 6. No arquivo HelloWorld.hrh também definimos o UID3 (linha1) utilizado para diferenciar os aplicativos Symbian dentro do aparelho. (Mais informações ver o primeiro tutorial postado aqui.)
Para exemplo foram definidos 2 comandos e seus respectivos ids: o comando "Próximo" (ECommand1) representado na linha 2 e o comando "Voltar" representado na linha 3.

Figure 6: Arquivo de definição dos IDS dos comandos do menu (HelloWold.hrh)


Dentro do arquivo de recursos (HelloWorld.rss) também se encontra outras declarações de recursos como TBUF que podem ser lidos durante a execução do código através da classe StringLoader. Esse recurso funciona como atalhos já preparados para uso posterior no código.
Há também outro recurso LOCALISABLE_APP_INFO que define as informações sobre a localização da aplicação como o identificador e ícone da aplicação que irá aparecer no menu do Symbian S.O. A figura 7 abaixo ilustra os recurso citados acima.


Figure 7: Declaração de recursos de localização e constantes


10.3 Definição de Comandos

Os menus são criados nos arquivos .rss mas as ações são tomadas pelas funções:

  • HandleCommandL(), nas classes CAknAppUI ou derivadas de CAknView() e;
  • ProcessCommandL(), nas classes derivadas de CAknDialog()
A figura 8 mostra um exemplo de implementação de como manipular os eventos do menu mostrado na figura 5. A implementação é basicamente apenas um switch que usa os IDs como parâmetro e encontra-se na classe AppUI da aplicaçã0 (nesse exemplo HelloWorldAppUi.cpp). Além dos dois itens do menu, que são ativados pelo softbutton da esquerda, é necessário manipular o evento de saída que é gerado pelo softbutton da direita (EAknSoftKeyExit). Outro evento que é obrigatório a ser manipulador é o EEikCmdExit, que é o evento gerado pelo sistema operacional quando o usuário deseja fechar a aplicação.
A ação ECommand1 muda o texto mostrado na ela e muda o valor da flag que define quais itens do menu devem aparecer. De forma semelhante, o ECommand2 faz a mesma coisa mas com diferentes valores para as duas ações. A implementação da função MudaTexto é explicada posteriormente nesse tutorial.
Uma observação importante é a referência ao caso em que nenhum dos comandos foram tratados, ou seja, se for chamado um comando não referenciado. Isso causa uma operação anormal do sistema que o leva a gerar o código desse erro pela função Panic a ser tratado pelo usuário. Detalhes sobre Panic e tratamento de erros serão tratados em um próximo tutorial.


Figure 8: Código para manipular eventos do menu (HelloWorldAppUi.cpp)


Outra funcionalidade dos menus é a possibilidade de esconder e mostrar dinamicamente os itens. A figura 9 mostra como foi feito para esconder o item "voltar", o item "próximo" da tela e como foi usada a variável flag (conforme a figura 8) declarada no arquivo-cabeçalho HelloWorldAppUi.h para controlar isso. O parâmetro aResourceId de entrada deve ser usado para saber qual recurso (no caso o menu) deve ser alterado. A função SetItemDimmed() é responsável por definir a visibilidade dos itens e tem dois parâmetros de entrada. O primeiro é o ID do comando que vai ser selecionado e o segundo é um booleano que deve ser ETrue (lembre-se que os tipos primitivos são diferentes do padrão C++) para esconder o item e EFalse para mostrar o item.

Figure 9: Código para criar um menu dinâmico (HelloWorldAppUi.cpp)

10.4 Constantes no arquivo de recurso

A forma mais recomendada para inserir textos na sua aplicação é utilizar a conhecida técnica de internacionalização. As strings devem ser agrupadas em um arquivo . rls encontrado na pasta data. As strings e constantes definidas são armazenadas nesse arquivo (HelloWorld.rls). Para utilizar essas strings dentro do aplicativo, é necessário criar um recurso denominado TBUF no arquivo de recursos e a sintaxe é mostrada no trecho de código da figura 7. Para chamar dentro do aplicativo esse r_label_text, deve ser usado caixa alta em todo o nome como mostra o trecho do HelloWorldAppUi.cpp do parâmetro de entrada da função MudaTexto() chamada dentro do switch-case demonstrada na figura 8.
O texto do menu pode ser usado diretamente como mostrado na figura 5 e não é necessário criar um recurso TBUF.
Um exemplo de constantes criadas é mostrada na figura 10 abaixo onde definimos o nome identificador do aplicativo (linhas 2 e 3) e texto de botões e menus (linhas 4,5 e 6,7 respectivamente).

Figure 10: Definição dos textos e constantes da aplicação (HelloWorld.rls)

10.5 Função para iniciar e mudar o texto

A função para mudar o texto exibido na tela é mostrado na figura 11. Basicamente, ele utilizao ID de um recurso de texto fornecido como parâmetro de entrada (mostrado com mais detalhes no item 10.4 do tutorial), cria um objeto para converter o recurso em uma string (linhas 4 e 5) que pode ser usado pelo objeto iLabel (definido no arquivo-cabeçalho HelloWorldAppView.h), que é responsável por mostrar o texto na tela (linha 6). Depois deve usar a função SizeChanged () (linha 8) para mudar o tamanho que deve ter esse iLabel na tela.

Figure 11: Função para mudar o texto na tela (HelloWorldAppView.cpp)



A posição e tamanho do texto na tela é definida por uma constante KLabelPosition e pelo tamanho mínimo necessário para se escrever o texto na tela (linha 1). Essa constante KLabelPosition é definida mais acima no arquivo fonte HelloWorldAppView.cpp conforme mostrado na figura 12.



Figure 12: Função para iniciar o texto na tela (HelloWorldAppView.cpp)

A inicialização da tela do aplicativo (chamada da função ConstructL) com o texto também segue o mesmo procedimento que a mudança de texto pela função MudaTexto. Apenas a diferença é que ele inicializa a variável iLabel (membro da classe) . Lembrar que o uso de variáveis locais como labelText (String) devem ser destruídas após o seu uso, por isso a chamada da função PopAndDestroy().
A figura 12 mostra o construtor ConstructL da AppView e inicialização da tela.

10.6 Gerando o Projeto

Para gerar o projeto, inicialmente é necessário o arquivo de definição de componentes, bld.inf. Este arquivo não tem nenhuma mudança com relação ao descrito para a aplicação em texto. Este arquivo apenas aponta para o arquivo de especificações de projeto (mmp). O código do bld.inf e do mmp podem ser visto nas figuras 13 e 14 respectivamente. É fácil ver que esta aplicação inclui mais arquivos de código fonte e bibliotecas, além de arquivos de recursos.

Figure 13: Código do arquivo bld.inf



Com relação ao alvo (target) (linha 1) e ao tipo de alvo (targettype) (linha 2), ambos denotam uma aplicação executável (exe). Isso define que esta aplicação tem uma interface gráfica, definindo assim o número do UID1.
O campo UID (linha 3) tem dois números: o primeiro 0x100039CE, indica que esta é uma aplicação exe com interface gráfica, e o segundo é o UID3 da aplicação, que identifica unicamente esta aplicação Symbian. O valor usado para o UID3, 0xE91FFE76, foi escolhido dentro da gama de números de teste (disponível para desenvolvedores Symbian). Caso esta aplicação fosse uma aplicação comercial, um valor deveria ser pedido para a Symbian.

Figure 14: Código do arquivo HelloWorld.mmp

O outro campo diferente é o camp LANG (linha 4) , este representa a lingua disponível pela aplicação através de 2 dígitos definido no arquivo e32std.h. O padrão adotado é o SC (lingua inglesa padrão internacional).

Por fim, para compilar o código é necessário executar os mesmos passos mostrados no artigo Introdução ao Symbian C++ : Usando o Carbide C++ aqui.


10.7 Conclusão

As figuras 15 e 16 abaixo ilustram o aplicativo descrito nesse tutorial em execução. A figura 15 mostra a tela inicial e a figura 16 a tela final da aplicação.

Figure 15: Menu da Tela inicial do Exemplo


Figure 16: Menu da Tela Final do Exemplo

Pode ser observado que o desenvolvimento de uma aplicação com interface gráfica em Symbian é uma tarefa mais complexa, tendo em vista os detalhes necessários para a implementação. Entretanto, desenvolver em Symbian C++ pode valer a pena, pois como é uma aplicação nativa no ambiente no qual ela irá rodar, pode significar acesso facilitado a diversos recursos do aparelho, tais como câmera, caixas de som, microfones, etc. Ainda tem a velocidade que é muito mais rápida do que outras aplicações.

O objetivo deste artigo foi apresentar os conceitos introdutórios de desenvolvimento de uma aplicação Symbian, permintindo que se tenha conhecimento mínimo sobre o uso da linguagem Symbian C++ para posterior desenvolvimento de aplicativos mais complexos .


O código fonte exemplo dessa aplicação para download encontra-se nesse link.

10.8 Referências

http://wiki.forum.nokia.com/index.php/Criando_um_Hello_Word (Forum Nokia Wiki em Português)

http://www.forum.nokia.com/document/Cpp_Developers_Library/ (C++ Developer Library 1.1)

http://mobideia.blogspot.com (Blog Mobidéia por Marcel Caraciolo)

Revista WebMobile, número 5. Artigo Desenvolvimento C++ para Symbian: Interface Gráfica. Autores: Eduardo Peixoto e Renato Faria.






Apenas postando algumas idéias interessantes que venho tendo para possíveis projetos de desenvolvimento mobile!

*** Abertura de Portões Automáticos ***
Utilizar aparelhos móveis para substituir controles de portões de garagem automáticos. A idéia é usar alguma tecnologia de comunicação sem fio (Zigbee, Bluetooth, etc.) para estabelecer a comunicação entre os sensores do portão e o celular. Também usar algum tipo de criptografia ou maneira de identificar o usuário. Pois, tem o problema de o aparelho ser furtado ou ter sido perdido.

*** Repositório de Atualizações de aplicativos ***
A idéia seria ter um repositório de todos os aplicativos instalados no seu celular e através de um aplicativo, ele possa avisar sempre quando há algum atualizacão ou nova versão daquele aplicativo disponível para download.

O serviço permitiria que os desenvolvedores pudessem fazer o uploado dos seus aplicativos gratuitamente no serviço (servidor). Já no smartphone, o aplicativo cliente iria consultar o serviço via Web e informar ao usuário sobre atualizações e novas versões de aplicativos para os usuários.

Os benefícios dessa aplicação seriam a não necessidade de checar manualmente diferentes sites se existe uma nova versão disponível de algum aplicativo instalado no smarthpone e a criação de até uma lista de recomendações baseado na lista de aplicativos do usuário ("usuários que tem tem o aplicativo X instalado também instalou aplicativo y)

Para desenvolvedores, seria uma solução centralizada e gratuita para fornecer seus aplicativos e não teria a necessidade de desenvolver alguma aplicação caseira para automatizar o processo de atualizações dos seus aplicativos.

Para os donos do serviço, poderiam ter propagandas no inventório do cliente. Propagandas baseadas na localização do usuário, linguagem, aplicações instaladas, etc. Ainda há possibilidade de o dono desse serviço se associar a empresas que tem soluções comerciais que seriam facilmente entregues através deste seviço.

*** To-do list ***

Construção de um to-do list que fosse integrado tanto via web como via celular e permitiria que o usuário pudesse adicionar e consultar informações e tarefas a serem realizadas. Isso poderia eliminar agendas e poderia facilmente ajudar ao usuário final que também deseja editar e consultar tas informações no seu pc/notebook pela internet.

Motorola pretende separar sua divisão de telemóveis

Fiquei um pouco surpreso ao ver essa notícia sobre a possibilidade de venda da divisão de celulares da Motorola. A Motorola ao ver que seu lucro nesse setor não está mais o mesmo, principalmente depois de perder o segundo lugar em vendas de aparelhos para a Samsung, decidiu separar a sua divisão de telefones móveis após o anúncio do fechamento das bolsas de valores. Não sei porque, mas acho que isso pode significar o mesmo futuro que a Siemens/Benq teve. A Siemens que tinha também uma divisão de telefones começou a dar prejuízo no mercado. Então decidiram vendê-la a Benq formando a Benq Siemens. O que de fato é que nem a Benq também conseguiu tanto sucesso e hoje está quase sumida sem lançar mais aparelhos novos. Espero que a Motorola também não tenha esse mesmo desfecho. Afinal de contas, a Motorola é uma empresa de grande porte e histórico com altíssimo nível e de grandes feitos no cenário de tecnologia móvel.
A notícia pode ser lida aqui na Info Online.
Através do blog Mobilidade é tudo, descobri um projeto bem interessante da operadora VIVO. O projeto que já está implantado em São Paulo, em uma das lojas da Vivo oferece a seus visitantes o Vivo Asteroids. Esse é um jogo que permite que os visitantes da loja controlem o jogo que acontece em uma TV de plasma na entrada principal da loja. O controle é pelo próprio celular do usuário através da tecnologia Bluetooth! Muito boa a idéia da Vivo em incentivar os seus usuários e clientes a experimentar o que os seus celulares têm e não sabem!
Segue abaixo um vídeo com o Vivo Asteroids em execução! Mais informações no site do projeto.



Dicas e Artigos sobre preparação para entrevistas de T.I

Para os interessados em dicas e informações sobre como se preparar para entrevistas na área de tecnologia de informação e informática, André Furtado postou um post no blog dele bem legal indicando alguns artigos em inglês para leitura.
Recomendo a todos!

top