CRBluetooth: Projeto Open-Source de controle do PC via Bluetooth

Gostaria de divulgar um projeto muito interessante desenvolvido pelo colega Elio Eduardo chamado de CRBluetooth. O projeto consiste na construção de um aplicativo para dispositivos móveis que permita o controle de um computador através da conexão sem fio bluetooth.

Os aplicativos foram desenvolvidos em JavaME (aplicação cliente mobile) e JavaSE (Aplicação servidor desktop). O projeto foi desenvolvido como projeto de conclusão de curso do Élio e ele me pediu para que eu pudesse divulgar no blog esse projeto que é open-source e disponível para donwnload, tanto os executáveis como o código-fonte.

A idéia do Élio é permitir que outros desenvolvedores contribuam com o projeto dando sugestões, adicionando novas funcionalidades e até como fonte de estudos para outros que estão querendo desenvolver aplicativos com conexão sem fio bluetooth.

Sumarizando o que o aplicativo pode fazer, seria:

"O celular permite a execução de eventos de teclado e mouse, que são enviados para o servidor através de uma conexão SPP. Estes eventos são enviados para o Sistema Operacional através de um objeto da classe awt.Robot.

O aplicativo também permite a configuração da velocidade de deslocamento do mouse e dos eventos de teclado associados as 4 teclas de ação da Game API. As preferências do usuário são armazenadas através da Preferences API."

Um comentário adicional é que o aplicativo para fazer a conexão remota com o servidor, utiliza a biblioteca open-source bluecove que funciona como intermediário de comunicação entre o adaptador bluetooth e sua aplicação. Desenvolvida em Java! Para download ou mais informações, ver o site oficial do projeto bluecove.

O Aplicativo servidor funciona tanto no linux como no windows. Cool! =]


Segue o link do projeto.


Os fontes já estão la e nos downloads estão os arquivos de distribuição.


Quaisquer informações, procurar o Elio.

E meus parabéns, pelo bom trabalho realizado!


PyS60 1.9 foi lançado com novas features e suporte ao Python 2.5!


Fiquei surpreso com o presente que o ForumNokia lançou para os desenvolvedores Python! Já está disponível para download o PyS60 versão 1.9.0.

Este post sumariza algumas novas funcionalidades do PyS60 1.9.0. (Baseado no post do blog Croozeus ).


  • Talvez a principal novidade é que o pyS60 está baseado no novo core do Python 2.5.1. Isso inclui grande parte dos módulos existentes na biblioteca padrão, como o parser Expat XML, ftplib,smtplib,urllib2,xmlrpclib, HttpServer, cPickle, asyncore e maior compatibilidade com sockets. Garbage Collection está também incluso, então não há mais necessidades de desfazer manualmente as referências.
  • Gerar aplicativos executáveis (.SIS) agora está muito mais fácil (Tinha uma idéia engatilhada sobre isso). A ferramenta Ensymble com uma nova interface de usuário é agora a ferramenta oficial para geração dos arquivos .SIS.
  • Os aplicativos .SIS estão agora mais robustos. Se o runtime do Python está ausente e você tenta executar o aplicativo, uma mensagem de erro mais amigável é exibida em vez de um erro fatal incompreensível como era antes.
  • Se o aplicativo lançar uma exceção no ínicio de sua execução, a pilha de execução (logs de chamadas de onde a exceção foi lançada) é impressa na tela em vez de o aplicativo sair subitamente sem nenhuma informação.
  • Os aplicativos tem um console de texto padrão do mesmo jeito que tem no ambiente de desenvolvimento de scripts. Isso significa que usar os comandos print funcionam do mesmo jeito em aplicativos SIS empacotados quanto em modo script (.py).
  • Em dispositivos S60 3rd FP2, o acesso ao GPS funciona de imediato sem a necessidade de assinar o aplicativo (signing). Desde a versão Symbian S60 FP2 que a funcionalidade de localização já é ativada por padrão, agilizando o processo de testes.
  • A compatibilidade com o Python 1.4.x ainda continua. Então quase todas as bibliotecas APIs ainda continuam na versão 1.9. O resto vai sendo adicionado durante o lançamento de novas versões.
  • A inicialização do intepretador é mais lenta em comparação com as versões anteriores. Ainda está em fase de otimização.
  • O tamanho do arquivo de instalação do interpretador desta nova versão está muito maior que as versões anteriores. Isso faz sentido visto ao aumento de funcionalidades e bibliotecad dispostas na versão 2.5. Porém, há um trabalho intenstivo pela comunidade dos desenvolvedores do PyS60 para obter o arquivo de instalação com tamanho menos de 1 MB.
  • Há uma dependência maior em relação às bibliotecas OpenC, que devem ser intaladas para que o intepretador PyS60 funcione.
  • Os aparelhos S60 2 Ed. não são mais suportados a partir desta nova versão em diante. Isso se deve pelo fato que as bibliotecas OpenC (o qual o interpretador é fortemente dependente) não estão disponíveis no S60 2 Ed.
  • Esta versão inicial é voltada para os desenvolvimento de scripts e não há suporte ainda para desenvolvimento de extensões, já que o plugin para o C++ SDK não está incluso. Em breve estará disponível.
  • Compatibilidade entre as versões 1.9.x não são garantidas até a versão 2.0. É uma versão oficial porém acho que mais uma release para testes para a comunidade python.

Resumindo, pode-se concluir que:

Pros:

  • Suporte ao Python 2.5.1. Mais módulos disponíeis aos desenvolvedores. Isso significa mais estabilidade e mais funcionalidades ao alcance dos desenvolvedores.
  • Empacotamento de arquivos SIS. Pode-se considerar como a principal feature desta nova versão. A ferramenta Ensymble foi melhorada com a incrementação de uma nova interface GUI para facilitar o uso.
  • Tratamento de erros melhorado . Se o aplicativo lançar uma exceção no ínicio de sua execução, uma mensagem de erro é impressa na tela com informações de onde foi lançado a exceção.

Contras:

  • Instalação e inicialização mais demorada. Realmente a instalação e a inicialização foi muito mais lenta em comparação às versões anteriores. Isso já está sendo corrigido.
  • Sem suporte ao Symbian S60 2 End.. Devido à forte dependência do interpretador ao Open C, esta versão e as próximas não terão mais suporte ao aparelhos Symbian S60 2 End.

Notas:

  • Esta nova versão já funciona no S60 5th Edition, embora não tenha nada comentado à respeito a suporte de eventos touchscreen.
  • Aparentemente o PyS60 mudou seu site de hospedagem para: https://garage.maemo.org/projects/pys60/
  • A documentação agora não vem mais como um arquivo PDF (pelo menos nessa versão). Agora vem em formato HTML separados em vários documentos.

Embora esta versão não seja ainda completamente estável, acreido que seja uma prévia das várias versões 1.9 para o lançamento do PyS60 2.0!

Seria mais legal ainda, se um dia o PyS60 pudesse vir previamente instalado nos aparelhos Symbian. Será que isso será com o PyS60 2.0 ?

Recomendo o download!


To-do-list em Python S60

Achei esse programa bem legal desenvolvido em Python para celulares Symbian S60. Ele se chama IdeaList. Ele é um To-Do-list que permite você organizar suas tarefas e compromissos direto pelo celular.
Vejam o vídeo de demonstração:



IdeaList - feature demo from ranza on Vimeo.



Sim, o programa é open-source pela licença GPL v3.

Para acessar o site do projeto, clique aqui.

Fonte: Croozeus

Apresentação: Mobile Developer's Dilemma - What Should I build ?

Achei essa apresentação no blog Mobile Phone com o seguinte tópico: 'Mobile Developer's Dilemma- What Should i Build ?'

Essa apresentação foi realizada por Paul Golding (um dos especialistas da área de mobile) e traz diversas informações como:

  • A experiência do usuário
  • Contexto em ação
  • Negócios
  • Parcerias
  • Oportunidades atuais
  • Tendências em 2009


pgoldingbusiness.gif

Gostei das dicas, especialmente pelas novas tendências: Application Stores, Aplicativos envolvendo redes sociais e aplicativos web.

Recomendo a leitura!

Fonte: Mobile Phone Development
Olá pessoal,


Achei uma coletânea de posts com várias dicas para melhorar suas apresentações e palestras em público. Dicas que abrangem desde o comportamento até a estrutura da sua apresentação no powerpoint. Agradecimentos ao blog ciberg nético (colega Anderson Berg) pelas dicas apresentadas.

Post 1: Dicas - Prepare-se e organize-se para suas palestras

Post 2: Dicas - Faça sucesso com suas apresentações no powerpoint

Post 3: Dicas - Acabe com os marcadores (Comunicação eficaz)





Ps: Nada mais justo do que colocar a foto de um maiores apresentadores e palestrantes: Steve Jobs. O cara que quando vai apresentar nos principais eventos da Apple, faz as ações da Apple subirem antes da apresentação.
Achei esse conjunto de artigos publicados esse mês pelo Symbian Developer Network.

1) A Arquitetura de aplicativos que combinam várias linguagens, inclusive com os pontos fracos e fortes.

2) Como integrar o Python S60 com o Flash Lite e C++ (Flyer Framework e Extensões com Symbian C++)

3) Como integrar o flash lite com o C++ ou Java (KuneriLite ou Jarpa)

4) Como extender WRT Widgets

Quero destacar os artigo 2 e 3 que teve o apoio do colega Felipe Andrade (I2 Tecnologia) que escreveu sobre o Flyer e o Jarpa!

Muito bom o material, recomendo para estudo!

Vídeo sobre costumes dos japoneses em relação aos celulares

Vocês sempre quiseram saber os hábitos e costumes dos japoneses em relação ao uso dos celulares? E que tecnologias já estão por lá no Japão e que ainda aqui no Brasil está ainda longe de acontecer?

Vejam essa reportagem veiculada pelo Jornal Globo sobre os costumes dos japoneses em relação ao celular.

Veja o vídeo aqui.


Fonte: MobilePedia
Para os interessados em metodologias ágeis e que aplicam o SCRUM em seus projetos. Recomendo a leitura do livro: Scrum e XP direto das trincheiras escrito pelo autor Henrik Kniberg.

De acordo com o site INFOQ em parceria autor,

O livro oferece um ponto de início, através de um conto detalhado sobre como uma empresa sueca implementou Scrum e XP com um time de aproximadamente 40 pessoas e como ele continuamente melhoraram seu processo ao longo de 1 ano.

Este livro inclui:

  • Dicas práticas e truques para a maioria das práticas de Scrum e XP
  • Armadilhas típicas e como eleas devem ser trabalhadas
  • Diagramas e fotos ilustrando o dia-a-dia
  • Testes e test-driven development
  • Escalar e coordenar multiplos times
  • Lidar com resistência de dentro ou de fora do time
  • Técnicas de planejamento e estimativa
  • Prefácios por Jeff Sutherland e Mike Cohn

Scrum e XP nas Trincheiras


O mais legal é que o livro é gratuito e está disponível para download no site do InfoQ mediante um simples cadastro.
microsoftpatternsandpractices.gifPara os desenvolvedores .NET especialmente para a plataforma Windows Mobile, a Microsoft publicou um guia de 144 páginas: Mobile Application Architecture Guide. Esse guia provê uma visão geral e procedimentos para desenvolvimento de aplicativos na plataforma .NET. Embora seja focado especialmente em .NET, o seu conteúdo pode ser re-utilizado (padrões e práticas) em outros projetos mobile com outras tecnologias.

