Terapad
Created with the free version of Terapad, ads can be removed from $14.15 a month Easy Website Creation Sign Up Now

TouchScreen em Java ME

User photo not available Thursday, 16 August 07 - 04:07 AM (GMT)
By Ricardo Ogliari in Java ME

 O surgimento do IPhone da Apple mudou vários conceitos, um deles sem dúvida é a construção de interfaces para pequenos dispositivos, o uso de telas touch screen se tornou uma questão de sobrevivência. Aliado a estas mudanças culturais, aproveitei para escrever um breve resumo sobre como criar aplicativos Java ME que respondam a telas touch screen.

Primeiramente, parto do pressuposto de que o leitor já conheça a plataforma Java ME, que compreenda a diferença entre a interface de alto nível, através das classes derivadas de Screen, e a interface de baixo nível, com a classe Canvas. Se o leitor não conhece estes termos que acabei de citar, recomendo uma pausa neste texto e uma breve lida sobre a plataforma Java ME.

Quando criamos uma classe que herde da classe Screen, podemos utilizar alguns métodos da própria classe, sendo que, os mais conhecidos são aqueles que gerenciam os eventos relacionados ao uso das teclas do dispositivo, como o acionamento das teclas direcionais, esses métodos são:

  • keyPressed()
  • keyRepeated()
  • keyReleased()

De maneira análoga, existem os métodos que respondem aos eventos de toque nas telas touch screen, sendo que, também é preciso de uma classe que herde diretamente da classe Canvas. Os métodos são esses:

  • pointerPressed()
  • pointerDragged()
  • pointerReleased()

Os três métodos citados acima recebem como parâmetro dois números inteiros, que representam a coordenada x, y de onde ocorrer o toque na tela. Pronto, o código para tratamento de touch screen é esse e nada mais. A listagem de código abaixo mostra uma MIDlet que apenas mostra um círculo azul no local do toque na tela.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Midlet extends MIDlet {
    private Display display;
    private Tela tela;
   
    public void startApp() {
        display = Display.getDisplay(this);
       tela = new Tela();
      display.setCurrent(tela);
    }
   
    public void pauseApp() {
    }  
    public void destroyApp(boolean unconditional) {
    }
}

class Tela extends Canvas
{
    int x = -1;
    int y = 0;
   
    protected void paint(Graphics g) {
        g.setColor(255, 255, 255);
        g.fillRect(0, 0, getWidth(), getHeight());
       
        g.setColor(0, 0, 255);
        if (x > 0)
        {
            g.fillArc(x-10, y-10, 20, 20, 0, 360);
        }
    }
   
    public void pointerDragged(int x, int y)
    {}
   
    public void pointerPressed(int x, int y)
    {
        this.x = x;
        this.y = y;
       
        repaint();
    }
   
    public void pointerReleased(int x, int y)
    {}
}


Porém, para o exemplo acima funcionar corretamente no emular da Sun, é preciso editar o arquivo DefaulColorPhone.properties (se estiver usando o emulador padrão). No meu caso, o caminho para este arquivo é C:\WTK25\wtklib\devices\DefaultColorPhone. Ao abrir este arquivo procure e altere a propriedade touch_screen para true:

touch_screen=true

Feito isso, reinicie o emulador. Agora sim, a diversão está concluída.

Att.
Ricardo S. Ogliari (Ping)
Email this  |  Submit to digg  |  Add to del.icio.us  |  Permalink  |  View 3 comments  


TV Digital + Java ME

User photo not available Monday, 05 February 07 - 01:25 PM (GMT)
By Ricardo Ogliari in Java ME

Ricardo da Silva Ogliari (Ping)
05/02/07

Olá pessoal, aproveitando a dica do pessoal do meu blog (mobilidadetudo.blogspot.com),  resolvi dar uma pesquisada sobre TV Digital e Java ME, pensando que não iria encontrar muita coisa, porém para minha surpresa encontrei uma API que está saindo do forno que servirá justamente para prover funcionalidades de TV Digital em nossas aplicações Java ME, ou seja, um Mobile TV Digital.

