SCMAD: Guia de certificação - Capítulo 02

Segue o segundo capítulo dos tutoriais para a obtenção do certificado SCMAD (Sun Mobile Application Developer). Lembrem-se que o tutorial está em inglês!

Nesse capítulo abordo:
  • Ferramentas e configurações para execução de um aplicativo JavaME
  • Primeiro MIDlet JavaME (Hello World)
  • Configurações e Profiles (Diferenças)

Para fazer o download dos slides, clicar aqui.

Para acesso ao primeiro tutorial do certificado SCMAD aqui.

Bons estudos!'



PyS60 1.4.4

Para os desenvolvedores de python S60... Foi lançada uma nova versão do Python para S60 (1.4.4).

Mais informações dessa nova versão (retiradas do Forum Nokia em inglês):

  • PC Suite synchronized contact field types broken
  • e32.start_service() crashes pys60 1.4.2
  • unread(sms_id) returns 32
  • calendar can't see appointments on last day of a month
  • Audio.say won't say äö
  • print in _internalsocketobject
  • PyS60 1.4.0 text drawing fails on Image with tuple
  • select_access_point() and access_points() bug
  • custom font drawing dont work with Image
  • error import socket because e32socket error

Mais informações aqui nesse site.

Encontrei um vídeo muito legal na net no Youtube sobre dicas e truques para usar no seu celular. O mais engraçado é o vídeo de abertura do canal com um simples usuário do aparelho celular. Isso que é viver em função da mobilidade!

Veja o vídeo aqui.

Computação Ubíqua e Convergência

Achei bem legal esse post sobre Computação Ubíqua do blog Mobilidade é tudo. Realmente, quando pegamos um filme estilo Minority Report e achamos que a tecnologia apresentada no filme é pura ficção, podemos estar enganados. Este vídeo apresentado no blog é uma prova disso. Dêem uma olhada!

O link do post se encontra aqui.

Google Android não será lançado tão rápido como se imaginava...

Encontrei um artigo na internet falando sobre os planos da Google com o seu novo sistema operacional: Android! Realmente o Google está encontrando problemas em lançar aparelhos com seu novo sistema e assim como operadoras e fabricantes que ainda estão testando o sistema e customizando-o de acordo com suas necessidades. O artigo é em inglês. Um comentário é que realmente a Google está trabalhando forte com as empresas parceiras e sem dúvidas a sua maior preocupação agora é a satisfação dos desenvolvedores. Afinal de contas, o trunfo do Android sem dúvidas é sua plataforma de desenvolvimento de aplicativos que virão tanto da Google como de terceiros.

Recomendo a leitura do artigo! O link do mesmo se encontra aqui.

Bluetooth Marketing

O Bluetooth Marketing está crescendo exponencialmente, especialmente no Brasil. Algumas empresas já lançam campanhas e promoções utilizando a tecnologia sem fio embarcada em grande parte dos aparelhos móveis vendidos hoje. Estou falando da tecnologia Bluetooth, que permite a comunicação sem fio e troca de informações entre os dispositivos.

albanos-bluetooth
Uma das campanhas bem interessantes e um case de sucesso como exemplo é a choperia Albano's sediada em Belho Horizonte, onde utilizado a tencologia bluetooth para comemorar seu décimo segundo aniversário.
Segue o trecho retirado sobre o uso da tecnologia retirado do blog MobilePedia:

"Seguindo o modelo “É o nosso aniversário, mas quem ganha é você :)”, a choperia sorteou 60 chopes de 300 ml e três barris de 30 litros.

Os sorteios foram feitos de meia em meia hora a partir das 18h. Para concorrer, os clientes precisavam apenas ativar o bluetooth em seu aparelho. Nos momentos do sorteio a máquina de disparo de conteúdo selecionava os aparelhos aleatoriamente, premiando alguns sortudos com cupons mobile que deveriam ser trocados pelo prêmio.

Os celulares que não fossem premiados recebiam a seguinte mensagem: “Continue com seu bluetooth ativado. Acontecerá outro sorteio daqui a 30 minutos”. Interessante, dessa formaalbanos-banner acredito que com o passar das horas o número de participantes tenha aumentado.

