segunda-feira, 25 de junho de 2007

Iniciando o desenvolvimento de aplicações para Symbian.

Este artigo: Començando a programar para dispositivos móveis resume de forma clara e objetiva como iniciar o desenvolvimento de aplicações para Symbian. Não apenas fazendo a introdução nas possibilidades de programação para Symbian mas aborda quais são os conhecimentos necessários para isso, dando uma visão geral desde lógica de programação até os passos necessários para "meter a mão na massa". São referenciado também alguns cursos de universidades sobre estes temas e também contem uma seção que fala sobre alguns materiais para leitura, como sites, livros, forums, etc.

Com certeza uma boa pedida!

quarta-feira, 20 de junho de 2007

Trabalhando com Bitmaps

Esse foi um dos meus maiores problemas quando comecei a programar em Symbian. Como usar bitmaps em minhas aplicações?! A falta de material didático dificulta para qualquer pessoa mas nada que um pouco de leitura e pesquisa não resolva.

O SymbianOS não utiliza o formato nativo de Bitmaps por questões de recursos, é preciso convertê-los para multibitmaps (.mbm). Até onde sei existem duas formas de realizar a conversão, uma é através do arquivo de projeto (.mmp) e a outra é utilizando um aplicativo que vem com o Kit SDK do Symbian chamado de bmconv. Ao converter um bitmap são gerado dois arquivos, o .mbm e um .mbg, nesse .mbg fica a enumeração com os IDs das imagens, escrevi mais detalhadamente sobre como realizar essa conversão no wiki da nokia e você pode ler aqui!. Não entrarei em detalhes aqui pois todas essas informações estão na wiki!

Para utilizar bitmaps é preciso criar uma instância da classe CFbsBitmaps e carregar o bitmap. Mais informações sobre essa classe podem ser encontradas aqui!
PS: é preciso incluir o cabeçalho fbs.h, linkar a biblioteca fbscli.lib e incluir o arquivo .mbg referente aos bitmaps.

Após criar uma instância CFbsBitmap é preciso alocar memória para ela e então carregar a imagem, isto pode ser feito no ConstructL() do AppView da aplicação. ex.:

//alocando memória utilizando o operador new sobrecarregado
iBitmap = new (ELeave) CFbsBitmap;
iBitmap->Load(_L("\\Apps\\imagem.mbm"), EMbmImagemTeste);

Dentro da função Draw iremos usar a função BitBlt(const TPoint &aPos, const CFbsBitmap *aDevice) da classe CWindowGc para exibir a imagem para o usuário ex.:

//exibe o bitmap na origem
gc.BitBlt(TPoint(0,0), iBitmap);

Você pode também utilizar a função DrawBitmap que associa o bitmap a um retângulo. ex.:

