MMAPI, exibindo video e outro item na mesma tela

Olá,

Ainda sou novo em J2ME e entre outras dúvidas, gostaria de esclarecer uma em especial:

Utilizando como perfil o MIDP:
Quero exibir um vídeo utilizando MMAPI e um “painel” logo abaixo do vídeo para exibir algumas informacões, onde o usuário poderá navegar neste painel. É possível fazer isso? Como poderia ser feito?

Sei que poderia exibir o “painel” em outro Form, por consumir menos memória e por outras coisas mas Gostaria de testar desta maneira.

Desde já, Obrigado.

Olá Rafael

eu também quero saber, ja encontrou a resposta?

[]s

Sim,

Estou tentando trabalhar com um objeto da classe Canvas. O “initDisplayMode()” da classe VideoControl é sobrescrito p/ aceitar um objeto canvas, da seguinte maneira:

vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this); onde this representa o meu objeto canvas, e o player será mostrado nele.

Só isso é necessário para rodar um player de video em um canvas, ai, como a classe canvas permite, tu pode desenhar coisas e redeimencionar o player p/ que todos fiquem visiveis.

obs: o restante da criacao do player é da mesma forma que se faz com a apresentacao em um form, só muda o modo de apresentá-lo, nesse caso, em um Canvas.

Não sei se ajudou, qualquer coisa, dá um toque. Se encontrar outra maneira, por favor post aki pra que eu possa ver.

Tem como mandar um exemplo???
eu entendi mais ou menos o que você disse, mas preciso ver a coisa rodando pra entender melhor
isto é possível?
tipo to entre a cruz e a espada por conta disso ae… isso ae ta definindo minha vida nesse momento
to meio desesperada
[ ]s

Rafael???

hehehehehe

poderia me explicar melhor?

eu tenho que mostrar um vídeo e um link na tela…

muito obrigada

[quote=hayase]Rafael???

hehehehehe

poderia me explicar melhor?

eu tenho que mostrar um vídeo e um link na tela…

muito obrigada[/quote]

Mas isto é fácil…não use Canvas, mas sim o modo GUI primitivo onde vc pode usar um form comum e colocar vários Items na tela.
Um deles serão o seu vídeo e o outro um StringItem com a aparência HYPERLINK, e quando ele for selecionado vc lanca um platformRequest.

Boone muito obrigada pela dica.

Agora tem um pequeno detalhe, o link será dinâmico. Ele não aparecerá assim que o player for ligado. Ele aparecerá por exemplo 1 ou 2 minutos após o player ser ligado. É possível fazer isto? Tipo, seria um link dinâmico, um link criado dinamicamente. Isto atrapalhará a execução do vídeo? Tipo, eu poderia usar o LWUIT???

[ ]s

Acredito que não atrapalhe.

Não tenho certeza quanto ao uso do Form, pois ainda não testei adicionar um item nele com o video sendo executado, mas com canvas, faço de seguinte forma:

Quando há necessidade de aparecer algo (no meu caso é uma imagem, como um painel, onde aparecerá strings lidas de um xml em cima dele) eu apenas redimensiono o VideoControl e desenho uma imagem na tela, e o player não para de executar.

att

[quote=hayase]Boone muito obrigada pela dica.

Agora tem um pequeno detalhe, o link será dinâmico. Ele não aparecerá assim que o player for ligado. Ele aparecerá por exemplo 1 ou 2 minutos após o player ser ligado. É possível fazer isto? Tipo, seria um link dinâmico, um link criado dinamicamente. Isto atrapalhará a execução do vídeo? Tipo, eu poderia usar o LWUIT???

[ ]s[/quote]

Você pode usar um Timer onde após o período, o StringItem é removido do form, via o método delete do mesmo. Isto não atrapalhará a execução pois são items distintos, dentro de um mesmo container (form). A remoção ou inserção de novos não afeta os outros, ou melhor, afeta, mas na questão do layout, já que os componentes são notificados que devem recalcular suas dimensões para a nova realidade do container.

Quanto ao LWUIT, como não está com tempo, recomendo fugir dele. Impliciaria em vc ter que aprender novas classes e como alcançar os mesmos resultados com o LCDUI. Só partiria para LWUIT se a UI fosse realmente importante de ser bonitinha ou com frescuras. Se quer rapidez neste seu desenvolvimento, fique só no LCDUI que já te atende.

Uhmmmmmmm

Muito, muito, mas muito obrigada mesmo. Ano passado fiz um trabalho com LWUIT, achei muito legal e interessante. A aplicação se comunicava com o webservice e eu construía um grid dinâmico (uma tabela… disse grid mas não lembro se é este o nome do componente). Mas com vídeos realmente não sei qual será o resultado. Ficarei mesmo com LCDUI!!!
Seguirei suas instruções, foram muito esclarecedoras pra mim. Muito Obrigada. E pode ter certeza que tornarei a postar caso surjam dúvidas.

[ ]s

[quote=boone]

Mas isto é fácil…não use Canvas, mas sim o modo GUI primitivo onde vc pode usar um form comum e colocar vários Items na tela.
Um deles serão o seu vídeo e o outro um StringItem com a aparência HYPERLINK, e quando ele for selecionado vc lanca um platformRequest.[/quote]

PlatformRequest é de qual classe? Acho que vou precisar de algo assim para minha implementação.

No meu caso, Necesito exibir o player, uma imagem e uma String sobre a imagem, Como se fosse um painel. Hayase, esse “painel” também será apresentado dinâmicamente, no meu caso, será chamado pelo usuário a qualquer momento. Como já disse, consegui exibir os itens normalmente utilizando um canvas como container. A Grande questão é a seguinte: Quando o painel aparecer, a tecla que for acionada não poderá realizar mais as mesmas funções de quando somente o player era visivel. Neste momento, as teclas que o usuário apertar, faram com que o conteudo do painel mude.

Ex:
1- Quando somente o player estiver visivel, se o usuário clicar em LEFT, o avançará (somente um exemplo, não necessáriamente isso)

 2- No mometo em que for apertado, por exemplo, KEY_NUM5 (nesse caso pode ser um comando, não é necessário mapear teclado). Será exibido o painel. Agora, enquanto o usuário fechar, ele navegará no conteudo do mesmo, no caso alterará as Strings.

É isso que deve acontecer. Escolhi o canvas como container porque, até o momento, é a unica maneira que sei ser possível fazer utilização do teclado. Caso não seja a melhor forma, não pensarei 2 vezes em mudar.

Minha idéia, devido ao fato de ser leigo, seria algo como aconteceria em J2SE. Já fiz isso uma vez justamente para simular a execusão do que seria feito em J2ME, porém ainda não tinha estudado tal plataforma.

1- Tenho um player sendo exibido em um JFrame, com botões, como é + ou - o caso do WTK.

2- Quando determinado botão é apertado, chama-se outra aplicação e [color=red]passa o JFrame corrente p/ ela[/color], mas o JFrame continua exibindo o player. O que essa nova aplicação faz, é criar um painel com o devido texto que será exibido, adicionando o mesmo no JFrame que foi recebido como parametro anteriormente. Assim, essa aplicação cria também um ActionListener e retira o Listener antigo do JFrame que esta exibindo o vídeo, podendo adicionar o novo ActionListener, desta maneira tudo o que poderá ser feito com o painel, será implementado nesse novo Listener, antes dessa aplicacao ser encerrado, eu retiro o painel, redimensiono o container do player p/ full e retorno o Listener antigo.

Com meus estudos recentes sobre a plataforma J2ME, a unica barreira que encontro para realizar isso da mesma forma como fiz em J2SE, é o fato de não existir um removeKeyListener() e addKeyListener() como removeActionListener() e addActionListener() e sim somente KeyListener(), pois fica dificil, e até agora impossivel na minha cabeça ainda vazia de J2ME, implementar o novo Listener na aplicacao que controla o painel.

Não sei se consegui explicar de maneira clara. Mas gostaria que analizasem com bastante carinho essa minha questão. Como poderia fazer algo parecido em J2ME.

Desculpem-me pelo tamanho do texto. Att…

Mais uma coisinha.

A primeira idéia que tive quando encontrei esses problemas foi: fazer tudo em uma só classe!!! porém, imaginem, meu escutador de eventos ficaria cheio de flags e ifs, exemplo: if(painel.isVisible()) { //navegue no painel}. Isso é um exemplo muito simples, a aplicação não exibe somente um painel, ela pode exibir um painel a partir do que foi excolhido pelo usuário em um painel anterior, ou seja, eu posso apagar a painel de exibicao, incluir outro painel e assim por diante indefinidas vezes, podendo retornar ao painel anterior quando necessário.

att

Se me mata de vergonha com uma pergunta destas mas vamos lá: É da classe MIDlet… :lol:

[quote=rafaelSaqueli]o fato de não existir um removeKeyListener() e addKeyListener() como removeActionListener() e addActionListener() e sim somente KeyListener(), pois fica dificil, e até agora impossivel na minha cabeça ainda vazia de J2ME, implementar o novo Listener na aplicacao que controla o painel.
[/quote]
Você não precisa ter estes métodos o que precisa é ter uma máquina de estados (variável) que indica em que modo no momento o player esta e de acordo com isto, dentro do manipulador de eventos você testa o estado e dá o devido entendimento a tecla pressionada.

olá.

Resumindo: Você (rafael) precisa estudar melhor o JME. Assine a revista webmobile e assine as vídeo aulas sobre canvas. Com certeza suas idéias ficarão mais claras a respeito de como fazer o que quer em jme.

[ ]s

hihihi, pode deixar que eu carrego o peso da vergonha comigo.

O que acontece é o seguinte. esses “paineis” não necesariamente necesitam existir no inicio ou existam somente alguns alguns e o usuário baixa outros para poder usar. O painel pode chegar durante a execucao do video entende? Então fica difícil. A simulação que disse ter feito, supriu todas essas necessidades de maneira, ao meu ver, eficiente. Porém, por falta de conhecimento em J2SE, como pode notar pelas palas acima, está sendo difícil adaptar a aplicação de simulação na plataforma em questão.

att.

[quote=rafaelSaqueli]hihihi, pode deixar que eu carrego o peso da vergonha comigo.

O que acontece é o seguinte. esses “paineis” não necesariamente necesitam existir no inicio ou existam somente alguns alguns e o usuário baixa outros para poder usar. O painel pode chegar durante a execucao do video entende? Então fica difícil. A simulação que disse ter feito, supriu todas essas necessidades de maneira, ao meu ver, eficiente. Porém, por falta de conhecimento em J2SE, como pode notar pelas palas acima, está sendo difícil adaptar a aplicação de simulação na plataforma em questão.

att.[/quote]

Sim, o desafio é maior para você, que está engatinhando no J2ME, mas considero que sua necessidade é perfeitamente possível de ser feita.

O que acontece é que o dragão é seu, portanto terá como nobre guerreiro de matar N monstros até chegar no castelo e salvar a princesa.

A disposição para ir vencer estes obstáculos é o que definirá o sucesso ou fracasso. basicamente é isto.

[yoda=ON]
Trilhar o caminho do J2ME você deve !
Que a força esteja com você !
[/yoda]

Ok.

É isso mesmo. Por não conhecer direito a plataforma, o mais perigoso é correr atrás de algo fora do escopo da mesma. Sabendo que é possivel meio caminho está andado. Então é possivel? Acho que foge um pouco do convencional, mas se for possivel, tá valendo.

Vlw.

você conseguiu evoluir?
eu ainda estou tendo dificuldades pra reproduzir o conteúdo
:stuck_out_tongue:

Exibir o conteúdo foi simples, como disse anteriormente, consegui exibir o conteudo utilizando CustomItem e também utilizando Canvas. No meu caso, canvas é a melhor opção. O problema está em tratar os eventos de pressionamento de teclas, pois, hora a tela principal deve reagir de uma forma quando uma tecla é pressionada, hora ela deve agir de forma diferente quando o mesma tecla é precionada. Ou seja, a mesma tecla faz a aplicação agir de uma forma! Poderia fazer como o boone disse: construir uma maquina de estados, e dependendo do estado da aplicação, o pressionamento da tecla acarretaria em uma funcionalidade. Isso nada mais seria que algumas flags utilizadas para decidir qual decisão a aplicacao deveria tomar. No meu caso isso não dá certo. Estou pensando em uma maneira de resolver isso agora.

Alguém poderia me ajudar:

Usar o método “keyPressed(int codigoTecla)” em canvas está sendo extremamente simples, porém, tratar os eventos assim está sendo um impecílio pra mim. Pelo seguinte motivo: Em J2SE eu adicionaria um Listener e trataria os eventos, em dado momento, removeria esse Listener e adicionaria outro Listener que trata os eventos das mesmas teclas de outra maneira. Assim resolveria meu problema, mas em J2ME, o modo de utilizar os escutadores é diferente.

Como funciona esses escutadores no J2ME. Estive estudando um pouco e vi que existe um DefaultListener é deve ser este que chama o metodo keyPressed(int codKey) implemetado pela classe Canvas. Alguém já viu ou implementou um modulo para receber o código da tecla escutada por esse DefaultListener? Ou melhor, Existe outro meio de tratar os eventos que o DefaultListener “pega”?

Qualquer idéia será bem vinda!!!

att

Ressucitando o tópico pois tenho a mesma dúvida.
Tenho um Form feito em Canvas, como eu faço para eu exibir neste Form a imagem da Camera?