O público-alvo desse guia é desenvolvedores e arquitetos.

Os tópicos cobertos de acordo com o site, são:
  • Mobile Application Architecture
  • Design Considerations
  • Rich client vs thin Web client
  • Device types
  • UI
  • Authentication
  • Authorization
  • Caching
  • Communication
  • Configuration
  • Management
  • Data Access
  • Debugging
  • Logging
  • Porting
  • Deployment

Fonte: Mobile Development

Descobri pelo blog do Rodrigo Toledo que uma empresa chamada Ei Movil desenvolveu um pequeno programa que permitirá que os funcionários possam controlar seus pontos remotamente através do aparelho celular. O aplicativo foi desenvolvida em JavaME, e o controle do ponto para a empresa é enviada por meio de um SMS.

Eu me pergunto se esse programa realmente funciona ou se ajudaria os funcionários dormirem mais um pouco para iniciar a trabalhar... hehe =D


Mas é uma bela idéia, é!

Fonte: RodrigoSToledo.com

Um vídeo interessante que eu encontrei no blog Portabilidade BR falando sobre o MobileSocket. Simplesmente um programa no seu celular que permite você controlar o seu PC remotamente.

Vejam o vídeo do aplicativo em execução!



Mobile2Socket :: Teaser from Colmeia on Vimeo.
Seu sonho sempre foi querer que seu celular que pudesse controlar o seu carro de controle-remoto ? Pois é, isso é possível e com o seu Iphone!

Com o NerdKit é possível construir em um fim de semana todo o aparato necessário para controlar seu carro de controle remoto pelo celular. A idéia é que o mesmo sirva como um elo entre o PC e o carro. Além de ser um ótimo exemplo de entendimento e como os micro-controladores e sistemas complexos trabalham em conjunto, podendo ser desenvolvido em apenas um fim de semana em casa.
O kit que pode ser obtido no próprio site, por 79 dólares com desconto para estudantes. Achei bem legal todo o kit disponível e pela aparência do site as instruções não são tão difíceis de se realizar.

Recomendo a visita.

Vejam o vídeo-demonstração do carro controlado remotamente pelo celular:

[Artigo] : Redes Neurais - Perceptron de Uma camada

Olá a todos,

Gostaria de informar que irei escrever alguns posts em parceria com meu colega Luis Soares sobre idéias, tutoriais, artigos e notícias na área de inteligência artificial em geral. Claro que o tema mobile estará sempre envolvido, que é o foco desse blog.


Nesse primeiro artigo, estarei escrevendo sobre as Redes Neurais e algumas implementações simples desenvolvidas em Python. A minha idéia é montar um pequeno simulador que sairei portando implementações simples de conceitos relacionados à inteligência artificial para o celular Symbian S60. A escolha dessa plataforma é pelo fato de a mesma oferecer maior liberdade ao desenvolvedor com uma variade de plataformas de desenvolvimento. E também pelo fato que esse sistema operacional está presente em celulares inteligentes (smartphones), caracterizados pelo seu poder de processamento e memória acima dos celulares comuns.

Apresentando as Redes Neurais

O que são? - “São sistemas de processamento de sinais ou de informações, compostos por um grande número de processadores elementares chamados neurônios artificiais, operando de forma paralela e distribuída, de modo a resolver um determinado problema físico/computacional.”

Esquema! - (X1, X2, …, Xn) * (W1, W2, …, Wn) — F(x) — Y

Isso significa que uma Rede Neural, de um neurônio apenas, é um combinador linear que passa por uma função de ativação e dá um resultado Y, o mais interessante é que podemos programá-la para que ela dê o resultado que você deseje!

Com isso podemos fazer, dentre outras coisas, aproximadores de funções, associadores, classificação de padrões, predição futura, controle de sistemas, filtragem de sinais, compressão de dados, datamining, etc.

Redes Neurais podem ser de vários tipos, nesta parte básica vamos ver as mais simples, as Redes Neurais supervisionadas, que são treinadas (ou programadas) usando um conjunto de exemplos conhecidos, com atributos e respostas, e desta forma a Rede Neural “se acostuma” em dar os resultados desejados e passa a responder de acordo.

Programar uma Rede Neural é ajustar os valores do vetor W, de todos os neurônios, para que determinada entrada X, quando processada, resulte num valor Y desejado.

Eu irei começar com a mais simples redes neurais de todas, a Perceptron com apenas uma camada de neurônios e trabalhar sobre as diferentes arquiteturas e técnicas de aprendizado que eventualmente irão convergir para redes que podem prever tendências dos preços das ações de uma bolsa de valores, reconhecimento de padrões, processamento de linguagem natural, etc.

Todos os códigos serão escritos em python, e podem ser executados através do seu celular Symbian S60. No próximo post apresentarei a plataforma Python para celulares Symbian S60.

O Perceptron é o ancião de todas as redes neurais. Ela foi criada em 1957 nos laboratórios das forças militares por Frank Rosenblatt. O Perceptron é o mais simples tipo de rede neural diretas (Feedfoward) , conhecido como classificador linear. Isto significa que os tipos de problemas solucionados por esta rede neural devem ser linearmente separáveis. O que significa isso ? O gráfico abaixo ilustra facilmente o que ser um problema linearmente/não-linearmente separáveis em duas dimensões.

linearly separable linearly non-separable

Lineamente Separável.

Não linearmente separável.



A linha verde representa a separação entre duas classes de dados que uma rede está tentando classificar. Em três dimensões, isto seria representado por um plano, e em 4 dimensões ou mais por um hiper-plano. Há outros tipos de redes de neurais que pdoem solucionar problemas linearmente e não linearmente separáveis, que serão discutidas em futuros posts.