TRect retangulo(Tsize(40,40), TPoint(0,0);
gc.DrawBitmap(retangulo, iBitmap);

Pronto, procurei ser o mais objetivo possível por que isso não é difícil, meu principal problema foi a ocorrência de erros por não ter linkado a bilioteca fbscli.lib (na versão 1.1 do Carbide era um pouco mais complicado), mas fora isso não tive problemas. Você pode encontrar um exemplo pronto na wiki da nokia. Link aqui!

segunda-feira, 18 de junho de 2007

Gerando números aleatórios

Ontem estava programando e tive a necessidade de gerar uma sequência de números aleatórios. Logo pensei no srand ou então em criar minha própria função para isso. Para não re-inventar a roda resolvi dar uma pesquisada sobre a existência da função rand para Symbian e a encontrei na biblioteca de funções matemáticas E32Math.h (inclusive vale a pena checar o documento sobre as funções dessa biblioteca Link aqui!), de fato encontrei outra função rand, na verdade as dos padrões C , mas preferi fazer uso da biblioteca matemática.

Para quem já utilizou essa função no C/C++ sabe que a melhor forma de se gerar um número aleatório é baseado na hora do sistema, em Symbian não será diferente. Iremos utilizar a classe TTime para pegar a hora do sistema, essa hora será convertida para um inteiro64 e então passada como argumento na função Math::Rand(TInt64& aSeed); Para gerar vários números aleatórios basta fazer várias chamadas a essa função e passando como argumento sempre o mesmo Seed. Você não deve mudar isto! Vamos ao exemplo:

== MinhaApliacacaoAppView.h ==
class CMinhaAplicacaoAppView : public CCoeControl
{
private:
//inteiro que será utilizado para gerar os números aleatórios
TInt64 iSeed;
public:
TInt GerarNumeroAleatorio();
};

== MinhaApliacacaoAppView.cpp==
#include "MinhaApliacacaoAppView.h"
#include E32Math.h //(OBS: adicione < > entre E32Math.h , o blog não me permite fazer isto)


void CMinhaApliacaoAppView::ConstructL()
{
//instancia da classe TTime
TTime tempo;
//Recebendo a hora do sistema
tempo.HomeTime();
//Convertendo para inteiro
iSeed = tempo.Int64();
}

TInt CMinhaApliacacaoAppView::GerarNumeroAleatorio()
{
//Gerando número aleatorio de 0 à 100

TInt numeroAleatorio = Math::Rand(iSeed)%101;
return numeroAleatorio;
}
Ehhhhhh, ok está sem identação mas é que não existe um padrão para postar código de programação aqui! (pelo menos não que eu conheça)

domingo, 10 de junho de 2007

Possibilidades de desenvolvimento para Symbian

Do C++ ao Flashlite, passando por Lua, Perl, Python, JavaME entre outros. Essas são as possibilidades de desenvolvimento para Symbian*. Cada uma com suas vantagens, Python e FlashLite vem ganhando um espaço cada vez maior principalmente do JavaMe. Por sua popularidade o FlashLite (que realmente aplica o conceito de "Write once, run anywhere") promete ganhar cada vez mais espaço nesse mercado de dispositivos móveis. Seja por sua facilidade de programação, grande quantidade de APIS prontas ou pelo número crescente de programadores. Python também se apresenta como uma alternativa robusta, com acesso a diversos dispositivos do celular como bluetooth, infra-vermelho, câmera etc, e ainda com a vantagem de poder se programar direto no celular. No outro extremo encontramos o Symbian C/C++ que sem dúvidas é a linguagem mais poderosa atualmente, possui acesso a vários (praticamente todos) os dispositivos do celular, diversas APIs já prontas, sem contar que seu desempenho é bastante superior se comparado ao JavaME. Apesar de ser mais complexa que as outras suas vantagens superam estes problemas.

Mas então qual linguagen utilizar? Como em qualquer sistema operacional isto depende das necessidades do projeto, para jogos menos complexos eu iria de FlashLite, pela sua portabilidade e pela sua facilidade de desenvolvimento. Para aplicações mais robustas eu iria de Pyhton ou Symbian C/C++. Na minha opnião depende também qual público alvo deseja-se atingir, não podemos esquecer que praticamente todos os aparelhos móveis (de smartphones a celulares mais simples) rodam aplicações Java. Então como disse anteriormente, tudo depende das necessidades do projeto.

* - Depende da versão do Symbian, por exemplo, lua está dispônivel apenas a partir da S60 2º edição.

sexta-feira, 8 de junho de 2007

Desenvolvendo para Symbian C++

O Symbian C++ foi baseado nos padrões C/C++, porém foram feitas algumas mudanças para optmizar o código para um dispostivo com recursos limitados como o smartphone. Algumas mudanças podem ser encontradas nos tipos das variáveis, forma na qual as exceções são tratadas entre outras. Criarei em breve um post para tratar com mais calma sobre assunto. O desenvolvimento de aplicações para Symbian C++ pode ser feito no Carbide C++, MetroWerks CodeWarrior ou Visual Studio .NET. Irei entrar em detalhes apenas sobe o Carbide C++ por ser uma IDE gratuíta.

Carbide C++: Foi desenvolvido pela Nokia e baseado no Eclipse , ofecere uma IDE e compilador necessários para o desenvolvimento de aplicações em Symbian C++. Sua versão express é gratuíta e suficiente para estudos e/ou desenvolvimento de aplicações menores.

Downloads necessários: Carbide C++ 1.2 , Active Perl5.6 (Precisa ser o 5.6, outras versões podem não funcionar), SDK para desenvolvimento (faça o download da SDK referente a qual plataforma você vai desenvolver, s603rd , s602nd ou s601st).

Atenção: Se você usa WindowsXP é aconselhável que se instale o SP2.
Atenção 2: Não consegui rodar o emulador do carbide antes de instalar o drive da minha Geforce, o drive padrão do windows não funcionou. Caso seu emulador abra e feche logo em seguida talvez seja peciso atualizar o drive da sua placa de vídeo para o drive original.

1) Passo - Faça a instalação do Active Perl, use o diretório padrão.
2) Passo - Instale a SDK (lembre-se o diretório não pode conter espaços, utilize _ ao invés).
3) Passo - Instale o Carbide C++. Após instalar basta ir em File->New->Projetct... , escolha Symbian Os e então escolha qual template você vai programar.