Para dar suporte à ação, foram colocados banners com informações. E (muito importante) os garçons foram treinados para incentivar e auxiliar os clientes na interação.

Durante a noite de aniversário, 258 pessoas foram atingidas pelos disparos de conteúdo, mas o mais relevante é que a promoção fez parte da noite dos clientes, educando-os para realizar esse tipo de interação. Essa campanha foge um pouco dos “padrões de ações bluetooth” e cria uma atmosfera agradável no ambiente. "


Pois é, a tecnologia bluetooh não somente permite a possibilidade de estender a publicidade de uma empresa, como também uma nova interação com seus clientes.

Pense a possibilidade de desenvolver um servidor bluetooth que seja possível a interação com os usuários para criação de jogos multiplayers ( celulares funcionariam como controles e o servidor como um console ligado a um imenso telão), permitir a criação de divulgação de informações e outras coisas mais.

Muita coisa legal pode sair daí... vamos ver em breve!




Mouse e teclado Bluetooth no N95 ?? Como fazer..

Pessoal,

Estou de volta finalmente ao meu blog! Essa semana foi meio crítica visto que foi a semana da defesa da minha monografia, mas enfim agora 100% engenheiro, poderei me dedicar mais a manter esse blog atualizado.

Diversas notícias ocorreram no mundo mobile nessa última semana, em especial ao lançamento do IPHONE 3G com GPS da Apple. Mas acho que não merece muitas explicações, visto que essa notícia está bem rodada por diversos blogs e meios de comunicação.

Mas, uma notícia legal que eu encontrei no blog do Rodrigo Toledo, é sobre um concurso cultural com o desafio de desenvolver um software para celulares que permitisse que o usuário pudesse controlar o seu celular através de um mouse/teclado bluetooth. Qual a sacada por trás? Pensa na usabilidade... O usuário liga seu celular na tv e agora ele controla o mesmo através de um mouse e teclado sem fio e sem precisar ficar apertando teclas dentro do próprio aparelho. Seria fantástico!

Irei então promover o concurso e também pesquisar em como desenvolver um aplicativo desse porte! Acho que à princípio teria que ser um sistema operacional que tivesse sua API disponível aos seus usuários (Symbian seria mais adequado) e que desse acesso a API de user gestures (controle dos menus e acesso de aplicativos do Symbian O.S).

Ah claro e entender a arquitetura de um mouse! (Protocolo e flags).

Para mais informações, visite este link.

Usando Mobile Sensor API, Bluetooth e JavaFX

Para os interessados em desenvolvimento em Mobile com Bluetooth e especialmente com o novo Mobile Sensor API ( JSR 256), Bruno Ghisi em seu blog lançou um pequeno tutorial mostrando como desenvolver um pequno jogo em JavaFX utilizando um celular através do bluetooth. Detalhe importante é que o controle é baseado em sensores de acelerômetro e o framework Marge! Dêem uma melhor olhada no post publicado aqui.


Segue um vídeo postado pelo próprio Bruno em seu blog com o aplicativo em demonstração:

Aplicativo para localização de rotas de ônibus

Um aplicativo móvel interessante e extremamente útil para o nosso dia a dia seria um aplicativo que informasse graficamente as principais linhas de onibus que circulam na minha cidade e informasse qual a rota que ele toma, ou baseado no destino que eu fosse, ele me informasse qual linha pegar a partir da minha localização atual. Melhor ainda se tívessemos um meio de poder saber em quanto tempo o próximo ônibus que eu preciso pegar chegaria naquela parada específica que eu estivesse presente.

O Google Mobile Maps já faz isso com informações sobre as linhas de ônibus de algumas cidades americanas. Eu encontrei isso no blog MobileCrunch, que fala um pouco mais sobre esse serviço:



Google Maps for Mobile has received an update for Blackberry and Java-capable handsets, adding in bus/train directions for the SF Bay, Seattle, New York, and over 40 other cities. Quickly find the closest bus stop, the route to take, and whether or not you have time for one more drink before the last stop of the day.

I can not even imagine how much time this will save me. I lived in the SF Bay for 18 years, and I still stare at transit maps in horror. They look like normal maps after a unicorn crapped a rainbow on top. I have no shame in admitting that I have gotten on the wrong bus more than once, as I’m completely convinced that transit maps are designed as the next step for people
who have already mastered Sudoku and Rubik’s Cubes.

