Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Re: Lendo arquivo do SDCARD

Geralmente quando o equipamento não tem memória interna, o Environment responde o path do cartão de memória. 
Eu já vi uma aplicação que guardava diversos paths do SDcard(mnt/external_sd ; mnt/sdcard/external_sd e mais algumas outras) para verificar se o cartão estava montado. 
Os problemas disso são:
Aplicação engessada e, caso o external_sd seja montado dentro do sdcard, você pode escrever nele normalmente mesmo sem o cartão inserido. 

Você pode usar o que o Pedro falou também.

Mas, se o arquivo é pequeno, aconselho usar o retorno do Enviroment, porque fica extremamente dinâmico.

Att.


--
Carlos Eduardo Simões Pelegrin


Em 29 de novembro de 2013 15:42, Claudio <listas.arquivo@gmail.com> escreveu:
@Pedro acho é isso que terei que fazer.

@Carlos, se eu gravar direto no endereço do retorno do Enviroment, vou gravar na memoria interna o que eu não queria.

A principio vou usar assim, mas vou ter achar uma maneira daqui um tempo.

Para entender, minha aplicação é a seguinte, tenho um equipamento eletrônico( que eu projetei, sou eng.) que armazena vários dados durante sua utilização. Então o usuário vai com um chaveirinho tipo pendrive, e recolhe esses dados, leva ao PC e gera um gráfico para analise em aplicativo que fiz em Delphi. Isso já trabalha assim há uns 6 anos.
Com as novas tecnologias, ao invés de usar PC, tenho cliente que quer usar tablet, então estou fazendo o app. que gera o gravo a partir do mesmo arquivo armazenado no equipamento, com o diferencial que agora vou por leitura por bluetooth, assim fica mais fácil descarregar.

Para isso, está OK, gravo um arquivo, na memoria interna mesmo, e posso destruí-lo depois, porem para uma segunda etapa, quero que o aplicativo leia graficos salvos, e estes serão salvo no memory card. Então já estou pensando nos problemas ali da frente :)


Cláudio














 


Em 29 de novembro de 2013 11:13, Carlos Eduardo <carloseduardopelegrin@gmail.com> escreveu:

ou então, porque não gravar no retorno do Environment?
Você insere esse arquivo manualmente ou gera ele no código?


--
Carlos Eduardo Simões Pelegrin


Em 29 de novembro de 2013 11:11, Pedro Subutzki <Pepeu> <falecompepeu@gmail.com> escreveu:

Você não consegue verificar nas 2?
Tenta no sdcard0, se não achar tenta no sdcard1. :)


Abraços,
Pedro Subutzki
__________________________________________
HADI - Makes SQLite in Android easy and simple
https://github.com/PepeuCps/Hadi


Em 28 de novembro de 2013 19:48, Claudio <listas.arquivo@gmail.com> escreveu:

Percebi que ele tem sdcard0 e sdcard1, quando leio para achar a memoria externa ele retorna sdcard0, porem essa é a memoria interna. Depois de apanhar um certo tempo coloquei o arquivo a ser lido ai, leu normal, então o problema é identificar a memoria externa real.
Tentei os métodos sugeridos aqui: http://stackoverflow.com/questions/5694933/find-an-external-sd-card-location , mas o retorno também foi sdcard0 para memória externa :/

Sigo na luta, mas acho que vou acabr tendo que fazer alguma gambiarra ou mudar a linha de raciocínio...

Cláudio











Em 28 de novembro de 2013 13:00, Carlos Eduardo <carloseduardopelegrin@gmail.com> escreveu:

Exatamente.

Da forma que você quer eu não consegui fazer, ainda mais que cada device monta o cartão em local diferente.

Att.


--
Carlos Eduardo Simões Pelegrin


Em 28 de novembro de 2013 12:22, Claudio <listas.arquivo@gmail.com> escreveu:

Pra mim entender, quando conectar ele vai pegar essa ação e guardar o path do sd ?
Assim não vai funcionar, pois com certeza ele não irá fazer isso. 
O que preciso é pegar o path na hora que está rodando o aplicativo... 
De qualquer forma obrigado.


Em 28 de novembro de 2013 12:12, Carlos Pelegrin <carloseduardopelegrin@gmail.com> escreveu:

Só ressalto que esse código funciona apenas se o aplicativo estiver funcionando quando o usuário conectar o cartão.

no onCreate:
ifilter = new IntentFilter();
ifilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
ifilter.addDataScheme("file");//Se retirar essa linha, não funciona.

mReceiver = new sdCardReceiver();
registerReceiver(mReceiver, ifilter);


no Receiver:
private class sdCardReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
Message msg = new Message();
msg.obj = intent.getData();
if(msg.obj!=null){
handler.sendMessage(msg);
}
}}}

No Handler:
private class sdCardHandler extends Handler{
@SuppressLint({ "SdCardPath", "NewApi" })
@Override
public void handleMessage(Message msg) {
String path;
Uri uri = (Uri) msg.obj;
path = uri.getPath();
}
}


Espero que te ajude.
Att.
Carlos

Em quinta-feira, 28 de novembro de 2013 11h41min29s UTC-2, Claudio . escreveu:
Bom dia.

Estou tentando ler um arquivo.txt que está no SD card, estou usando:

File arquivo = new File(Environment.getExternalStorageDirectory(), 
        arquivo.txt);        
  para achar o arquivo dentro do sdcard.

No emulador funciona, está tudo OK, porem quando tento fazer isso no celular, com android 4.1.2 trava na hora de ler, como se não achasse o arquivo.
No emulador funciona tanto para versões 2.2 quanto 4.1.2.  
Coloquei um toast para ver se está achando o sd, e está ok, tb...
Debugando em real time, trava na hora de ler o arquivo, ou acha-lo, mas está achando o sd montado, pois testo antes.
Alguém tem uma dica ?

obrigado.


Cláudio.   

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário