Observando alterações no observador de conteúdo do Android para Audio.Media.EXTERNAL_CONTENT_URI
Estou desenvolvendo um aplicativo Android no qual tenho que detectar alterações no cartão SD do Android para arquivos de áudio com o nome do arquivo, o caminho do arquivo e a operação executada nele. Exemplo se eu estou adicionando um arquivo no meu cartão SD, então eu quero saber
Nome do arquivo adicionadoCaminho do arquivoOperação - AdicionarAnteriormente eu tentei observador de arquivos Mas para isso eu tenho que aplicá-lo em cada diretório. Então, procurei outra solução e recebi as informações sobreAudio.Media.EXTERNAL_CONTENT_URI. Então eu criei um observador de conteúdo como este
UriObserver.java - que é um observador de conteúdo
class UriObserver extends ContentObserver {
public UriObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
}
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
Log.d("INSTANT", "GETTING CHANGES");
}
}
Este é o código de registro para isso
UriObserver observer = new UriObserver(new Handler());
Log.d("INSTANT", "registered content observer");
this.getApplicationContext()
.getContentResolver()
.registerContentObserver(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, false,
observer);
Log.d("INSTANT", "registered content observer");
Deixe-me saber que alguma mudança ocorreu em sdcard relacionado a arquivos de áudio. Mas isso não dá qualquer tipo de informação sobre qual arquivo foi adicionado, editado ou excluído.
Então eu procurei por solução e recebi este post
Android: Como detectar uma alteração no MediaStore quando conectado via MTP
Neste post algum código é dado porBhiefer como uma resposta que eu acho que poderia funcionar, então tentei implementar isso, mas não sou capaz de fazê-lo.
O que posso fazer por isso?
AtualizarPosso consultar o Audio.Media.EXTERNAL_CONTENT_URI para as alterações mais recentes? Este código:
mCursor = context.getContentResolver().query(
Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, "_id");
mCursor.moveToLast();
não fornece as alterações mais recentes. Existe algum outro método para obter as alterações mais recentes?