Я хочу использовать зомби, беги! и поэтому нужна музыка, организованная в плейлист. Обычно я играю по альбомам или папкам, поэтому мне никогда не приходилось делать это раньше.
Я хочу скопировать папку с музыкой на телефон (используя ftp), а затем создать список воспроизведения, содержащий все эти файлы (без необходимости выбирать их вручную). Для меня также было бы нормально, если бы приложение на Android только преобразовало список воспроизведения в формате .m3u
или .pls
(созданный на моем компьютере) в список воспроизведения. в наборе списков воспроизведения Android.
На данный момент я нашел только приложения, которые создают файлы .m3u
(которые мне не нужны) или вылетают при запуске.
Я знаю, что это старый, но он в лучшие результаты для «Android создает плейлист из папки», поэтому я решил добавить это:
Playlist Creator 2: https://play.google.com/store/apps/details?id = com.ksdeveloper.playlistcreator.v2
(Судя по тому, что я читал, не очень хорошая оценка проистекает из того, что разработчик не хочет объяснять, как это работает, но это действительно просто)
- Загрузите и откройте приложение. (Да)
- Вверху справа> Воспользуйтесь проводником.
- Перейдите к нужной папке и нажмите и удерживайте ее.
- Выберите «Добавить всю папку как список воспроизведения».
- Нажмите значок в правом верхнем углу, чтобы открыть список воспроизведения, назовите его, создайте список воспроизведения.
И вуаля, вы увидите список воспроизведения в музыкальном приложении Google и в любом обычном музыкальном проигрывателе.
-
отличный ответ , спасибо — Fierce82 15 марта ’19 в 20:29
-
Не поддерживает вложенные папки 🙁 — Нагабхушан С.Н., 7 января 2020 г., 2:10
Я знаю, что это устарело, но он входит в топ результатов по запросу «Android создает плейлист из папки», поэтому я думал, что добавлю это:
Создатель плейлистов 2: https://play.google.com/store/apps/details?id=com.ksdeveloper.playlistcreator.v2
(Судя по тому, что я читал, не очень хорошая оценка проистекает из желания разработчика объяснить, как это работает, но это действительно простой)
- Загрузите и откройте приложение. (Да)
- Вверху справа> Воспользуйтесь проводником.
- Перейдите к нужной папке и нажмите и удерживайте ее.
- Выберите «Добавить всю папку как список воспроизведения».
- Нажмите значок в правом верхнем углу, чтобы открыть список воспроизведения, назовите его, создайте список воспроизведения.
И вуаля, вы увидите список воспроизведения в музыкальном приложении Google и в любом обычном музыкальном проигрывателе.
Easy Playlist Editor позволяет фильтровать по папке, а затем сохранять совпадения в виде списка воспроизведения.
My Music Playlist Creator — хороший инструмент. Он также поддерживает вложенные папки. Создайте файл m3u с помощью этого приложения. Затем файл m3u можно импортировать с помощью приложения FX File Explorer.
Также ознакомьтесь с моим связанным блогом: Создание автономного списка воспроизведения музыки на Android
My Music Playlist Creator — хороший инструмент. Он также поддерживает вложенные папки. Создайте файл m3u с помощью этого приложения. Затем файл m3u можно импортировать с помощью приложения FX File Explorer.
Также ознакомьтесь с моим связанным блогом: Создание автономного списка воспроизведения музыки на Android
Попробуйте новый менеджер списков воспроизведения, он может рекурсивно создавать списки воспроизведения из папок, чтобы у вас были все ваши треки в одном плейлисте
-
Ссылка на приложение? — Манубхаргав 24 нояб., 16:16
-
3Глядя на ваш профиль, я предполагаю, что вы написали это приложение. В таком случае было бы неплохо упомянуть об этом в ответе. — Тим 24 ноября ’15 в 16:21
-
1Следуйте инструкциям, как не быть спамером. — Firelord ♦ 24 ноя. ’15 в 22:03
Попробуйте новый диспетчер списков воспроизведения, он может создавать списки воспроизведения из папок рекурсивно, чтобы вы могли объединить все свои треки в один список воспроизведения
Как создать общую папку, используемую моим приложением для Android?
У меня есть вопрос, который, вероятно, граничит с мнением, но я нет никаких связанных вопросов или документации, которая дает ответы, поэтому я чувствую, что справедливо спросить. Я пытаюсь создать приложение для Android, которое изменяет музыкальные файлы, и я бы хотел создать общую папку, чтобы файлы и результаты были доступны и совместно использовались. Мне бы хотелось, чтобы он находился среди других папок, таких как «Музыка», «Загрузки», «Фильмы» и т. Д., Или даже в разделе «Музыка», поскольку он связан с музыкой. Однако это похоже на безопасность в Android, так как после того, как я что-то сделал и поместил туда, я должен использовать намерение, чтобы снова получить к нему доступ, тогда как я бы предпочел просто иметь возможность открывать файлы, а не терпят фиаско на основе разрешений. Возможно, можно было бы использовать какой-то тип символической ссылки, такой как в Linux, указывающий на внутреннюю папку моих приложений, но в этом я все еще не уверен. В любом случае, как мне это сделать? Если да, то есть ли ресурсы, на которые я мог бы указать?
Заранее благодарим всех, кто этим займется!
Edit for CommonsWare:
Для создания папки я использовал следующее: File mediaStorageDir = new File (Environment.getExternalStorageDirectory (), APP_NAME);
И это для копирования файлов из другого места туда:
public void copyFileToHomeDirectory (Uri uri) {попробуйте {ContentResolver contentResolver = getApplicationContext (). getContentResolver (); Строка fileName = queryName (contentResolver, uri); //Получить расширение файла String fileType = fileName.substring (fileName.length () - 4, fileName.length ()); if (fileType.equalsIgnoreCase (MP3_EXTENSION)) {Путь к строке = Environment.getExternalStorageDirectory () + APP_FOLDER; InputStream in = contentResolver.openInputStream (uri); Файл outputFile = новый файл (путь + File.separator + fileName); outputFile.createNewFile (); OutputStream out = новый FileOutputStream (outputFile); //Сначала мы открываем файл, чтобы скопировать его содержимое: byte [] buffer = new byte [KB_SIZE]; int read; while ((чтение = in.read (буфер))! = -1) {out.write (буфер, 0, чтение); } in.close (); in = null; //записываем выходной файл (теперь вы скопировали файл) out.flush (); out.close (); out = null; }} catch (FileNotFoundException fnfe) {Log.e (TAG, "FileNotFoundException"); Log.e (TAG, Log.getStackTraceString (fnfe)); } catch (IOException ioe) {Log.e (TAG, "IOException"); Log.e (TAG, Log.getStackTraceString (ioe)); } catch (Exception e) {Log.e (TAG, «Общее исключение»); Log.e (TAG, Log.getStackTraceString (e)); }}
Я пробовал другие методы, которые я перезаписал в процессе, но для доступа к файлам, которые будут использоваться снова, мне нужно что-то вроде этого:
public void openDirectory (View view) {//Выберите каталог с помощью системного средства выбора файлов. Намерение намерение = новое намерение (Intent.ACTION_GET_CONTENT); //Предоставляем доступ для чтения к файлам и подкаталогам в//выбранном пользователем каталоге. //intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); //intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); //intent.addCategory(Intent. CATEGORY_OPENABLE); //Необязательно, укажите URI для каталога, который должен открываться//в системном средстве выбора файлов при его загрузке. //intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uriToLoad); intent.putExtra (Intent.EXTRA_ALLOW_MULTIPLE, истина); intent.addCategory (Intent.CATEGORY_OPENABLE); intent.setType ("*/*"); //использовать изображение/* для фотографий и т. д.//Результатом этого кода будет вызов функции onActivityResult ниже startActivityForResult (intent, REQUEST_MUSIC_DIR);}
Edit2: I ‘ я реорганизовал папки в соответствии с тем, что, по моему мнению, я должен делать, чтобы я мог свободно работать с файлами, однако даже во внутреннем хранилище кеша (getCacheDir () + имя_папки) либо не позволяет мне создавать файлы (outputFile.createNewFile не выдает ошибку) или не позволяет мне открывать их, когда я иду за списком каталогов.
Вот мой код для создания файла:
String path = getCacheDir () + MY_SUB_FOLDER;//uri получается через ACTION_OPEN_DOCUMENT intentInputStream in = contentResolver.openInputStream (uri); File outputFile = new File (path + "/" + fileName); outputFile.createNewFile (); Log.i (TAG, «Новый каталог/путь к файлу:» + outputFile.getAbsolutePath ());//ПРИМЕЧАНИЕ: это возвращает/data/user/0/com.example.myapplication/cache/MY_SUB_FOLDER /имя_файла.mp3Outpu tStream out = новый FileOutputStream (outputFile); byte [] buffer = new byte [1024]; int read; while ((read = in.read (buffer))! = -1) {out.write (buffer, 0, read );} in.close (); in = null; out.flush (); out.close (); out = null;
Это мой код для попытки открыть и прочтите эти вновь созданные файлы
File directory = new File (getCacheDir (), MY_SUB_FOLDER); Log.i (TAG, «Это каталог, из которого мы пытаемся получить файлы:» + directory.getAbsolutePath ());//ПРИМЕЧАНИЕ. Это возвращает/data/user/0/com.example.myapplication/cache /MY_SUB_FOLDER Файл [] files = directory.listFiles (); if (files! = null) {for (int i = 0; i
Переменная files не равна нулю, но ее длина равна 0, и файлы не найдены.
Edit3: я перехватываю исключения и регистрирую любые трассировки стека, которые в настоящее время ничего не возвращают.
catch (FileNotFoundException fnfe) {Log.i (TAG, "FileNotFoundException"); Log.i (TAG, Log.getStackTraceString (fnfe)); } catch (IOException ioe) {Log.i (TAG, "IOException"); Log.i (TAG, Log.getStackTraceString (ioe)); } catch (Exception e) {Log.i (TAG, «Общее исключение»); Log.i (ТЕГ, Log.getStackTraceString (e)); }