MMAPI, mensagem estranha ao executar video

Olá,

Gostaria de uma ajudinha com player de video no WirelessToolKit, É o seguinte:

Quando crio um player passando p/ o manager.createPlayer(“local do arquivo”), aparece a seguinte tela no momento da execucao:

  • The MIDletSuite wants read from the local system. Is it OK to ready your files?

mas, o video é carregado e executado rapidamente após clicar em ‘yes’. Vale lembrar que coloco o arquivo dentro da pasta \filesystem do emulador que a aplicacao está usando. Isto é uma boa prática?

Quando crio um player passando p/ o manager.createPlayer(inputStream, “video|mpeg”), sendo que o inputStream é criado p/ um arquivo que está no diretório onde se encontra a aplicação, A mensagem não aparece, mas o video demora muito tempo p/ ser executado.

Qual é a maneira mais correta p/ se executar o video? O que mais me preocupo é: colocar o arquivo de video, ou qualquer outro arquivo e diretórios que a aplicação em J2ME vai utilizar, na pasta \filesystem do emulador encontrada dentro de \j2mewtk\2.5.2\appdb\DefaultColorPhone\filesystem que é criada pelo WTK é correto? Normalmente se faz isso, ou coloca-se os arquivos em qualquer local do disco?

Poderiam me ajudar com isso? Alguém já resolveu isso?

Espero dicas…

[quote=rafaelSaqueli]Poderiam me ajudar com isso? Alguém já resolveu isso?

Espero dicas…[/quote]

Não faça up das mensagens…aqui não é orkut. Tenha paciência que uma hora alguma alma caridosa e principalmente sábia, posta uma solução para você.

Falou,

Não sei se tu é caridoso, mas ao menos sábio sei que é. Por acaso não poderia (dependendo do grau de caridade) me dar umas dicas à respeito desse FileSystem e das outras coisas postadas?

obrigado.

Não respondi sua dúvida por não achar que vou agregar algo, mas se insiste o que posso dizer é que se o objetivo é só usar o vídeo no emulador, pouco importa o local, desde que funcione, certo ?
Teoricamente o filesystem é o local mais adequado, pois é lá onde as propriedades da FileConnection para dizer quais são os paths para Fotos, Imagens, Músicas,etc, vai apontar.

Agora se o objetivo é embutir o vídeo na aplicação e rodar em um celular real, o certo é vc colocar o vídeo na sua pasta RES e usar getResourceAsStream para poder passar este stream para o player.

Não sei se ajudei, mas pediu um palpite, tá dado

[quote=boone]

Não respondi sua dúvida por não achar que vou agregar algo, mas se insiste o que posso dizer é que se o objetivo é só usar o vídeo no emulador, pouco importa o local, desde que funcione, certo ?
Teoricamente o filesystem é o local mais adequado, pois é lá onde as propriedades da FileConnection para dizer quais são os paths para Fotos, Imagens, Músicas,etc, vai apontar.

Agora se o objetivo é embutir o vídeo na aplicação e rodar em um celular real, o certo é vc colocar o vídeo na sua pasta RES e usar getResourceAsStream para poder passar este stream para o player.

Não sei se ajudei, mas pediu um palpite, tá dado[/quote]

Ajudou sim. A questão é que sou novato ainda em J2ME, e tenho certa dificuldade quanto à principalmente a forma com que são tratados os arquivos e esses locais do WTK assim como esses conectores.

Acho que entendi. Quando tiver algum caminho p/ um arquivo, o FileConnection irá direcionar para pasta fileSystem.

Ainda não embarquei nenhma aplicação em dispositivos reais, pretendo fazer isso em breve p/ melhor entender todas essas pêndencias. Esta pasta RES, devo criá-la, ou já existe em algum lugar? Não entendi muito bem isso.

Sabe de algum tutorial que explique sobre isso? Em livros por exemplo, não encontrei nada a respeito dessa pasta fileSystem, descobri ela por um acaso, devido a um erro que ocorreu na execução de uma aplicação.

Valeu.
Lembrando que QUALQUER dica é bem vinda.

Melhor explicando, a implementação do emulador irá acessar os arquivos ali. Isto se não me engano pode ser mudado através de um arquivo INI lá no WTK.

Depende. Se vc cria tipo tudo na unha, sem depender de IDEs, estilo Chuck Norris, vc mesmo terá que criá-la. O netbeans normalmente cria, mas se não criar, crie vc e adicione ali tudo que for recursos para a aplicação (imagem,som,arquivo texto,etc).

Desconheço existir tal tutorial, pra mim isto só se aprende q nem vc tá fazendo: USANDO !

Ok,

Acredito que entendi. Então essas pastas são utilizadas somente para organização.

Sabe como é. Muita informação no inicio de estudos assim, fico meio perdido, mas as coisas vão se encaixando com o tempo. Eu tinha pensado, que a pasta fileSystem influênciava na emulação do dispositivo, talvez pelo fato de se encontrar junto ao emulador.

No caso da DES que vc citou, também deve ser criada somente para organização. Então ficaria assim: getResourceAsStream("/DES/qualquerArquivoMPEG").

Vlw mais uma vez.

[quote=rafaelSaqueli]Ok,

Acredito que entendi. Então essas pastas são utilizadas somente para organização.

Sabe como é. Muita informação no inicio de estudos assim, fico meio perdido, mas as coisas vão se encaixando com o tempo. Eu tinha pensado, que a pasta fileSystem influênciava na emulação do dispositivo, talvez pelo fato de se encontrar junto ao emulador.

No caso da DES que vc citou, também deve ser criada somente para organização. Então ficaria assim: getResourceAsStream("/DES/qualquerArquivoMPEG").

Vlw mais uma vez.

[/quote]

É RES e não DES.

E o correto é /qualquerArquivoMPEG.

Olá.

Tem um livro sobre MMAPI, chama-se PRO MMAPI. Você deveria comprá-lo ou então baixá-lo em algum lugar. O livro está em inglês. Além disto, você deve usar a API da JSR 135. Com certeza com ela e com o livro você encontrará quase todas as respostas de suas dúvidas.

[] s

Ok. então a pasta RES é para o dispositivo assim como a fileSystem é para o emulador.

Exemplificando melhor como estou fazendo.

eu testei criar o player de duas maneiras:

Assim:

Player p = Manager.createPlayer("file://nomeVideo"); /* o arquivo(representado por nomeVideo) fica na pasta fileSystem usando assim, nao é necessário criar um InputStream */

E também assim:

/* o arquivo(nome do arquivo) esta no diretório corrente, ou seja, junto com a aplicação */
InputStream  stream = getClass.getResourceAsStream("/nomeVideo");
 

/* aki utilizo o método sobrescrito, esse exige um InputStream e o tipo do arquivo */
Player p = Manager.createPlayer(stream, "video|mpeg"); 

obs: não tem como eu testar agora, mas no segundo exemplo não testei executar com o arquivo em outro diretório ainda, como disse, ele está no diretório raiz da aplicação.

Como disse, fazendo do primeiro modo, aparece uma mensagem na tela(não sei porque aparece) antes de exeutar o video, mas após aceitar a mensagem, o video é executado normalmente e iniciado instantaneamente. Iniciando o player do segundo modo, ele demora muito tempo paracarregar, cerca de 15 segundos para ser iniciado, o bom deste segundo modo é que a tela de mensagem não é exibida.

Porque será que existem essas diferenças entre os Dois modos de criação do Player?

Quando utilizo o InputStream, será que ele carrega todo o arquivo p/ memória ou algo assim, antes de executar?

Talvez agora fique mais claro p/ poderem me explicar.

Obrigado, aguardo dicas.

Ainda estou lutando com esta tal mensagem!

Tentei criar o player de varias formas.

Não consegui fazer um InputStream receber o conteuto de um arquivo dentro da pasta filesystem. Como deve ser feito isso?

InputStream stream = getClass().getResourceAsStream("[color=red]Não sei qual caminho passar aki[/color]");

Só consigo acessar tal pasta utilizando a URI “file://nomeDoArquivo”

help

Conseguiu resolver?