Para tentar resolver este problema, nós precisamos de uma rede representada pela figura abaixo.

single layer perceptron


Como vocês podem observar, cada nó de entrada (input) está diretamente conectado ao nó de saída (output). Ajustando os valores dos pesos (weight) que conectam tais nós , a rede é capaz de aprender.

Em uma simples demonstração, irei usar o conjunto de dados plotados no primeiro gráfico aqui apresentado como os dados de treinamento (conjunto de dados para treinamento). O conjunto de dados de treinamento será usado repetidamente como entrada para os nós de entrada (input) da rede neural, fazendo com que os pesos se ajustem até a rede neural atinja o desempenho e objetivo desejado, que é classificar um conjunto de dados linearmente separáveis.

Uma vez que a rede neural foi treinada, a aplicação irá acessar uma base de dados (diferente dos dados de treinamento) e irá provar que a rede neural aprendeu corretamente e tem a capacidade de generalização; ela pode encontrar respostas corretas mesmos quandos os dados de entrada estão incompletos ou quando a relação entre a entrada e a saída não é concreta.

O código abaixo mostra como isso foi realizado.

Um algoritmo simples

Este descreve apenas o funcionamento de um neurônio.



##################################################
# #
# Copyright 2008 Marcel Pinheiro Caraciolo #
# #
# #
# -- Perceptron Neural Net snippet code #
# -- Version: 0.1 - 12/12/2008 #
##################################################

#Snippet Neuron

from random import random

class Neuron:

def __init__(self,data,learningRate = 0.1):
self._learning_rate = learningRate
self._input,self._output = data
#Randomise weights.
self._weight = map(lambda x: x*random(), [1] * len(self._input))
#print self._weight
self._y = None
self._global_error = 0.0


def train(self,data):
self._input,self._output = data
#Calculate output.
self._y = self._sign(self._sum())
#Calculate error.
if self._error() != 0:
#Update weights.
self._adjustWeight()
#Convert error to absolute value.
self._global_error += abs(self._error())

def execute(self,input):
self._input = input
#Calculate output.
self._y = self._sign(self._sum())
return self._y


def _sum(self):
return sum(map(lambda x,y: x*y, self._input,self._weight))

def _sign(self,output):
if output < 0:
y = -1
else:
y = 1
return y

def _error(self):
return self._output - self._y

def _adjustWeight(self):
self._weight = map(lambda x,y: x + (y*self._learning_rate*self._error()),self._weight,self._input)

def getGlobalError(self):
return self._global_error

def resetGlobalError(self):
self._global_error = 0



E para executar o perceptron, que é o que irá apresentar os exemplos ao neurônio, temos:



##################################################
# #
# Copyright 2008 -Marcel Pinheiro Caraciolo- #
# #
# #
# -- Perceptron Neural Net snippet code #
# -- Version: 0.1 - 12/12/2008 #
##################################################


#Snippet Perceptron

from Neuron import *


class Perceptron:

def __init__(self,inputs,iterations=100):
self._inputs = inputs
self._refresh_inputs = list(inputs)
self._iterations = iterations
self._iteration = 0
self._neuron = Neuron(self._getRandInput())
self._train()


def _train(self):
while self._iteration <= self._iterations:
self._neuron.resetGlobalError()
self._refresh_inputs = list(self._inputs)
for i in range(len(self._refresh_inputs)):
self._neuron.train(self._getRandInput())
print "Iteration %d Error: %f" % (self._iteration, self._neuron.getGlobalError())
self._iteration += 1
if(self._neuron.getGlobalError() == 0.0):
break


def _getRandInput(self):
return self._refresh_inputs.pop()


def execute(self,input):
return self._neuron.execute(input)


def arange(self,start,stop=None,step=None):
if stop is None:
stop = float(start)
start = 0.0
if step is None:
step = 1.0
cur = float(start)
while cur <= stop:
yield cur
cur+=step

Execute as classes acima usando:




#main Logic

#Load sample input patterns
inputs = [ [[0.72, 0.82], -1], [[0.91, -0.69], -1],
[[0.46, 0.80], -1], [[0.03, 0.93], -1],
[[0.12, 0.25], -1], [[0.96, 0.47], -1],
[[0.8, -0.75], -1], [[0.46, 0.98], -1],
[[0.66, 0.24], -1], [[0.72, -0.15], -1],
[[0.35, 0.01], -1], [[-0.16, 0.84], -1],
[[-0.04, 0.68], -1], [[-0.11, 0.1], 1],
[[0.31, -0.96], 1], [[0.0, -0.26], 1],
[[-0.43, -0.65], 1], [[0.57, -0.97], 1],
[[-0.47, -0.03], 1], [[-0.72, -0.64], 1],
[[-0.57, 0.15], 1], [[-0.25, -0.43], 1],
[[0.47, -0.88], 1], [[-0.12, -0.9], 1],
[[-0.58, 0.62], 1], [[-0.48, 0.05], 1],
[[-0.79, -0.92], 1], [[-0.42, -0.09], 1],
[[-0.76, 0.65], 1], [[-0.77, -0.76], 1]]


perceptron = Perceptron(inputs,1000)

#Display network generalization
print ""
print "X, Y, Output"
for i in perceptron.arange(-1,1,0.5):
for j in perceptron.arange(-1,1,0.5):
#Calculate output.
result = perceptron.execute(list((i,j)))
if result == 1:
result = "Blue"
else:
result = "Red"
print "%f %f %s" % (i,j,result)


A saída da rede após o treinamento é exibida conforme abaixo, o que prova que a generalização foi atingida. Cada par de coordenadas (x,y) quando apresentadas à rede, retorna a classificação esperada, isto é, vermelho ou azul.