The download is available now. If your handset can run Google Maps for Mobile, just head over to http://www.google.com/gmm to grab this release.


Aí está algo útil ara evitar correrias desnecessárias atrás do seu ônibus que estava já saindo da parada ou ficar questionando ao cobrador do ônibus se ele passa naquela rua que você deseja ir.

Update: Acabei de encontrar um vídeo falando mais sobre o novo serviço do Google Maps:





=D
Deixo uma dica para os desenvolvedores que estão começando a desenvolver aplicativos para PyS60 (Python para celulares Symbian S60).

Um dos problemas que acontecem no início do ciclo de desenvolvimento é a escolha da ferramenta de desenvolvimento. Atualmente não existe um editor específico para desenvolvimento de Python para celulares S60, então o que se faz é usar programas genéricos como ConText, Idle (Editor padrão do Python SDK para desktop) ou outro editor de textos. Ou se não apela para o clássico NotePad vulgarmente conhecido como bloco de notas.

Mas existe uma alternativa interessante que pode ajudar no desenvolvimento que é o plugin do eclipse Pydev. Esse plugin permite o desenvolvimento de aplicativos Python desktop e tem vários recursos como auto-complete, detecção de erros, etc.
Embora esses recursos não sejam possíveis com a API do PyS60, mas sem dúvidas pode ajudar muito no desenvolvimento especialmente por causa do HighLighting automático e detecção de erros comuns da sintaxe Python.

Esse pequeno tutorial permite você utilizar o Eclipse + Pydev para desenvolvimento de aplicativos PyS60. Porém, deixo claro que não é possível ainda fazer a execução do aplicativo de forma integrada como é feito com os aplicativos python desktop, necessitando ainda transferir manualmente o script desenvolvido para o aparelho ou para a pasta de scripts do emulador e posteriormente executá-lo.

Para que você possa usar o eclipse + Pydev sem que ele dê erros devido à falta de alguma biblioteca do PyS60, é simples:

1) Primeiro você tem que atualizar o PYTHONPATH.
1.1) Localiza-se em Preferences > PyDev > Interpreter - Python > PYTHONPATH
1.2) Adicione uma nova pasta com as bibliotecas do PyS60:
(Clique em New Folder e selecione o caminho:)
      • 2ndEdição:'C:\Symbian\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb\z\system\Libs'
      • 3rd Edição :'C:\Symbian\9.1\S60_3rd_MR\Epoc32\winscw\c\resource'

Isso faz com que o PyDev pare de exibir erros sobre a falta de bibliotecas do PyS60. Porém isso exclui das bibliotecas não nativas (as extensões Ex: DLL: '.pyd').


Desenvolvido seu código, com o emulador executando em paralelo, basta escolher o script desenvolvido para executá-lo após de salvo na pasta adequada.










Para baixar as ferrramentas Eclipse e Pydev, encontram-se aqui e aqui respectivamente.
Acabei de ler uma grande notícia para os desenvolvedores de aplicativos móveis! A Google vai liberar para desenvolvedores terceiros a sua location API. Essa API permite que desenvolvedores possam construir aplicativos usando as informações de localização geográfica (seja através da rede celular ou GPS) em tempo real.

Seguem um pequeno resumo (em inglês) sobre a location API retirada do Google Mobile Blog:

"Wireless phones can make and receive calls because they are connected over the air to a nearby cell tower. The phone knows the ID of the cell tower that it's currently using. If the phone has GPS, the Maps application on the phone sends the GPS coordinates along with the cell ID to the Google location server. Over millions of such updates, across multiple phones, carriers, and times, the server clusters the GPS updates corresponding to a particular cell ID to find their rough center. So when a phone without GPS needs its own location, the application on the phone queries the Google location server with the cell tower ID to translate that into a geographic location, i.e., lat/long coordinates. Nifty, huh? We think so. "


Acho que muitos aplicativos baseados em localização legais sairão do forno agora com a disponibilidade dessa API!

A notícia completa se encontra aqui.


=D