Essa API é a JSR 272, ou, seu nome mais pomposo é Mobile Broadcast Service API for Handheld Terminals. Como o próprio nome indica e eu já falei antes, com esta API, podemos inserir funcionalidades de TV Digital em uma aplicação CLDC ou CDC. Não é meu objetivo explicar os conceitos desta nova forma de televisão, portanto, se o leitor ainda não conhece este termo, aconselho dar uma googlada rápida e ler um pouco sobre o assunto.

Com base no artigo Digital Television for Java™ ME Platform Mobile Devices - Introduction to JSR 272, dos autores Antti Rantalahti e Ivan Wong, as principais características da JSR 272 são:

  • Acesso ao Electronic Service Guide (ESG)
  • Seleção de serviços e programas
  • Apresentação e gravação
  • Acesso a arquivos e objetos do broadcast
  • Segurança e DRM
  • Compra
Trocando para uma linguagem mais informal, eu diria que é possível fazer tudo que um receptor de TV Digital faz, só que com a diferença de ser em um terminal móvel. Por exemplo, no seu aplicativo Java ME poderá ter uma funcionalidade onde o usuário poderá assistir ao jogo de seu time favorito, selecionando o mesmo em uma lista de serviços e programas disponíveis, assistindo o jogo, o usuário poderá gravar algum lance em especial e obter maiores informações sobre algum jogador. Também, a API oferece funcionalidades de segurança e é capaz de gerenciar um sistema de compra através da TV Digital.

A JSR 272 precisa da CLDC 1.1 e de algum perfil para a interface gráfica, além da MMAPI (Mobile Media API – JSR 135) ou a JSR 234 (Advanced Multimedia Supplements) para o gerenciamento e apresentações das mídias envolvidas. Como opcionais, têm-se a JSR 229 (Payment API) e a JSR 75 (FileConnection).

Como meu conhecimento nesta API resume-se a dois dias, não vou me alongar muito sobre ela porque começarei mentir, hehehe. Então deixo aqui alguns links para quem estiver mais interesse no assunto:

JSR 272 The Mobile Broadcast Service API for Handheld Terminals. De Lauri Aaltonen e Tomasz Rusilko
Mobile Broadcast and Interactivity. De Martin Richartz
Broadcast Once, Watch Anywhere. De Frank Sommers
Página oficial da JSR 272.

Valeu pessoal, até a próxima.
Email this  |  Submit to digg  |  Add to del.icio.us  |  Permalink  |  View 6 comments  


JSR 266 - Unified Message Box Access API

User photo not available Saturday, 20 January 07 - 01:11 AM (GMT)
By Ricardo Ogliari in Java ME

 Olá.. descobri uma nova API que tá saindo do forno, como sempre, disponibilizo para meus amigos do blog.. :). Como não gosto de pegar as coisas e não citar, vi a primeira referência sobre esta API no nosso querido JavaFree, como uma indicação do usuário miojo, o link está aqui. Bem, depois disso vou para o nosso outro amigo, o Google, então achei várias referências, mas a mais legal é
este
pdf, fala direitinho do que se trata a API, mas só para vocês saberem pelo menos o ideal dela antes de começar a ler, ela objetiva fornecer um conjunto de classes e interfaces para gerenciar uma caixa de mensagens de um telefone celular, só para vocês verem a capacidade dela, aí vai algumas funcionalidades da mesma, toradas deste último pdf que referenciei:

* Management of message boxes. (info, rename, move, delete…)
* Read, write, copy, move and delete contents.
* Access the attributes of a message. (read/unread status, sender/recipient address)
* Registering listeners to be notified about modifications to the message box. (message sent,
message received, message attribute changed)

Bem, era isso...

Att.
Ping

Email this  |  Submit to digg  |  Add to del.icio.us  |  Permalink  |  Leave a comment  


MIDP: System Properties

User photo not available Wednesday, 17 January 07 - 11:56 PM (GMT)
By Ricardo Ogliari in Java ME

 Olá pessoal, acredito que a maioria de vocês já usou o System.getProperty() para pegar informações sobre a capacidade do dispositivo, pois bem, eu achava que sabia um monte de opção de uso do getProperty(), mas achei um pdf da Nokia, que tem simplesmente 50 opções de uso deste método. Vale a pena dar uma conferida, para visualizar o documento clique aqui e baixe o arquivo.

Att.
Ping

Email this  |  Submit to digg  |  Add to del.icio.us  |  Permalink  |  Leave a comment  


... More items are available in my News Archive