(...)
X, Y, Output
-1.000000 -1.000000 Blue
-1.000000 -0.500000 Blue
-1.000000 0.000000 Blue
-1.000000 0.500000 Blue
-1.000000 1.000000 Blue
-0.500000 -1.000000 Blue
-0.500000 -0.500000 Blue
-0.500000 0.000000 Blue
-0.500000 0.500000 Blue
-0.500000 1.000000 Red
0.000000 -1.000000 Blue
0.000000 -0.500000 Blue
0.000000 0.000000 Blue
0.000000 0.500000 Red
0.000000 1.000000 Red
0.500000 -1.000000 Blue
0.500000 -0.500000 Red
0.500000 0.000000 Red
0.500000 0.500000 Red
0.500000 1.000000 Red
1.000000 -1.000000 Red
1.000000 -0.500000 Red
1.000000 0.000000 Red
1.000000 0.500000 Red
1.000000 1.000000 Red


Analise o objeto criado, seus métodos e pesos, verifique que com o método “execute” você poderá testar se as respostas estão sendo dadas corretamente.


Além de problemas triviais como este de classificação de 2 dimensões , o Perceptron pode realizar uma análise mais poderosa em mais dimensões. As regras genéricas aqui apresentadas são também aplicáveis.


No próximo post, eu falarei mais sobre a Adaline, que é outro tipo de rede neural feedfoward como o Perceptron.

Download dos códigos aqui.

O que é A-GPS ? (GPS Assistido)

Gostaria de fazer uma referência a um post do blog VivaSemFio que explica o que é e como funciona o A-GPS (Assisted Global Positioning System) - GPS assistido -, recurso esse cada vez mais presente nos telefones celulares.

Recomendo a leitura!

Computação Móvel e Computação Inteligente : Juntos!

Uma tendência na área de computação que vem crescendo nas últimas décadas é sem dúvidas, o surgimento de dispositivos cada vez mais menores e pessoais. Sistemas monolíticos, os famosos mainframes utilizados por diversos usuários estão quase que extintos dando lugar aos poderosos computadores pessoais, considerados como os primeiros marcos dessa evolução. Mas nós sabemos que os PC's não são o fim dessa linha.

Os computadores pessoais estão ficando mais portáveis e menores. Exemplos como notebooks e os famosos palmtops (PDAs) ficaram extremamente populares. Mas esse não é o fim deste processo. O próximo passo são os computadores "vestíveis" que podem ser carregados como roupas e novas interfaces que ligadas ao cerébro do ser humano, ampliam a visão da realidade pelo usuário. Isso nos faz ter uma previsão preliminar de que todo esse desenvolvimento faz conceber de que os computadores não serão apenas dispositivos encapsulados em gabinetes, mainframes ou mini-gadgets, mas tomarão forma de um ambiente computacional inserido no contidiano do usuário, seja embutido em roupas, carros, setup-boxes, microondas, ou até em garrafas de leite.

De acordo com a visão futurista dessa nova infra-estrutura computacional por muitos estudiosos desse novo campo de pesquisa, também denominado de computação ubíqua, por exemplo, seria a possibilidade de um dia as pessoas poderem ser lembradas de comprar leite quando elas estiverem no supermercado, através de uma mensagem enviada até o seu relógio, celular, ou até seu óculos pela sua geladeira que monitora automaticamente todo o seu estoque interno. Existem, é claro, outros cenários que os usuários podem receber mensagens personalizadas de acordo com a situação e contexto que o usuário estiver inserido.

Embora, a idéia de uma garrafa de leite computadorizada seja apenas uma pequena idéia de pesquisa, está mais visível que a informação de hoje está rapidamente se movendo para pequenos dispositivos hi-tech eletrônicos saíndo de rascunhos e protótipós de laboratório até as prateleiras de lojas e no nosso dia -a - dia. Celulares, PDAs, laptops, parecem convergir para uma nova geração de dispositivos inteligentes com comunicação sem fio e razoável poder computacional para uso diário. Novos protocolos de comunicação e padrões inseridos em redes sem fio de banda larga permitem o acesso à informação em quaisquer lugares. Combinado com o posicionamento através de satélites (GPS) ou através dos sinais das antenas das operadoras telefônicas utilizadas pelos aparelhos móveis, os novos serviços disponibilizarão a capacidade de localização do usuário.
Mas não só apenas um hardware poderoso com acesso a uma rede sem fio garante a usabilidade desses sistemas móveis. Alguns softwares e serviços tradicionais podem ser usados nesses dispositivos, mas outros simplesmente não serão utilizáveis ("viáveis") quando não se tiver acesso a um teclado ou até pela resolução ou tamanho da tela ser reduzido. Logo, o grande desafio para o sucesso e popularização dos sistemas móveis é o design de interfaces e softwares inteligentes que permitem o fácil acesso a informações pessoais e flexibilidade suficiente para o tratamento de mudanças de contexto de usuário ou disponibilidade de recursos.

Existem inúmeros problemas que devem ser solucionados a fim e tornar essa nova infra-estrutura viável e útil para os usuários móveis. Entre os diversos problemas , podemos destacar:

- Informações relacionadas à contexto/situação
- Informações relacionadas à localização
- Interação e usabilidade em dispositivos móveis
- Interfaces de usuário inteligentes
- Adaptação a recursos limitados
- Tolerância a falhas
- Descoberta de novos serviços, busca de informações, etc sobre contexto.
- Sistemas baseados em investigação do comportamento do usuário, etc.

Algumas aplicações de pesquisa no campo de Inteligência artificial tem investigado os problemas de desenvolver interfaces inteligentes e cooperativas por vários anos e tem explorado fortemente com a questão de disponibilidade de recursos, que em dispositivos móveis são limitados.