Vídeo-Aulas sobre JavaME

Gostaria de deixar uma dica de leitura com vídeo-aulas bem legais que eu encontrei no blog do Prof. Douglas Fari. Os seus alunos da disciplina de orientação a objetos prepararam alguns vídeos sobre o desenvolvimento com a plataforma JavaME. Material muito interessante! Recomendo a visita.

Segue o link aqui.
Como já tenho dito em posts anteriores, que uma das minhas metas esse segundo semestre é tirar o certificado Sun Certified Mobile Application Developer SCMAD. O exame para este certificado avalia os conceitos e entendimento da plataforma Java Micro Edition da SUN. Além de ser um profissional certificado pela SUN, é uma ótima maneira de poder aprofundar os conhecimentos sobre a plataforma de programação mais portada em dispositivos móveis na atualidade (São milhões de aparelhos móveis).
Com isso, como meu objetivo e metodologia estudo, pretendo compartilhar nesse blog a minha maratona de estudos através de materiais e conteúdos que serão postados periodicamente com informações e detalhes abordando todo o programa do exame. Nesse primeiro post, deixo disponível o primeiro capítulo (em formato de slides ppt), onde abordo conceitos iniciais sobre JavaME, configurations, profiles e mais informações sobre a certificação (exame).

Temporariamente, estou armazenando o material (slides) apresentado no site slideShares. Ele permite a rápida visualização e também a possibilidade de download do material.

Quaisquer dúvidas, sugestões e críticas fiquem a vontade. Apenas lembrando que esse material foi desenvolvido puramente para servir como um guia de estudos e sem razões comerciais.

Ah, um detalhe importante! Os slides estão em inglês. O motivo ? O exame é todo elaborado em inglês. Então, já para se acostumar com a terminologia, todo material disponibilizado será em inglês. Futuramente, posso também disponibilizar algo em português, fiquem no aguardo!

Para mais informações sobre o SCMAD, clique aqui.

Para o acesso ao primeiro capítulo - Introdução ao SCMAD, clique aqui.

Implementação HashTable para JavaME

Aí vai uma dica bem legal para aqueles que estão precisando de uma estrutura de dados para mapeamento de dados em que se precisa buscar um elemento com uma grande rapidez. O famoso HashTable que existe no JavaSE derivada da interface MAP e não existente no JavaME.
Pois, encontrei no blog do Ricardo Ogliari Mobilidade é tudo falando mais sobre uma implementação do HashTable para o JavaME.
Recomendo a leitura! Por sinal, me ajudou bastante em um projeto que preciso navegar em uma grande estrutura de dados e preciso com rapidez a disponibilidade desses dados.

Para aqueles que não sabem onde se aplicam uma tabela Hashing, segue um pequeno exemplo tirado do blog do Ricardo, vejam abaixo:

"Um exemplo prático de uma Tabela de Hashing que todo mundo já usou é a agenda de telefones. Neste caso, a chave utilizada para encontrar a posição do elemento na lista é a primeira letra do nome. Esta não é uma função ideal, pois gera muitas colisões. Porém, ainda assim, é muito mais rápido procurar um nome apenas entre os elementos que começam com a mesma letra do que procurá-lo na lista inteira. Utilizando o exemplo da agenda, fica fácil demonstrar que uma função de Hashing mal elaborada pode gerar desequilíbrio na lista, pois existem muito mais nomes em português começando com a letra A do que com a letra Z. "


Recomendo a todos a leitura, que pode ser encontrada no blog Mobilidade é tudo, por este link,
Primeiras Modificações de template do blog!! Acho que estamos melhorando.
=D
Pessoal,

Estou pretendendo fazer algumas reformulações no blog. Agora que estou quase me formando, pretendo torná-lo algo mais profissional e agradável para leitura. Algumas mudanças específicas em especial no conteúdo, onde pretendo trazer mais artigos, tutoriais e novidades que giram no cenário da tecnologia móvel mundial.
Atualmente, tenho dado um estudo pesado nas plataformas mobile: JavaME e PythonS60. Embora que também sempre ando informado a respeito do Java para Android, FlashLite e Symbian C++.

