Boa tarde galera.
Qual a melhor forma de a minha aplicação aguardar a chegada de um arquivo e depois de sua existência eu executar a leitura dele, só preciso saber qual a melhor forma de aguardá-lo, o resto da execução tá tranquilo. O que acontece, será enviado por um PC, através do cabo usb um arquivo com dados, então eu pego esses dados e removo o arquivo.
Tava pensando em fazer uma Thread com um Thread,sleep, mas não sei se é a melhor forma. Alguma dica?
Olá Lucas
O ideal é usar um watcher/observer de arquivos. O Android possui classes para isso já prontas:
http://developer.android.com/reference/android/os/FileObserver.html
abraços
Criei o método abaixo, ele até inicia, coloquei uma mensagem pra testar, mas quando copio o arquivo pra dentro da pasta não faz nada
public void observarArquivo() {
Toast.makeText(getBaseContext(), "entrou", Toast.LENGTH_SHORT).show();
foArquivo = new FileObserver(diretorio.toString() + "/og.txt") {
@Override
public void onEvent(int event, String file) {
if (event == FileObserver.CREATE) {
tvCodigoLido.setText("arquivo encontrado");
}
}
};
foArquivo.startWatching();
Toast.makeText(getBaseContext(), "saiu", Toast.LENGTH_SHORT).show();
}
E inicio o métrodo lá no início do programa, aparece a mensatem Toast, entrou e depois saiu, mas nunca entra no if e não dá erro nenhum.
Esse código deve estar dentro do onEvent
já que você quer que o toast apareça só nesse caso.
Pois o evento será assíncrono.