Portanto, técnicas inteligentes podem prover um conjunto de soluções para esses problemas. Como também ferramentas bem promissoras para desenvolvimento de sistemas móveis que utilizam recursos de localização e contexto para dar suporte ao usuários de uma forma não intrusiva.
Não só apenas técnicas de I.A. podem ser utilizadas na construção de sistemas móveis assistentes, um outro grupo bem diferente de técnicas podem ser também integradas a fim de atingir um objetivo satisfatoriamente. Por exemplo, o aprendizado, é um fator crucial para serviços adaptáveis baseados no uso do usuário. Técnicas como aprendizado simbólico de I.A até redes neurais podem prover a flexibilidade necessária para um sistema que se adapta às preferências do usuário em diversos contextos. Há questões também relacionadas à sistemas baseados em localização. Com estes métodos, eles podem ser usados em serviços adaptáveis para localização inteligente do usuário, como por exemplo tomada de decisões em sistemas de navegação ou busca contextual de informações de acordo com a localização.

É com essas idéias em minha mente que venho nesse blog também a partir das próximas semanas apresentar conceitos relacionados à inteligência articial aplicada em sistemas móveis, com discussões de tópicos introdutórios e avançados para o estudo de I.A trabalhando em conjunto com o desenvolvimento de aplicativos e serviços móveis.

Para finalizar, acho que une as duas coisas que mais me motivam a continuar mais estudando e explorando o mundo da computação: Computação Móvel e Inteligente. Porque então não unir os 2 campos ?

Este blog é o portal das oportunidades! Estejam antenados.
Olá pessoal,

Gostaria de compartilhar com vocês um achado bem interessante que o usuário "nitaibezerra" comentou no meu blog sobre aquela idéia de desenvolver um sistema de buscas de transportes coletivos. Fiquei surpreso ao ver que já tem um sistema desse em desenvolvimento e já disponível para o público (versão beta) : Omnibus. Um sistema web que permite que o usuário enconre informações sobre rotas de transporte públioco na região metropolitana do Recife.
Decidi, testar o sistema e na sua página inicial, já nos informa as suas funcionalidades:
  • Obtenha a descrição da rota com explicações passo a passo.
  • Encontre paradas de ônibus por bairro.
  • Visualize a rota de ônibus na sua região.
  • Realize buscas por pontos de referência.


C0loquei o Endereço de minha residência como ponto de origem e o do meu trabalho como ponto de chegada. Com uma interface intuitiva (lembrando ao google maps) ele exibiu todo o percusso necessário que eu necessitava fazer para chegar até o local desde a saída da minha residência até o local desejado. Informou as linhas, as paradas de ônibus, o tempo de viagem... resumindo grande parte das minhas idéias foram atendidas por esse sistema. Descobri também que o sistema é colaborativo, logo os usuários cadastrados podem cadastrar novos pontos de parada a fim de melhorar a precisão da busca do sistema. Realmente, gostei muito do aplicativo e gostaria de saber quais algoritmos de roteamento por trás estão por trás de calcular todas essas rotas. Parabéns à Inove tecnologia pelo trabalho e sem dúvidas ficou um programa fácil de usar e bem intuitivo.

Clique na figura abaixo para ampliar.



Ah! E só para não esquecer, eles também disponibilizaram uma versão mobile da página (com conteúdo todo em texto sem disponibilidade de visualização de mapa, acho que até paa reduzir os custos no trafégo de dados) . Realmente, leram todo o post do meu blog!! =D

Recomendo a visita!

Ferramenta Carbide.C++ 2.0 agora é Free!

Free Carbide


Bela Notícia aos desenvolvedores Symbian!!!

A ferramenta Carbide.C++ 2.0 foi lançada hoje e com grandes surpresas inclusive. Uma delas foi a agradável notícia que todas as versões do Carbide.c++ agora são gratuitas (sem custos)!.

Logo a versão Express não existirá mais a partir esta versão. Isso inclui ferramentas como o Carbide.UI que permite a construção de interfaces para UIQ e S60 através de componentes (drag-drop) e a depuração on device (On device debugging). Ótima notícia!

Recomendo o download!! Isso significa mais desenvolvedores desenvolvendo para Symbian e consequentemente mais aplicativos disponíveis. A Nokia e o Symbian perceberam que o mundo do "open-source" é o caminho! hehe. =]

Mais informações na pagina oficial da ferramenta.
O futuro:

"Aponte a câmera do seu celular para um objeto, e ele automaticamente te fornece informações relacionadas àquele objeto reconhecido." "Point and Find!"

Seria muito legal ter todas informações diretamente no seu celular sem a necessidade de ter quer fornecer inúmeras entradas a partir do teclado do aparelho. Já pensou, você apontar a camêra do seu celular para um poster de um filme em cartaz no cinema e o aparelho fornecer informações como o cinema mais próximo com o filme em exibição (via GPS) , críticas do filme, resenhas, sinopse, etc. Vejam o vídeo abaixo, para vocês terem uma idéia das inúmeras oportunidades que esse tipo de serviço pode oferecer.



Fonte: Symbian Blog

Monitore ambientes com o seu celular.

Interessante notícia que eu encontrei no blog Mobilidade é tudo, sobre o novo produto da motorola chamado de Motovision. Esse gadge permite monitorar ambientes pelo celular, isto é, permite enviar vídeos e imagens para até 5 celulares. Um possível uso desse sistema seria a transmissão de imagens de uma residência para o dono quando ele estivesse viajando.

