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 - Adicionar

Anteriormente 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?

Atualizar

Posso 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?

questionAnswers(2)

yourAnswerToTheQuestion