Как заставить стандартный музыкальный проигрыватель найти мои файлы

Мое приложение загружает некоторые mp3-файлы на SDCard. Я хочу играть их с другими музыкальными плеерами, установленными на устройстве. Но другие музыкальные проигрыватели не находят мои загруженные файлы автоматически. Как заставить MediaScanner работать так, чтобы мои медиафайлы можно было воспроизводить из стандартного музыкального приложения?

Я скачиваю файлы, используя этот код

public void run() {
        loaded = 0;
        try{                
        java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(url).openStream());
        java.io.FileOutputStream fos = new java.io.FileOutputStream(FileName);
        java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
        byte[] data = new byte[1024];
        int x=0;
        while((x=in.read(data,0,1024))>=0 && !stop){
            loaded += x;
            bout.write(data,0,x); 
        }
        fos.flush();
        bout.flush();
        fos.close();
        bout.close();
        in.close();

        }catch(Exception e){

        }
}

3 ответа

Решение

Вы можете принудительно проверить медиафайл с помощью трансляции:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

Убедитесь, что в папке, в которой находятся ваши файлы, нет файла с именем ".nomedia". Этот файл говорит MediaScanner не проверять там.

(примечание: перед nomedia стоит знак ".", что означает, что он может быть скрыт)

Вот простое "решение на основе одного файла":

Всякий раз, когда вы добавляете или удаляете файл, сообщите поставщику контента MediaStore об этом, используя

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAddedOrDeleted)));

Основное преимущество: работа с любым типом пантомимы, поддерживаемым MediaStore.

Замечания:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

это слишком дорого и сканировать все. Мой совет: если вы можете, используйте подход "на файл".

Другие вопросы по тегам