Vejam o vídeo do Olhar Digital, para entender mais sobre essa plataforma.
ZonaAzulAcabei de ver uma notícia interessante no blog MobilizadoBlog, a respeito de uma nova tecnologia que está sendo implantada em São Paulo: O Zona Azul eletrônico. A CET (Companhia de trânsito) irá testar os novos modelos de cobrança de estacionamento para a zona azul. Para isso, o sistema vai contar com a ajuda dos celulares dos motoristas. Para que o usuário possa usufruir do sistema, primeiramente ele deve se cadastrar, ligando para um número específico e fornecer o CPF e o número de cartão de crédito. Logo, quando o motorista precisar estacionar é só telefonar e digitar o número da vaga indicado na placa da rua. Na hora de ir embora basta ligar de novo e desativar o serviço.

Bem interessante, esse serviço que inclusive o próprio governo com o auxílio do FINEP está financiando projetos com zona azul eletrônico. A Qualitá Informática foi uma das contempladas e seu projeto desenvolvido permitirá que o usuário estacione seu veículo numa área de Zona Azul e pague a tarifa com seu aparelho celular. O sistema calcula o valor do estacionamento e o transmite ao motorista, que pode pagá-lo na conta de telefone no final do mês ou incluir créditos exclusivos para o fim.

Há até uma reportagem do SPTV falando mais sobre o projeto do zona azul eletrônico em São Paulo. Vejam aqui o procedimento com detalhes.



Fonte: Mobilizado Blog


Qual a diferença entre arquivos .sis e .sisx ?

Uma dúvida que sempre surge entre usuários e desenvolvedores dos celulares Symbian é em relação aos arquivos de instalação de aplicativos e jogos. Geralmente, ele são fornecidos de duas formas : arquivos ".sis" ou ".six".
Qual a diferença??

Resumindo, os arquivos .sis são para versões antigas de celulares embarcados com S.O. Symbian anterior ao 8.1. No entanto, eles ainda podem funcionar em sistemas mais atuais, mas seu funcionamento não é garantido.

Já os arquivos .sisx são para celulares com Symbian 3rd Edition ( a partir do 9.1).

Outra questão que sempre surge entre os usuários de Nokia são os arquivos de instalação de aplicativos e jogos. Normalmente, eles são fornecidos pelas empresas de duas formas: arquivos “.sis” ou “.sisx”.

Basicamente os arquivos .sis são para versões antigas de celulares com o sistema operacional Symbian anterior ao 8.1. No entanto, eles ainda podem funcionar sistemas mais atuais, mas seu funcionamento não é garantido.

Se você não sabe qual é a versão do seu celular, vá até o link http://www.forum.nokia.com/devices/matrix_all_1.html que lá fornece todo o quadro de celulares e suas versões de software.

Dúvida comum e solucionada!

Fonte: Nokia Guru

Saiu a nova versão do Python para S60 (Versão 1.4.5). Entretanto, não se contentem muito que não foi nessa versão o suporte ao TouchScreen. Embora seja mais uma versão de manutenção (conserto de bugs), ele trouxe algumas novas funcionalidades:

  • Added the possibility to run Python code in threads that weren’t started by Python itself
  • Added timeout support to globalui module
  • The positioning module has been made safe to use from several threads.
  • Support for the “description” field has been added to the calendar module

A nova versão para download se encontra aqui.

Há alguns dias estava lendo em alguns blogs à respeito do Home Control Center. O que seria esse produto ? Seria um tipo de comutador, um servidor que permitiria integrar o controle de várias funcionalidades da sua residência incluindo monitoramento de energia elétrica, ativação remota de dispositivos, segurança com seu telefone celular ou computador.
Óbvio que o projeto não será algo tão "escancarado". Embora a idéia seja que desenvolvedores e parceiros terceiros possam contribuir com o servidor seja através de adição ou manutenção de novas funcionalides, a Nokia (responsável pelo produto) quer fazer os ususários possam usar adequadamente o sistema tornando o consumo de energia o menor possível. Para isso ela fez uma parceria com a provedora de energias alemã RWE que está auxiliando no desenvolvimento desse projeto. O potencial é muito grande, especialmente nessa nova área de automação residencial. Acredito que o dispositivo móvel é a interface ideal para controlar toda a " inteligência domiciliar.", especialmente quando o usuário nao está dentro de casa.

Algumas serviços interessantes seriam algo do tipo, quando você recebe uma notificação seja por SMS ou por outro aplicativo quando alguém toca sua companhia. Se você tiver um sistema de segurança de câmeras interna, você poderia receber uma foto da pessoa e até a possibilidade de você liberar remotamente a porta para ela entrar. Delírio ein?!



As principais áreas de foco do Home Center serão:

  • Segurança
  • Energia e eficiência
  • Bem-Estar
  • Construção e Design
  • Automação residencial
Nokia pretende lançar este produto na Europa em meados de 2009. Enquanto isso, você já pode dar uma olhada nas especificações do projeto que será um roteoador Wi-Fi com portas de entrada USB, ethernet, cartoes SD, e até conectividade com GPRS. Isso inclui também suporte ao celulares S60 e todos os celulares (sem ser nokia ) com browser mobile. Ah, e a Nokia vai liberar a API para que outras fabricantes possam desenvolver e integrar suporte a seus dispositivos no Home Control center. Mais informações vocês podem ouvir a apresentação do produto ( audiocast presentation) ou acessar o site nokia.com/smarthome.

Hoje durante o Nokia World em Barcelona, houve uma demonstração do Home Control Center. Vejam o vídeo abaixo de como ele funciona:








Fonte: Symbian Freak

JavaOne 2009: Submeta suas idéias/projetos!


Aproveitando o último post, também comento sobre o JavaOne 2009. Um evento realizado anualmente promovido pela SUN nos EUA para promover e divulgar inovações e novidades com a tecnologia Java. Ano que vem será em San Francisco nos dias 02/06/2008 a 05/06/2008. O mais legal é que se você tiver alguma idéia bem maneira para JavaME para ser apresentada na conferência, você pode submetê-la!

