Используйте метаданные для уникальной идентификации файлов - PullRequest
0 голосов
/ 06 мая 2018

Здравствуйте, нужно знать, как идентифицировать аудиофайл в хранилище устройства, вопрос в следующем:

Я занимаюсь разработкой музыкального проигрывателя и сохраняю некоторые данные воспроизведения в базе данных, которые прикрепляются к каждому аудиофайлу в отдельности, время от времени приложение проверяет изменения в аудиобиблиотеке пользователя (на SD-карте или во внутренней памяти) и вставляет новые песни (если есть) в базе данных, проблема в том, что я не могу идентифицировать, если база данных уже существует, потому что я не могу получить общий идентификатор, я пытался использовать путь музыки в хранилище, но в некоторых случаях имя музыки имеет запрещенные символы, которые мешают мне использовать в sqlite, поэтому вопрос:

Как определить аудиофайл?

РЕДАКТИРОВАТЬ1:

Я думаю, что мой вопрос был не очень ясным, я хотел, чтобы был способ индивидуальной идентификации каждого аудиофайла, используя, например, некоторые метаданные файла, которые являются уникальными для него и не могут быть повторены, такие как дата создания файла в миллисекундах или любых других метаданных, уникальных для каждого файла, например отпечаток пальца.

Я тестирую решение, которое, по моему мнению, не является идеальным, я беру путь к файлу и использую класс Base64 для его кодирования:

String path = "/ storage / emulated / 0 / Download / Disturbed-десять тысяч кулаков.mp3";

Base64.encodeToString (path.getBytes (), Base64.DEFAULT); '

результат: L3N0b3JhZ2UvZW11bGF0ZWQvMC9Eb3dubG9hZC9EaXN0dXJiZWQtVGVuIFRob3VzYW5kIEZpc3Rz Lm1wMw

Размер варьируется в зависимости от пути, но String получает только буквы и цифры, которые приняты в базе данных, и результат всегда одинаков для каждого пути. Что ты об этом думаешь?

Ответы [ 3 ]

0 голосов
/ 06 мая 2018

Вы должны щелкнуть по всем форматам файлов в рамке типа файла, а затем выбрать файл вставки с форматом audio, таким как mp3, настоящий, wmp.

0 голосов
/ 06 мая 2018

Для этого я предполагаю, что у вас уже есть переменная, либо жестко запрограммированная, либо в цикле / списке, которая является объектом File, который вы хотите проверить.

File audioFile;
//this is just for readability, do not write in your code as this should be replaced with the variable you have which is storing the audio file File.
String name = audioFile.getName();
//This is where you can do your logic. The name also returns the extension of the file so you can make sure your music player can handle the file extension, and also check the characters in the name
//Here is an example of detecting the ' character
if(name.contains("'")){
    //do something
}

Пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы!

0 голосов
/ 06 мая 2018

Аудио файл может быть идентифицирован по расширению. Список (не полный) используемых форматов можно найти в Википедии Audio_file_format

Лучшим вариантом будет проверить расширение файла и составить список известных типов расширений, связанных со звуком.

Однако это не распространяется на такие случаи, как файл MP4 со звуком и без видео.

...