Cómo usar MediaMetadataRetriever SetDataSource para el archivo en almacenamiento externo

Estoy tratando de extraer la carátula del álbum del archivo MP3, pero no puedo dar la ubicación adecuada de la canción, que puedo darle al método SetDataSource. Intenté todo pero aún me da errorIllegalArgumentException.

Todo sucede cuando esta líneametaRetriver.setDataSource(MainActivity.this, Uri.parse("/sdcard/song.mp3")); se ejecuta

Mi código

public class MainActivity extends AppCompatActivity {

MediaMetadataRetriever metaRetriver;
byte[] art;
ImageView album_art;

Bitmap songImage;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getInit();

    metaRetriver = new MediaMetadataRetriever();
    metaRetriver.setDataSource(MainActivity.this, Uri.parse("/sdcard/song.mp3"));


    art = metaRetriver.getEmbeddedPicture();

    if (art != null) {
        songImage = BitmapFactory
                .decodeByteArray(art, 0, art.length);
        album_art.setImageBitmap(songImage);
    } else {
        String error = "art is null";
        Log.i("lolol", error);
    }

}

public void getInit() {

    album_art = (ImageView) findViewById(R.id.album_art);

}
}

¿Alguien puede resolver este problema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta