Boa noite pessoal! Acho que o titulo ja diz tudo né ?! :lol: :lol:
Vamos supor que tenho um catálogo de produtos no meu celular, como armazenar tais dados no cartao de memoria com RMS? Ou tem que usar outra API?
Vlw pessoal!
RMS no cartão é impossível.
Vc pode usar a FileConnection API.
mas essa api não oferece a facilidade do RMS… vou ter que fazer o “banco” na unha ou existe algo semelhante ao rms para o meu caso?
Vai sim ora…é o preço a se pagar !
[quote=boone]RMS no cartão é impossível.
Vc pode usar a FileConnection API.[/quote]
Talvez não seja impossível. Eu não tenho como testar aqui, mas creio que o RMS fica no mesmo local do Midlet, portanto basta instalar o Midlet no cartão que o RMS fica nele. No N95 eu instalei o Midlet na memória e o resultado de getSizeAvailable() deu 50.679.808 bytes, quando instalei no cartão deu 2.147.463.167.
Poxa… o meu celular não dá opção de escolher onde instalar, nunca vi um que permita isso. Quanto ao fileconection, o problema maior não em “fazer na unha” e sim o desempenho, pois não tenho um addStored, getStored, etc… para acrescentar conteudo ao arquivo texto, tenho que carrega-lo todo, acrescentar o que quero e então gravar novamente. E quando isso começar a ficar grande? Para manipular seu conteudo vou sempre ter que le-lo todo.
Os dados salvos a partir da aplicacao deveriam ficar armazenados no mesmo local do midlet, ou seja, se o midlet for instalado no cartão de memoria vc deveria poder remover o cartão e levar a app E os dados consigo. Mas como tudo em J2ME, depende de cada aparelho.
Estranho, pois se tem o cartão a lógica seria ter esta opção. Os Nokia série 60 (os mais modernos) todos têm e parece que alguns série 40 têm, os LGs também.
Seu celular não permite gravar o JAR direto no cartão?
O meu antigo celular (nokia 3600 slide) não permitia escolher onde gravar o JAR, ele apenas instalava direto na pasta “jogos” do celular, no entanto eu podia após a instalação, mover o aplicativo para o cartão. Imagino que o RMS acabe indo junto, mas nao tenho certeza pois nao cheguei a testar!
Os arquivos do RMS em muitas plataformas proprietárias, não são enxergados por utilitários que vem no CD do fone.
Isto tem lógica, afinal de que adianta a API dizer que o RMS é privado se ele pode publicamente ser acessado ?
Agora com celulares Symbian a coisa muda. Por ser um S.O. verdadeiro, este com a ajuda de alguns utilitários, possibilita que estes arquivos sejam encontrados, copiados,etc.
Mais um caso onde padronização da API não garante consistência entre as diferentes implementações.
Esse é o grande problema do J2ME e do Android, a apple por outro lado tem uma estratégia diferente e que facilita bastante, porque tem UM aparelho de telefone, UM tocador de mp3, UMA prancheta, etc.
Igual ao meu mas ele não deixa mover …snif…snif…snif…
Será que se eu usar a estratégia de ler o arquivo (FileConnection) acrescentar e gravar pode me dar muita dor de cabeça? O sistema não é comercial, apenas um hobby, é que fiz um curso básico de JME e estou “pegando o caminho das pedras”.
Obs: Pretendo guardar muitos dados. :lol: :lol: :lol:
[quote=gqferreira]Será que se eu usar a estratégia de ler o arquivo (FileConnection) acrescentar e gravar pode me dar muita dor de cabeça? O sistema não é comercial, apenas um hobby, é que fiz um curso básico de JME e estou “pegando o caminho das pedras”.
Obs: Pretendo guardar muitos dados. :lol: :lol: :lol: [/quote]
Pode ser feito e não é tão complicado, mas como você pôde ver no meu exemplo, a memória disponível para RMS na memória do aparelho sempre vai ser muito pequena em relação ao cartão. Sempre terá pouco espaço. Use o método getSizeAvailable() para ver quanto você teria disponível no seu aparelho e compare com o tamanho de sua fonte de dados para ver se dá.
Outra coisa: se o arquivo é grande você sempre terá que usar “a estratégia de ler o arquivo (FileConnection)”, pois o outro modo é digitar um por um no aparelho, o que não é nada prático.
boone,
Se o RMS for salvo no cartão de memória, então o mesmo (dados/Registros) não seram perdidos quando a aplicação for atualizada?
É possível atualizar um RMS através de um arquivo externo?
Grato pela atenção.
Como eu disse, vc não controla onde o RMS vai ser salvo, logo, vc tb não pode atualizar ele através da sobrescrita do mesmo, a não ser que você saiba exatamente como ele é implementado internamente PARA AQUELA MARCA/MODELO de celular.
Quem decide qual o formato deste armazenamento é o FABRICANTE, portanto você não pode assumir que todos os celulares armazenam de forma igual.
Por isto que eu adoro a especificação (JSR).
Ela fornece uma API padronizada para a gente não ter que se preocupar com o armazenamento (e eu nem quero). Não importa como o fabricante implementa a JSR, sempre vai funcionar.
boone,
Desculpe-me se estou falando besteira.
Poderia ser criado um txt ou xml no lugar do RMS? Ou (RMS, txt, xml, etc.) é a mesma coisa?
Teria algum problema em atualizar?
Agradeço.
Sim, você armazena os dados em um arquivo (por exemplo dados.txt) transfere ele para qualquer pasta no celular ou cartão, acessa ele com o FileConnection, abre ou cria o RMS. Pronto, é só ler arquivo -> gravar RMS.
[quote=dev-ailson]boone,
Desculpe-me se estou falando besteira.
Poderia ser criado um txt ou xml no lugar do RMS? Ou (RMS, txt, xml, etc.) é a mesma coisa?
Teria algum problema em atualizar?
Agradeço.[/quote]
RMS é uma coisa, arquivo é outra.
RMS se refere ao Record Management System, que é uma parte da implementação Java no aparelho responsável por persistir informação em meio físico.
É uma camada de abstração (API) entre a aplicação e o hardware.
Arquivo XML,TXT,etc, vc trabalha com outra API (FileConnection) e pode escolher onde quer armazenar a informação. Neste caso, não tem problema em atualizar.
No passado (MIDP 1.0), o único meio de persistência era o RMS. Hoje, com MIDP 2.0, vc já tem vindo por padrão a PIM API (guarda-chuva de APIs, dentre elas FileConnection).
Agradeço a todos (boone e edwagner) pelas dicas.
Valeu.
edwagner, bom dia.
“Sim, você armazena os dados em um arquivo (por exemplo dados.txt) transfere ele para qualquer pasta no celular ou cartão, acessa ele com o FileConnection, abre ou cria o RMS. Pronto, é só ler arquivo -> gravar RMS”.
Você teria algum exemplo de como fazer isso?
T++