У меня есть очень специфическая потребность в извлечении исполнителя и трека из песни, происходящей из нескольких разных вариантов использования. Обычно мне достаточно легко запросить MediaStore из mp3 uri (схема: content://
), но иногда вместо этого я получаю путь к файлу (схема: file://
). Я наткнулся на этот пост в StackOverflow: Получить Uri содержимого MediaStore из пути к файлу? а>
К сожалению, похоже, это не работает для меня. Я определенно делаю что-то не так где-то, но я не могу сказать, где. Вот код, который я использую, и путь к файлу, который я ему даю, проверяется перед его выполнением.
Вот кусок кода:
private void getTrackFromFilePath(String filePath) {
String[] filePathColumn = {
MediaStore.Audio.Media.TITLE, //
MediaStore.Audio.Media.ARTIST
};
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Logger.e(TAG, musicUri.toString() + " filePath: " + filePath);
Cursor cursor = getContentResolver().query(musicUri, filePathColumn, MediaStore.Audio.Media.DATA + " LIKE ?", new String[] {
filePath
}, null);
cursor.moveToFirst();
DatabaseUtils.dumpCursor(cursor);
cursor.close();
}
И вот связанный логарифм:
01-21 12:14:40.345: E/MusicScannerActivity(13513): content://media/external/audio/media filePath: file:///mnt/sdcard/Music/07%20Olly%20Murs%20Feat%20Flo%20Rida%20-%20Troublemaker.mp3
01-21 12:14:40.350: I/System.out(13513): >>>>> Dumping cursor android.content.ContentResolver$CursorWrapperInner@41e03748
01-21 12:14:40.350: I/System.out(13513): <<<<<
Я попытался немного поиграть со столбцами, которые я запрашиваю, но безуспешно.