Sem dúvidas, muitos materiais com dicas e tutoriais sairão nesses próximos meses aqui nesse blog. Com um novo template, uma nova estrutura, uma cara nova!

Aguardem, e fiquem de olho!

;)

Shake O'clock : Ouça seu celular falar as horas

Um aplicativo bem legal desenvolvido em python S60 foi lançado pela galera brasileira do Symbian Solutions chamado Shake O'Clock. Ele permite através do acelerômetro do N95 que o usuário ao movimentar o aparelho, chacoalhando-o com um movimento específico, você ouça a hora atual no formato ideal, seria "X horas e Y minutos" por vozes humanas (escolhida pelo usuário : masculina ou feminina.).
Aplicativo já se encontra disponível para download aqui.

Mais informações podem ser obtidas com o vídeo demo abaixo disponibilizada pelos desenvolvedores:


FlashLite x JavaME ou FlashLite E JavaME Juntos ?

Encontrei um artigo muito interessante explicando as diferenças entre as tecnologias mobile: JavaMe x FlashLite. Acho que ambas tem seus prós e contras e são aplicados especificadamente de acordo com o tipo de aplicativo quer se desenvolver. Animações e gráficos ? FlashLite. Funcionalidades do celular e interface portável entre aparelhos ? JavaME.
Que tal, juntar o JavaME e o FlashLite juntos ?

Pois saiabam que já existem já frameworks em desenvolvimento para isso: JARPA (Brasileiro pela I2 Tecnologia) e o Capuchin(Sony Ericsson).


Sobre o comparativo JavaME x FlashLite, leia o artigo em inglês na íntegra, aqui.
Durante meus estudos sobre a plataforma JavaME, encontrei um material muito bom com dicas de otimização para desenvolvimento de aplicativos móveis. Com aplicação dessas dicas, o desempenho e tamanho do seu aplicativo pode incrementar de forma significativa.