Há possibilidades de você participar também! O prazo de envio do abstract é até 19-12-2008.

Mais informações:

Do you have a cool Mobile idea for JavaOne?

Sei que está um pouco em cima, mas a informação é válida!

Para os desenvolvedores mobile em geral, a Nokia lançou o 1º Concurso Nacional de Desenvolvimento de Aplicativos para Aparelhos Nokia.
Para maiores informações visitar o link anterior ou o site Forum.Nokia.

Vejam um pequeno resumo provido pelo site da Nokia sobre o concurso:


Crie um aplicativo para um aparelho Nokia e concorra a até 10 mil reais!

Serão avaliadas a qualidade do código, a melhor interface para o usuário e a inovação. Você pode criar o aplicativo em duas plataformas: S40 e S60. Vale lembrar que o peso limite dos arquivos deverá ser de 130kb para S40 e de 500kb para S60 e que o código fonte não poderá ser fechado e nem comercial.

As inscrições são válidas até o dia 15 de dezembro e as criações serão julgadas pelo Instituto Nokia de Tecnologia - INDT. A divulgação dos vencedores será no dia 19/12/2008, no blog Sem Limites.

Encontre informações técnicas sobre o funcionamento dos aparelhos e suas tecnologias em www.forum.nokia.com. Aproveite também para testar a usabilidade da sua criação nesse site.

Além do prêmio em dinheiro, os ganhadores terão a possibilidade de ver seus aplicativos embarcados em novos produtos da Nokia, de fazerem parte da equipe de colaboradores do INDT e de até terem seus nomes divulgados pela Nokia.
Um dos meus costumes estranhos é de vez quando dormir ouvindo música. Geralmente coloco meu mp3 player ou meu celular com músicas mais sossegantes no fone de ouvido e me deito até pegar no sono. Claro, que isso tem um preço: A bateria do seu aparelho vai pelo espaço! Aí pensei, porque nao ter um aplicativo no celular que pudesse saber de alguma maneira (configuração ou falta de iteração do usuário) que eu estivesse dormindo e automaticamente desligaria o player de multimídia.
Eis que surge então o famoso Sleep Music. Um aplicativo para celulares Symbian desenvolvido em python que permite que você possa configurar um tempo pré-definido que o player ou o rádio do seu celular seja desligado. Logo, assim que o tempo se esgotar, o aplicativo fecha automaticamente, não necessitando que você tenha que desligar o aplicativo antes de dormir. Você poe até configurar para que ele desligue o telefone após algum tempo.


Sleep Music - Share on Ovi


A outra sacada do aplicativo é que vocÊ pode configurar ele para desativar o player quando o telefone estiver inativo por um determinado tempo (sem movimentaçoes, pressionamento de teclas, chamadas, etc.)

Recomendo o uso!! Posso dormir agora sem me preocupar em desligar o celular. Meu sono agradece! =D

Para instruções de download, ver esse site.

Fonte: Symbian Blog

SiSXplorer: Explorer os pacotes .SIS dos aplicativos Symbian

Para aqueles que querem ver o conteúdo dos pacotes . SIS (Não, não é possível ver o código-fonte!), há um programa bem interessante chamado SISXplorer.

Veja o que você pode fazer com ele:

Extrair todas as imagens de temas para os aparelhos Symbian terceira geração.
Inspeciona a fundo o conteúdo de cada arquivo usando o visualizador hexadecimal integrado (Integrated Hexadecimal Viewer).
Apenas abre um pacote em formato SIS para ver todo o conteúdo por meio de uma visualização em árvore, para cada arquivo selecionado será mostrado as informações detalhadas e (se avaliável) o SISXplorer irá mostrar a sua pré-visualização.

Visualiza e extrai os arquivos contidos dentro dos arquivos SIS.
Visualizador de arquivos TXT, exibindo todo o conteúdo disponível.
Visualizador E32: mostra informações detalhadas contidas dentro do cabeçalho do arquivo executável.
Visualizador RSC (em versão de testes): visualiza os recursos do aparelho celular.
Visualizador MIF (em versão de testes): visualiza e extrai arquivos de ícones SVG.
Administrador MBM integrado: visualiza e extrai imagens e ícones dos seus temas favoritos.
Visualizador Hexadecimal Integrado: inspeciona o conteúdo de cada arquivo.
Execução e extração rápida (Quick Open/Extract): usa a função “agarre e solte” para extrair rapidamente os arquivos.
Visualizador Múltipo de Arquivos: permite ao usuário abrir simultaneamente vários arquivos de uma vez e extrair os arquivos contidos com apenas um clique.
Visualizador de informações: mostra informações detalhadas sobre o arquivo e os arquivos contidos dentro dele.

Para fazer download aqui.

Fonte: NPossibilidades.


Já pensou você ter um celular que pudesse executar determinadas ações sempre que você passasse perto de algum lugar. Seria algo como, se você está passando perto de um supermercado ou um banco, ele te lembra de contas a pagar ou quando está chegando perto do trabalho, ele avisa daquela reunião marcad para aquele dia.

Seria algo como um mordomo pessoal de bolso. Você poderia definir os perfis do teu celular, acessar páginas web específicas ou até abrir programa e ativar seu bluetooth.

Existe algo assim já pronto ?!

GPS Action - Seu

Sim, existe! O Gps Action faz exatamente isso com o uso das coordenadas obtidas pelo GPS embutido pelo aparelho. E os aparelhos sem gps ? Sim, também funciona! Aí nesse caso usa a posição obtida pela antenas das operadoras de celular.

Muito interessante e até útil o aplicativo! Abre um nicho para outras idéias a partir dele.

Para mais informações, ver o site oficial do aplicativo.

Fonte: NPossibilidades


top