quarta-feira, 6 de junho de 2007

May contributions contest e Wiki Contributor of the Month


A Nokia valoriza muito aquelas pessoas que procuram ajudar novos desenvolvedores. Seja no Forum ou no Nokia-Wiki, e durante o mês de maio realizou uma competição para escolher cinco pessoas que mais contriburiram para o crescimento do Wiki, seja com artigos, exemplos de códigos, "how-to" , etc. Os vencedores ganhariam nada mais nada menos que um smartphone N95 (Para quem não conhece, este é o mais novo lançamento da Nokia, e contêm funções como GPS, VoIP, WI-FI, Câmera 5MP entre outras muitas funções), para minha surpresa, ontem recebi a notícia que fui um dos escolhidos assim como também ganhei o prêmio de Wiki Contributor of the month, que premia aqueles que contribuiram para o cresimento da Wiki durante o mês. Fiquei muito surpreso, a algum tempo atrás havia resolvido criar e traduzir alguns artigos para o português, o objetivo principal era de criar conteúdo em português para Symbian (já que não existe), então a medida que ia me aprofundando nos meus estudos eu ia criando artigos (isso também me ajudou pois fixava o conteúdo). Juntamente com a notícia do prêmio, tive a felicidade de ver o lançamento da versão Português do Nokia-Wiki , por esses reconhecimentos fui indicado para o Forum Nokia Champions que destaca os desenvolvedores por suas contribuições, assim como uma série de outros bônus.

Até o momento a wiki conta com 39 artigos, indo do básico até o intermediário, conta com artigos desde como instalar o kit de desenvolvimento para S603rd até gerência de logs. Espero que esses artigos sejam úteis e ajudem novos desenvolvedores, procurei focar pontos onde tive os maiores problemas ou que eram de mais difícil aprendizado. Não se esqueçam de fazer as suas contribuições, pois a base de tudo é a cooperatividade.

Primeira mensagem.

Como primeira mensagem, vou falar um pouco sobre os motivos para a criação deste blog. A comunidade de desenvolvedores para Series60 no Brasil é mínima assim como o conteúdo em português (smartphone não é tão popular como em países da europa, asia e américa do norte), então resolvi dar minha contribuição. Pensei primeiramente em criar um portal com um forum em portuguÊs mas recebi a notícia de que o Forum da nokia em breve lançará uma seção para desenvolvedores que falam português, então resolvi criar este blog para postar novidades sobre S60 assim como algumas dicas/tutoriais a medidada que eu for me aprofundando nos estudos. Atualmente estou fazendo parte de um grupo de pesquisa na minha faculdade relacioado ao desenvolvimento e pesquisa de aplicativos para dispositivos móveis, mais precisamente para SmartPhones utilizando Symbian C++. Orientados pela professora Cledja Rolim (Cefet-Al)