Seguem algumas dicas:

  • Utilize StringBuffers em vez de Strings.
    • Strings são objetos imutáveis, ou seja, quando declaramos strings individuais, estamos criando objetos String distintos. A concatenação de Strings cria múltiplos objetos strings. Com o StringBuffer, ele otimiza o tempo de execução do aplicativo (menos tempo para criação de objetos ) e tamanho de memória (menos Strings para alocar).
      • Evite: String a, b, c; String r = a + b + "\n" + c + ".";
      • Faça: String a, b,c; StringBuffer str = new StringBuffer(255); str.append(a); str.append(b); str.append("\n"); str.append(c); str.append(".");
  • Utilize áreas de clipping ao desenhar.
    • Use o Graphics.setClip() para desenhar áreas específicas da tela, em que se deseja alterar. Telas com gráficos consomem muito tempo de execução, Reduzir para o número de pixels específicos da tela em que se deseja desenhar melhor o desempenho do programa.
      • Ex: g.setClip(x1,y1,x2,y2); g.drawString("hello World", x,y, Graphics.TOP | Graphics.HCENTER);
  • Evite o modificador synchronized desnecessário.
    • A sua propriedade de execução mutualmente exclusiva, faz com que a execução da classe do seu programa fique mais lenta, pois será necessário ele ter que executar medidas extras para garantir o acesso exclusivo.
  • Passe o menor número de parâmetros o possível.
    • Ao chamar um método, o interpretador passa os parâmetros para a pilha de execução (implicando em uso de muita memória) . Reduzir o número de parâmetros ajuda no tempo de execução e no tamanho de memória.
  • Reduza a chamada de métodos.
    • Essa técnica pode ser bastante difícil de ser adotada, especialmente quando se trata do paradigma de orientação a objetos, onde o reuso e legibilidade são fatores importantíssimos. Mas em aparelhos móveis, tempo de execução e tamanho de memória são críticos, então evite chamadas desnecessárias.
  • Atrase as inicializações.
    • Inicialize os atributos e variáveis globais do seu programa quando forem necessitados. Isso ganha um tempo de início de aplicações significante. Inicializações pesadas tornam o programa com uma impressão não agradável para o usuário à primeira vista. Logo evite de colocar inicializações precoces no startApp() e construtor do seu MIDlet.
  • Utilize arrays em vez de Collections.
    • Acessar arrays e matrizes é mais rápido que acesso de objetos do tipo Vector.
  • Preferencie o uso de variáveis locais em vez de variáveis globais.
    • Resposta óbvia: é mais rápido!
  • Utilize ofuscadores na criação do seu aplicativo final (quando o mesmo entrar em produção ou entrega final).
    • Ofuscadores reduzem o tamanho do aplicativo final e além de dificultar que o código fonte possa ser recuperado (legível) com o uso de descompiladores (famosos "jads") .
  • Evite a criação de classes e interfaces desnecessárias.
    • Só a declaração de uma classe simples pode consumir até 250 kb (de tamanho de arquivo) no seu pacote de distribuição (.jar) . Entao evite declarar classes vazias ou sem utilidade.
  • Evite a construção de classes anônimas e internas.
    • As famosas innerClass e anonymus class são classificadas do mesmo modo que o tópico anterior. Mesmo sem nomes, ocupam espaço no seu aplicativo. Então tenha cuidado!
  • Utilize o padrão SingleTon para diversos objetos.
    • Este padrão de projeto reduz o número de classes instanciadas na sua aplicação. Várias instâncias de um objeto podem aumentar consideravelmente o tamanho do mesmo na memória durante a sua execução.
  • Utilizar o pacote padrão.
    • Utilize o tamanho do nome do pacote (package) pequeno, o que pode contribuir no tamanho de bytes do aplicativo.
  • Combine as imagens em um único arquivo.
    • Imagens são comprimidas melhor quando estão agrupadas em um único arquivo de imagem. Isso devido ao método de compressão específico para os formatos .PNG. Há diversas técnicas de se extrair uma imagem específica de uma imagem maior, tal como recortá-la.
  • Utilize classes pré-definidas.
    • Não reivente a roda! Se já existe alguma classe disponível para aquela funcionalidade, utilize-a. As classes da API geralmente são otimizadas e estáveis, o que reduz o tamanho da aplicação através do seu reuso.
  • Utilize threads para conexões de rede.
    • Quero destacar esse tópico, porque é uma das falhas mais comuns no desenvolvimento de aplicativos em que se usa conexõe remotas. Utilize uma thread separada para conexão de rede, para evitar possíveis travamentos de tela.
  • Comprima os dados trafegados da rede.
    • Utilize dados comprimidos para o trafégo de rede na sua aplicação. Claro que ambos aplicativos cliente e servidor devem estar conversando a mesma língua (protocolos de rede e métodos de compressão). XML é uma boa dica para compressão de dados, já que eles são específicos representação de formato texto.
  • Evite o uso de comandos desnecessários dentro do trecho de código de conexão.
    • Comunicações via rede já são lentas e onerosas , logo tente evitar o máximo possível colocar dentro de uma requisicão de conexão de rede, comandos desnecessários. Isso reduzirá a sobrecarga imposta pelo protocolo de rede.
  • Use estrutura de dados mais simples.
    • Evite o uso de estrutura de dados complexas. Lembre-se memória é pouca e velocidade que se exige é muito, logo otimize! Arrays podem ser uma boa dica nessa técnica.
  • Libere os objetos não utilizados para o Garbage Collector.
    • Ajude o Garbage Collector. Libere os objetos não mais utilizados pelo seu aplicativo. Atribuindo valore null aos mesmos, informamos ao Garbage Collector que estes objetos podem ser seguramente descarregados da memória.
  • Crie telas raramente usadas como classes Anônimas ou internas.
    • Telas de auxilio, help que são raramente acessadas, podem declaradas como objeto internos e anônimos, o que libera o uso de memória heap. Claro que pagamos um preço de execução mais lenta na hora de carregar tais telas, mas em compensação não teria uma ocupação desnecessária de memória no heap.

Acho que é isso!
Boas práticas de programação são essenciais para o desenvolvimento de aplicativos móveis especialmente onde o custo de memória restrita e exigência por velocidade são sempre levadas em conta.

é isso ae!!

At+.
Vocês sabiam que os celulares podem ter vida?? Uma montagem muito bem feita que eu encontrei na internet pode provar isso. Por favor, não façam isso em casa!!

Veja o vídeo aqui.



Fonte: ramalho.blog
top